Home Assistant на Synology

Home Assistant можно установить на сетевое хранилище (NAS) Synology через графический интерфейс DSM с пакетом Container Manager. Командная строка для этого способа не нужна.

Что понадобится

Подойдет NAS Synology с DSM, на котором поддерживается пакет Container Manager - перед установкой проверьте совместимость своей модели.

Установка через Container Manager

Скачайте образ с тегом stable, подключите папку конфигурации и выберите сеть host, как указано в разделе Synology в документации Home Assistant.

1. Установите Container Manager

Откройте в DSM Package Center и установите пакет Container Manager.

2. Скачайте образ Home Assistant

В Container Manager откройте страницу Registry, найдите образ homeassistant/home-assistant и нажмите Download. Выберите тег stable и дождитесь окончания загрузки.

3. Создайте контейнер

Перейдите в Image, выберите образ homeassistant/home-assistant и нажмите Run. В General Settings задайте имя контейнера, например homeassistant, при желании включите Enable auto-restart и нажмите Next.

4. Подключите папку конфигурации

В Advanced Settings откройте Volume Settings и нажмите Add Folder. По примеру из документации создайте внутри общей папки docker папку homeassistant, а в ней - папку config, затем нажмите Select. Измените Mount path на /config и оставьте права Read/Write. В этой папке Home Assistant будет хранить конфигурацию и журналы.

5. Задайте часовой пояс и сеть

В разделе Environment нажмите Add и добавьте переменную (Variable) TZ со значением своего часового пояса - в документации приведен пример Europe/London. В разделе Network выберите host.

6. Запустите контейнер

Продолжайте нажимать Next, отметьте Run this container after the wizard is finished и нажмите Done. Откройте в браузере HTTP-адрес NAS с портом 8123. Адрес http://192.168.1.10:8123 из документации - это пример, подставьте IP своего NAS.

7. Откройте порт 8123 в межсетевом экране

Если в DSM включен встроенный межсетевой экран, добавьте разрешающее правило. Откройте Control Panel > Security, раздел Firewall, нажмите Edit Rules и в Firewall Profile создайте правило Allow для порта 8123 - выберите Custom, впишите порт в Ports, при необходимости измените Source IP.

Обновление контейнера

Чтобы перейти на новую версию, обновляют образ и пересоздают контейнер - у установки Container нет автоматических обновлений. В Container Manager откройте Image, выберите homeassistant/home-assistant и нажмите Update, дождитесь уведомления о завершении загрузки. Затем в разделе Container остановите контейнер, выполните Action > Reset и запустите его снова.

Перезапуск контейнера через Action > Restart - отдельная операция, образ она не обновляет. Как обновляют Home Assistant на других типах установки, разобрано в отдельном гайде.

Другие способы

Кроме мастера Container Manager есть три варианта - команда в терминале, Docker Compose и виртуальная машина с Home Assistant OS.

Терминал: docker run

Раздел Synology в документации приводит пример создания контейнера из терминала с пробросом USB-устройства.

sudo docker run --restart always -d --name homeassistant -v /PATH_TO_YOUR_CONFIG:/config --device=/PATH_TO_YOUR_USB_STICK -e TZ=Australia/Melbourne --net=host ghcr.io/home-assistant/home-assistant:stable

Замените в команде путь к папке конфигурации /PATH_TO_YOUR_CONFIG, путь к USB-устройству и часовой пояс. Путь /dev/ttyACM0 - только пример, у вашего адаптера он может отличаться. У пользователя, от имени которого работает контейнер, должны быть права на файл устройства вида /dev/tty* на NAS.

Docker Compose

Общие инструкции для Linux описывают установку через Compose. В файле compose.yaml указывают образ ghcr.io/home-assistant/home-assistant:stable, постоянный том /PATH_TO_YOUR_CONFIG:/config, network_mode: host и restart: unless-stopped, после чего выполняют docker compose up -d. Такая инструкция общая для Linux и не описывает мастер Project в Container Manager. Подробно про контейнерную установку рассказывает гайд по Home Assistant в Docker.

Home Assistant OS в виртуальной машине

Home Assistant OS можно запустить на поддерживаемом гипервизоре - системе запуска виртуальных машин. Процедуры именно для Synology Virtual Machine Manager в документации нет.

Ограничения контейнера

В Container нужно самостоятельно обслуживать систему и обновлять Home Assistant. Встроенных дополнений, или аддонов (в текущей документации apps), нет. Для них документация рекомендует Home Assistant OS.

Для интеграций, которыми управляют аддоны (apps), поддержки из коробки нет - в документации упомянуты Thread и Z-Wave.

Частые проблемы

Для ошибки HTTPS и сбоев MariaDB есть решения пользователей форума, каждое из одной ветки.

Проблема и текст ошибкиЧто помогало
Интерфейс не открывается по HTTPS при первом подключении: Error connecting to xxx.xxx.xxx.xxx:8123
Error code: SSL_ERROR_RX_RECORD_TOO_LONG
Открыть веб-интерфейс по HTTP вместо HTTPS
MariaDB в стеке Docker Compose постоянно падает, Home Assistant сообщает об ошибке соединения с базой данныхИспользовать более старый образ MariaDB 10.6.10

Смежной проблеме посвящен разбор случая восстановления после настройки SSL.

Частые вопросы

Какие ресурсы нужны виртуальной машине?

Для установки Home Assistant OS в виртуальной машине нужны минимум 2 ГБ оперативной памяти и 2 виртуальных процессора. Документация предлагает образы форматов .vdi, .qcow2 и .ova для установки на поддерживаемом гипервизоре. Работу Home Assistant в виртуальной машине на примере Proxmox описывает отдельный гайд.

Подойдет ли Docker Desktop?

Нет, для установки Container нужен Docker Engine 23.0.0 или новее. Docker Desktop для этого способа не подходит. Требование к версии указано в общих инструкциях установки контейнера. Число 23.0.0 относится к Docker Engine, оно не задает минимальную версию DSM на Synology.

Нужен ли D-Bus для Bluetooth?

Да, для интеграции Bluetooth в Container нужен D-Bus. В общих инструкциях Linux его подключают к контейнеру через /run/dbus:/run/dbus:ro. Если Bluetooth не планируется, это подключение необязательно. На Synology оно само по себе не устраняет ограничения доступа к USB-устройствам, о которых предупреждает документация.

Зачем нужен таймаут остановки в 60 секунд?

Он дает базе данных время корректно закрыться при остановке контейнера. Для docker run это --stop-timeout 60, для Compose - stop_grace_period: 60s. Таймаут работает как верхний предел, а не задержка - Docker продолжает сразу, как только Home Assistant завершил работу. Изменение этой настройки у уже созданного контейнера требует его пересоздать, например командой docker compose up -d --force-recreate.

Чем docker compose pull отличается от up?

Команда pull скачивает образы сервисов, а up создает и запускает контейнеры. Полная форма первой команды - docker compose pull [OPTIONS] [SERVICE...]. Она скачивает образы из compose.yaml без запуска контейнеров. Команда docker compose up -d оставляет контейнеры работать в фоне. После скачивания измененного образа up пересоздает затронутые контейнеры, сохраняя подключенные тома.

Андрей Ковалев, редактор. Собирает решения из веток форума Home Assistant и сверяет команды и настройки с официальной документацией.