bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення Home Assistant на VPS:

calendar_month Jul 06, 2026 schedule 22 хв. читання visibility 28 переглядів
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Встановлення 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-сертифікат. Це може зайняти кілька секунд.

Конфігурація

Після встановлення Home Assistant та налаштування зворотного проксі необхідно виконати початкову конфігурацію Home Assistant, щоб він коректно працював через доменне ім'я та SSL.

1. Первинне налаштування Home Assistant

Відкрийте ваш браузер і перейдіть за адресою https://ha.yourdomain.com (замініть на ваш домен). Ви повинні побачити сторінку привітання Home Assistant.

  1. Створіть обліковий запис власника: Введіть ім'я, логін та пароль для першого користувача. Це буде ваш основний адміністративний обліковий запис.
  2. Налаштуйте місцезнаходження: Вкажіть ваше місцезнаходження, часовий пояс та одиниці вимірювання. Це важливо для коректної роботи багатьох інтеграцій та автоматизацій (наприклад, для світанку/заходу сонця).
  3. Виявлення пристроїв: Home Assistant спробує автоматично виявити деякі пристрої у вашій локальній мережі. Оскільки Home Assistant працює в Docker на VPS, він не бачитиме локальну мережу вашого будинку безпосередньо. Ви додаватимете пристрої вручну або через інші мости/шлюзи.
  4. Завершіть налаштування: Ви потрапите на головний дашборд Home Assistant.

2. Конфігурація Home Assistant для роботи через зворотний проксі

Для коректної роботи Home Assistant через зворотний проксі (Caddy) необхідно повідомити йому про довірені проксі та увімкнути використання заголовків X-Forwarded-For.

Підключіться до вашого VPS та перейдіть до каталогу конфігурації Home Assistant:


cd ~/homeassistant/config
nano configuration.yaml

Додайте наступні рядки до configuration.yaml:


# Базова конфігурація Home Assistant
homeassistant:
  # Якщо ви використовуєте домен ha.yourdomain.com
  external_url: "https://ha.yourdomain.com"
  internal_url: "http://127.0.0.1:8123" # Внутрішня адреса, доступна лише на VPS

# Довірені проксі
http:
  use_x_forwarded_for: true
  # IP-адреса вашого VPS. Це важливо, щоб Home Assistant довіряв запитам від Caddy.
  # Якщо Caddy запущено на тому ж хості, що й Home Assistant, використовуйте 172.17.0.1 (IP Docker-мосту)
  # або підмережу Docker, якщо у вас складна конфігурація мережі.
  # Для простоти, якщо Caddy на тому ж хості, можна використовувати IP-адресу вашого VPS
  # або розглянути використання IP-адреси Docker-мосту.
  # На Ubuntu з Docker за замовчуванням, IP Docker-мосту часто 172.17.0.1
  # Перевірити можна командою: docker network inspect bridge
  trusted_proxies:
    - 172.17.0.0/16 # Приклад: вся підмережа Docker-мосту
    # Або конкретний IP, якщо Caddy не в Docker або на іншому хості:
    # - ВАШ_IP_АДРЕС_VPS

Збережіть файл (Ctrl+O, Enter, Ctrl+X).

Щоб зміни набули чинності, перезапустіть контейнер Home Assistant:


cd ~/homeassistant
docker compose restart homeassistant

Дочекайтеся повного перезапуску (1-2 хвилини), потім оновіть сторінку Home Assistant у браузері.

3. Використання секретів (secrets.yaml)

Для зберігання чутливих даних, таких як API-ключі, паролі, токени, наполегливо рекомендується використовувати файл secrets.yaml. Ніколи не зберігайте їх безпосередньо в configuration.yaml.

У configuration.yaml ви посилаєтеся на секрет так:


# Приклад у configuration.yaml
sensor:
  - platform: template
    sensors:
      my_secret_api_key: !secret my_api_key

А потім створюєте файл secrets.yaml у тому ж каталозі ~/homeassistant/config/:


nano ~/homeassistant/config/secrets.yaml

І додаєте туди сам секрет:


# Приклад у secrets.yaml
my_api_key: "ваш_очень_секретный_ключ"
my_password: "мой_супер_пароль_123"

Переконайтеся, що права доступу до secrets.yaml обмежені:


chmod 600 ~/homeassistant/config/secrets.yaml

4. Перевірка працездатності

Після всіх налаштувань переконайтеся, що все працює коректно:

  • Доступ по HTTPS: Відкрийте https://ha.yourdomain.com у браузері. Переконайтеся, що бачите зелений замок і жодних попереджень про безпеку.
  • Перевірка SSL-сертифіката: У браузері перевірте деталі сертифіката (ким виданий, термін дії).
  • Перевірка WebSocket-з'єднання: Home Assistant активно використовує WebSocket. Відкрийте панель розробника в браузері (F12), вкладку "Network" і переконайтеся, що немає помилок WebSocket.
  • Перевірка логів Home Assistant: Переконайтеся, що немає критичних помилок, пов'язаних з мережею або проксі.

cd ~/homeassistant
docker compose logs homeassistant

Ви успішно налаштували Home Assistant на VPS з безпечним доступом через HTTPS!

Резервні копії та обслуговування

Регулярні резервні копії та своєчасне обслуговування — ключ до довгострокової стабільності вашої системи розумного будинку. Втрата даних Home Assistant може призвести до втрати всіх налаштувань, автоматизацій та історії пристроїв.

1. Що резервувати

Основний обсяг даних Home Assistant зберігається в каталозі config, який ми примонтували до контейнера. У ньому знаходяться:

  • Конфігураційні файли: configuration.yaml, secrets.yaml та інші YAML-файли для інтеграцій, автоматизацій, скриптів.
  • База даних: Зазвичай файл home-assistant_v2.db (SQLite) або дані для зовнішньої БД (PostgreSQL, MariaDB). У ній зберігається вся історія станів пристроїв, логи та події.
  • Додатки (Add-ons) та кастомні інтеграції (Custom Components): Якщо ви використовуєте Home Assistant Core без Supervisor, то додатки встановлюються окремо. Кастомні інтеграції зазвичай знаходяться в каталозі custom_components.
  • Медіафайли: Якщо Home Assistant використовується для зберігання зображень або інших медіа.

Також не забудьте про конфігурацію Caddy: /etc/caddy/Caddyfile.

2. Простий скрипт авторезервування з Restic

Restic — це сучасна, швидка та безпечна програма для резервного копіювання. Вона підтримує дедуплікацію, шифрування та безліч бекендів (S3, SFTP, локальний диск).

2.1. Встановлення Restic


# Загрузка последней версии Restic (актуально для 2026)
# Проверьте страницу релизов Restic на GitHub для последней версии
wget https://github.com/restic/restic/releases/download/v0.16.4/restic_0.16.4_linux_amd64.bz2 -O restic.bz2
bzip2 -d restic.bz2
sudo mv restic /usr/local/bin/restic
sudo chmod +x /usr/local/bin/restic

2.2. Ініціалізація репозиторію Restic

Ми будемо використовувати зовнішній S3-сумісний бекенд (наприклад, MinIO, Wasabi, Backblaze B2 або AWS S3). Створіть бакет та отримайте ключі доступу.


# Установите переменные окружения для S3
export AWS_ACCESS_KEY_ID="ВАШ_S3_КЛЮЧ_ДОСТУПА"
export AWS_SECRET_ACCESS_KEY="ВАШ_S3_СЕКРЕТНЫЙ_КЛЮЧ"
export RESTIC_REPOSITORY="s3:s3.your-s3-provider.com/ваш-бакет-для-ha" # Замените на ваш S3-эндпоинт и бакет
export RESTIC_PASSWORD="ВАШ_НАДЕЖНЫЙ_ПАРОЛЬ_ДЛЯ_РЕПОЗИТОРИЯ_RESTIC"

# Инициализируем репозиторий Restic
restic init

Важливо: Запишіть RESTIC_PASSWORD у безпечному місці!

2.3. Створення скрипта резервного копіювання

Створіть файл backup_ha.sh у домашньому каталозі вашого користувача:


nano ~/backup_ha.sh

Вставте наступний вміст, замінивши змінні на ваші значення:


#!/bin/bash

# Переменные окружения для Restic
export AWS_ACCESS_KEY_ID="ВАШ_S3_КЛЮЧ_ДОСТУПА"
export AWS_SECRET_ACCESS_KEY="ВАШ_S3_СЕКРЕТНЫЙ_КЛЮЧ"
export RESTIC_REPOSITORY="s3:s3.your-s3-provider.com/ваш-бакет-для-ha"
export RESTIC_PASSWORD="ВАШ_НАДЕЖНЫЙ_ПАРОЛЬ_ДЛЯ_РЕПОЗИТОРИЯ_RESTIC"

# Директории для бэкапа
HA_CONFIG_DIR="/home/ваш_пользователь/homeassistant/config"
CADDY_CONFIG_FILE="/etc/caddy/Caddyfile"

# Логирование
LOG_FILE="/var/log/ha_backup.log"

# Функция для логирования
log_message() {
  echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | sudo tee -a "$LOG_FILE"
}

log_message "Starting Home Assistant backup..."

# Остановка Home Assistant перед бэкапом БД (для консистентности)
# Если вы используете внешнюю БД, этот шаг может быть не нужен или должен быть адаптирован
cd /home/ваш_пользователь/homeassistant
docker compose stop homeassistant
log_message "Home Assistant container stopped."

# Выполнение бэкапа
restic backup \
  "$HA_CONFIG_DIR" \
  "$CADDY_CONFIG_FILE" \
  --verbose \
  --tag "homeassistant-daily" \
  --exclude-file "$HA_CONFIG_DIR/.gitignore" \
  --exclude ".log" \
  --exclude ".sqlite-journal" \
  --exclude "__pycache__" \
  --exclude ".storage" \
  --host "vps-$(hostname)" 2>&1 | sudo tee -a "$LOG_FILE"

# Удаление старых бэкапов (политика: хранить 7 последних ежедневных, 4 еженедельных, 12 ежемесячных, 1 ежегодный)
restic forget \
  --prune \
  --tag "homeassistant-daily" \
  --keep-daily 7 \
  --keep-weekly 4 \
  --keep-monthly 12 \
  --keep-yearly 1 2>&1 | sudo tee -a "$LOG_FILE"

# Запуск Home Assistant после бэкапа
docker compose start homeassistant
log_message "Home Assistant container started."

log_message "Backup finished."

Зробіть скрипт виконуваним:


chmod +x ~/backup_ha.sh

2.4. Додавання скрипта до Cron

Налаштуємо щоденний запуск скрипта резервного копіювання о 3 годині ночі.


crontab -e

Додайте наступний рядок у кінець файлу:


0 3   * /home/ваш_пользователь/backup_ha.sh > /dev/null 2>&1

Примітка: Переконайтеся, що змінні оточення для Restic (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, RESTIC_REPOSITORY, RESTIC_PASSWORD) або прописані безпосередньо в скрипті backup_ha.sh, або доступні через профіль користувача, під яким запускається cron (що складніше). Найпростіше вставити їх у сам скрипт.

Також переконайтеся, що користувач ваш_пользователь має права на запис у /var/log/ha_backup.log (або змініть шлях до логу).

3. Куди зберігати резервні копії

Як показано вище, рекомендується використовувати зовнішній S3-сумісний сервіс для зберігання резервних копій. Це забезпечує географічну віддаленість та високу доступність даних, що критично важливо у випадку виходу з ладу самого VPS.

  • S3-сумісні сховища: Backblaze B2, Wasabi, Amazon S3, DigitalOcean Spaces, Linode Object Storage.
  • Інший VPS: Можна налаштувати Restic для резервного копіювання на інший VPS через SFTP, якщо у вас є другий сервер.

4. Оновлення: Rolling vs Maintenance Window

Регулярні оновлення важливі для безпеки та отримання нових функцій.

  • Оновлення Home Assistant:

    Home Assistant випускає оновлення приблизно раз на місяць. Для оновлення Docker-контейнера:

    
    cd ~/homeassistant
    docker compose pull homeassistant # Загружает новый образ
    docker compose up -d homeassistant # Останавливает старый, запускает новый
    

    Рекомендується виконувати це у "вікно обслуговування" (maintenance window), коли ви можете контролювати процес та швидко усунути можливі проблеми. Перед оновленням рекомендується зробити резервну копію.

  • Оновлення ОС та Docker:

    Регулярно оновлюйте операційну систему та Docker Engine:

    
    sudo apt update && sudo apt upgrade -y
    

    Це також краще робити у вікно обслуговування, оскільки деякі оновлення ядра або Docker можуть вимагати перезавантаження VPS.

  • Оновлення Caddy:

    Caddy оновлюється разом із системними пакетами, якщо ви використовували репозиторій:

    
    sudo apt update && sudo apt upgrade -y
    sudo systemctl reload caddy # После обновления
    

Вирішення проблем + FAQ

Home Assistant не запускається або видає помилку 502 Bad Gateway

Що перевірити:

  1. Логи Docker-контейнера Home Assistant: Перевірте, що контейнер Home Assistant запущено і немає критичних помилок у його логах.
  2. Статус контейнера: Переконайтеся, що контейнер Home Assistant перебуває у стані "running".
  3. Логи Caddy: Якщо Caddy видає 502, це означає, що він не може достукатися до Home Assistant. Перевірте логи Caddy на предмет помилок з'єднання.
  4. Доступність порту Home Assistant: Переконайтеся, що Home Assistant слухає на порту 8123 всередині VPS (curl http://127.0.0.1:8123).

Як виправити:


cd ~/homeassistant
docker compose ps # Перевірити статус
docker compose logs homeassistant # Перевірити логи HA
sudo journalctl -u caddy --no-pager # Перевірити логи Caddy

Якщо в логах Home Assistant є помилки конфігурації, виправте configuration.yaml і перезапустіть контейнер. Якщо Caddy не може з'єднатися, перевірте порт у Caddyfile і переконайтеся, що Home Assistant дійсно слухає на 127.0.0.1:8123.

Немає доступу по HTTPS або помилка SSL

Що перевірити:

  1. DNS-запис: Переконайтеся, що ваш A-запис для домену (наприклад, ha.yourdomain.com) коректно вказує на IP-адресу вашого VPS. Використовуйте dig ha.yourdomain.com або nslookup ha.yourdomain.com.
  2. Брандмауер (UFW): Переконайтеся, що порти 80 (HTTP) і 443 (HTTPS) відкриті. Let's Encrypt використовує порт 80 для перевірки домену.
  3. Логи Caddy: Caddy автоматично намагається отримати SSL-сертифікат. Перевірте його логи на помилки, пов'язані з Let's Encrypt.
  4. Синтаксис Caddyfile: Помилка в конфігурації Caddyfile може перешкодити його запуску або отриманню сертифіката.

Як виправити:


sudo ufw status verbose # Перевірити статус UFW
sudo journalctl -u caddy --no-pager # Перевірити логи Caddy
sudo caddy validate --config /etc/caddy/Caddyfile # Перевірити синтаксис Caddyfile

Якщо проблема в DNS, дочекайтеся оновлення записів. Якщо в UFW, відкрийте порти. Якщо в Caddy, виправте Caddyfile і перезапустіть sudo systemctl reload caddy.

Проблеми з інтеграціями або виявленням пристроїв

Що перевірити:

  1. Налаштування мережі Docker: За замовчуванням Home Assistant у Docker знаходиться в ізольованій мережі. Це означає, що він не може безпосередньо "бачити" пристрої у вашій домашній локальній мережі.
  2. Налаштування Home Assistant: Переконайтеся, що всі інтеграції налаштовані з правильними обліковими даними та IP-адресами/хостами.
  3. Firewall на VPS: Якщо ви намагаєтеся підключитися до пристроїв у вашому домі через VPN або іншу складну мережу, переконайтеся, що firewall на VPS не блокує ці з'єднання.

Як виправити:

Для виявлення локальних пристроїв вам знадобиться налаштувати VPN-тунель (наприклад, WireGuard) між вашим VPS і вашою домашньою мережею, щоб Home Assistant міг "бачити" локальні IP-адреси. Або використовувати MQTT-брокер, який виступає в ролі посередника, або хмарні інтеграції, якщо вони підтримуються вашими пристроями.

Який VPS-конфіг мінімально підійде?

Мінімально рекомендований конфіг для Home Assistant на VPS — це 2 ядра CPU, 4 ГБ ОЗП та 80 ГБ SSD-диска. Цього достатньо для невеликої системи розумного будинку (до 20-30 пристроїв) з базовими автоматизаціями та історією даних. Однак, якщо ви плануєте активно використовувати камери, складні скрипти, голосових помічників або зберігати довгу історію, рекомендується збільшити ресурси до 4 ядер CPU, 8 ГБ ОЗП та 160 ГБ SSD для більш комфортної роботи та запасу на майбутнє.

Що обрати — VPS чи dedicated для цього завдання?

Для більшості користувачів Home Assistant на VPS є оптимальним вибором. Він пропонує достатню продуктивність, гнучкість та надійність за більш доступною ціною, ніж dedicated сервер. Dedicated сервер варто розглядати лише в дуже специфічних випадках: якщо у вас сотні пристроїв, безліч IP-камер з відеоаналітикою, ви плануєте запускати десятки інших ресурсоємних сервісів на тому ж сервері, або вам потрібен повний апаратний контроль для специфічних завдань (наприклад, з GPU). У 95% випадків VPS буде більш ніж достатньо.

Як оновити Home Assistant?

Для оновлення Home Assistant, запущеного в Docker, перейдіть до каталогу з вашим docker-compose.yml (наприклад, ~/homeassistant) та виконайте наступні команди:


docker compose pull homeassistant # Завантажує останню стабільну версію образу Home Assistant
docker compose up -d homeassistant # Зупиняє поточний контейнер і запускає новий з оновленим образом

Завжди робіть резервну копію конфігурації перед оновленням.

Як перенести Home Assistant на новий сервер?

Перенесення Home Assistant, розгорнутого за допомогою Docker Compose, відносно просте. Вам потрібно:

  1. Створити повний бекап вашого поточного каталогу ~/homeassistant/config.
  2. Скопіювати цей бекап на новий сервер.
  3. Встановити Docker та Docker Compose на новому сервері.
  4. Створити структуру каталогів та файл docker-compose.yml, як описано в цьому посібнику.
  5. Розпакувати бекап у каталог ~/homeassistant/config на новому сервері.
  6. Запустити Home Assistant за допомогою docker compose up -d.
  7. Налаштувати DNS та Caddy на новому сервері.

Це підкреслює перевагу Docker: усі залежності інкапсульовані, і перенесення зводиться до копіювання даних та конфігурації Docker.

Проблеми з продуктивністю Home Assistant

Що перевірити:

  1. Використання ресурсів VPS: Використовуйте htop, docker stats для моніторингу CPU, RAM та дискового I/O.
  2. Розмір бази даних: Велика база даних Home Assistant (home-assistant_v2.db) може уповільнювати роботу.
  3. Кількість інтеграцій та автоматизацій: Занадто багато активних інтеграцій або неоптимізованих автоматизацій можуть споживати ресурси.

Як виправити:

Якщо VPS перевантажений, розгляньте апгрейд ресурсів. Для оптимізації бази даних налаштуйте recorder у configuration.yaml, щоб виключити непотрібні сутності із запису або обмежити термін зберігання даних. Проаналізуйте свої автоматизації на предмет циклічних або ресурсоємних завдань. Можливо, деякі інтеграції можна перенести на окремі пристрої (наприклад, Zigbee2MQTT на Raspberry Pi).

Висновки та наступні кроки

Вітаємо! Ви успішно встановили та налаштували Home Assistant на вашому VPS з використанням Docker та безпечним доступом через HTTPS. Тепер у вас є повністю контрольована, приватна та масштабована платформа для керування вашим розумним будинком, доступна з будь-якої точки світу. Це рішення дає вам максимальну гнучкість та незалежність від сторонніх сервісів.

Ось кілька наступних кроків, які допоможуть вам максимально використати вашу нову систему:

  • Інтеграція пристроїв: Почніть додавати свої розумні пристрої та сервіси до Home Assistant. Вивчіть офіційну документацію Home Assistant щодо інтеграцій.
  • Створення автоматизацій: Використовуйте потужні інструменти автоматизації Home Assistant для створення сценаріїв, які зроблять ваш будинок розумнішим та комфортнішим.
  • Дослідження доповнень та кастомних інтеграцій: Розширюйте функціональність вашої системи за допомогою спільноти Home Assistant, вивчаючи доступні доповнення та користувацькі компоненти.
  • Моніторинг та оптимізація: Продовжуйте моніторити ресурси вашого VPS, оптимізуйте базу даних та автоматизації для забезпечення стабільної та швидкої роботи системи.

Поділитися цим записом:

Встановлення Home Assistant на VPS: повне керівництво з Docker і SSL
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.