Найти в Дзене

Xeoma в Docker контейнере на Orange Pi 5 с доступом через tailscale

Я не dev-ops и не программист, обычный менеджер интернет агентства art.su, не претендую на академический подход. Делаю инструкцию для таких же гиканутых чайников как я.

Эта статья – квинтэссенция изысканий и исправления ошибок для разворачивания сервера видеонаблюдения Xeoma на современном одноплатном микрокомпьютере с arm64 процессором.

В садоводстве Raspberry Pi 3 пишет 4 камеры на внешний HDD. Выделенного IP адреса нет, так как изначально интернет был организован через lte модем, после подключения оптоволокна, lte остался резервным подключением, но необходимости в выделенном белом IP адресе не возникло. Удалённый доступ организован через tailscale.

Приобрёл современный одноплатный компьютер Orange PI 5 8 Gb + NVMe SSD 512 Gb на замену Rasperry Pi 3 для того, чтобы нагрузить его большим количеством камер, протестировать аналитический модуль распознавания автомобильных номеров. Малинка с аналитикой не справлялась. У апельсинки же запас мощности приличный, но об этом позже.

Принципиальная схема на момент тестирования
Принципиальная схема на момент тестирования

Так как предлагаю развернуть Xeoma server в docker контейнере, нам не важно какая операционная система установлена на вашей плате. В моём случае это оригинальный образ debian bullseye с сайта orangepi.org, который уже имеет предустановленный Docker.

Скачиваете образ операционной системы, записываете образ на SD карту. Для записи образа на SD карту я использовал приложение balenaEtcher.

Вставляете SD карту с записанным образом системы, патч-корд в сетевой порт роутера и запускаете микрокомпьютер. У меня нет доступа к админке роутера, узнать ip адрес апельсинки можно, например, с помощью приложения IP Scanner, если вы работаете под MacOS.

По-умолчанию SSH доступ включен, открываем терминал и подключаемся:

ssh root@IP_ADDRESS_ORANGEPI5

Пароль:

orangepi

Настоятельно рекомендую сменить пароль пользователей orangepi и root

Так как мне необходимо удалённое подключение в дальнейшем, я использовал для этого сервис tailscale. В том числе через него буду в дальнейшем подключаться по SSH и проникать в удалённую локальную сеть, поэтому запускать будем с дополнительными ключами --ssh --accept-routes.

Устанавливаем и запускаем tailscale на апельсинке:

curl -fsSL https://tailscale.com/install.sh | sh
sudo apt-get update
sudo apt-get install tailscale
sudo tailscale up --ssh --accept-routes

Вам будет предложено пройти по ссылке и зарегистрироваться/авторизоваться в tailscale.

После этого вы увидите свои устройства в панели

https://login.tailscale.com/admin/machines

И даже сможете прямо из панели подключиться по SSH к апельсинке. Но у меня стоит tailscale и на MacOS, поэтому я продолжу работу через системный terminal.

Теперь по локальному IP вы подключаетесь как и раньше, с логином-паролем, а по tailscale IP вы подключаетесь откуда угодно с авторизацией через tailscale.

Настало время установить Xeoma в Docker. Вообще, существует Docker Hub, где люди предлагают воспользоваться готовыми контейнерами, с этого и начнём.

https://hub.docker.com/search?q=xeoma

К сожалению, всё что тут есть, не устанавливается на arm64 платформы, поэтому нам придётся собрать свой контейнер на основе одной из этих сборок. Я делал это впервые, но оказалось всё волшебно просто, давайте сделаем и вам.

Нам необходимо завести папку с файликами и скриптами контейнера. Я подредактировал их так, чтобы всё работало на апельсинке.

Скачиваете архив:

wget https://ximv.ru/docker-xeoma.tar.gz

Распаковываете:

tar -xvf docker-xeoma.tar.gz docker-xeoma

Заходите в папку docker-xeoma:

cd ./docker-xeoma

Можете покопаться в скриптах и докер-файле, если интересно. Я изменил базовый образ на актуальный и подредактировал ссылки для скачивания нужного образа Xeoma. В принципе, вам туда не нужно.

Да начнётся волшебство. Собирайте контейнер:

docker build -t xeoma-server .

ВАЖНО!

На 7 шаге ищите пароль в строчке Current password for network access: и сохраняйте куда-нибудь.

Всё, осталось только запустить.

Если хотите, чтобы архивы хранились внутри контейнера, выполните команду:

docker run -d --name=xeoma --restart=always -p 8090:8090  -v /local/path/to/config:/usr/local/Xeoma xeoma-server

Если хотите, чтобы архивы хранились вне контейнера, добавьте /local/path/to/archive: и напишите путь:

docker run -d --name=xeoma --restart=always -p 8090:8090 -v /local/path/to/config:/usr/local/Xeoma -v /local/path/to/archive:/usr/local/Xeoma/XeomaArchive xeoma-server

Логи посмотреть можно командой:

docker logs xeoma

Подключаемся с удалённого клиента по IP tailscale к серверу Xeoma, пароль вы куда-то сохранили на одном из предыдущих шагов. Так как мы можем проникнуть в ту локальную сеть с камерами, ищем и находим свои камеры по их локальным IP.

-2

Давайте посмотрим утилитой htop на малинку, на которой только xeoma и tailscale:

Raspberry Pi 3 B+
Raspberry Pi 3 B+

А теперь давайте посмотрим на апельсинку, где в докере Xeoma и сервер Nextcloud:

Orange Pi 5 8 Gb
Orange Pi 5 8 Gb

Вывод очевиден. Orange Pi 5 – мощнейший одноплатный компьютер, ресурсов которого хватит для управления современным умным домом.