Перейти к содержанию

Развертывание Сервиса с помощью Docker#

Данный раздел описывает установку и использование Docker Compose для развертывания Сервиса. Процесс настройки и установки необходимо выполнять под учетной записью суперпользователя (с root правами). Docker и Docker Compose не входят в дистрибутив Сервиса.

Ниже приведены команды для AlmaLinux.

Установка Docker и Docker Compose#

Установка Docker описана в официальной документации. Актуальная инструкция по установке представлена ниже.

Установите дополнительные зависимости:

dnf install -y dnf-utils

Добавьте репозиторий Docker:

dnf config-manager \  
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Установите последнюю версию Docker:

dnf install docker-ce docker-ce-cli containerd.io

Проверьте корректность установки:

docker -v

Скачайте Docker Compose:

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Установите права доступа (разрешить выполнение):

chmod +x /usr/local/bin/docker-compose

Запустите Docker:

systemctl start docker
systemctl enable docker

Проверьте статус Docker:

systemctl status docker

Ответ должен содержать статус Active (running).

Проверьте установку Docker Compose:

docker-compose --version

В ответе должна быть указана версия docker-compose, например: docker-compose version 1.29.2, build 5becea4.

Авторизация в registry#

Получите образы компонентов из dockerhub.visionlabs.ru (VisionLabs registry) для запуска. Перед этим авторизуйтесь — получите логин и пароль у специалистов компании VisionLabs, затем введите полученные данные для авторизации:

docker login dockerhub.visionlabs.ru --username <username> --password <password>

Введите логин <username> и пароль <password>.

Подготовка и распаковка дистрибутива#

Дистрибутив представляет собой архив вида "luna_point_2.1.0".

Перед процессом установки поместите файлы дистрибутива в директорию на сервере. Например, в директорию /root. В данной директории не должно быть других файлов дистрибутива кроме целевых, используемых для установки конечного продукта.

Выполните следующие действия.

Переключитесь в режим суперпользователя root:

sudo su

Создайте директорию для распаковки дистрибутива:

mkdir -p /var/lib/luna_point

Переместите дистрибутив в созданную директорию:

mv luna_point_2.1.0.zip /var/lib/luna_point

Установите архиватор unzip, если он не установлен:

dnf install unzip

Перейдите в директорию с дистрибутивом:

cd /var/lib/luna_point

Распакуйте файлы:

unzip luna_point_2.1.0.zip

Создайте символьную ссылку. Ссылка указывает, что именно текущая версия дистрибутива используется для запуска:

ln -s luna_point_2.1.0 current

Настройка Сервиса#

Необходимо настроить Selinux и Firewall, чтобы они не блокировали работу Сервиса.

Настройка Selinux и Firewall в данном руководстве не описывается.

В архиве luna_point_2.1.0.zip есть пример развертывания Docker в директории /example-docker (файлы .env и docker-compose.yml).

Настройка Сервиса выполняется в конфигурационном файле .env, а также в сервисе LUNA Configurator.

Настройка .env#

1. Перейдите в директорию Docker текущей версии Сервиса:

cd /var/lib/luna_point/luna_point_2.1.0/example-docker

2. Внесите изменения в параметры конфигурации в соответствии с указаниями в Таблице 2:

nano /var/lib/luna_point/luna_point_2.1.0/example-docker/.env

Замените внутренние адреса сервисов (127.0.0.1) на внешний IP адрес сервера с LUNA POINT в следующих параметрах конфигурации:

CONFIGURATOR_HOST
LUNA_POSTGRES_HOST
LUNA_API_HOST
LUNA_LICENSES_HOST
CLEMENTINE_AUTH_DOMAIN
LUNA_STREAMS_HOST

Таблица 2. Параметры конфигурации

Параметр Описание
Параметры конфигурации БД LUNA POINT
DATA= Точка монтирования данных контейнеров
По умолчанию: ./
DOCKER_URL= Адрес Docker registry
По умолчанию: registry.dev.vlabs
LUNA_DOCKER_URL= Адрес Docker registry для компонентов LUNA PLATFORM 5
По умолчанию: registry.dev.vlabs
NETWORK_MODE= Cетевой режим контейнеров
Параметры конфигурации LUNA PLATFORM 5
CONFIGURATOR_HOST IP адрес для подключения к Configurator LUNA PLATFORM 5
По умолчанию: 127.0.0.1
CONFIGURATOR_PORT Порт для подключения к Configurator LUNA PLATFORM 5
По умолчанию: 5070
LUNA_POSTGRES_HOST IP адрес для подключения к PostgreSQL
По умолчанию: 127.0.0.1
LUNA_POSTGRES_PORT= Порт для подключения к PostgreSQL
По умолчанию: 5432
LUNA_API_HOST= IP адрес API LUNA PLATFORM 5
По умолчанию: 127.0.0.1
LUNA_API_PORT= Порт API LUNA PLATFORM 5
По умолчанию: 5000
LUNA_LICENSES_HOST= Хост LUNA LICENSES
По умолчанию: 127.0.0.1
LUNA_LICENSES_PORT= Порт компонента LUNA LICENSES.
По умолчанию: 5120
STORAGES_VER= Тег (версия Docker-образа) компонентов хранилища LUNA PLATFORM 5
По умолчанию: v.0.217.0
LUNA_ACCOUNT_EMAIL= Адрес электронной почты для доступа к учетной записи
По умолчанию: root@visionlabs.ai
LUNA_ACCOUNT_PASSWORD= Пароль для доступа к учетной записи
По умолчанию: root
Теги сервисов
CLEMENTINE_AUTH_VER= Версия clementine_auth, укажите CLEMENTINE_AUTH_VER=v2.0.0
CLEMENTINE_API_VER= Версия clementine_api, укажите CLEMENTINE_API_VER=v2.2.2
VL_NOTIFIER_VER= Версия vl-notifier, укажите VL_NOTIFIER_VER=2.0.0
POINT_API_VER= Версия point_api, укажите LUNA_POINT_API_VER=v2.0.6
LUNA_POINT_UI_VER= Версия luna_point_ui, укажите LUNA_POINT_UI_VER=2.2.2
Теги сторонних компонентов:
POSTGRESQL_VER= Версия Docker-образа PostgreSQL, который используется при развертывании
По умолчанию: 12
Параметры конфигурации CLEMENTINE API
CLEMENTINE_API_HOST= Адрес сервера CLEMENTINE API
По умолчанию: clementine_api
CLEMENTINE_API_PORT= Порт, на котором будет запущен компонент
По умолчанию: 9010
Параметры конфигурации LUNA CLEMENTINE AUTH
CLEMENTINE_AUTH_HOST= Адрес сервера CLEMENTINE AUTH
По умолчанию: clementine_auth
CLEMENTINE_AUTH_PORT= Порт, на котором будет запущен компонент
По умолчанию: 9000
CLEMENTINE_AUTH_DOMAIN= Домен приложения, используется для генерации ссылок в email. В зависимости от конфигурации сетевого окружения это может быть именной домен, например, point.local или IP адрес компонента, доступный в сети. Параметр не является критически важным и необходим только в случае использования адреса электронной почты для регистрации новых пользователей и сброса паролей
По умолчанию: 127.0.0.1
CLEMENTINE_AUTH_PROTOCOL= Протокол, для работы в web-среде Зависит от текущих настроек инфраструктуры и требований по безопасности
Возможные значения:
- HTTP(по умолчанию) — протокол без шифрования
- HTTPS — протокол с SSL-шифрованием
CLEMENTINE_AUTH_DSN= Подключение компонента CLEMENTINE AUTH к БД
По умолчанию: postgresql://lunapoint:lunapoint@db/clementine_auth
Параметры конфигурации LUNA POINT API
LUNA_POINT_API_HOST= Адрес сервера LUNA POINT API
По умолчанию: point_api
LUNA_POINT_API_PORT= Порт, на котором будет запущен компонент
По умолчанию: 9020
POINT_API_WORKER_COUNT= Количество worker-процессов
По умолчанию: 1
POINT_API_LOG_SUFFIX Суффикс для имени лог-файлов point_api
POINT_API_RELOAD_CONFIG= Автоматическое обновление конфигурации
По умолчанию: 0
POINT_API_RELOAD_CONFIG_INTERVAL= Интервал обновления конфигурации
По умолчанию: 10
POINT_API_EXTEND_CMD= Дополнительные аргументы командной строки для запуска point_api
MACROSCOP_URL= Адрес сервера VMS Macroscop
MACROSCOP_LOGIN= Логин для входа в VMS Macroscop по указанному в MACROSCOP_URL адресу
По умолчанию: root
MACROSCOP_PASSWORD= Пароль для входа в VMS Macroscop по указанному в MACROSCOP_URL адресу
VIDEOINTELLECT_URL= Адрес сервера VMS VideoIntellect
VIDEOINTELLECT_LOGIN= Логин для входа в VMS VideoIntellect по указанному в VIDEOINTELLECT_URL адресу
По умолчанию: admin
VIDEOINTELLECT_PASSWORD= Пароль для входа в VMS VideoIntellect по указанному в VIDEOINTELLECT_URL адресу
По умолчанию: admin
Параметры конфигурации LUNA POINT UI
LUNA_POINT_API_HOST= Адрес сервера LUNA POINT API
По умолчанию: luna_point_api
LUNA_POINT_API_PORT= Порт, на котором будет запущен компонент
По умолчанию: 8000
Конфигурация LUNA Streams
LUNA_STREAMS_HOST= Адрес сервера LUNA Streams
По умолчанию: 127.0.0.1
LUNA_STREAMS_PORT= Порт LUNA Streams
По умолчанию: 5160
Параметры конфигурации VL NOTIFIER и отправки уведомлений
VLNOTIFIER_HOST= Адрес сервера компонента уведомлений
По умолчанию: vlnotifier
VLNOTIFIER_PORT= Порт компонента уведомлений
По умолчанию: 9200
VLNOTIFIER_SUBJECT Текст в заголовке, отправляемого письма с уведомлением
По умолчанию: Clementine VL Notifier
Параметры конфигурации SMTP
LOG_LEVEL= Уровень логирования. Доступные значения:
0 — запись только ошибок;
1 — запись ошибок и информационных сообщений;
2 — запись ошибок, информационных сообщений и отладочной информации
По умолчанию: 1
TELEGRAM_BOT_TOKEN= Токен бота Telegram, куда будут присылаться уведомления
SMTP_SERVER= Адрес сервера SMTP
SMTP_PORT= Порт сервера SMTP. Доступные значения:
25 — без шифрования;
465SSL;
587TLS
SMTP_SENDER= Email отправителя для отправки уведомлений пользователям. Например, robot@point.local
SMTP_LOGIN= Логин для подключения к SMTP серверу
SMTP_PASSWORD= Пароль для подключения к SMTP серверу

Параметры SMTP не являются обязательными и используются только для:

  • регистрации пользователей по email;
  • сброса паролей;
  • отправки уведомлений.

Ошибки загрузки данных записываются в системный лог посредством подсистемы логирования с тремя уровнями логирования.

Внутренние ошибки записываются в системный лог посредством подсистемы логирования:

  • с уровнем важности "ошибка" в случае, если дальнейшее выполнение программы невозможно;
  • с уровнем важности "предупреждение", если программа сохраняет работоспособность.

3. Отредактируйте параметры в файле /example-docker/luna_point_dump.json:

nano /var/lib/luna_point/luna_point_2.1.0/example-docker/luna_point_dump.json

Замените внутренние адреса сервисов (127.0.0.1) на внешний IP адрес сервера с LUNA POINT и LP5 в следующих параметрах конфигурации:

POINT_API_DB
LUNA_ACCOUNTS_ADDRESS
LUNA_FACES_ADDRESS
LUNA_IMAGE_STORE_OBJECTS_ADDRESS
LUNA_MONITORING

Пример настроек для параметра POINT_API_DB:

{
  "name": "POINT_API_DB",
  "value": {
    "db_type": "postgres",
    "db_user": "luna",
    "db_password": "luna",
    "db_name": "point_api",
    "db_host": "127.0.0.1",
    "db_port": 5432
    "db_settings": {
        "connection_pool_size": 5
    }
  }
}

Пример параметра LUNA_ACCOUNTS_ADDRESS:

{
  "name": "LUNA_ACCOUNTS_ADDRESS",
  "value": {
    "origin": "http://127.0.0.1:5170",
    "api_version": 1
  },
  "description": "LUNA Accounts address",
  "tags": []
}

Параметры можно изменять с помощью веб-интерфейса LUNA Configurator. Для этого откройте LUNA Configurator по адресу http://127.0.0.1:5070/dashboard/settings.html

Для доступа к конфигуратору LUNA PLATFORM 5 необходимо выполнить проброс порта. Для этого на локальном компьютере без предварительного подключения к серверу выполните команду:

ssh -L 5070:localhost:5070 root@192.168.10.15 -N

Где 192.168.10.15 — пример адреса сервера, где развернута LP5.

Замените адреса сервисов в указанных выше параметрах конфигурации.

Настройка веб-интерфейса#

Настройка веб-интерфейса Сервиса выполняется в директории example-docker/config/ui/ в конфигурационном файле config.json:

{
  "auth": {
    "allowPasswordChange": {
      "ui": true,
      "email": true
    }
  },
  "similarityThresholds": {
    "low": 0.75,
    "medium": 0.95
  },
  "maxImageSize": "2G"
}

Таблица 3. Параметры конфигурации веб-интерфейса

Параметр Описание
allowPasswordChange Настройка типа регистрации в Сервисе.
Всех пользователей в интерфейсе Сервиса создает администратор. При этом новому пользователю приходит ссылка на адрес электронной почты для продолжения регистрации (подробнее см. "VISIONLABS LUNA POINT. Руководство пользователя").
Также возможно создание нового пользователя с явным указанием пароля в Сервисе. Для этого необходимо настроить возможность задавать пароли в веб-интерфейсе Сервиса.
По умолчанию: “ui”: true, “email”: true
similarityThresholds Настройка цветового обозначения порогов схожести:
- значение степени схожести ниже "low" будут отмечены красным цветом;
- значение степени схожести между "low" и "medium" — желтым цветом;
- значение степени схожести выше "medium" — зеленым цветом.
По умолчанию: low: 0.75, medium: 0.95
maxImageSize Максимальный размер изображения.
При изменении этого параметра должен устанавливаться CLIENT_MAX_BODY_SIZE для контейнера point-ui в docker-compose.yml.
По умолчанию: 2G

Настройка логотипа в интерфейсе#

Пользователь может задать свой логотип для интерфейса, который будут отображаться в левом углу верхнего меню. Для этого:

  • Перейдите в директорию ./media, которая появляется при старте контейнера за счет утилиты в docker-compose.yml:
  luna_point_ui:
...
    volumes:
      - ./config/ui/config.json:/app/config.json
      - ./media/logo.svg:/app/static/media/logo.svg
      - ./media/dark-logo.svg:/app/static/media/dark-logo.svg
  • Перенесите файлы с изображениями логотипа в формате .svg в папку ./media. Назовите файл "logo.svg" для светлой темы и "dark-logo.svg" для тёмной.

  • В файле config.json в директории ./config/ui/ пропишите путь к изображениям логотипа, которые поместили в п.2 в папку ./media. Укажите ключи logoUrl и darkLogoUrl:

  "logoUrl": "/static/media/logo.svg",
  "darkLogoUrl": "/static/media/dark-logo.svg"
Пути для файлов лого в config.json
Пути для файлов лого в config.json
  • Сохраните изменения. После редактирования файла config.json перезапустите контейнер интерфейса (UI) командой docker compose restart clementine_ui.

Настройка тревожной кнопки в "Панели оператора"#

При появлении события с видеоаналитикой (подробнее см. "LUNA POINT. Руководство пользователя", раздел "Панель оператора") пользователь может отправить уведомление в сервис для активации группы реагирования, нажав кнопку "Тревога".

Для работы с "Гольфстрим" и "Laurent 2" интерфейс LUNA POINT должен быть развернут с https.

Интеграция с Гольфстрим

Чтобы в интерфейсе появилась кнопка для отправки сигнала в охранную систему "Гольфстрим", добавьте в конфигурационный файл config.json в директории example-docker/config/ui/ настройки и заполните поля:

"gulfstream": {
    "url": "",
    "token": "",
    "object_id": "",
    "object_name": "",
    "addres": "",
    "lat": "",
    "lng": "",
    "inn": "",
    "partner_name": "",
    "alarm_type": ""
  }

Интеграция с модулем Laurent 2

Чтобы в интерфейсе появилась кнопка для отправки сигнала в модуль "Laurent 2", добавьте в конфигурационный файл config.json в директории example-docker/config/ui/ настройки и заполните поля:

"laurent2": {
    "ip": "",
    "password": "",
    "delay": 0.9,
    "events": [
      {
        "event_type": "",
        "relay": 1
      },
      {
        "event_type": "",
        "relay": 2
      },
      {
        "event_type": "",
        "relay": 3
      },
      {
        "event_type": "",
        "relay": 4
      }
    ]
  }

Каждое событие видеоаналитики отправляется на отдельный порт платы, relay. В значении event_type укажите тип события видеоаналитики в соответствии с названиями LP5 (Таблица 2):

Таблица 2. Названия видеоаналитик в LP5

Тип видеоаналитики

Название видеоаналитики для поля event_type"

Подсчёт людей

crowd

Драка

fight

Оружие

weapon

Возгорание

fire

Никаб/балаклава

facecover

Оставленные предметы

bag

Лежащий человек

lying

Поднятые руки

handsup

Падение

fall

При нажатии тревожной кнопки на плату Laurent 2 поступает сигнал и модуль сообщает о поданном сигнале тревоги.

После редактирования файла config.json перезапустите контейнер интерфейса (UI) командой docker compose restart clementine_ui

Настройка интеграции с VMS#

Настройте одну из интеграций:

  • с VMS Macroscop;
  • с VMS VideoIntellect.

В настройках конфигурации LUNA POINT укажите адрес сервера по протоколу http или https в параметре MACROSCOP_URL для VMS Macroscop или в параметре VIDEOINTELLECT_URL — для VMS VideoIntellect. В интерфейсе LUNA POINT задайте "Внутреннее название" для видеопотоков систем видеонаблюдения в разделе “VMS”. Укажите "Внутреннее название" при создании потоков, чтобы просматривать видеопотоки в «Панели оператора» и в разделе «Видеостена».

Запуск Сервиса#

Перейдите в директорию Docker:

cd /var/lib/point/current/example-docker

Для запуска Сервиса введите команду:

./start_luna_point.sh

Проверьте статус контейнеров:

docker-compose ps

Добавление аккаунта администратора#

После того, как Сервис запустится, создайте новую учетную запись и следуйте указаниям:

docker-compose exec clementine_auth python3 cli.py createaccount

Укажите:

  • email пользователя;
  • пароль;
  • роль пользователя.

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

Запустите создание новой авторизации для аккаунта и следуйте указаниям:

docker-compose exec clementine_auth python3 cli.py createauth

Запустите смену роли аккаунта и следуйте указаниям:

docker-compose exec clementine_auth python3 cli.py setaccountrole