Як встановити Home Assistant в Portainer: посібник

Усім привіт. Сьогодні покажу, як встановити та налаштувати Portainer з застосунками домашньої автоматизації Home Assistant, Mosquitto, Zigbee2MQTT, Cloudflare та Duplicati. Для зручності посібник має зміст та посилання.

Зміст статті

Принципи роботи Docker

ℹ️ Docker-контейнер — це «коробка», в якій упакована програма разом з усім необхідним для її роботи залежностями. Така «коробка» працює однаково на будь-якому комп’ютері чи сервері.

Зберігання даних в Docker

Docker може використовувати локальні каталоги ОС (bind mounts) або створювати власні томи (volumes). Під час створення Docker-контейнера томи, або каталоги ОС, зіставляються з внутрішніми каталогами самого застосунку.

Приклад використання bind mounts: каталог /app/data у контейнері — це те саме, що каталог /home/bogdan/zigbee2mqtt/data на комп’ютері.

Приклад використання томів: каталог /config у контейнері — це те саме, що том з назвою homeassistant_data.

Для доступу до каталогів ОС не потрібен пароль, дані контейнера можна переглядати з файлового менеджера ОС. Це зручно під час використання docker-compose, оскільки всі конфігурації розташовані в одному місці та легше робити резервне копіювання (вказавши один спільний каталог)

Томи захищені паролем і до них можна отримати доступ через командний рядок лише з sudo-правами. У статті в налаштуванні більшості застосунків я використовую томи, але Zigbee2MQTT потребує використання bind mounts.

docker-compose

ℹ️ Docker Compose — це розширення Docker, що дозволяє створити контейнер за допомогою одного текстового YAML-файлу.

Такі файли зручно читати, зберігати та ділитись ними. YAML-файли не створюються самостійно, навіть якщо ви розгортаєте контейнер за допомогою docker pull або Portainer. Щоб використовувати docker compose, потрібно створити YAML-файл в ОС або Portainer (пункт App Temlates >> Custom Templates) У цій статті я не використовую docker-compose, але якщо вас цікавить compose, перегляньте статтю Home Automation Guy.

Встановлення Docker в Linux

Встановлення Docker

Ця команда оновить репозиторій і пакети Linux до останньої версії: sudo apt update && sudo apt upgrade -y.

Це команда запустить скрипт встановлення Docker: curl -sSL https://get.docker.com | sh.

Встановлення Docker Compose

Швидко встановити Docker Compose можна використовуючи команду: sudo apt-get install docker-compose-plugin.

Встановлення Portainer в Linux

ℹ️ Portainer — це Docker-контейнер з графічним інтерфейсом, що допомагає керувати іншими Docker-контейнерами через браузер. Його можна встановити на будь-який компʼютер з Windows Linux чи macOS.

Portainer має дві версії: платну Business edition — BE та безкоштовну Community edition — CE. Я використовую CE 2.19.3, Portainer тестував на Linux Mint 21.2, проте ця інструкція актуальна для будь-якої ОС на основі Debian, зокрема Ubuntu, Raspberry Pi OS тощо.

Для встановлення Portainer виконайте команди:

sudo docker pull portainer/portainer-ce:latest

docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Перейдіть за адресою комп’ютера в браузері з портом 9000. У моєму випадку це 192.168.0.146:9000.

Оновлення Portainer

Portainer періодично оновлюється, і в нижній частині з’являється сповіщення про нову версію. Для оновлення в терміналі виконайте команди:

docker stop portainer — зупинити Portainer;

docker rm portainer — видалити;

docker pull portainer/portainer-ce:latest — завантажити останній образ;

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest — запустіть Portainer.

Встановлення Portainer в Windows (WSL2)

Щоб встановити Portainer у Windows, потрібно запустити Linux-дистрибутив за допомогою WSL та завантажити програму Docker Desktop.

Щоб увімкнути WSL на Windows 10 або 11, перейдіть до Панелі керування >> Програми >> Увімкнути або вимкнути засоби Windows та активуйте компоненти Hyper-V та Підсистема Windows для Linux.

Натисніть Ок, зачекайте завантаження компонентів, погодьтесь на перезавантаження компʼютера.

Відкрийте командний рядок (cmd) у режимі адміністратора та по черзі виконайте команди:

wsl --install

wsl --update

wsl --shutdown

Після їхнього виконання та завантаження необхідних компонентів у Меню пуск з’явиться піктограма Ubuntu. Відкрийте її, зачекайте встановлення, придумайте ім’я користувача та пароль.

Завантажте та встановіть Docker Desktop. Під час встановлення Docker запропонує використання WSL2 (Use WSL2 instead of Hyper-V) — цю галочку залишаємо.

Після встановлення запустіть Docker Desktop. У верхній частині екрана натисніть піктограму шестерні. У налаштуваннях натисніть на пункт Resources та активуйте перемикач напроти Ubuntu.

Docker запустить свій двигун та зʼєднається з машиною WSL. Про успішне зʼєднання свідчать напис Engine running та відображення RAM і CPU у нижній частині екрана.

Після цього в Ubuntu виконайте команди:

docker volume create portainer_data

docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Після розгортання Portainer, він відображатиметься у Docker Desktop. Відкрийте у браузері адресу http://192.168.0.114:9000/, де 192.168.0.144 — це локальна адреса вашого компʼютера.

Налаштування та інтерфейс Portainer

Перейдіть за адресою комп’ютера у браузері з портом 9000. У моєму випадку це 192.168.0.146:9000. Придумайте логін та пароль адміністратора.

Якщо ви довго придумуєте пароль, можете отримати таку помилку. Для виправлення в терміналі виконайте команду sudo docker restart portainer.

Після створення паролю оберіть локальне оточення Docker.

Перезавантаження контейнера

Для перезапуску достатньо відмітити один або декілька контейнерів галочками та натиснути піктограму перезапуску зверху.

Редагування та дублювання контейнера

Щоб змінити налаштування або скопіювати будь-який контейнер, натисніть на його назву в списку контейнерів. Після на панелі Actions натисніть Duplicate/Edit. Для копіювання застосунку достатньо змінити його назву (наприклад, zigbee2mqtt_2). За необхідності змініть інші налаштування. Натисніть Deploy the container.

Оновлення контейнера

Щоб оновити контейнер у Portainer, натисніть на назву контейнера, на панелі Actions натисніть Stop >> Recreate >> активуйте перемикач Re-pull image >> Recreate.
Для сповіщення про нові версії котейнерів можна використати diun. Для відстеження версії HA дивіться розділ Встановлення Home Assistant.

Видалення контейнера

Для видалення достатньо відмітити один або декілька контейнерів галочками та натиснути піктограму червоного кошика зверху.

Швидкі дії (Quick Actions)

Праворуч від назви контейнера є панель швидких команд. Вони дозволяють переглядати логи, статистику навантаження, отримати доступ до терміналу контейнера.

Бічне меню

  • Dashboard — загальна кількість контейнерів, томів, мереж, образів контейнерів.
  • App Templates — близько 50 готових шаблонів різних docker-застосунків. Більше шаблонів можна отримати зі сторонніх джерел.
  • Custom Templates — дозволяє розгортати контейнери з текстових конфігурацій docker-compose.
  • Stacks — це набір текстових конфігурацій, що працюють разом, як один застосунок.
  • Containers — список усіх контейнерів.
  • Images — список завантажених образів. Образи з поміткою unused не використовуються і їх можна сміливо видаляти.
  • Networks — список мереж.
  • Volumes — список томів docker.
  • Events — список подій контейнерів.
  • Host — інформація про комп’ютер та Docker, налаштування реєстрів контейнерів.

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

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

Home Assistant Container — це контейнерний образ Home Assistant без можливості встановлення застосунків всередині HA та оновлення за допомогою Supervisor.

Перед налаштуванням контейнера Home Assistant створіть окремий розділ для його даних. Для цього у меню Portainer оберіть пункт Volumes >> натисніть кнопку Add volume >> у полі name вкажіть назву homeassistant_data >> натисніть кнопку Create the volume.

Після в меню зліва обираємо пункт Container та натискаємо кнопку зверху справа — add container.

У вікні, що відкрилось у полі:

Name - homeassistant
Image - homeassistant/home-assistant:latest
Manual network port publishing - host: 8123 - container: 8123

У розділі Advanced container settings оберіть пункт Volumes та натисніть map additional volume та зіставте розділи:

container: /config
volume: homeassistant_data

У вкладці Network оберіть host.

У вкладці Environment, натисніть Add an Env variable та вкажіть:

name: TZ - value: Europe/Kyiv

У вкладці Restart оберіть Unless stopped.

Якщо використовуєте ZHA, додати USB-адаптер можна у вкладці Runtime & Resources. Натисніть add device. У полі host вкажіть адресу USB в Linux (як знайти адресу USB в Linux див. нижче). Продублюйте адресу в полі container. Натисніть Deploy the container.

Після цього контейнер з’явиться у списку. Якщо під час натискання на порт вас перенаправляє на 0.0.0.0:8123, перейдіть у меню пункт Environmentironments >> local та в полі Public IP впишіть адресу Portainer з адресної стрічки.

Перезавантаження Home Assistant

Перезавантажити Home Assistant можна з інтерфейсу самого HA. Для цього в меню зліва оберіть Інструменти для розробників >> Перезапустити.

Резервне копіювання Home Assistant

Для створення резервної копії перейдіть до Налаштування > Система > Резервні копії, натисніть Створити резервну копію. Після цього резервну копію можна перемістити вручну, наприклад, на Google Drive. Для автоматичного переміщення можна використати Duplicatti — про це нижче.

Відстеження версій Home Assistant

Зручно відстежувати версії Home Assistant container можна за допомогою інтеграції версій. Щоб встановити інтеграцію, перейдіть за посиланням та натисніть блакитну кнопку add integration або перейдіть в налаштування HA >> пристрої та сервіси >> додати інтеграцію >> Version. У вікні, що відкриється, оберіть Docker Hub >> Stable (default). А потім знову повторіть ці ж дії, але оберіть Local installation. Зрештою ви матимете два сенсори теперішньої версії встановлення та найновішої у Docker Hub. Після можна додати сутності на картку інформаційної панелі або створити автоматизацію сповіщення про вихід нової версії.

Пошук USB в Linux

Щоб додати USB пристрій в Portainer, потрібно знати його адресу. Вказати її можна декількома способами. Обирайте зручніший для вас.

Адреса /dev/serial/by-id

Інколи після перепід’єднання адреса адаптера може змінитися. Проте можна використати символічне посилання, що посилається на ID пристрою та не змінюється з часом. Для цього використайте команду ls /dev/serial/by-id. Відображена назва і є адресою пристрою. Щоб пересвідчитись, можна виконати команду, відʼєднавши адаптер.

Адреса /dev/tty

Вставте USB-адаптер в комп’ютер та відкрийте термінал. Дізнайтесь його назву за допомогою команди lsusb. Я використовую SLZB-02, у списку він відображається як QinHeng Electronics CH340 serial converter.

Щоб дізнатись адресу, скористайтесь командою dmesg |  grep tty. Мій адаптер — це ch341-uart, і він приєднаний до ttyUSB0. Усі USB розташовані каталозі /dev/, тому адреса мого пристрою — /dev/ttyUSB0 (ваша адреса може відрізнятись).

Щоб пересвідчитись, що це саме той адаптер, використайте команду dmesg |  grep tty з ним та без нього. Лог покаже приєднання та від’єднання.

Також можна перевірити наявність адреси, увівши ls /dev/ttyUSB0. Якщо адреса існує, термінал поверне її назву.

P.S: На Linux Mint мій адаптер /dev/ttyUSB0 не відображався, оскільки блокувався пакетом brltty. Після видалення пакету все запрацювало.

Створення символічного посилання

Можна створити своє символічне посилання. Для цього:

  • виконайте команду lsusb та запам’ятайте ID. У мене це 1a86:7523. У адресі 1a86 це idVendor — ідентифікатор виробника, а 7523 це idProduct — ідентифікатор пристрою;
  • створіть файл sudo nano /etc/udev/rules.d/99-usb-serial.rules, у файл вставте рядок SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="zigbee", де замініть idVendor, idProduct на власні. Також можна змінити слово zigbee на власне. Це те, як пристрій називатиметься у системі;
  • вийдіть (Ctrl +x) та збережіть файл;
  • перезавантажте компʼютер;
  • після перезавантаження перевірте наявність адреси ls /dev/zigbee. Якщо адреса існує, термінал поверне її назву.

Редагування файлів Home Assistant

Отримати доступ до файлів конфігурації Home Assistant можна, змонтувавши розділи Docker, або за допомогою SSH. Я покажу перший спосіб.

Монтування розділів. Конфігуратор HASS

ℹ️ HASS Configurator — текстовий редактор, створений для редагування файлів HA. Підтримує підсвітку синтаксису та перевірку синтаксису YAML. У HA OS цей застосунок відомий під назвою File Editor.

У пункті меню Volumes створіть розділ hassconf_data.

Створіть контейнер з такими даними:
Name - hassconf
Image - causticlab/hass-configurator-docker:latest
Manual network port publishing - host: 3218 - container: 3218

У вкладці Volumes двічі натисніть map additional volume

container: /homeassistant - volume: homeassistant_data (розділ, створений для Home Assistant)
container: /hass-config - volume: hassconf_data

За бажання можна створити логін та пароль. Для цього у вкладці Env необхідно використати змінні HC_USERNAME та HC_PASSWORD.

Restart policy — Unless stopped. Натисніть Deploy the container.

Стандартно hass-configurator відкривається у теці /app. Щоб відкрити теку homeassistant, потрібно у верхньому лівому кутку натиснути Browse Filesystem, стрілочку назад та обрати теку homeassistant. Щоб не виконувати ці дії щоразу, я задав /homeassistant як стандартий каталог. Для цього в корені обрав каталог config, створив файл settings.conf, вставив таку конфігурацію та перезапустив контейнер:

{
 "BASEPATH": "/homeassistant",
 "ENFORCE_BASEPATH": true,
 "DIRSFIRST": true
}

За допомогою інтеграції iframe Panel я додав посилання на контейнер на бічну панель Home Assistant. Для додав таку конфігурацію до файлу configuration.yaml у каталозі homeassistant. Та перезапустив HA.

panel_iframe:
  hassconf:
    title: "Hassconf"
    url: "http://192.168.0.102:3218/"
    icon: mdi:wrench

Джерело

Встановлення Mosquitto

ℹ️ Mosquitto — це брокер повідомлень для протоколу MQTT. Він створений для забезпечення надійного обміну повідомленнями між різними застосунками та IoT пристроями, дозволяючи їм ефективно взаємодіяти через мережу.

Перед налаштуванням Mosquitto створіть три розділи для його даних: mosquitto_config, mosquitto_data та mosquitto_log. Для цього у меню Portainer оберіть пункт Volumes >> Add volume >> у полі name вкажіть назву розділу >> Create the volume.

У розділі меню Containers натисніть кнопку Add container.
Name - mosquitto
Image - eclipse-mosquitto:latest
Manual network port publishing - host: 1883 - container: 1883

У розділі Advanced container settings оберіть вкладку Command & logging. У полі Console оберіть режим Interactive.

У вкладці Volumes тричі натисніть map additional volume та зіставте розділи:
container: /mosquitto/config - volume: mosquitto_config
container: /mosquitto/data - volume: mosquitto_data
container: /mosquitto/log - volume: mosquitto_log

У вкладці Network оберіть host.

У вкладці Restart policy — Unless stopped.

Натисніть кнопку Deploy the container.

За замовчуванням з міркувань безпеки конфігурація дозволяє використовувати лише локальні підключення. Щоб підключити Zigbee2MQTT, нам потрібно змінити конфігураційний файл.

Для цього в списку контейнерів натисніть на піктограму консолі. У полі Command оберіть /bin/sh та натисніть Connect.

Конфігураційний файл за замовчуванням має багато налаштувань, які нам не потрібні. Переглянути файл можна ввівши команду less mosquitto/config/mosquitto.conf.

Очистіть усі рядки файлу > mosquitto/config/mosquitto.conf.

Відкрийте файл vi mosquitto/config/mosquitto.conf.

Увімкніть режим редагування — клавіша Insert.

Вставте конфігурацію:

persistence true 
persistence_location /mosquitto/data/
user mosquitto
listener 1883
allow_anonymous true
log_dest file /mosquitto/log/mosquitto.log
log_dest stdout

Вийдіть з режиму редагування — клавіша Esc.

Збережіть та вийдіть з файлу, увівши :wq.

У верхній частині екрана натисніть на назву контейнера.

У розділі Actions натисніть Restart.

Перевірити приєднання можна за допомогою інтеграції MQTT в Home Assistant або MQTT Explorer.

Наведена вище конфігурація немає логіну та паролю. Щоб їх додати, знову перейдіть у консоль та виконайте команду mosquitto_passwd -c /mosquitto/config/credentials mqtt. Ця команда запропонує створити пароль для користувача mqtt і збереже його хеш в каталозі credentials.

Після встановлення паролю у файлі конфігурації потрібно змінити рядок allow_anonymous true на allow_anonymous false та в кінці додати рядок password_file /mosquitto/config/credentials.

Перезавантажте контейнер.

Встановлення Zigbee2MQTT

ℹ️ Zigbee2MQTT — це застосунок-міст, що дозволяє керувати Zigbee пристроями через Wi-Fi. Zigbee2MQTT підтримує велику кількість пристроїв та має гнучкі налаштування.

Підготовка

Створіть каталог zigbee2mqtt, у ньому каталог data mkdir -p /home/$USER/zigbee2mqtt/data.

Перейдіть у каталог data  cd /home/$USER/zigbee2mqtt/data.

Виконайте команду pwd, щоб дізнатись повний шлях. Запам’ятайте його. Він знадобиться нам під час налаштування розділів контейнера.

Завантажте файл конфігурації Zigbee2MQTT wget: raw.githubusercontent.com/...​r/data/configuration.yaml.

Відкрийте завантажений файл у текстовому редакторі nano configuration.yaml.

Якщо використовуватимете Zigbee2MQTT разом з Home Assistant, змініть homeassistant: false на homeassistant: true. Це дозволить HA автоматично виявляти нові Zigbee-пристрої.

Змініть адресу MQTT сервера.

Розкоментуйте та заповніть рядки user та password.

Змініть адресу координатора на свою.

Моя конфігурація виглядає так:

# Optional: Home Assistant integration (MQTT discovery) (default: false)
homeassistant: true
# allow new devices to join
permit_join: true
# MQTT settings
mqtt:
 # MQTT base topic for zigbee2mqtt MQTT messages
  base_topic: zigbee2mqtt
 # MQTT server URL
  server: mqtt://192.168.0.102
# MQTT server authentication, uncomment if required:
  user: mqtt
  password: mqtt
# Serial settings
serial:
 # Location of CC2531 USB sniffer
  port: /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B00193844F4-if00
# Enable the Zigbee2MQTT frontend
frontend:
  port: 8080
# Let Zigbee2MQTT generate a new network key on first start
advanced:
  network_key: GENERATE

Коли конфігурація налаштована в розділі меню Containers, натисніть кнопку + add container.

Name - zigbee2mqtt.
Image - koenkk/zigbee2mqtt:latest.
Manual network port publishing host: 8080 - container: 8080.

У розділі Advanced container settings оберіть вкладку Command & logging. У полі Driver оберіть з випадаючого списку json-file. Двічі натисніть + add logging driver option та вставте значення.
option  max-file  value  5 
option  max-size value 10m.

Це дозволить використовувати пʼять файлів журналу по 10 МБ кожен.

У вкладці Volumes двічі натисніть map additional volume. У рядках container замість Volume оберіть Bind. В останньому рядку host замість Writable оберіть Read-Only.

У цьому разі використовується прив’язка до каталогів ОС (bind) замість розділів (volume), оскільки це рекомендовані налаштування від автора контейнера.

container /app/data — host: (підставте адресу, що отримали під час виконання команди pwd, вище. У мене це /home/bogdan/zigbee2mqtt/data).
container: /run/udev — host: /run/udev.

У вкладці Environment натисніть Add an environment variable та вкажіть name: TZ — value: Europe/Kyiv.

У вкладці Restart оберіть Unless stopped.

У вкладці Runtime & Resources натисніть add device. У полі host вкажіть адресу USB в Linux (як знайти — див. розділ Пошук USB в Linux). Продублюйте адресу в полі container. У мене це /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B00193844F4-if00.

Джерело

Встановлення ESPHome

ℹ️ ESPHome дозволяє створювати розумні пристрої на основі дешевих плат ESP 32, ESP 8266 та RPI Pico W, використовуючи зрозумілі конфігураційні файли. Детальніше тут.

Name - esphome
Image - esphome/esphome:latest
Manual network port publishing host: 6052 - container: 6052

container: /config — volume: esphome.

Restart policy — Unless stopped.

За бажання можна створити сторінку входу з логіном та паролем:

Environment name: USERNAME value: dou
name: PASSWORD value: password

Віддалений доступ Cloudflare

Якщо віддалений доступ потрібен лише для Home Assistant, ви можете підтримати його розробників, придбавши Remote UI.

Для віддалено доступу я використовую Cloudflare Tunnel, контейнер Cloudflared та домен pp.ua. Як додати домен до Cloudflare дивись у моїй попередній статті. Домен pp.ua безкоштовний, але раз на рік в кабінеті потрібно натиснути кнопку, щоб продовжити дію домену.

Для створення тунелю створіть обліковий запис Cloudflare. Перейдіть до інформаційної панелі Zero Trust У меню розкрийте пункт Access >> Tunnels. Натисніть кнопку Create a tunnel, придумайте назву, натисніть Save tunnel. У вікні, що відкрилось, перейдіть на вкладку Docker та скопіюйте токен (набір букв після --token)

Name - cloudflare
Image - cloudflare/cloudflared:latest

У розширених налаштуваннях в вкладці Command & logging у полі Command натисніть Override та вставте 'tunnel' 'run'.

У вкладці Environment натисніть Add an environment variable та додайте name: TUNNEL_TOKEN value: скопійований токен.

У вкладці Network оберіть host.

У вкладці Restart оберіть Unless stopped та створіть контейнер.

За успішного розгортання тунель матиме статус healthy, підсвічений зеленим кольором.

За бажання можна створити субдомени під кожен контейнер. Для цього потрібно натиснути три крапки біля дати створення тунелю >> Configure >> перейти у вкладку Public Hostname та натиснути Add a public hostname.

У вікні, що відкрилось, потрібно обрати домен та піддомен. Обрати тип сервісу HTTP та вказати IP-адресу та порт у локальній мережі. Цього достатньо для більшості контейнерів.

Для Home Assistant до configuration.yaml потрібно додати такі рядки:

http:
  use_x_forwarded_for: true
  trusted_proxies:
- 172.30.33.0/24
- 127.0.0.1
- 192.168.0.102

192.168.0.102 — це моя локальна адреса компʼютера та portainer. У вас вона може відрізнятись.

Якщо під час переходу за налаштованою доменною адресою отримуєте помилку 400 Bad Request, перевірте логи контейнера в Portainer або журнал Home Assistant. Скоріш за все ви там побачите помилки, пов’язані з локальною адресою, що не додана в trusted proxies. Додавання цієї адреси в список довірених має вирішити цю проблему.

Завжди використовувати HTTPS

Правило Always Use HTTPS автоматично перенаправляє всі http-запити до вашого сайту, застосунку на https-адресу. Щоб увімкнути перенаправлення:

  1. Перейдіть до Cloudflare та оберіть потрібний домен.
  2. У меню оберіть пункт SSL/TLS > Edge Certificates.
  3. Активуйте перемикач у полі Always Use HTTPS.

Автоматичний перезапис на HTTPS

Правило Automatic HTTPS Rewrites змінює посилання сайту застосунку на HTTPS. Це правило відрізняється від попереднього, і я також рекомендую його активувати в тому ж місці (SSL/TLS > Edge Certificates).

Обмеження доступу з інших країн

Cloudflare дозволяє керувати трафіком за допомогою користувацьких правил. За їхньої допомогою можна обмежити доступ з інших країн, IP-адрес, AS, доменів тощо. Щоб створити правило:

  1. Перейдіть до Cloudflare та оберіть потрібний домен.
  2. У меню оберіть пункт Security >WAF > натисніть Create rule.

Написання правила має два розділи умову та дію. Умова — це принцип визначення трафіку. Дія — що робити з таким трафіком. Можна блокувати, дозволяти та надсилати капчі. Ось приклад правила блокування всього трафіку, крім українського.

Налаштування одноразового коду доступу (OTP)

Якщо застосунок не має можливості встановлювати логін та пароль, можна використати одноразовий пін код (OTP), що надходитиме на електрону пошту. Для цього:

  1. Перейдіть до панелі ZeroTrust >> Access >> Applications.
  2. У розділі Applications натисніть Add an application >> Self-hosted.
  3. Придумайте назву програми, впишіть наявний субдомен та оберіть домен.
  4. Придумайте назву політики, Action Allow, Configure rules:

Selector — Login Methods, Value — One-time PIN, Натисніть Add include Selector — Emails, Value — ваш e-mail. Інші налаштування без змін. Після переходу за посиланням cloudflare запропонує надіслати пароль на пошту.

Віддалений доступ з публічною IP-адресою

Щоб отримати віддалений доступ до HA та інших сервісів через IP-адресу, потрібно мати публічну (білу) і статичну IP-адресу. Іноді інтернет-провайдер додає її в ціну послуг, іноді її потрібно придбати окремо. Це коштує ~ 30-60 грн на місяць.

Чи надає інтернет-провайдер мені публічну адресу

Найкращий спосіб дізнатись, чи надає ваш провайдер публічну статичну IP-адресу — запитати у нього. Якщо у вас є публічна, статична IP-адреса, потрібно лише створити переадресацію портів (Port Forwarding).

Резервне копіювання Duplicati

Під час використання контейнерного встановлення популярний застосунок Home Assistant Google Drive Backup недоступний. Проте існує чудова альтернатива:

ℹ️ Duplicati — це застосунок резервного копіювання, який зберігає стиснені резервні копії в хмарних службах зберігання даних і на віддалених файлових серверах. Він працює з Amazon S3, Dropbox, Google Диском, MEGA, OneDrive, протоколами FTP, SSH (SFTP), WebDAV та багатьма іншими.

Name - duplicati
Image - lscr.io/linuxserver/duplicati:latest
Manual network port publishing host: 8200 - container: 8200

У вкладці Volumes зіставте розділи:
container: /config - volume: duplicati_config
container: /backups - host: /media/bogdan/af79dbf8-b5ad-4330-9524-343e5d0f5bd5/backups
container: /homeassistant - volume: homeassistant_data.

Duplicati має три обовʼязкових відповідності каталогам:
/config — каталог, де зберігається конфігурація;
/backups — місце, куди зберігається резервна копія на цьому комп’ютері;

/source — місце, звідки береться резервна копія. Це може бути будь-який каталог або том контейнера.

Також можна створювати свої каталоги, як, наприклад, homeassistant. У моєму випадку я не використав каталог /source, і Duplicati сам собі створив новий порожній том.

У вкладці Env вкажіть:
name: PUID - value: 1000
name: PGID - value: 1000
name: TZ - value: Europe/Kyiv.

У вкладці Restart оберіть Unless stopped.

Резервне копіювання в Google Drive

Покажу, як налаштувати Duplicati для переносу резервних копій Home Assistant в Google Drive. Цей процес складається з двох етапів:
1. Автоматичне створення резервних копій (Автоматизація)
2. Автоматичне переміщення у інше місце (Duplicati)

1. Найпростіший спосіб створювати резервну копію щодня — використати креслення (blueprints) спільноти — лінк
Інший нескладний варіант створити автоматизацію самостійно. Перейдіть до Меню >> Налаштування >> Автоматизації та сцени >> Додати автоматизацію >> Створити нову автоматизацію.

Тригер — Час >> встановіть зручний час резервної копії
Дія — Виклик служби >> backup.create
Якщо потрібне створення не щодня, а наприклад в певні дні тижня, додайте умову час та відмітьте галочками необхідні дні

Для більшого захисту Duplicati в налаштуваннях можна встановити пароль на вебінтерфейс застосунку. Для цього перейдіть в Settings >> Access to user interface >> встановіть пароль >> знизу сторінки натисніть ОК.

Для створення нового розкладу резервного копіювання перейдіть у розділ Add backup >> Configure a new backup.

1. Придумайте ім’я резервної копії та за бажання додайте опис. Оберіть шифрування, або, як я, залиште без нього.

2. Оберіть місце, куди відправлятиметься резервна копія. У нашому випадку це Google Drive, та ліворуч знизу натисніть на синій напис AuthID. Це відкриє вікно авторизації Google. Увійдіть в необхідний обліковий запис та натисніть на токен. Під час появи повідомлення AuthID fetched закрийте вікно.

3. Оберіть каталог, звідки буде братись резервна копія. У випадку з Home Assistant це каталог homeassistant >> backups.

4. Налаштуйте розклад. Для цього потрібно в полі Run again every обрати періодичність в годинах, днях, тижнях. У полі Next time вкажіть бажаний час резервної копії. Наприклад 00:00.

5. Додаткові налаштування. Тут можна залишити без змін. Натисніть Save.

Резервне копіювання у локальне сховище

Щоб зберігати файли у локальне сховище, потрібно під час налаштування Duplicati додати адресу каталогу на комп’ютері у відповідність до каталогу /backups. Під час налаштування другого кроку обрати storage type — local folders or drive.

Відновлення з резервної копії

Для відновлення файлів потрібно перейти до пункту меню Restore та обрати потрібну резервну копію.

Обрати потрібний файл та параметри відновлення.

Резервне копіювання Zigbee2MQTT

Найпростіший спосіб створити резервну копію Zigbee2MQTT це скопіювати каталог zigbee2mqtt >> data та перемістити його до нової установки.

Створити резервну копію Zigbee2MQTT для координаторі на чіпі Texas Instruments також можна за допомогою графічного інтерфейсу. Для цього в застосунку Zigbee2MQTT перейдіть до вкладки Settings >> Tools та натисніть Request z2m backup, а після Download data folder backup. Буде завантажено zip архів з вмістом каталогу data (без data/log). Цю ж саму дію можна виконати за допомогою MQTT публікації в топіку zigbee2mqtt/bridge/request/backup.

Куточок читача

Хочу порекомендувати чудовий україномовний Youtube канал про Home Assistant, ESPHome та саморобки — Крафтяренко. Мета каналу надихати та навчати програмуванню, моделюванню, 3D-друку, збірці електронних пристроїв для розумного будинку та багато іншого.

Також, якщо вам сподобалась стаття, ви маєте можливість підтримати мене.

Замість висновків

18 місяць поспіль у російському полоні перебуває близько 700 бійців Азову. Благодійний фонд «Янголи Азову» займається питаннями обміну, лікування полонених, допомагає пораненим бійцям з реабілітацією та протезуванням. Підтримайте місію фонду гривнею або десятьма.

Малих донатів не буває.

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось8
До обраногоВ обраному5
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Доброго дня.
У мене після встановлення Portainer є помилка у Home Assistant

24-01-21 11:06:33 ERROR (MainThread) [supervisor.resolution.evaluations.container] Found image in unhealthy image list ’portainer/portainer’ on the host

Зайдіть в home assistant через Putty та запустіть команду
ha jobs options —ignore-conditions healthy

Дякую. Запустив цю команду -“Команда виконана успішно”
Але НА видає повідомлення про зняття захисту ..... Чи варто на це звертати увагу?

“The issue
You have turned on the setting to ignore job conditions. Home Assistant has a built-in protection mechanism that detects if the system is working as expected. Ignoring job conditions disables this protection.
If the system is not working as expected, certain tasks can result in breaking the system.”

Можна спробувати оновити Home Assistant у цьому режимі. Знайшов інформацію тут community.home-assistant.io/...​cause-of-portainer/473307 можливо допоможе вам

Підписатись на коментарі