СКАЖУ СРАЗУ СУПЕРВИЗОРА В HA В ЭТОМ МЕТОДЕ НЕТ!
За основу этого материала взята статья Установка Docker и Portainer для Home Assistant - IO Home которую я не один раз (не один раз, а целых пять раз) опробовал на своих контроллерах WB7 и других устройствах с ОС debian11 и debian 12).
В этом материале я немного переделал материал излагаемый автором под особенности установки стороннего ПО на контроллер Wirenboard для того, чтобы не забивать основную память устройства, а устанавливать все в /mnt/data как рекомендует производитель WB.
Хочу заметить что отличия от первоисточника указанного выше минимальные.
Также хочу заметить, что все действия в данной инструкции и все команды выполняются от имени пользователя root, если вы работаете с WB от имени другого пользователя то пред началом выполнения своих действий вам необходимо выполнить команду sudo -s и ввести свой пароль суперпользователя (если вы его не меняли то по умолчанию ваш пароль wirenboard). Узнать под каким имен вы зашли в систему можно командой whoami
Отличия от инструкции предлагаемой Установка Home Assistant на контроллер Wiren Board — Wiren Board в том, что предлагаемый мной метод установки для HA и других контейнеров, которые могут вам в дальнейшем пригодиться для работы в течении всего периода эксплуатации контроллера, намой взгляд гораздо проще в плане дальнейшей эксплуатации и обновления и пересоздания каждого из ранее установленных контейнеров.
При выборе метода установки docker-compose (Почитать о нем можно тут Руководство по Docker Compose для начинающих / Хабр) обновление всех уже установленных и описанных в фалей docker-compose.yaml контейнеров в дальнейшем происходит всего тремя простыми командами:
- cd /mnt/data - Команда для перехода к директории хранящей файл docker-compose.yaml (в нем хранятся данные всех создаваемых нами в этой инструкции контейнеров)
- docker compose pull - Команда для загрузки новых образов контейнеров описанных в файле docker-compose.yaml
- docker compose up -d - Команда установки обновлений и запуска контейнеров описанных в файле docker-compose.yaml
И так приступим.
Я имею на руках контроллер Wiren Board 7.4.3, release wb-2401 (as stable) это последняя на сегодняшний момент версия ПО
- на операционную систему, на которой еще не стоит docker установим его и проверим его работоспособность по инструкции:
Установка Docker на контроллер Wiren Board — Wiren Board - перейдем в директорию которая будет хранить все файлы связанные с установками новых контейнеров хранящихся в докере, для этого введем команду:
cd /mnt/data - создадим и сразу отредактируем для установки всех создаваемых нами контейнеров файл конфигурации docker-compose.yaml , в который мы в дальнейшем будем добавлять новые контейнеры. Выполним команду:
nano docker-compose.yaml
Далее я предлагаю вам установить “Portainer” (что это такое вы можете почитать например тут Portainer | Инструмент управления контейнерами с открытым исходным кодом ).
Если коротко то Portainer сможет вам помочь удобным образом перезагружать контейнеры, смотреть логи журналов событий при неудачном запуске этих контейнеров и т. д., в общем с его помощью можно решать многие другие задачи по созданию новых и конфигурированию уже существующих контейнеров.
Обращаю ваше внимание, если вам удобны другие способы управления и мониторинга контейнеров и вам не хочется забивать память WB разными программами которыми вы не собираетесь в дальнейшем пользоваться, то вы можете пропустить шаг конфигурации контейнера Portainer в файле docker-compose.yaml и начать сразу редактировать свой файл docker-compose.yaml с пункта касающегося установки Home Assistant.
Создаем файл конфигурации всех поднимаемых контейнеров docker-compose.yaml - вводим команду (обратите внимание что вы по прежнему должны находиться по пути /mnt/data) вводим команду:
В открывшемся редакторе файлов Nano открылся созданный нами файл docker-compose.yaml, который изначально будет пустым, в него вставляем с помощью правой кнопки мыши следующие скопированные данные, важно сохранять все пробелы:
version: '3.0'
services:
portainer:
container_name: portainer
image: portainer/portainer-ce:latest
restart: unless-stopped
ports:
- "9000:9000/tcp"
- "9443:9443/tcp"
environment:
- TZ=Europe/Moscow
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/data:/data
-
Нажимаем сочетание клавиш ctrl+s (тем самым сохраняем содержимое созданного файла), а затем нажимаем сочетание клавиш ctrl+x (тем самым закрывая редактор Nano)
-
После сохранения и закрытия редактируемого файла вы попадаете опять в командную оболочку, в которой вам нужно выполнить следующую команду, которая необходима чтобы установить сконфигурированный вами контейнер под названием Portainer. Устанавливаемые файлы контейнера разместятся директории mnt/data/portainer. Выполняем команду:
docker compose up -d
-
После успешной загрузки Portainer через некоторое время (примерно 1-3 минуты) станет доступным по IP адресу вашего Wirenboar с добавлением соответствующего порта после IP адреса:
https://<ip адрес вашего WB7>:9443 # зашифрованное содинение (например у меня это https://192.168.1.124:9443)
http://<ip адрес вашего WB7>:9000 # не защищенное соединение (например у меня это http://192.168.1.124:9000) -
После того как вы вошли в WEB интерфейс Portainer вам необходимо придумать новый логин и пароль для входа, который необходимо запомнить или записать, он потребуется для дальнейшего входа в систему.
На создание пользователя выделяется определенное время, поэтому к настройке нового пользователя лучше приступить сразу после установки контейнера.
После настройки нового пользователя на главной странице portainer нужно нажать на изображение кита, после этого вы можете перейти на вкладку container в которой вы сможете увидеть запущенный одноименный контейнер под названием “portainer”.
Итоговая структура проекта:
/mnt/data
├── docker-compose.yaml (файл с конфигурацией контейнера portainer)
└── portainer
└── data
- Установка Home assistant.
Итак после того как мы установили наш первый контейнер, приступим в установке самого home assistant, предлагаемый мной метод установки содержит такую же версию HA Stable как и в официальной инструкции Установка Home Assistant на контроллер Wiren Board — Wiren Board.
Повторю еще раз эта версия Home Assistant как и в инструкции на сайте WB - Home Assistant STABLE отличия от других возможных методов установки вы можете посмотреть самостоятельно и выбрать любой удобный для вас ( Installation - Home Assistant )
Единственное, что ставить наш HA мы будем с помощью docker-compose.
Первым шагом вводим команду на создание в директории /mnt/data новой папки которая будет содержать все файлы нашей новой конфигурации Home Assistant, для этого вводим команду:
mkdir homeassistant
После ввода команды mkdir homeassistant должна появиться пустая папка c именем “homeassistant” по следующему пути /mnt/data проверить 'это можно открыв например в командной строке файловый менеджер командой:
mc (чтобы закрыть файловый менеджер после просмотра нужно мышкой дважды нажать на выход в правом нижнем углу интерфейса mc)
если папка там не появилась проверьте свое расположение в корневой системе, напоминаю что изначально вы должны находиться в расположении: cd /mnt/data и создавать все файлы там).
- Повторно открываем файл docker-compose.yaml и вводим параметры нового необходимого нам контейнера под названием homeassistant , для этого вводим команду:
nano docker-compose.yaml
И дополняем ранее созданную запись следующим, отступив пару строк от последней строки конфигурации предыдущего контейнера, копируем и вставляем текст:
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
restart: unless-stopped
privileged: true
ports:
- "8123:8123"
environment:
- TZ=Europe/Moscow
volumes:
- ./homeassistant/:/config
- /etc/localtime:/etc/localtime:ro
Нажимаем сочетание клавиш ctrl+s (тем самым сохраняем содержимое файла), а затем нажимаем сочетание клавиш ctrl+x (тем самым закрывая редактор Nano)
Загружаем и запускаем новый контейнер:
docker compose up -d
- После успешной загрузки нового контейнера home assistant станет доступным по следующему адресу вашего контроллера:
http://:8123 # не защищенное соединение (например http://192.168.1.124:8123)
Выполните его первоначальную настройку по созданию нового пользователя перейдя по своему IP адресу контроллера с добавлением порта 8123.
Итоговая структура проекта:
/mnt/data
├── docker-compose.yaml
├── homeassistant
│ ├── ...
│ └── configuration.yaml
└── portainer
- Добавляем поддержку Bluetooth в Home Assistant ( Bluetooth - Home Assistant ) .
Не для кого не секрет что контроллеры Wiren Board из коробки поддерживают этот интерфейс передачи данных, о чем сказано Bluetooth — Wiren Board
Для начала необходимо установить зависимости Bluetooth:
- Установите пакет брокера DBus:
apt install dbus-broker - Включить системную службу:
systemctl enable dbus-broker.service - Установить пакет BlueZ:
apt install bluez
Для того чтобы наш адаптер заработал в Home Assistant нам необходимо добавить новое хранилище dbus в файл уже созданной конфигурации контейнера homeassistant (напоминаю что все создаваемые конфигурации контейнеров хранятся в одном фале по адресу /mnt/data/docker-compose.yaml)
Выполняем команду:
nano docker-compose.yaml
И после строк
volumes:
- ./homeassistant/:/config
- /etc/localtime:/etc/localtime:ro:
Добавляем - /run/dbus:/run/dbus:ro # ← Bluetooth адаптер
Должно получиться так:
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
restart: unless-stopped
privileged: true
ports:
- "8123:8123"
environment:
- TZ=Europe/Moscow
volumes:
- ./homeassistant/:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro # <-- Bluetooth адаптер
Нажимаем сочетание клавиш ctrl+s (тем самым сохраняем содержимое файла), а затем нажимаем сочетание клавиш ctrl+x (тем самым закрывая редактор Nano).
- Загружаем новые данные и пересоздаем и поднимаем контейнер homeassitant уже с поддержкой Bluetooth.
Выполняем команду:
docker compose up -d homeassistant
- Установка File Editor.
Для быстрого доступа к configuration.yaml Home Assistant приходится каждый раз подключаться к SSH и производить изменения. Это занимает определенное время, которого иногда не хватает. Для облегчения процесса редактирования файлов подключим File Editor. Который в свою очередь добавит в web интерфейс онлайн редактор кода.
Так как мы используем Docker, то там подойдет абсолютно любой редактор, который разворачивается в контейнере. Их существует большое количество. Здесь рассмотрен только один из вариантов.
Создаем новую папку для хранения файлов конфигуратора по адресу /mnt/data.
Вводим команду:
mkdir fileeditor
В третий раз открываем файл docker-compose.yaml и добавляем в него после записи о контейнере homeassistant (отступив пару строк) следующие данные.
Вводим команду:
nano docker-compose.yaml
Копируем и вставляем данные контейнера редактора файлов:
hass-configurator:
container_name: hassconf
image: causticlab/hass-configurator-docker
restart: unless-stopped
environment:
- HC_BASEPATH=/hass-config
- HC_DIRSFIRST=true
ports:
- "3218:3218/tcp"
volumes:
- ./fileeditor:/config
- ./homeassistant:/hass-config
Нажимаем сочетание клавиш ctrl+s (тем самым сохраняем содержимое файла), а затем нажимаем сочетание клавиш ctrl+x (тем самым закрывая редактор Nano).
Загружаем и поднимаем новый контейнер, выполняем команду:
docker compose up -d
После установки и запуска нового контейнера редактор файлов конфигурации HA он будет доступен по адресу вашего контроллера с добавлением порта 3218:
http://:3218 # не защищенное соединение (например http://192.168.1.124:3218)
Итоговая структура проекта:
/mnt/data
├── docker-compose.yaml
├── fileeditor
├── homeassistant
└── portainer
- Теперь давайте добавим возможность быстрого перехода к веб интерфейсам Portainer и Fileeditor (ну тут в примере я добавил еще и z2m) прямо из боковой панели Home Assistant.
Для этого добавим в файл configuration.yaml по адресу /mnt/data/homeassistant/configuration.yaml нужные нам данные.
Переходим по пути расположения файла с конфигурацией Home Assistant под названием configuration.yaml. Для этого вводим:
cd /mnt/data/homeassistant
Открываем файл для редактирования командой:
nano configuration.yaml
И добавляем туда следующие данные (я добавил в самый низ конфигурации после всех уже имеющихся записей уже содержащихся вы файле configuration.yaml):
panel_iframe:
portainer:
title: Portainer
url: "http://указать ваш IP:9000/#!/2/docker/containers"
icon: mdi:docker
require_admin: true
configurator:
title: Configurator
icon: mdi:wrench
url: "http://указать ваш IP:3218"
require_admin: true
zigbee2mqtt:
title: Zigbee2MQTT
icon: mdi:zigbee
url: "http://указать ваш IP:8081"
require_admin: true
Если нужно то можно сразу открыть доступ с боковой панели Home Assitant к веб интерфейсу Z2M Если нет то не пишите последнюю часть кода.
Перезагрузите Home Assistant, после перезагрузки все сервисы станут доступными на боковой панели (слева) в интерфейсе программы.
Повторюсь еще раз, что обновить все загруженные вами контейнеры вы можете обновить всего несколькими командами:
- cd /mnt/data - Команда для перехода к директории в которой расположен файл docker-compose.yaml в котором хранятся данные создаваемых нами в этой инструкции контейнеров
- docker compose pull - Команда для загрузки новых образов контейнеров описанных в файле docker-compose.yaml
- docker compose up -d - Команда установки обновлений и запуска контейнеров описанных в файле docker-compose.yaml
Если в будущем, если вам необходимо установить любые другие контейнеры doker то вы можете дописывать их данные в файл docker-compose по такому же принципу как расписано в этом материале.
Надеюсь этот материал буде кому-нибудь полезен. Спасибо за внимание!