Установка Home Assistant через Docker Compose на Raspberry Pi

В этой инструкции мы разберем, как установить Home Assistant с помощью Docker и Docker Compose на Raspberry Pi или другой сервер под управлением Debian.

Основное преимущество установки Home Assistant через Docker (в отличие от Home Assistant OS) — вы не выделяете весь сервер исключительно под одну задачу, а запускаете приложение в изолированном контейнере. Благодаря этому сохраняется возможность использовать сервер, в том числе и для других задач.

Инструкция основана на официальной документации Home Assistant.

Настройка docker-compose.yml

Возьмем за основу пример конфигурации с официального сайта Home Assistant. Создайте файл docker-compose.yml в вашей рабочей директории и вставьте в него следующий код:

docker-compose.yml
Copy

Разберем ключевые параметры этой конфигурации:

  • hass — произвольное имя сервиса внутри YAML-файла.
  • container_name: homeassistant — понятное имя, которое получит контейнер после запуска.
  • image: "ghcr.io/home-assistant/home-assistant:stable" — официальный стабильный образ, на основе которого будет создан контейнер.
  • restart: unless-stopped — контейнер будет автоматически запускаться вместе со стартом операционной системы.
  • stop_grace_period: 60s — задаёт время, которое Docker даёт контейнеру на корректное завершение работы при остановке. По умолчанию в Docker установлено 10 секунд.
  • privileged: true — предоставляет контейнеру расширенные привилегии и доступ ко всем устройствам хоста.
  • network_mode: host — контейнер напрямую использует сетевую подсистему хоста без изоляции. Без этого Home Assistant может не «увидеть» некоторые устройства, например, IP-камеры.
  • TZ: Europe/Moscow — задаёт часовой пояс для логов и автоматизаций. В официальном примере от Home Assistant используются оба метода настройки времени одновременно (монтирование /etc/localtime и переменная TZ). Это не ошибка.

Узнать часовой пояс хоста для заполнения параметра TZ можно следующей командой:

Terminal
Copy

Параметры томов (volumes):

  • /home/ваш_пользователь/имя_директории:/config — связывает директорию на хосте с директорией внутри контейнера. Для корректной работы ваш_пользователь нужно заменить на имя вашего пользователя, а имя_директории — на название директории проекта на хосте. Контейнер будет сохранять все данные из внутренней папки /config в директорию на хосте. Лучше заранее создать эту папку вручную (командой mkdir имя_директории). Иначе Docker создаст её автоматически от имени пользователя root, и в будущем придётся менять владельца папки через команду sudo chown.
  • /etc/localtime:/etc/localtime:ro — подключает файл часового пояса хоста внутрь контейнера в режиме «только для чтения» (ro). Это гарантирует, что время внутри контейнера будет точно соответствовать системному времени хоста.
  • /run/dbus:/run/dbus:ro — подключает шину D-Bus в режиме «только для чтения». Этот параметр необходим для подключения Bluetooth-интеграций (например, для определения присутствия по Bluetooth-устройствам).

Процесс установки и запуск контейнера

Создайте новый файл docker-compose.yml или используйте созданный ранее. В примере конфигурации замените «ваш_пользователь» на имя вашего пользователя в системе, а «имя_директории» — на название папки для хранения конфигурации Home Assistant.

📥 Пример готового файла docker-compose.yml для Home Assistant.

Выполните команду для загрузки образа и запуска контейнера:

Terminal
Copy

Начнется процесс загрузки и установки образа Home Assistant:

Процесс загрузки образа Home Assistant через Docker

В будущем если потребуется установить обновление только для Home Assistant используйте следующие команды:

Terminal
Copy

Первая команда загрузит свежий образ для сервиса с названием hass, вторая — пересоздаст контейнер с новой версией.

Установка завершена! Теперь можно приступать к первоначальной настройке Home Assistant.

Запуск веб-интерфейса Home Assistant

После окончания сборки откройте браузер на любом устройстве в той же локальной сети, что и сервер и перейдите по адресу: http://[IP-адрес]:8123

В большинстве домашних сетей Home Assistant также доступен по локальному имени:
http://homeassistant.local:8123

Если этот адрес не открывается, используйте прямой IP-адрес сервера. Узнать его на Raspberry Pi (или другом Linux-сервере) можно командой:

Terminal
Copy

После перехода по адресу в браузере откроется экран начальной настройки Home Assistant.

Поскольку это проект с открытым исходным кодом, интерфейс регулярно обновляется. Скриншоты ниже могут немного отличаться от актуальной версии, но общий порядок создания аккаунта остается неизменным.

Окно создать мой Умный дом Home Assistant

Если страница не открывается, проверьте, что порт 8123 не заблокирован брандмауэром на сервере.

Для продолжения нажмите кнопку «Создать мой умный дом». Откроется форма создания учетной записи, которая потребуется для входа в интерфейс Home Assistant:

Создание логина и пароля для Home Assistant

На следующем шаге укажите местоположение вашего дома. Это необходимо для корректной работы сервисов погоды и других интеграций, использующих геолокацию:

Выбор местоположения дома при установке Home Assistant

На следующем шаге система предложит вам решить, хотите ли вы делиться анонимными данными об использовании с разработчиками Home Assistant:

Поделиться информацией при установке Home Assistant

Поздравляем! Настройка успешно завершена. Теперь перед вами главный экран интерфейса Home Assistant.

Пользовательский интерфейс Home Assistant

Итоги установки Home Assistant через Docker

Мы завершили установку Home Assistant как Docker-контейнер в полном соответствии с официальной документацией. Настроили его запуск через docker-compose.yml, обеспечили сохранение конфигурации и корректную работу времени и сетей.

На данном этапе Home Assistant работает в базовом режиме: вы можете добавлять интеграции через облако производителя (например, подключить лампы, розетки или камеры напрямую через их официальные аккаунты).

Что делать дальше?

Существует два основных подхода к построению умного дома на Home Assistant:

  • 1. Встроенная интеграция ZHA (Zigbee Home Automation)

ZHA — это штатная интеграция Home Assistant для работы с Zigbee-устройствами. Она работает напрямую с Zigbee-координатором (USB-стиком) и не требует дополнительных компонентов.

  • 2. Zigbee2MQTT

Zigbee2MQTT — это отдельный проект, который работает как посредник между Zigbee-устройствами и Home Assistant через MQTT-брокер. Он запускается в отдельном Docker-контейнере и требует дополнительной настройки.

Оба подхода требуют наличия USB-координатора Zigbee, и мы подробно разберем их в следующих статьях.

Если у вас его пока нет, начать можно с Wi-Fi-устройств или Zigbee-устройств со встроенным шлюзом производителя. Такие устройства подключаются к Home Assistant как обычные Wi-Fi-интеграции через локальную сеть или облако.