Найти тему
HASSStas: Рецепты HomeAssistant

Переезжаем в docker. Зачем?

Оглавление

Не помню почему я выбрал установку HomeAssistant в виртуальное окружение из всех возможных способов установки. Может быть, посчитал, что docker - это пока слишком сложно.

Как бы то ни было, два года я прожил на HomeAssistant Core и, в общем-то, горя не знал. Часто видел на всяких форумах и ресурсах беседы о мистическом supervisor и не менее мистических аддонах. И вот, наконец, интереса ради решил перейти на этот самый Supervisor.

Конклюжн: почти ничего не изменилось, но стало лучше.

Поехали!

Устанавливаем Home Assistant Supervised

Здесь я сознательно не будут прописывать некоторые команды, потому что нет ничего лучше официальной документации, а все частные уроки и туториалы имеют обыкновение устаревать.

Посмотреть инструкцию по установке "от завода-изготовителя" можно на гитхабе: https://github.com/home-assistant/supervised-installer

Но сначала надо отключить SSL (закомментировать настройки сертификатов в configuration.yaml или что там у вас сделано) и сделать бэкап всей нашей системы - Настройка - Система - Резервные копии.

Пока делается бэкап, остановим и выключим Configurator, потому что он нам не понадобится (впрочем, это можно сделать и потом):

sudo systemctl stop hass-configurator.service && sudo systemctl disable hass-configurator.service

После того, как создание бэкапа завершится, остановим наш существующий Home Assistant:

sudo systemctl stop home-assistant.service

Выключать его пока рано, он нам может ещё пригодиться.

Приступаем к установке HASS Supervised:

  • устанавливаем необходимые зависимости
  • устанавливаем Docker-CE
  • качаем OS Agent через wget с адреса https://github.com/home-assistant/os-agent/releases/latest
  • устанавливааем OS Agent через dpkg
  • качаем HASS Supervised: wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
  • устанавливаем: sudo dpkg -i homeassistant-supervised.deb

В другом окне консоли можно открыть лог системы:

sudo journalctl -f

Там будет много всего, но самое интересное будет подсвечено (у меня - красным жирным шрифтом). В том числе там будет написано, что подтян сервер по нашему адресу и порту 8123.

Если всё прошло верно и настройки SSL не конфликтуют (как было у меня, потому что пути до сертификатов недоступны оказались из контейнера), то можно зайти на свой сервер по http.

Там уже будет ждать приветственное окно с оповещнием об установке:

Долго ждём и вот, наконец, стартовая страница готова. Можно задать новые логин-пароль и сразу же подтянутся какие-то интеграции, доступные для настройки - deconz, keenetic, etc. Я ничего не подключал, потому что собирался восстановить всё из бэкапа.

Переносим все настройки

В окне онбординга будет предложено восстановиться из бэкапа:

-2

Жмём ссылку внизу про восстановление из бэкапа, выбираем предварительно перенесённый с сервера к себе на комп архив с бэкапом и... ничего не происходит.

На самом деле бэкап восстанавливается, но на экране об этом ничего не говорится, какого-то прогресса нет, поэтому можно просто сходить и попить чай/кофе.

О том, что бэкап развернулся, я узнал по тому, что ничего не заработало. Почему не заработало, можно посмотреть в journalctl. В моём случае не поднялся модуль http с сертификатами - они не нашлись по тому пути, который указан в configuration.yaml. Не мудрствуя лукаво я эти сертифкаты в конфиге просто отключил и вуаля: HASSio запустился. И тут же предложил мне обновиться на последнюю версию:

-3

Теперь нам надо восстановить некоторую функциональность, которую мы потеряли после перехода.

Конфигуратор

В первую очередь восстановим возможность редактировать конфигурации из интерфейса.

Установленный ранее конфигуратор можно отключить, если не сделали этого раньше.

sudo systemctl stop hass-configurator.service && sudo systemctl disable hass-configurator.service

Вместо него идём в магазин дополнений (Настройки - Дополнения) и ставим File Editor:

-4

Особо настраивать тут нечего, включим автозапуск и добавим в боковую панель:

-5

Всё, теперь у нас есть File Editor, который полностью аналогичен конфигуратору.

DuckDNS

Доступ извне у меня организован через Duck DNS, там зарегистрирована учётная запись и создан токен. Они нам понадобятся, чтобы вернуть DuckDNS в аддонах:

-6

После добавления аддона страница с настройками не открылась, пришлось перезапустить HASS. После перезагрузки - настраиваем:

-7

Указываем свои домен (без duckdns.org) и токен, остальное можно оставить как есть. В configuration.yaml меняем пути к сертификатам:

-8

И перезапускаем. Но не работает. Потому что нет сертификатов.

Let's Encrypt

Сертификаты у меня - от Let's Encrypt. Он тоже доступен среди официальных аддонов:

-9

Настраиваем: указываем домен (полный, yourname.duckdns.org) и email, на который зарегистрирован сертификат. Названия ключей я оставил дефолтными, они же прописаны в configuration.yaml в секции http.

-10

После настройки запускаем и смотрим в Журнал аддона - там будут записи о том, что сертификат выпущен успешно или нет. Если используется deconz (как у меня), то будет ошибка, что порт 80 уже кем-то занят. Нужно остановить deconz, запустить аддон let's encrypt, дождаться выпуска сертификата и после этого запустить deconz обратно.

Затем можно перезапустить HASS и попробовать зайти по https - всё должно работать.

Потом планирую наконец-то перейти с DuckDNS на возможности Keenetic, но для этого надо будет повозиться с HA Proxy.

Яндекс

Если все реквизиты сохранились в неизменном виде, то, скорее всего, устройства и управление ими из Яндекса, с помощью Алисы, например, продолжит работать как ни в чём не бывало. Уменя - не стало, поэтому пришлось заново перепривязать свой навык в Умный Дом - нажать плюсик, чтобы перейти в меню добавления:

-11

Добавить: Устройство умного дома:

-12

Выбрать свой навык. Простым "обновить" тут не отделаешься, надо заходить внутрь:

-13

И, наконец,

-14

После чего появится окно HomeAssistant с вводом логина-пароля, и при успешном входе все подключенные устройства обновятся, а не подключенные ранее - подключатся.

Заключение

Что я получил, ради чего это всё? В первую очередь, конечно, чтобы попробовать что-то новое. Поработать с контейнерами, покопаться в аддонах.

А ещё хороший стимул - получить вот это:

-15

Возможность поставить обновления Home Assistant из него самого - бесценна. Больше не надо заходить в консоль по ssh, искать или вводить по памяти команды для окружения, для обновления через pip и всё такое.

Но, увы, и тут есть нюанс. Как мы помним, сборка у меня на сервере Ubuntu 18.04, а Ubuntu какой-бы то ни было версии - не входит в число рекомендованных установок для Home Assistant, что приводит к маркировке Home Assistant как unsupported и, соответственно, unhealty, а значит и обновление может не запуститься. Выход есть - нужно перезапустить контейнер hassio_supervisor. Но это тоже не очень удобно, хотя и всё ещё удобнее, чем ходить через консоль. Тем более, что для управления контейнерами я поставил Portainer, но об этом уже в следующий раз.

И напоминаю, что следить за анонсми можно в моём телеграме, лайк и подписка.