Home Assistant и Docker Hub: установка, образы и нюансы настройки

Команда docker pull homeassistant/home-assistant завершается ошибкой «manifest not found» или контейнер стартует и сразу падает — типичная ситуация, когда образ Home Assistant скачан не с того репозитория на Docker Hub или запущен без обязательных параметров. Официальный репозиторий проекта на Docker Hub называется homeassistant/home-assistant, и именно его нужно указывать целиком: сокращённое имя вроде home-assistant без префикса организации приведёт к поиску несуществующего образа.

В этой статье разберём, какой образ выбрать на Docker Hub, как правильно запустить контейнер через docker run и docker compose, как обновлять Home Assistant без потери конфигурации и какие ограничения есть у контейнерной установки по сравнению с Home Assistant OS.

Какие образы Home Assistant есть на Docker Hub

На Docker Hub проект публикует несколько репозиториев, и путаница между ними — частая причина ошибок при установке. Основной образ для пользовательской установки — homeassistant/home-assistant. Он содержит Home Assistant Core в готовом контейнере и подходит для большинства сценариев на Linux-хостах.

Кроме основного, существуют вспомогательные образы: homeassistant/amd64-hassio-supervisor и аналогичные под другие архитектуры используются установщиком Home Assistant Supervised, а образы аддонов (например, Mosquitto, MariaDB) публикуются отдельно. Вручную образы Supervisor скачивать и запускать не нужно — это делает установочный скрипт.

Теги образа homeassistant/home-assistant включают latest, stable и конкретные версии вида 2026.12.5. Для воспроизводимой установки лучше фиксировать версию, а не использовать latest: так вы контролируете момент обновления и можете быстро откатиться на предыдущий тег.

  • 🏠 homeassistant/home-assistant — основной образ Home Assistant Container
  • 🧩 homeassistant/*-hassio-supervisor — образы для установки Supervised
  • 🔌 Образы аддонов — отдельные репозитории для сервисов вроде MQTT-брокера
  • 🏷️ Теги: latest, stable и конкретные номера версий

Home Assistant Container против Home Assistant OS

Перед установкой стоит понимать ключевое ограничение: Home Assistant Container не включает Supervisor, а значит, в нём нет магазина аддонов и системы автоматических резервных копий в привычном виде. Всё, что в HA OS ставится «в один клик» (Mosquitto, Zigbee2MQTT, Node-RED), в контейнерном варианте разворачивается отдельными контейнерами и подключается вручную.

Зато Container-вариант даёт полный контроль над хостом: вы сами управляете сетью, томами, обновлениями и можете держать на одной машине другие сервисы. Для опытных пользователей Docker это часто предпочтительнее, чем выделенная ОС.

КритерийHA Container (Docker Hub)Home Assistant OS
Supervisor и аддоныНетДа, из коробки
Управление хостомПолный доступ пользователяЗакрытая управляемая ОС
ОбновлениеПересоздание контейнера вручнуюКнопка в интерфейсе
Резервные копииАрхивация папки конфигурацииВстроенный механизм бэкапов
Порог входаНужен опыт работы с DockerМинимальный

Установка через docker run

Базовый запуск выполняется одной командой. Ключевые параметры: проброс папки конфигурации, сетевой режим host (нужен для автоматического обнаружения устройств в локальной сети) и политика перезапуска.

docker run -d \

--name homeassistant \

--privileged \

--restart=unless-stopped \

-e TZ=Europe/Moscow \

-v /opt/homeassistant:/config \

--network=host \

homeassistant/home-assistant:stable

Разберём важные моменты. Параметр -v /opt/homeassistant:/config монтирует папку хоста в контейнер — именно там лежат configuration.yaml и вся база данных. Без этого тома при пересоздании контейнера конфигурация будет потеряна. Режим --network=host работает только на Linux; на Windows и macOS Docker работает через виртуальную машину, и host-сеть там не даёт того же эффекта.

☑️ Проверка после первого запуска

Выполнено: 0 / 4
⚠️ Внимание: флаг --privileged даёт контейнеру расширенный доступ к устройствам хоста. Он упрощает проброс USB-стиков (Zigbee, Z-Wave), но снижает изоляцию. Если USB-устройств нет, запускайте без этого флага и пробрасывайте устройства точечно через --device=/dev/ttyUSB0.

После запуска интерфейс будет доступен по адресу http://IP-хоста:8123. Первая загрузка может занять несколько минут — контейнер создаёт базу данных и начальную конфигурацию.

Установка через Docker Compose

Для постоянной эксплуатации удобнее описать сервис в файле docker-compose.yml — так конфигурация хранится в виде кода и легко переносится между машинами.

services:

homeassistant:

container_name: homeassistant

image: homeassistant/home-assistant:stable

volumes:

- /opt/homeassistant:/config

- /etc/localtime:/etc/localtime:ro

restart: unless-stopped

privileged: true

network_mode: host

Запуск выполняется командой docker compose up -d из папки с файлом. Обратите внимание на монтирование /etc/localtime в режиме только чтения — это синхронизирует время контейнера с хостом, что критично для корректной работы автоматизаций по расписанию.

📊 Как вы запускаете Home Assistant в Docker?
docker run вручную
Docker Compose
Portainer / другой GUI
Использую Home Assistant OS, не контейнер

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

Обновление Home Assistant в Docker сводится к трём шагам: скачать новый образ, остановить и удалить старый контейнер, запустить новый с теми же параметрами. Конфигурация сохраняется, потому что лежит в смонтированной папке на хосте, а не внутри контейнера.

docker pull homeassistant/home-assistant:stable

docker stop homeassistant

docker rm homeassistant

docker compose up -d

При использовании Compose достаточно docker compose pull и docker compose up -d — пересоздание произойдёт автоматически. Перед обновлением сделайте копию папки конфигурации: откат образа на старый тег возможен, но база данных, уже мигрированная на новую версию, может оказаться несовместимой со старой.

⚠️ Внимание: не обновляйтесь сразу на свежий мажорный релиз, если у вас критичные автоматизации. Проверьте примечания к релизу на предмет ломающих изменений (breaking changes) — они публикуются в официальном блоге проекта для каждой версии.

Проброс USB-устройств и сетевые нюансы

Если вы используете Zigbee- или Z-Wave-стик, его нужно пробросить в контейнер. Сначала определите путь устройства на хосте командой ls /dev/serial/by-id/ — путь вида /dev/serial/by-id/usb-... предпочтительнее, чем /dev/ttyUSB0, так как не меняется при переподключении.

devices:

- /dev/serial/by-id/usb-ITead_Sonoff_Zigbee:/dev/ttyUSB0

По сети есть важный нюанс: режим host необходим для работы функций обнаружения (mDNS, SSDP), через которые Home Assistant находит умные устройства в локальной сети. Если вы используете bridge-сеть с пробросом портов, автоматическое обнаружение может не работать, и интеграции придётся добавлять вручную по IP-адресам.

Что делать, если устройства не обнаруживаются автоматически

Проверьте, что контейнер запущен с network_mode: host. Убедитесь, что устройство и хост находятся в одной подсети — mDNS не проходит через маршрутизаторы и VLAN без дополнительной настройки. Если используете VLAN для IoT-устройств, потребуется mDNS-репитер (например, avahi с включённым reflection) на маршрутизаторе или хосте.

Типичные ошибки и их решение

Разберём проблемы, с которыми чаще всего сталкиваются при работе с образом Home Assistant с Docker Hub.

  • 🔴 Ошибка «manifest unknown» — указан несуществующий тег или опечатка в имени репозитория. Проверьте точное имя: homeassistant/home-assistant.
  • 🔴 Контейнер перезапускается в цикле — смотрите логи командой docker logs homeassistant. Частая причина — повреждённый configuration.yaml после правки.
  • 🔴 Нет доступа к USB-устройству — не хватает прав: добавьте --privileged или настройте права на устройство на хосте.
  • 🔴 Неправильное время в логах и автоматизациях — не задана переменная TZ и не смонтирован /etc/localtime.
  • 🔴 Порт 8123 недоступен снаружи — при host-сети проверьте файрвол хоста, при bridge-сети — проброс портов -p 8123:8123.

Если контейнер стартует, но веб-интерфейс не открывается, сначала проверьте docker ps — жив ли контейнер, затем docker logs homeassistant --tail 50 — нет ли ошибок конфигурации. Home Assistant при синтаксической ошибке в YAML может не поднять веб-сервер, и это будет видно в логе.

Резервное копирование конфигурации

Поскольку в Container-версии нет встроенных бэкапов Supervisor, за сохранность данных отвечаете вы. Хорошая новость: достаточно архивировать одну папку — ту, что смонтирована в /config.

Простой вариант — периодическое создание архива:

tar -czf ha-backup-$(date +%F).tar.gz /opt/homeassistant

Делать архив лучше при остановленном контейнере, чтобы база данных не была в процессе записи, либо использовать средства самой СУБД, если вы вынесли базу во внешний PostgreSQL или MariaDB. Также удобно хранить папку конфигурации в git-репозитории, исключив из него файлы базы данных и секреты.

Часто задаваемые вопросы

Какой официальный образ Home Assistant на Docker Hub?

Официальный репозиторий — homeassistant/home-assistant. Образы от других авторов с похожими именами не поддерживаются проектом и могут содержать устаревшие или модифицированные версии.

Можно ли установить аддоны в Home Assistant Container?

Нет, магазин аддонов доступен только в установках с Supervisor (HA OS и Supervised). В контейнерном варианте аналогичные сервисы запускаются отдельными контейнерами — например, официальный образ Mosquitto для MQTT.

Работает ли Home Assistant Container на Windows?

Контейнер запускается через Docker Desktop, но с ограничениями: host-сеть и проброс USB работают иначе, чем на Linux, поэтому обнаружение устройств и подключение Zigbee-стиков могут быть затруднены. Для полноценной работы рекомендуется Linux-хост.

Как откатиться на предыдущую версию?

Укажите в compose-файле тег предыдущей версии (например, конкретный номер вместо stable) и пересоздайте контейнер. Однако если новая версия уже мигрировала базу данных, для чистого отката понадобится резервная копия конфигурации, сделанная до обновления.

Потеряются ли настройки при пересоздании контейнера?

Нет, если папка конфигурации смонтирована как том (-v /opt/homeassistant:/config). Все настройки, интеграции и история хранятся на хосте. Без монтирования тома данные внутри контейнера будут удалены вместе с ним.