Статья

Как установить Home Assistant в Docker

Настройка и прошивка • 03.08.2026

Как установить Home Assistant в Docker

Для кого это

Если вы устали от того, что каждый производитель умных устройств тянет одеяло на себя, а данные улетают в непонятные облака — добро пожаловать. Home Assistant — это open-source платформа, которая ставит локальное управление и приватность во главу угла . Всё работает на вашем сервере, и даже если интернет пропадёт, автоматика продолжит работать .

Зумеры и миллениалы — вы ведь любите контролировать всё сами? Тогда поехали.


Что мы ставим

Мы развернём полный стек в Docker-контейнерах :

  • Home Assistant — мозг всей системы, веб-интерфейс на порту 8123

  • Mosquitto — MQTT-брокер, через который Zigbee-устройства общаются с системой

  • Zigbee2MQTT — мост между вашей Zigbee-палочкой и MQTT

  • MariaDB — база данных для хранения истории (быстрее, чем встроенный SQLite)


Что нужно иметь

 
 
Компонент Требование
ОС Linux (Ubuntu рекомендуется) или NAS с поддержкой Docker
Docker Docker Engine ≥ 23.0.0. Docker Desktop не подойдёт — нужен именно Engine
Память ≥ 2 ГБ (рекомендуется 4 ГБ)
Железо Мини ПК или Raspberry PI 4+ (от 2GB RAM) Zigbee координатор Omirax ZRF
Порты 8123 (HA), 1883 (MQTT), 8080 (Z2M веб-интерфейс)

Шаг 1. Установка Docker

Если Docker ещё не стоит — ставим одной командой:

bash
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

Выйдите из системы и зайдите заново, чтобы права применились .


Шаг 2. Структура проекта

Создаём папку, где будет жить наш стек:

bash
mkdir ~/homeassistant && cd ~/homeassistant

Шаг 3. Файл docker-compose.yml

В папке ~/homeassistant создаём файл docker-compose.yml .

Важно: ZIGBEE_ADAPTER_TTY нужно заменить на путь к вашему Zigbee-адаптеру. Проверьте командой ls /dev/ttyUSB* или ls /dev/ttyACM* .

Также: пароли в .env (чуть позже) нужно поменять с дефолтных на свои.

yaml
services:
  # ========== MQTT БРОКЕР ==========
  mosquitto:
    image: eclipse-mosquitto:latest
    container_name: mosquitto
    restart: unless-stopped
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    ports:
      - "1883:1883"
      - "9001:9001"
    networks:
      - ha_net

  # ========== ZIGBEE2MQTT ==========
  zigbee2mqtt:
    image: koenkk/zigbee2mqtt:latest
    container_name: zigbee2mqtt
    restart: unless-stopped
    volumes:
      - ./zigbee2mqtt/data:/app/data
      - /run/udev:/run/udev:ro
    ports:
      - "8080:8080"
    environment:
      - TZ=Europe/Moscow
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0   # ← ПОДСТАВЬТЕ СВОЙ ПУТЬ
    depends_on:
      - mosquitto
    networks:
      - ha_net

  # ========== MARIADB ==========
  mariadb:
    image: mariadb:10.11
    container_name: mariadb
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=homeassistant
      - MYSQL_USER=homeassistant
      - MYSQL_PASSWORD=${HA_MYSQL_PASSWORD}
    volumes:
      - ./mariadb_data:/var/lib/mysql
    networks:
      - ha_net

  # ========== HOME ASSISTANT ==========
  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    container_name: homeassistant
    restart: unless-stopped
    network_mode: host   # ВАЖНО: host-режим для обнаружения устройств [citation:5]
    privileged: true
    volumes:
      - ./ha_config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    environment:
      - TZ=Europe/Moscow
    depends_on:
      - mariadb
      - mosquitto
      - zigbee2mqtt

networks:
  ha_net:
    driver: bridge

Шаг 4. Файл .env с паролями

В той же папке создаём .env:

env
MYSQL_ROOT_PASSWORD=придумайте_надёжный_пароль
HA_MYSQL_PASSWORD=придумайте_ещё_один_пароль

⚠️ Не выкладывайте этот файл в публичный доступ, как и всю папку с конфигами (добавьте в .gitignore) .


Шаг 5. Настройка Zigbee2MQTT

Создаём папку и файл конфига:

bash
mkdir -p zigbee2mqtt/data

В файл zigbee2mqtt/data/configuration.yaml пишем:

yaml
homeassistant: true

mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://mosquitto:1883

serial:
  port: /dev/ttyUSB0   # Ваш путь к адаптеру
  adapter: auto

frontend:
  port: 8080

advanced:
  channel: 11
  pan_id: GENERATE
  log_level: info
  legacy_api: false    # Отключаем для стабильности [citation:4]

Шаг 6. Настройка MQTT

Создаём папку и минимальный конфиг Mosquitto:

bash
mkdir -p mosquitto/config

В файл mosquitto/config/mosquitto.conf:

text
listener 1883
allow_anonymous true   # Для начала. Потом можно включить авторизацию [citation:8]
persistence true
persistence_location /mosquitto/data/

Шаг 7. Настройка MariaDB в Home Assistant

Создаём папку:

bash
mkdir -p ha_config

В файл ha_config/configuration.yaml добавляем:

yaml
recorder:
  db_url: mysql://homeassistant:${HA_MYSQL_PASSWORD}@mariadb/homeassistant?charset=utf8mb4

⚠️ Но тут есть нюанс: Home Assistant в контейнере не видит переменную из .env напрямую. Лучше после первого запуска настроить базу через веб-интерфейс или указать пароль явно (но это небезопасно). Для продакшена используют Docker Secrets .

Более простой способ — не указывать db_url сразу, а после первого запуска добавить его через UI в разделе Настройки → Система → Хранилище.


Шаг 8. Запуск всего стека

bash
docker compose up -d

Первый запуск займёт время — Docker скачивает образы. Можно наблюдать за процессом:

bash
docker compose logs -f

Шаг 9. Первый вход в Home Assistant

Открываем браузер:

text
http://<IP_вашего_сервера>:8123

Вас встретит мастер настройки :

  1. Создайте аккаунт администратора

  2. Назовите свой дом

  3. Дальше можно добавлять интеграции


Полезные команды

 
 
Действие Команда
Запустить все контейнеры docker compose up -d
Остановить все docker compose down
Перезапустить HA docker compose restart homeassistant
Посмотреть логи docker compose logs -f
Обновить HA docker compose pull homeassistant && docker compose up -d

Частые ошибки и их решения

❌ «Permission denied» при подключении Zigbee-адаптера

Проверьте права доступа к устройству:

bash
sudo chmod 666 /dev/ttyUSB0

Или добавьте пользователя в группу dialout .

❌ HA не видит устройства в сети

Убедитесь, что в Compose указан network_mode: host, а не проброс портов -p 8123:8123 .

❌ Не открывается веб-интерфейс

Проверьте фаервол:

bash
sudo ufw allow 8123/tcp

Что дальше?

После установки:

  • Добавьте интеграции (Zigbee2MQTT уже должен подхватиться автоматически)

  • Настройте автоматизации

  • Добавьте Zigbee датчики или другие устройства, например Konke

  • Прикрутите Telegram-бота для уведомлений

Важный совет: для работы с Zigbee-устройствами используйте каналы 15, 20 или 25 — на них стабильнее всего работают устройства Konke.


Готово! Ваш умный дом — полностью под вашим контролем. Без облаков, без подписок, без сюрпризов. 🚀