Установка Home Assistant Core: максимум контроля, минимум удобства
Инструкция по установке Home Assistant Core напрямую через Python. Минимальный и гибкий вариант для разработчиков, без Supervisor и Add-ons.
Вступление
Home Assistant Core — это «чистое ядро» системы, написанное на Python. Оно запускается напрямую в операционной системе без Docker и без Supervisor. Такой метод установки даёт полный контроль: вы видите каждый шаг, понимаете, как устроена система, и можете максимально её кастомизировать. Но есть и обратная сторона: нет Supervisor и Add-ons, обновления и резервные копии делаются вручную. Этот вариант подойдёт разработчикам и энтузиастам Linux.
Все варианты установки Home Assistant рассмотрены в обзорной статье. В этой статье разбираем установку Core.
Требования к оборудованию
- Ubuntu 22.04 или новее
- Python 3.11 или новее
- 2 CPU, 2–4 ГБ RAM, 20+ ГБ диска
Установка зависимостей
Сначала поставим необходимые пакеты для сборки Python-зависимостей и работы Home Assistant:
sudo apt update
sudo apt upgrade -y
sudo apt install -y python3 python3-venv python3-pip libffi-dev libssl-dev autoconf build-essential libopenjp2-7 libtiff6 libturbojpeg0-dev tzdata zlib1g-dev libjpeg-dev liblapack3 liblapack-dev
Создание пользователя для Home Assistant
Лучше выделить отдельного пользователя — это повышает безопасность:
sudo useradd -rm homeassistant
sudo passwd homeassistant
sudo mkdir -p /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant
Создание виртуального окружения
Home Assistant устанавливается в виртуальное окружение Python, чтобы не мешать системным пакетам:
sudo -u homeassistant -s
cd /srv/homeassistant
python3 -m venv .
source bin/activate
Установка Home Assistant Core
Теперь установим Home Assistant напрямую через pip:
pip install --upgrade pip wheel
pip install homeassistant
Запуск осуществляется командой: hass. После первого запуска интерфейс будет доступен на: http://<IP_сервера>:8123. При первом входе откроется мастер начальной настройки — он предложит создать учётную запись администратора, указать название дома, регион и другие параметры.
Автозапуск через systemd
Чтобы Home Assistant запускался автоматически после перезагрузки, создаём сервис home-assistant от имени root:
sudo tee /etc/systemd/system/home-assistant.service >/dev/null <<'EOF'
[Unit]
Description=Home Assistant Core
After=network.target
[Service]
Type=simple
User=homeassistant
ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
Активируем и запускаем:
sudo systemctl daemon-reload
sudo systemctl enable home-assistant
sudo systemctl start home-assistant
sudo systemctl status home-assistant --no-pager
Выпуск SSL-сертификата Let’s Encrypt
Чтобы открыть Home Assistant из Интернета по HTTPS, нужен сертификат. Самый простой способ — использовать Let’s Encrypt. Let’s Encrypt поддерживает два основных способа подтверждения домена (валидации):
web — проверка через временный файл на вашем сервере, доступный по HTTP; dns — проверка через добавление специальной TXT-записи в DNS-зону домена. В этой статье мы используем вариант web, так как он проще и подходит для большинства случаев с публичным сервером.
Если вы используете фаервол (например, UFW), убедитесь, что порты 80 и 443 открыты. Установим Certbot и Apache:
sudo apt install -y certbot apache2
sudo a2enmod rewrite
sudo systemctl restart apache2
Создадим каталог для ACME-проверки:
sudo mkdir -p /var/www/html/.well-known/acme-challenge
Теперь создадим конфигурацию виртуального хоста для получения временного файла в процессе валидации домена. Файл /etc/apache2/sites-available/homeassistant.conf:
<VirtualHost *:80>
ServerName hass.iot7m.ru
ServerAdmin admin@iot7m.ru
ServerSignature EMail
DocumentRoot "/var/www/html"
RewriteEngine on
# ACME http-01 challenge
RewriteCond %{REQUEST_URI} ^/\.well-known/acme-challenge(.*)$
RewriteRule ^/.well-known/acme-challenge(.*)$ /var/www/html/.well-known/acme-challenge/$1 [QSA,L]
# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://hass.iot7m.ru$1 [R=301,L]
</VirtualHost>
Активируем сайт и перезапускаем Apache:
sudo a2ensite homeassistant.conf
sudo systemctl reload apache2
Во всех приведённых ниже примерах используется домен hass.iot7m.ru — замените его на свой. Выпустим сертификат для вашего домена:
sudo certbot certonly --webroot -w /var/www/html -d hass.iot7m.ru --agree-tos -m admin@iot7m.ru --non-interactiveПроверим, что сертификаты появились:
sudo ls -l /etc/letsencrypt/live/hass.iot7m.ru/
Пример успешного вывода при получении сертификатов:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for hass.iot7m.ru
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/hass.iot7m.ru/fullchain.pem
Key is saved at: /etc/letsencrypt/live/hass.iot7m.ru/privkey.pemКонфигурация виртуального хоста Apache
Теперь настроим Apache как обратный прокси: он примет запросы по HTTPS и передаст их в Home Assistant.
Укажем Home Assistant доверять прокси. Конфигурация находится в домашней директории в папке .homeassistant. В configuration.yaml добавьте:
http:
use_x_forwarded_for: true
trusted_proxies:
- 127.0.0.1
Перезапустите сервис:
sudo systemctl restart home-assistant
Установим Apache и нужные модули:
sudo a2enmod ssl headers proxy proxy_http proxy_wstunnel rewrite deflate
sudo systemctl restart apache2
Создадим конфигурацию виртуального хоста. По сравнению с предыдущей добавлены настройки виртуального хоста на порту 443. Файл /etc/apache2/sites-available/homeassistant.conf:
<VirtualHost *:80>
ServerName hass.iot7m.ru
ServerAdmin admin@iot7m.ru
ServerSignature EMail
DocumentRoot "/var/www/html"
RewriteEngine on
# ACME http-01 challenge
RewriteCond %{REQUEST_URI} ^/\.well-known/acme-challenge(.*)$
RewriteRule ^/.well-known/acme-challenge(.*)$ /var/www/html/.well-known/acme-challenge/$1 [QSA,L]
# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://hass.iot7m.ru$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName hass.iot7m.ru
ServerAdmin admin@iot7m.ru
ServerSignature EMail
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/hass.iot7m.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/hass.iot7m.ru/privkey.pem
DocumentRoot "/var/www/html"
ProxyAddHeaders on
ProxyPreserveHost on
RequestHeader set X-Forwarded-SSL expr=%{HTTPS}
RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}
# WebSocket for Home Assistant
ProxyPass /api/websocket ws://127.0.0.1:8123/api/websocket
ProxyPassReverse /api/websocket ws://127.0.0.1:8123/api/websocket
# App traffic
ProxyPass / http://127.0.0.1:8123/
ProxyPassReverse / http://127.0.0.1:8123/
</VirtualHost>
Перезапускаем Apache:
sudo systemctl reload apache2
Теперь Home Assistant доступен по адресу: https://hass.iot7m.ru.
Обновления Home Assistant Core
Обновления выполняются вручную. Переходим в виртуальное окружение и обновляем:
source /srv/homeassistant/bin/activate
pip install --upgrade homeassistant
sudo systemctl restart home-assistant
Заключение
Home Assistant Core — отличный выбор, если вам нужен полный контроль. Мы настроили установку, сделали автозапуск через systemd и спрятали интерфейс за Apache с HTTPS.
Такой вариант идеально подойдёт энтузиастам и разработчикам, которые хотят полного контроля над системой. Если же важнее удобство и «всё из коробки» — лучше выбрать Home Assistant OS.