
Сегодня мы будем устанавливать Home Assistant Supervised на Debian 12 по официальной инструкции. «Шо, опять?» — спросят многие. Да, но просто так устанавливать по инструкции скучно и обязательно столкнемся с проблемами, про которые даже не упоминается в инструкции.
Почему именно Debian? Потому что это рекомендуемая операционная система. Теоретически можно поставить на любую linux систему. Также, в данной статье не будет рассуждений почему Home Assistant Supervised, а не Home Assistant OS. Данная статья не об этом.
План установки Home Assistant Supervised следующий:
-
Установить Debian.
-
Установить зависимости.
-
Установить ISO дистрибутив с официального сайта. Если устанавливаем на ПК, то записываем его на флешку, например через Rufus.
Устанавливаем все по минимуму, обязательно выбираем
SSH server. Графическую оболочку иstandard system utilitesпо желанию. Сеть настраиваем по DHCP, статический адрес пока не спешим настраивать.
Когда установка закончилась, в SSH отключаем вход по паролю и записываем публичный ключ в
authorized_keys.Если устанавливаете на виртуальную машину, то на данном этапе крайне желательно сделать снапшот, чтобы лишний раз не переустанавливать с нуля если что-то пойдет не так. Да и в целом, не стесняйтесь делать снапшоты после каждого успешного этапа, это сильно экономит время.
Далее вся установка должна идти от рута. Заходим в рут с помощью команды
su -(тире в конце не забудьте). Должен быть запрос пароля рут, который вы вводили при установке системы. После перехода в рут строка приветствия должна быть вида:root@homeassistant:~#Установка зависимостей.
Устанавливаем/обновляем необходимые пакеты:
apt updateapt install apparmor bluez cifs-utils curl dbus jq libglib2.0-bin lsb-release network-manager nfs-common systemd-journal-remote systemd-resolved udisks2 wget -yДалее устанавливаем докер:
curl -fsSL get.docker.com | shУстановка OS-Agent и Home Assistant.
Скачиваем и устанавливаем OS-Agent. На момент написания статьи актуальная версия 1.6.0:
wget https://github.com/home-assistant/os-agent/releases/download/1.6.0/os-agent_1.6.0_linux_x86_64.debdpkg -i os-agent_1.6.0_linux_x86_64.debПроверяем его работоспособность:
root@homeassistant:~# gdbus introspect --system --dest io.hass.os --object-path /io/hass/os node /io/hass/os { interface org.freedesktop.DBus.Introspectable { methods: Introspect(out s out); signals: properties: }; interface org.freedesktop.DBus.Properties { methods: Get(in s interface, in s property, out v value); GetAll(in s interface, out a{sv} props); Set(in s interface, in s property, in v value); signals: PropertiesChanged(s interface, a{sv} changed_properties, as invalidates_properties); properties: }; interface io.hass.os { methods: signals: properties: @org.freedesktop.DBus.Property.EmitsChangedSignal("invalidates") readonly s Version = '1.6.0'; @org.freedesktop.DBus.Property.EmitsChangedSignal("true") readwrite b Diagnostics = false; }; };Если нет ошибок, нормально выводятся объекты
interface, то все установилось корректно.Далее скачиваем и устанавливаем Home Assistant:
wget -O homeassistant-supervised.deb https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.debapt install ./homeassistant-supervised.debПосле установки, через 2-3 минуты (или дольше) заходим по адресу http://IP_ADDRESS:8123/ (где IP_ADDRESS — IP-адрес машины), ждем завершения и настраиваем Home Assistant.


Стоп-стоп-стоп! Подождите! Вы думали, что у вас вот так все просто установится? Помните я упоминал про проблемы? Давайте разбираться что может и обязательно пойдет не так в процессе установки.
systemd-resolved
Установили вы зависимости. Пытаетесь установить докер:
root@homeassistant:~# curl -fsSL get.docker.com | sh curl: (6) Could not resolve host: get.docker.com… и внезапно обнаруживаем, что отвалился резольвер. На самом деле, установился
systemd-resolvedи DNS сервер из настроек сети не подтянулся.Проверяем:
root@homeassistant:~# resolvectl dns Global: Link 2 (ens192):Так и есть, отсутствуют DNS сервер на интерфейсе. Сразу не работает, нужно прежде всего перезапустить сервис
systemctl restart systemd-resolved.service.Добавляем на сетевой интерфейс DNS сервер роутера,
1.1.1.1или8.8.8.8и проверяем:root@homeassistant:~# resolvectl dns ens192 192.168.1.1 root@homeassistant:~# resolvectl dns Global: Link 2 (ens192): 192.168.1.1 root@homeassistant:~# ping4 google.com PING (108.177.14.101) 56(84) bytes of data. 64 bytes from lt-in-f101.1e100.net (108.177.14.101): icmp_seq=1 ttl=111 time=32.4 ms 64 bytes from lt-in-f101.1e100.net (108.177.14.101): icmp_seq=2 ttl=111 time=32.7 ms 64 bytes from lt-in-f101.1e100.net (108.177.14.101): icmp_seq=3 ttl=111 time=32.7 ms ^CОтлично! Повторяем попытку установки докера.
Данная проблема также иногда всплывает при установке пакета Home Assistant. Во время установки начинает спамить ошибками пинга.
ping: checkonline.home-assistant.io: Temporary failure in name resolution [info] Waiting for checkonline.home-assistant.io - network interface might be down... ping: checkonline.home-assistant.io: Temporary failure in name resolution [info] Waiting for checkonline.home-assistant.io - network interface might be down...Не прерывая процесс установки нужно залогиниться в параллельный сеанс SSH, либо (если работаете напрямую) переключиться на второй терминал (переключение между терминалами Alt+F1..F6). Далее прописываем DNS на интерфейс, переключаемся на основной сеанс/терминал, установка должна продолжится автоматически.
NetworkManager
Проблема NetworkManager обычно возникает уже после всей установки Home Assistant в процессе запуска Docker контейнеров.
Если прописывали статический IP адрес, то проблема с NetworkManager возникает практически гарантировано. Выражается в том, что не работает резольвер, даже если он прописан вручную, соответственно не скачиваются и не запускаются все контейнеры кроме основного. Хотя пинг напрямую по IP адресу нормально проходит.
root@homeassistant:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5fa8dfe4429c ghcr.io/home-assistant/amd64-hassio-supervisor:latest "/init" 6 minutes ago Up 6 minutes hassio_supervisor root@homeassistant:~# resolvectl dns Global: Link 2 (ens192): Link 3 (docker0): Link 5 (vethfd10614): Link 6 (hassio): Link 8 (veth3dfd1c5): root@homeassistant:~# resolvectl dns ens192 192.168.1.1 root@homeassistant:~# resolvectl dns Global: Link 2 (ens192): 192.168.1.1 Link 3 (docker0): Link 5 (vethfd10614): Link 6 (hassio): Link 8 (veth3dfd1c5): root@homeassistant:~# ping4 google.com ping: google.com: Temporary failure in name resolution root@homeassistant:~# ping4 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=112 time=30.6 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=112 time=30.6 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=112 time=30.7 ms ^CРаз у нас установился NetworkManager, то скорее всего управление сетью перешло к нему. Проверим.
root@homeassistant:~# nmcli connection show NAME UUID TYPE DEVICE Supervisor ens192 4e12c325-9cce-4446-bce6-4e00a038da7a ethernet ens192 lo 0fb78ab7-1397-4b7d-b2f9-08a5e4ce159c loopback lo Wired connection 1 9596ad70-3e69-3dcf-9c4e-7baffa45d79d ethernet --Так и есть. Home Assistant создал новый профиль
Supervisor ens192(ens192 может отличаться в зависимости от используемого интерфейса) и активировал его. Скорее всего проблема в нем.root@homeassistant:~# nmcli connection edit "Supervisor ens192" nmcli> print ipv4 ['ipv4' setting values] ipv4.method: manual ipv4.dns: -- ipv4.dns-search: -- ipv4.dns-options: -- ipv4.dns-priority: 0 ipv4.addresses: 192.168.1.30/24 ipv4.gateway: 192.168.1.1 .......В профиле отсутствует указание на DNS сервер. Добавляем его в профиль, сохраняем, проверяем.
nmcli> set ipv4.dns 192.168.1.1 nmcli> print ipv4.dns ipv4.dns: 192.168.1.1 nmcli> save persistent Connection 'Supervisor ens192' (4e12c325-9cce-4446-bce6-4e00a038da7a) successfully updated. nmcli> quit root@homeassistant:~# nmcli connection down "Supervisor ens192" && nmcli connection up "Supervisor ens192" Connection 'Supervisor ens192' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4) root@homeassistant:~# ping4 google.com PING (173.194.220.139) 56(84) bytes of data. 64 bytes from lk-in-f139.1e100.net (173.194.220.139): icmp_seq=1 ttl=109 time=32.6 ms 64 bytes from lk-in-f139.1e100.net (173.194.220.139): icmp_seq=2 ttl=109 time=32.5 ms 64 bytes from lk-in-f139.1e100.net (173.194.220.139): icmp_seq=3 ttl=109 time=32.5 msЕсли подключаетесь по SSH, то переподключение нужно делать одной командой, иначе придется лезть в консоль, т.к. сетка отключится.
Идем за чаем и ждем пока поднимутся все контейнеры.
root@homeassistant:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9085135ef77d ghcr.io/home-assistant/qemux86-64-homeassistant:2024.6.2 "/init" 6 minutes ago Up 6 minutes homeassistant 54edaaebde19 ghcr.io/home-assistant/amd64-hassio-multicast:2024.03.0 "/init" 7 minutes ago Up 7 minutes hassio_multicast ad3991713142 ghcr.io/home-assistant/amd64-hassio-audio:2023.12.0 "/init" 7 minutes ago Up 7 minutes hassio_audio b0d247d8d950 ghcr.io/home-assistant/amd64-hassio-dns:2024.04.0 "/init" 7 minutes ago Up 7 minutes hassio_dns 58fcbe893417 ghcr.io/home-assistant/amd64-hassio-cli:2024.05.0 "/init" 7 minutes ago Up 7 minutes hassio_cli 896050f24454 ghcr.io/home-assistant/amd64-hassio-observer:2023.06.0 "/usr/bin/observer" 14 minutes ago Up 7 minutes 0.0.0.0:4357->80/tcp, :::4357->80/tcp hassio_observer 5fa8dfe4429c ghcr.io/home-assistant/amd64-hassio-supervisor:latest "/init" 36 minutes ago Up 7 minutes hassio_supervisorКогда поднялся последний контейнер
qemux86-64-homeassistant, можно заходить через браузер и производить дальнейшую настройку.Если зашли слишком рано и видите ошибку инсталляции не пугайтесь, нужно еще некоторое время подождать.

Проблемы с NetworkManager также могут выражаться в том, что система не запоминает настройки сети через веб интерфейс и сбрасывает их после перезагрузки системы.
Решение данной проблемы достаточно простое. Если посмотреть сетевые профили, то в данном случае скорее всего профиль которым управляет Home Assistant будет неактивным.
root@homeassistant:~# nmcli connection show NAME UUID TYPE DEVICE Supervisor ens192 4e12c325-9cce-4446-bce6-4e00a038da7a ethernet -- lo 0fb78ab7-1397-4b7d-b2f9-08a5e4ce159c loopback lo Wired connection 1 9596ad70-3e69-3dcf-9c4e-7baffa45d79d ethernet ens192Нужно переключить на профиль, которым будет управлять Home Assistant. Оставшийся профиль желательно удалить, но обычно он сам удаляется при перезагрузке системы.
root@homeassistant:~# nmcli connection down "Wired connection 1" && nmcli connection up "Supervisor ens192" Connection 'Wired connection 1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4) root@homeassistant:~# nmcli connection delete "Wired connection 1"Прочие ошибки
После установки не забудьте перезагрузить систему на которой установлен Home Assistant. Иначе будет сигнализировать о неисправимой ошибке и/или не будет показывать адрес на сетевом интерфейсе.


Заключение
Возможно, это не все ошибки с которыми придется столкнуться, особенно если устанавливать Home Assistant на linux систему отличную от Debian 12. Проблемы с NetworkManager скорее всего со временем пофиксят, т.к. это проблема настройки системы когда активируется самый первый контейнер
amd64-hassio-supervisor.
ссылка на оригинал статьи https://habr.com/ru/articles/822071/






Добавить комментарий