Установка Home Assistant Supervised на Debian: Supervisor и Add-ons без HAOS
Инструкция по установке Home Assistant Supervised на Debian. Настройка Supervisor и Add-ons, особенности и ограничения метода, который будет поддерживаться только до конца 2025 года.
Вступление
Метод Home Assistant Supervised позволяет развернуть Home Assistant вместе с Supervisor и Add-ons, но поверх стандартной ОС (в нашем случае — Debian 12). Это удобно, если хочется использовать привычный Linux, но при этом иметь все возможности HAOS.
Все варианты установки Home Assistant рассмотрены в обзорной статье. В этой статье мы разбираем установку без HAOS: получим виртуальную машину с Debian, установим Docker (чтобы запускать контейнеры Home Assistant и Supervisor), поставим OS Agent (для связи Supervisor с ОС) и установим Supervised. В конце подключимся к веб‑интерфейсу Home Assistant.
Создание виртуальной машины
В этом примере используется Яндекс Облако (Yandex Cloud) — все команды и настройки далее будут рассчитаны именно на него.
Виртуальную машину можно создать двумя способами — через веб-консоль (GUI) или через yc CLI. Использование yc актуально только если вы планируете управлять инфраструктурой через консоль. В остальных случаях достаточно GUI.
Создание SSH ключа
SSH-ключ нужен для подключения к виртуальной машине. Если у вас он уже есть (например, ~/.ssh/id_ed25519.pub), можете использовать существующий. Если нет — создайте новый командой:
ssh-keygen -t ed25519 -C "yc"
После создания публичный ключ будет в ~/.ssh/id_ed25519.pub. RSA ключ тоже подойдет.
Установка и настройка yc (CLI)
Этот шаг нужен только если вы планируете управлять инфраструктурой через консоль. Если работаете через веб-интерфейс Yandex Cloud, этот раздел можно пропустить.
Установка yc:
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash
После установки добавьте yc в PATH. Проверить корректность можно командой:
yc --version
Инициализация профиля и авторизация:
yc init
yc config list
Вариант 1: через yc CLI
Подставьте свою зону и путь к ключу; логин укажем "debian"
yc compute instance create --name ha-supervised-debian --zone ru-central1-a --platform standard-v3 --cores 2 --memory 4G --create-boot-disk image-folder-id=standard-images,image-family=debian-12,size=20 --network-interface subnet-name=default,nat-ip-version=ipv4 --ssh-key "debian:$(cat ~/.ssh/id_ed25519.pub)"
После создания попробуйте подключиться по SSH, чтобы убедиться, что всё работает
Вариант 2: через GUI
- Перейдите в консоль Yandex Cloud → Compute Cloud → Создать ВМ
- Образ: Debian 12 (Bookworm)
- Ресурсы: 2 vCPU, 4 ГБ RAM, диск 20+ ГБ
- Сеть: включите публичный IPv4 (NAT)
- SSH: добавьте содержимое вашего публичного ключа (
~/.ssh/id_ed25519.pub) и укажите имя пользователя, с которым будете подключаться - Создайте ВМ и дождитесь появления публичного IP
- Проверьте результат: подключитесь по SSH
Подготовка системы
Обновите систему и установите необходимые пакеты:
sudo apt update
sudo apt upgrade -y
sudo apt install -y apparmor bluez cifs-utils curl dbus jq lsb-release network-manager nfs-common systemd-journal-remote systemd-resolved udisks2 wget
Эти пакеты обеспечивают работу AppArmor, NetworkManager, системных сервисов и интеграций, которые использует Supervisor. Подробно о вариантах настройки сети в Debian 12 см. Приложение: "Настройка сети в Debian 12".
После установки может пропасть доступ в Интернет. Это связано с тем, что systemd-resolved не знает о вашей текущей настройке DNS, а сеть управляется через ifupdown (файл /etc/network/interfaces). Чтобы полностью перейти на управление сетью через NetworkManager, выполните:
sudo systemctl restart systemd-resolved.service && \
sudo systemctl disable --now networking.service && \
sudo mv /etc/network/interfaces /etc/network/interfaces.disabled && \
sudo systemctl restart NetworkManagerВ некоторых случаях может потребоваться перезапуск машины. После этого восстановление сети можно проверить командой:
ping google.comВключите сервисы:
sudo systemctl enable --now systemd-timesyncd systemd-resolved NetworkManager apparmor
Установка Docker
Supervisor и Home Assistant в режиме Supervised работают в контейнерах. Docker — это среда исполнения контейнеров, которая оркестрирует сервисы Supervisor, Home Assistant и вспомогательные компоненты (DNS, аудио, multicast и т. п.). Без Docker метод Supervised невозможен.
Установка Docker:
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
docker ps
При желании добавьте текущего пользователя в группу docker, чтобы не писать sudo (требует повторного входа в систему:
sudo usermod -aG docker $USER
Установка OS Agent
OS Agent — это компонент, который обеспечивает связь Supervisor с операционной системой через D-Bus: доступ к информации о хосте, времени, сети, обновлениям и интеграциям на уровне ОС. С ним корректно работают панели Supervisor и часть функций Add-ons.
Установка (пример для версии 1.7.2):
wget https://github.com/home-assistant/os-agent/releases/download/1.7.2/os-agent_1.7.2_linux_x86_64.deb
sudo dpkg -i os-agent_1.7.2_linux_x86_64.deb
Проверка (в выводе должна быть строка с Version, например: "1.7.2"):
busctl introspect --system io.hass.os /io/hass/os
Можно ли пропустить установку OS Agent? Технически установка supervised‑installer возможна и без него, но часть возможностей Supervisor будет недоступна, пока вы не установите OS Agent. Если установите позже, Supervisor подхватит его автоматически после перезапуска.
Установка supervised-installer
Пакет supervised-installer готовит систему и разворачивает сам Supervisor, подтягивает нужные контейнеры Home Assistant и настраивает директории/службы. Именно он превращает вашу систему в полноценный Home Assistant Supervised.
Установка (пример для версии 3.1.0):
wget https://github.com/home-assistant/supervised-installer/releases/download/3.1.0/homeassistant-supervised.deb
sudo dpkg -i homeassistant-supervised.deb || sudo apt -f install -y
Проверьте, что контейнеры запустились:
docker ps
Обычно вы увидите сервисы:
- homeassistant
- hassio_supervisor
- hassio_dns
- hassio_audio
- hassio_multicast
- hassio_cli
Откройте веб‑интерфейс:
http://<PUBLIC_IP>:8123
Первый запуск может занять 5–10 минут: в это время Docker скачивает образы и инициализирует систему.
Первоначальная настройка Home Assistant
После установки HAOS вы получите полностью рабочую систему, но для удобства и расширения функциональности стоит добавить несколько полезных инструментов:
- Настройте резервное копирование — чтобы при необходимости можно было быстро восстановить систему
- Добавьте SSH & Web Terminal — для доступа к консоли
- Установите File Editor — для редактирования конфигурации через веб-интерфейс
- Установите Glances — мониторинг ресурсов системы
- Добавьте Ping — проверка доступности устройств в сети
- Установите HACS — расширяемое хранилище интеграций и тем
Заключение
Теперь у вас работает Home Assistant с Supervisor и Add-ons поверх Debian. Если вы делаете установку «в долгую», рекомендуем также присмотреться к Home Assistant OS: это официальный метод, который проще поддерживать.
Приложение: Настройка сети в Debian 12
Для сетевого стека в Debian 12 доступны как NetworkManager, так и systemd-networkd (а также устаревший ifupdown). Если при установке было выбрано десктоп-окружение, то сеть по умолчанию поднимается через NetworkManager. Если система устанавливалась без окружения рабочего стола, то чаще предлагается использовать systemd-networkd, но администратор может выбрать NetworkManager вручную. В Yandex Cloud используется установка без рабочего стола, поэтому для работы Home Assistant Supervised нужно перевести сеть на NetworkManager.
Когда выбрать systemd-networkd
- Для серверов и встраиваемых систем, где сеть настраивается статически
- Когда нужны мосты, бондинг, VLAN и другая расширенная конфигурация
- Для случаев, когда важны минимальные зависимости и «лёгкость» системы
- Управление: файлы
/etc/systemd/network/*.network, утилитаnetworkctl
Когда выбрать NetworkManager
- Для настольных систем и ноутбуков, где сеть часто меняется
- Когда требуется Wi-Fi или VPN из коробки
- Если нужен удобный интерфейс (CLI
nmcliили графический апплет) - Управление: конфиги в
/etc/NetworkManager/, командыnmcli,nmtui
Как определить, что используется
Проверить активные сервисы:
systemctl is-active NetworkManager
systemctl is-active systemd-networkd
Попробовать:
nmcli device status
Если интерфейсы видны, значит сеть ведёт NetworkManager
Пример Ansible playbook
Скрипт ниже переводит хост под управление NetworkManager. Если система уже управляется NetworkManager, изменений не будет. Во время переключения выполняется остановка сервиса ifupdown (systemctl disable --now networking.service), что может оборвать SSH. Чтобы корректно пережить возможный разрыв, переключение запускается в отцеплённом режиме через systemd-run: отдельный transient‑юнит завершит все шаги (включая перенос /etc/network/interfaces и перезапуск NetworkManager) даже при кратковременном обрыве связи. По завершении выполняется проверка доступности сети — блок ожидания (Wait for internet connectivity) отправляет ping; при необходимости адрес 1.1.1.1 можно заменить на ваш проверочный хост.
---
- name: Setup NetworkManager on server
hosts: haos_servers
become: true
become_user: root
gather_facts: true
tasks:
- name: Update package cache
ansible.builtin.apt:
update_cache: true
- name: Upgrade all packages
ansible.builtin.apt:
upgrade: true
- name: Install NetworkManager components
ansible.builtin.apt:
name:
- network-manager
- systemd-resolved
state: present
- name: Ensure services start on boot
ansible.builtin.systemd:
name: "{{ item }}"
enabled: true
state: started
loop:
- systemd-resolved
- NetworkManager
- name: Switch to NetworkManager (detached, survives SSH drop)
ansible.builtin.shell: |
UNIT="nm-switch-$(date +%s)"
systemd-run --unit "$UNIT" --collect /bin/bash -lc '
set -euo pipefail
systemctl restart systemd-resolved
systemctl disable --now networking.service || true
if [ -f /etc/network/interfaces ]; then
mv /etc/network/interfaces /etc/network/interfaces.disabled
fi
systemctl restart NetworkManager
'
changed_when: true
- name: Wait for internet connectivity
ansible.builtin.command: ping -c 1 -W 5 1.1.1.1
register: ping_test
changed_when: false
retries: 12
delay: 5
until: ping_test.rc == 0
Запуск:
ansible-playbook -v --diff --inventory inventory/production playbooks/setup_network_manager.yml