Home Assistant — открытая платформа для управления умным домом, которая объединяет устройства разных производителей в одном интерфейсе. Облако здесь не обязательно: сервер живёт в вашей сети, автоматизации выполняются локально, а доступ с телефона можно организовать через собственный обратный прокси. Ниже — установка в Docker, базовая конфигурация, MQTT для датчиков, резервное копирование и разбор типовых сбоев.
Какой вариант установки выбрать
У платформы три основных способа развёртывания, и они не равнозначны.
- Home Assistant OS — готовый образ для мини-ПК или виртуальной машины. Внутри есть Supervisor и магазин дополнений, обновления приходят из интерфейса. Плюс — минимум ручной работы, минус — вся машина отдаётся под умный дом.
- Supervised — Debian с установленным Supervisor. Дополнения доступны, но требования к системе строгие: нельзя менять некоторые пакеты и настройки сети, иначе установка становится неподдерживаемой.
- Container — обычный Docker-контейнер. Нет магазина дополнений, зато сервис уживается на общем сервере рядом с другими проектами, а обновление сводится к смене образа.
Для домашнего сервера с уже работающими сервисами удобнее контейнер. Дополнения заменяются отдельными контейнерами: Mosquitto для MQTT, Zigbee2MQTT для координатора, ESPHome для прошивки устройств. Такой набор проще резервировать и обновлять по частям.
Подготовка каталога и Docker Compose
Создайте каталог /opt/homeassistant и файл compose.yaml. Для контейнера используется сеть хоста: так работают mDNS-обнаружение, интеграции с локальными устройствами и широковещательные протоколы. Порт 8123 при этом используется напрямую.
services:
homeassistant:
container_name: homeassistant
image: ghcr.io/home-assistant/home-assistant:stable
restart: unless-stopped
network_mode: host
volumes:
- ./config:/config
- /etc/localtime:/etc/localtime:ro
environment:
TZ: Europe/Moscow
Запуск и просмотр журнала:
cd /opt/homeassistant
docker compose up -d
docker compose logs -f --tail=100 homeassistant
Через минуту интерфейс открывается по адресу http://адрес-сервера:8123. Первый экран предлагает создать учётную запись владельца. Пароль должен быть длинным и уникальным: это административный доступ ко всем устройствам и автоматизациям.
Базовая конфигурация
Файл config/configuration.yaml задаёт общие параметры. Вносите изменения небольшими порциями и проверяйте синтаксис перед перезапуском.
homeassistant:
name: Дом
time_zone: Europe/Moscow
unit_system: metric
country: RU
language: ru
default_config:
http:
use_x_forwarded_for: true
trusted_proxies:
- 172.16.0.0/12
Большая часть настроек из веб-интерфейса хранится в каталоге .storage и не предназначена для ручного редактирования. В YAML оставляйте то, что действительно удобно версионировать: шаблоны, сенсоры, автоматизации в отдельных файлах, секреты в secrets.yaml. Если файл конфигурации разрастается, объединяйте настройки через homeassistant.packages — так логика одной комнаты лежит в одном месте.
MQTT и устройства
Для датчиков, реле и самодельных устройств удобен MQTT. Отдельный брокер Mosquitto ставится рядом и не зависит от жизненного цикла Home Assistant.
services:
mosquitto:
image: eclipse-mosquitto:2
container_name: mosquitto
restart: unless-stopped
ports:
- "1883:1883"
volumes:
- ./mosquitto/config:/mosquitto/config
- ./mosquitto/data:/mosquitto/data
- ./mosquitto/log:/mosquitto/log
В mosquitto.conf отключите анонимный доступ и включите сохранение сообщений:
listener 1883
allow_anonymous false
password_file /mosquitto/config/passwd
persistence true
persistence_location /mosquitto/data/
Пароль создаётся командой mosquitto_passwd -c /mosquitto/config/passwd homeassistant, после чего брокер перезапускается. В Home Assistant добавьте интеграцию MQTT и укажите адрес сервера, логин и пароль. Устройства с автообнаружением появятся сами; для остальных создайте сенсоры вручную и проверьте, что топики совпадают.
Первая автоматизация
Автоматизации удобно держать в отдельном файле automations.yaml и подключать через automation: !include automations.yaml. Пример включает свет при движении в коридоре.
alias: Свет в коридоре
triggers:
- trigger: state
entity_id: binary_sensor.hall_motion
to: "on"
actions:
- action: light.turn_on
target:
entity_id: light.hall
mode: single
Проверяйте автоматизацию в «Инструментах разработчика»: там видны состояния, можно вызвать действие вручную и посмотреть, какие сущности существуют. Ссылайтесь на entity_id, а не на удобное имя устройства.
Резервные копии
Контейнерная установка не имеет встроенного планировщика полных резервных копий, поэтому каталог конфигурации архивируется средствами системы. Останавливать сервис на несколько секунд стоит ради согласованности базы и файлов.
cd /opt/homeassistant
docker compose stop
sudo tar -czf /backup/ha-$(date +%F).tar.gz config
docker compose start
Архив копируйте на другой носитель или в другую машину: диск, на котором лежит и сервис, и бэкап, от отказа не защищает. Раз в месяц проверяйте восстановление на тестовом каталоге, иначе копия останется непроверенной. Отдельно сохраняйте secrets.yaml и список установленных интеграций.
Обратный прокси и доступ снаружи
Публиковать 8123 напрямую в интернет не стоит. Поставьте nginx или Caddy на той же машине, выпустите сертификат и проксируйте запросы на локальный порт.
server {
listen 443 ssl;
server_name ha.example.ru;
location / {
proxy_pass http://127.0.0.1:8123;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Домен и сертификат должны быть настоящими, иначе мобильное приложение откажется подключаться. В configuration.yaml укажите доверенный прокси, иначе Home Assistant не примет заголовки и покажет ошибку входа.
Обновление
Перед обновлением прочитайте примечания к релизу и сделайте архив. Образ с тегом stable обновляется командой:
cd /opt/homeassistant
docker compose pull
docker compose up -d
docker image prune -f
Если новая версия ломает интеграцию, вернитесь к предыдущему образу: укажите конкретный тег, например 2026.4.2, и запустите compose заново. Поэтому тег фиксируют в отдельной ветке конфигурации или в комментарии, а не полагаются только на stable.
Диагностика
Типовые проблемы видны в журнале и при проверке конфигурации:
docker compose logs --tail=200 homeassistant
docker exec -it homeassistant python -m homeassistant --script check_config -c /config
curl -I http://127.0.0.1:8123
docker stats --no-stream homeassistant
Ошибка Invalid config обычно указывает на отступ в YAML. Сообщение о недоступном устройстве — на неверный IP, VLAN или порт. Если интерфейс открывается, но интеграция молчит, смотрите журнал именно этой интеграции: в нём бывают ответы устройства и таймауты. Высокий CPU после обновления чаще всего связан с циклической автоматизацией или опросом недоступного устройства.
Безопасность
- Не публикуйте порт 8123 напрямую в интернет; используйте обратный прокси с TLS и отдельной аутентификацией.
- Включите двухфакторную аутентификацию для владельца и отдельных пользователей.
- Обновляйте образ и дополнения, следите за уведомлениями о безопасности.
- Размещайте устройства умного дома в отдельном сегменте сети, если оборудование это позволяет.
- Ограничьте доступ к
/configправами пользователя и не храните пароли в открытом виде.
Итог
Home Assistant в контейнере — предсказуемый способ получить локальный умный дом на своём сервере. Вы контролируете обновления, данные и сетевую доступность, а дополнения заменяются обычными сервисами. Начните с одной комнаты и трёх-четырёх автоматизаций, настройте резервное копирование и только потом расширяйте список устройств.