Для кого это
Если вы устали от того, что каждый производитель умных устройств тянет одеяло на себя, а данные улетают в непонятные облака — добро пожаловать. 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 ещё не стоит — ставим одной командой:
curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER
Выйдите из системы и зайдите заново, чтобы права применились .
Шаг 2. Структура проекта
Создаём папку, где будет жить наш стек:
mkdir ~/homeassistant && cd ~/homeassistant
Шаг 3. Файл docker-compose.yml
В папке ~/homeassistant создаём файл docker-compose.yml .
Важно: ZIGBEE_ADAPTER_TTY нужно заменить на путь к вашему Zigbee-адаптеру. Проверьте командой ls /dev/ttyUSB* или ls /dev/ttyACM* .
Также: пароли в .env (чуть позже) нужно поменять с дефолтных на свои.
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:
MYSQL_ROOT_PASSWORD=придумайте_надёжный_пароль HA_MYSQL_PASSWORD=придумайте_ещё_один_пароль
⚠️ Не выкладывайте этот файл в публичный доступ, как и всю папку с конфигами (добавьте в .gitignore) .
Шаг 5. Настройка Zigbee2MQTT
Создаём папку и файл конфига:
mkdir -p zigbee2mqtt/data
В файл zigbee2mqtt/data/configuration.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:
mkdir -p mosquitto/config
В файл mosquitto/config/mosquitto.conf:
listener 1883 allow_anonymous true # Для начала. Потом можно включить авторизацию [citation:8] persistence true persistence_location /mosquitto/data/
Шаг 7. Настройка MariaDB в Home Assistant
Создаём папку:
mkdir -p ha_config
В файл ha_config/configuration.yaml добавляем:
recorder: db_url: mysql://homeassistant:${HA_MYSQL_PASSWORD}@mariadb/homeassistant?charset=utf8mb4
⚠️ Но тут есть нюанс: Home Assistant в контейнере не видит переменную из .env напрямую. Лучше после первого запуска настроить базу через веб-интерфейс или указать пароль явно (но это небезопасно). Для продакшена используют Docker Secrets .
Более простой способ — не указывать db_url сразу, а после первого запуска добавить его через UI в разделе Настройки → Система → Хранилище.
Шаг 8. Запуск всего стека
docker compose up -d
Первый запуск займёт время — Docker скачивает образы. Можно наблюдать за процессом:
docker compose logs -f
Шаг 9. Первый вход в Home Assistant
Открываем браузер:
http://<IP_вашего_сервера>:8123
Вас встретит мастер настройки :
-
Создайте аккаунт администратора
-
Назовите свой дом
-
Дальше можно добавлять интеграции
Полезные команды
| Действие | Команда |
|---|---|
| Запустить все контейнеры | 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-адаптера
Проверьте права доступа к устройству:
sudo chmod 666 /dev/ttyUSB0
Или добавьте пользователя в группу dialout .
❌ HA не видит устройства в сети
Убедитесь, что в Compose указан network_mode: host, а не проброс портов -p 8123:8123 .
❌ Не открывается веб-интерфейс
Проверьте фаервол:
sudo ufw allow 8123/tcp
Что дальше?
После установки:
-
Добавьте интеграции (Zigbee2MQTT уже должен подхватиться автоматически)
-
Настройте автоматизации
-
Добавьте Zigbee датчики или другие устройства, например Konke
-
Прикрутите Telegram-бота для уведомлений
Важный совет: для работы с Zigbee-устройствами используйте каналы 15, 20 или 25 — на них стабильнее всего работают устройства Konke.
Готово! Ваш умный дом — полностью под вашим контролем. Без облаков, без подписок, без сюрпризов. 🚀