Home Assistant Container запускают на Linux с Docker Engine командой docker run или через Docker Compose. После запуска откройте веб-интерфейс на порту 8123 и создайте аккаунт владельца.
Что понадобится
Нужна Linux-машина с Docker Engine версии 23.0.0 или новее; Docker Desktop не подойдет - документация Home Assistant требует именно Docker Engine.
Для варианта с Compose нужен плагин Docker Compose для Linux. Его ставят после Docker Engine и Docker CLI по инструкции Docker. Проверить плагин можно командой docker compose version. Для Windows есть отдельный гайд по Home Assistant.
Установка контейнера
Выберите запуск через Docker CLI или Compose. В записи подключения каталога сохраните часть :/config.
Через Docker CLI
Команда docker run создает новый контейнер и скачивает образ, если его еще нет. Перед запуском замените /PATH_TO_YOUR_CONFIG на путь к каталогу конфигурации на хосте и MY_TIME_ZONE на свой часовой пояс.
docker run -d \
--name homeassistant \
--privileged \
--restart=unless-stopped \
-e TZ=MY_TIME_ZONE \
-v /PATH_TO_YOUR_CONFIG:/config \
-v /run/dbus:/run/dbus:ro \
--network=host \
ghcr.io/home-assistant/home-assistant:stable
Для Zigbee2MQTT есть отдельный гайд по настройке.
Через Docker Compose
Создайте файл compose.yaml. Замените в нем /PATH_TO_YOUR_CONFIG на свой путь к конфигурации и Europe/Amsterdam на свой часовой пояс - в документации это пример значения.
services:
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
volumes:
- /PATH_TO_YOUR_CONFIG:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
restart: unless-stopped
stop_grace_period: 60s
privileged: true
network_mode: host
environment:
TZ: Europe/Amsterdam
Запуск:
docker compose up -d
Первый запуск
Откройте в браузере http://YOUR_HOST:8123, заменив YOUR_HOST именем или IP-адресом машины с Docker. Для новой установки создайте аккаунт владельца - на экране приветствия выберите Create my smart home и заполните поля Name, Username, Password и Confirm password. На этом же экране можно восстановить резервную копию. Порядок первого запуска описан в документации.
Обновление
В Container свежий релиз ставится вручную - вы скачиваете новый образ и пересоздаете контейнер с прежним каталогом конфигурации. Для других типов установки процесс другой, см. обновление Home Assistant.
Обновление через Docker CLI
Скачайте свежий образ:
docker pull ghcr.io/home-assistant/home-assistant:stable
Если в выводе Image is up to date, обновления нет, и на этом все. Иначе остановите и удалите старый контейнер:
docker stop homeassistant
docker rm homeassistant
Затем создайте контейнер заново той же командой из раздела установки, указав существующий путь к конфигурации.
Обновление через Docker Compose
docker compose pull homeassistant
docker compose up -d
Команда pull скачивает образ сервиса из compose.yaml, не запуская контейнеры; выполняйте ее из каталога с этим файлом. Команда up пересоздает контейнер при изменении образа или конфигурации, сохраняя примонтированные тома. Флаг -d, --detach оставляет контейнеры работать в фоне. Есть и флаг принудительного пересоздания --force-recreate.
Проверка после обновления
Загляните в Settings > System > Repairs и Settings > System > Logs - там видны проблемы конфигурации после обновления. После правки конфигурации проверьте ее перед перезапуском:
docker exec homeassistant python -m homeassistant --script check_config --config /config
Если контейнер назван иначе, замените homeassistant в команде. Остальные типовые действия для контейнера собраны в документации.
Другие варианты
Для Container на Raspberry Pi нужна плата версии 3, 4 или 5, блок питания, карта microSD и Ethernet.
Вместо stable можно выбрать конкретную версию образа или каналы тестирования:
docker pull ghcr.io/home-assistant/home-assistant:beta
docker pull ghcr.io/home-assistant/home-assistant:dev
Ограничения Container
В Container нет apps (бывших аддонов, add-ons) - отдельных программных пакетов, которые ставятся в Home Assistant OS. Интеграции доступны во всех типах установки, подключаются в Settings > Devices & services (документация). Thread и Z-Wave не поддерживаются из коробки, поскольку некоторые интеграции зависят от apps. Если нужны эти пакеты, посмотрите установку Home Assistant других типов.
Частые проблемы
Сопоставьте симптом со своей установкой. В таблице приведен опыт пользователей форума; число веток указано для каждой проблемы.
| Симптом | Что помогало пользователям |
|---|---|
| После переноса на новую машину или восстановления из резервной копии установка пустая или снова показывает экран приветствия (6 веток форума) | Задать контейнеру путь /config и повторить команду восстановления (частично); скопировать резервную копию на новую машину и восстановить документированной командой ручного восстановления; заменить относительный путь на абсолютный в файле Compose; скопировать конфигурацию целиком со скрытыми файлами через rsync -av |
| Локальные устройства не обнаруживаются или перестают работать (4 ветки форума) | Убрать мостовую сеть (bridge); после смены сетевого режима остановить и снова запустить контейнеры через Docker Compose down и up; удалить хаб IKEA из HomeKit на iPad |
Контейнер падает или не запускается после обновления (4 ветки форума); пример ошибки - Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: chmod /dev/console: read-only file system: unknown | В разных случаях помогали образ 2024.6.2 с прежним каталогом конфигурации, откат на 2024.4.1 (частично) или образ 2024.12.5 с перезапуском контейнера |
| Интеграция MQTT не подключается к брокеру в Docker или к внешнему брокеру (3 ветки форума) | Использовать IP-адрес машины с Docker вместо localhost; настроить брокера по гайду Mosquitto и перезапустить Docker |
Ошибки прав доступа при установке пакетов или настройке интеграции, например PermissionError: [Errno 13] Permission denied: '/config/nest/event_media' (3 ветки форума) | Убрать подключение тома, которое перекрывает файл run; удалить строку user из docker-compose |
После перезагрузки сервера или пропадания питания установка сломана, в логе The system could not validate that the sqlite3 database at //config/home-assistant_v2.db was shutdown cleanly^[[0m (3 ветки форума) | Останавливать Home Assistant перед выключением или перезагрузкой сервера; удалить базу данных, чтобы Home Assistant создал новую |
| Home Assistant не отвечает из-за большого расхода памяти или нехватки RAM (3 ветки форума) | Запуститься в режиме восстановления и отключить кастомные интеграции - в одном случае виновником оказался Stream Assist (частично); установить больше оперативной памяти |
Пути к SSL-сертификатам недоступны внутри контейнера, отсюда режим восстановления или ошибки конфигурации, например Invalid config for 'http' at configuration.yaml, line 28: not a file for dictionary value 'http->ssl_certificate', got '/npmssl/fullchain.pem' (2 ветки форума) | Использовать пути к сертификатам под /config и перезапустить браузер; смонтировать отдельные файлы сертификатов по совпадающим путям в Docker Compose; скопировать сертификаты в доступный каталог и указать пути к ним напрямую. Разбор случая |
Частые вопросы
Что нужно для Bluetooth и оборудования?
Для Bluetooth нужно монтирование /run/dbus, для интеграций с физическим оборудованием - проброс устройств и права доступа к ним. Без Bluetooth подключение D-Bus необязательно. Пример проброса устройства в документации - --device /dev/ttyUSB0:/dev/ttyUSB0. Путь /dev/ttyUSB0 приведен как пример; укажите путь своего устройства и обеспечьте права доступа.
Как вернуться на прошлую версию?
Для возврата на прошлую версию запустите контейнер этой версии вместе с соответствующей ей резервной копией установки Home Assistant. Выбор старого образа сам по себе не отменяет миграции данных, выполненные новой версией. Если используется внешняя база данных, для нее тоже нужна отдельная совместимая резервная копия.
Что делает команда docker stop?
Она отправляет главному процессу контейнера сигнал SIGTERM для завершения работы, а после периода ожидания - SIGKILL для принудительной остановки. Чтобы дать базе данных больше времени на корректное закрытие, задайте --stop-timeout 60 при запуске или stop_grace_period: 60s в Compose. После изменения времени ожидания контейнер нужно пересоздать.
Какой образ выбрать?
Для основной установки используйте stable; также можно выбрать конкретную версию образа. Документация описывает каналы beta и dev как альтернативы основной установке. Ветка dev может привести к потере данных и повреждению установки. Текущая версия видна в Settings > About. После смены образа контейнер нужно пересоздать.



