Встановлення Home Assistant на VPS: Повний посібник з Docker та SSL
TL;DR
У цьому посібнику ми покроково налаштуємо Home Assistant на віртуальному приватному сервері (VPS) з використанням Docker для ізоляції та простоти керування, а також забезпечимо безпечний доступ через HTTPS з автоматичним SSL-сертифікатом від Let's Encrypt. Ви дізнаєтеся, як підготувати сервер, розгорнути Home Assistant, налаштувати доступ через доменне ім'я та захистити його, отримавши повний контроль над своєю системою розумного будинку без залежності від сторонніх хмарних сервісів.
- Повний контроль: Розгортаємо Home Assistant на власному VPS для максимальної приватності та гнучкості.
- Використання Docker: Забезпечуємо легке встановлення, ізоляцію та оновлення Home Assistant та його компонентів.
- Безпечний доступ: Налаштовуємо HTTPS з автоматичним SSL-сертифікатом через Caddy для захищеного віддаленого підключення.
- Масштабованість: Обираємо VPS-конфігурацію, достатню для поточних потреб та майбутнього розширення системи розумного будинку.
- Обслуговування та резервне копіювання: Включаємо стратегії резервного копіювання та оновлення для довгострокової стабільності.
Що ми налаштовуємо і навіщо
Home Assistant — це потужна платформа з відкритим вихідним кодом для автоматизації розумного будинку, яка ставить приватність та локальний контроль на перше місце. Вона дозволяє об'єднувати пристрої від різних виробників в єдину систему, створювати складні автоматизації, відстежувати стан датчиків та керувати всіма аспектами вашого будинку з єдиного інтерфейсу.
У цьому посібнику ми розгорнемо Home Assistant на віртуальному приватному сервері (VPS). Це рішення дає кілька ключових переваг:
- Повний контроль та приватність: Ваші дані залишаються на вашому сервері. Ви не залежите від хмарних сервісів та їхньої політики конфіденційності.
- Гнучкість та масштабованість: VPS надає значно більше ресурсів, ніж одноплатні комп'ютери на кшталт Raspberry Pi, що дозволяє обробляти більше інтеграцій, автоматизацій та зберігати більший обсяг даних без зниження продуктивності.
- Надійність 24/7: VPS зазвичай розміщуються в професійних дата-центрах з високою доступністю та стабільним інтернет-з'єднанням, що забезпечує безперебійну роботу вашої системи розумного будинку.
- Віддалений доступ: Ми налаштуємо безпечний доступ до Home Assistant з будь-якої точки світу через доменне ім'я та HTTPS, захищений SSL-сертифікатом.
Як альтернативи Home Assistant на VPS можна розглянути:
- Home Assistant Green/Yellow або Raspberry Pi: Локальне рішення, просте в розгортанні, але обмежене за ресурсами та вимагає постійного живлення та інтернет-з'єднання у вашому будинку.
- Хмарні платформи розумного будинку (Google Home, Amazon Alexa, Apple HomeKit): Зручні, але часто вимагають передачі ваших даних на їхні сервери та обмежують контроль над пристроями.
- Managed-рішення (наприклад, Home Assistant Cloud): Пропонують зручний віддалений доступ та інтеграцію з голосовими помічниками за абонентську плату, але все ще залежать від стороннього сервісу.
Вибір self-hosted рішення на VPS дозволяє об'єднати переваги локального контролю з надійністю та продуктивністю хмарної інфраструктури, роблячи його ідеальним для просунутих користувачів та тих, хто цінує приватність.
Який VPS-конфіг потрібен для цього завдання
Вибір відповідного VPS-конфігу критично важливий для стабільної та швидкої роботи Home Assistant, особливо в міру зростання вашої системи розумного будинку.
Мінімальні вимоги (для невеликих інсталяцій, до 20-30 пристроїв/інтеграцій)
- CPU: 2 ядра (архітектура x86-64)
- RAM: 4 ГБ (Home Assistant може бути вимогливим до пам'яті, особливо з базою даних та безліччю доповнень)
- Диск: 80 ГБ SSD (швидкий диск важливий для бази даних Home Assistant та оперативного доступу до файлів; 80 ГБ дають запас для логів, резервних копій та зростання БД)
- Мережа: 100 Мбіт/с (достатньо для віддаленого доступу та оновлень)
- Операційна система: Ubuntu Server 24.04 LTS (рекомендується)
Рекомендований VPS-план (для середніх та великих інсталяцій, 50+ пристроїв, камери, голосові помічники)
- CPU: 4 ядра
- RAM: 8 ГБ
- Диск: 160 ГБ SSD (із запасом для довгострокових даних, історії та можливих Docker-образів інших сервісів)
- Мережа: 1 Гбіт/с (для швидкого завантаження, стрімінгу відео з камер)
- Операційна система: Ubuntu Server 24.04 LTS
Для оренди VPS з такими характеристиками можна розглянути VPS із зазначеними характеристиками, що підходить для надійного хостингу Home Assistant.
Коли потрібен dedicated сервер, а не VPS
Dedicated сервер може знадобитися в рідкісних випадках, якщо:
- Ви плануєте дуже велику інсталяцію Home Assistant (сотні пристроїв, десятки IP-камер з обробкою відео).
- Вам потрібні абсолютно всі ресурси сервера без віртуалізації.
- Ви хочете розмістити на сервері безліч інших ресурсоємних програм крім Home Assistant.
- Потрібне специфічне апаратне забезпечення, недоступне на VPS (наприклад, GPU для ІІ-завдань).
У більшості випадків для Home Assistant достатньо добре сконфігурованого VPS. Якщо ваш проєкт вимагає максимальної продуктивності та повного контролю над обладнанням, можна розглянути відповідний dedicated сервер.
Локація: на що впливає
Вибір локації VPS-сервера може вплинути на кілька аспектів:
- Затримка (Latency): Якщо ви плануєте використовувати Home Assistant для керування пристроями, що вимагають мінімальної затримки (наприклад, для миттєвої реакції на датчики), краще вибрати сервер, географічно близький до вас або вашого будинку. Однак для більшості автоматизацій та віддаленого доступу затримка в 50-150 мс не буде критичною.
- Законодавство: Залежно від ваших уподобань щодо приватності та зберігання даних, ви можете вибрати юрисдикцію, яка відповідає вашим вимогам.
- Ціна: Ціни на VPS можуть варіюватися залежно від локації дата-центру.
Для Home Assistant, що працює з пристроями у вашому будинку, основне значення має стабільне та досить швидке інтернет-з'єднання між вашим будинком та VPS. Географічна близькість до ваших фізичних пристроїв розумного будинку має менше значення, оскільки більшість сучасних інтеграцій Home Assistant використовують API-виклики, а не прямий локальний доступ до пристроїв, якщо тільки ви не налаштовуєте специфічні локальні мости.
Підготовка сервера
Перед встановленням Home Assistant необхідно виконати базове налаштування та захист вашого VPS. Ми будемо використовувати Ubuntu Server 24.04 LTS як стабільну та широко використовувану операційну систему.
1. Підключення по SSH
Підключіться до вашого нового VPS, використовуючи SSH. Вам знадобляться IP-адреса сервера та облікові дані (зазвичай root-користувач і пароль, або SSH-ключ).
ssh root@ВАША_IP_АДРЕСА_VPS
2. Створення нового користувача та налаштування sudo
Працювати під root-користувачем небезпечно. Створимо нового користувача та додамо його до групи sudo.
# Замініть 'ваш_користувач' на бажане ім'я користувача
adduser ваш_користувач
usermod -aG sudo ваш_користувач
Тепер вийдіть із сесії root і увійдіть під новим користувачем:
exit
ssh ваш_користувач@ВАША_IP_АДРЕСА_VPS
3. Налаштування автентифікації за SSH-ключами (рекомендується)
Якщо ви ще не використовуєте SSH-ключі, це найбезпечніший спосіб автентифікації. Згенеруйте ключі на вашій локальній машині, якщо їх немає:
# На вашій ЛОКАЛЬНІЙ машині
ssh-keygen -t ed25519 -C "ваша_пошта@example.com"
Скопіюйте публічний ключ на сервер:
# На вашій ЛОКАЛЬНІЙ машині
ssh-copy-id ваш_користувач@ВАША_IP_АДРЕСА_VPS
Після успішного копіювання, відключіть вхід за паролем для root та вашого нового користувача. Відредагуйте файл конфігурації SSH-сервера:
sudo nano /etc/ssh/sshd_config
Знайдіть та змініть наступні рядки (або додайте, якщо відсутні):
# Відключаємо вхід за паролем
PasswordAuthentication no
# Відключаємо вхід для root
PermitRootLogin no
Перезапустіть SSH-сервіс:
sudo systemctl restart sshd
4. Оновлення системи
Завжди починайте з оновлення пакетної бази та встановлених пакетів.
sudo apt update && sudo apt upgrade -y
5. Налаштування брандмауера (UFW)
UFW (Uncomplicated Firewall) — це простий у використанні інтерфейс для iptables. Налаштуємо його, щоб дозволити лише необхідні порти.
# Встановлюємо UFW, якщо не встановлений
sudo apt install ufw -y
# Дозволяємо SSH (порт 22)
sudo ufw allow ssh
# Дозволяємо HTTP (порт 80) та HTTPS (порт 443) для веб-доступу та Let's Encrypt
sudo ufw allow http
sudo ufw allow https
# Дозволяємо порт Home Assistant (зазвичай 8123), якщо планується прямий доступ без проксі
# Однак, ми будемо використовувати Caddy як зворотний проксі, тому цей порт можна залишити закритим ззовні
# sudo ufw allow 8123/tcp
# Вмикаємо брандмауер
sudo ufw enable
Підтвердіть, що хочете продовжити, якщо UFW попередить про можливий розрив SSH-з'єднання. Перевірте статус:
sudo ufw status verbose
6. Встановлення Fail2Ban
Fail2Ban сканує логи та блокує IP-адреси, що показують ознаки шкідливих атак (наприклад, багаторазові невдалі спроби входу в SSH).
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Створіть файл локальної конфігурації для Fail2Ban, щоб ваші зміни не були перезаписані під час оновлення пакета:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
У файлі jail.local переконайтеся, що секція [sshd] активна (enabled = true) і, можливо, налаштуйте bantime (час блокування) та maxretry (кількість спроб).
# Приклад секції sshd у jail.local
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
# bantime = 1d # Заблокувати на 1 день
# maxretry = 3 # Заблокувати після 3 невдалих спроб
Збережіть зміни та перезапустіть Fail2Ban:
sudo systemctl restart fail2ban
7. Встановлення базових утиліт
Встановимо кілька корисних утиліт, які стануть у пригоді в процесі встановлення та обслуговування.
sudo apt install curl wget git htop ntpdate -y
ntpdate допоможе синхронізувати системний час, що важливо для роботи SSL-сертифікатів та багатьох мережевих сервісів. У сучасних Ubuntu systemd-timesyncd зазвичай вже активний і досить ефективний.
# Перевірка статусу синхронізації часу
timedatectl status
Встановлення ПЗ — покроково
Тепер, коли сервер підготовлено, приступимо до встановлення Docker, Docker Compose, Home Assistant та зворотного проксі з SSL.
1. Встановлення Docker Engine (актуально для 2026 року)
Ми будемо встановлювати Docker з офіційного репозиторію Docker для отримання найсвіжіших версій.
# Оновлюємо список пакетів
sudo apt update
# Встановлюємо необхідні пакети для встановлення Docker з репозиторію
sudo apt install ca-certificates curl gnupg lsb-release -y
# Додаємо офіційний GPG ключ Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Додаємо репозиторій Docker до APT джерел
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Оновлюємо список пакетів з урахуванням нового репозиторію Docker
sudo apt update
# Встановлюємо Docker Engine, Docker CLI та containerd
sudo apt install docker-ce docker-ce-cli containerd.io -y
# Перевіряємо статус Docker
sudo systemctl status docker
Додаємо нашого користувача до групи docker, щоб виконувати команди Docker без sudo (потрібне перепідключення до SSH).
# Замініть 'ваш_пользователь' на ваше ім'я користувача
sudo usermod -aG docker ваш_пользователь
# Перепідключіться до SSH, щоб зміни набули чинності
exit
ssh ваш_пользователь@ВАШ_IP_АДРЕС_VPS
Перевірте, що Docker працює, запустивши тестовий контейнер:
docker run hello-world
2. Встановлення Docker Compose Plugin
У сучасних версіях Docker Compose є плагіном Docker CLI. Встановлюємо його:
sudo apt install docker-compose-plugin -y
# Перевіряємо версію Docker Compose
docker compose version
3. Підготовка структури каталогів для Home Assistant
Створимо каталог, де зберігатимуться конфігураційні файли Home Assistant та docker-compose.yml.
mkdir ~/homeassistant
cd ~/homeassistant
4. Створення файлу docker-compose.yml для Home Assistant
Створіть файл docker-compose.yml. У ньому ми визначимо сервіс Home Assistant, його порти, томи для зберігання даних та політику перезапуску.
nano docker-compose.yml
Вставте наступний вміст:
# Версія Docker Compose файлу
version: '3'
# Визначаємо сервіси
services:
homeassistant:
# Використовуємо офіційний образ Home Assistant Core
# Актуальний образ для 2026 року буде 'homeassistant/home-assistant:stable' або 'homeassistant/home-assistant:2026.x.x'
image: homeassistant/home-assistant:stable
# Назва контейнера
container_name: homeassistant
# Вказуємо, які порти контейнера мапувати на хост
# Порт 8123 - стандартний порт Home Assistant
# Ми мапуємо його на локальний порт 8123, який буде доступний лише всередині VPS
# Доступ ззовні буде через Caddy (зворотний проксі)
ports:
- "127.0.0.1:8123:8123"
# Томи для збереження даних Home Assistant
# /path/to/your/config:/config - замініть на актуальний шлях на вашому VPS
volumes:
- ./config:/config
- /etc/localtime:/etc/localtime:ro
# Дозволяємо контейнеру доступ до хост-мережі для виявлення пристроїв
# network_mode: host # Можна використовувати, але тоді порт 8123 буде відкритий на всіх інтерфейсах VPS
# Краще використовувати bridge network та налаштувати trusted_proxies у HA
# Перезапускати контейнер автоматично, якщо він зупинився
restart: unless-stopped
# Встановлення часової зони
environment:
TZ: Europe/Moscow # Або ваша часова зона
Збережіть файл (Ctrl+O, Enter, Ctrl+X).
5. Запуск Home Assistant
Запустіть контейнер Home Assistant за допомогою Docker Compose:
docker compose up -d
Перевірте статус контейнера:
docker compose ps
docker logs homeassistant
Перший запуск Home Assistant може зайняти кілька хвилин, поки він завантажує всі необхідні компоненти.
6. Встановлення та налаштування Caddy (зворотний проксі з авто-SSL)
Caddy — це потужний веб-сервер, який автоматично керує SSL-сертифікатами від Let's Encrypt. Він ідеально підходить для нашого випадку.
6.1. Додавання репозиторію Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
6.2. Встановлення Caddy
sudo apt install caddy -y
6.3. Налаштування Caddyfile
Створіть або відредагуйте файл конфігурації Caddy. Переконайтеся, що у вас є доменне ім'я (наприклад, ha.yourdomain.com), яке вказує на IP-адресу вашого VPS.
sudo nano /etc/caddy/Caddyfile
Видаліть весь існуючий вміст і вставте наступне, замінивши ha.yourdomain.com на ваш реальний домен:
# Ваш домен для Home Assistant
ha.yourdomain.com {
# Вмикаємо автоматичну видачу та оновлення SSL-сертифіката Let's Encrypt
tls [email protected]
# Зворотний проксі до Home Assistant, запущеного на локальному порту 8123
reverse_proxy 127.0.0.1:8123 {
# Заголовки, необхідні для коректної роботи WebSocket та віддаленого IP
header_up Host {host}
header_up X-Real-IP {remote_ip}
header_up X-Forwarded-For {remote_ip}
header_up X-Forwarded-Proto {scheme}
}
# Вмикаємо стиснення, якщо необхідно (опціонально)
# encode gzip zstd
# Логування (опціонально)
# log {
# output file /var/log/caddy/ha_access.log
# }
}
Збережіть файл (Ctrl+O, Enter, Ctrl+X).
6.4. Перевірка та запуск Caddy
# Перевіряємо синтаксис Caddyfile
sudo caddy validate --config /etc/caddy/Caddyfile
# Перезапускаємо сервіс Caddy, щоб застосувати зміни
sudo systemctl reload caddy
# Перевіряємо статус Caddy
sudo systemctl status caddy
Переконайтеся, що Caddy успішно запустився та отримав SSL-сертифікат. Це може зайняти кілька секунд.