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 в контейнере — предсказуемый способ получить локальный умный дом на своём сервере. Вы контролируете обновления, данные и сетевую доступность, а дополнения заменяются обычными сервисами. Начните с одной комнаты и трёх-четырёх автоматизаций, настройте резервное копирование и только потом расширяйте список устройств.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте