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

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

Данный раздел описывает установку и использование Docker Compose для развертывания Сервиса.

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

Docker и Docker Compose не входят в дистрибутив Сервиса.

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

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

Используйте официальную инструкцию для установки Docker Engine и Docker Compose для ОС CentOS. Актуальная на момент написания документа инструкция по установке представлена ниже.

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

yum install -y yum-utils

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

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

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

yum 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

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

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

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

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

Получить их можно, обратившись к специалистам компании VisionLabs.

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

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

Архив содержит все компоненты, необходимые для установки и эксплуатации Сервиса.

Архив не включает зависимости, которые входят в стандартную поставку репозитория CentOS и могут быть загружены из открытых источников.

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

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

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

sudo su

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

mkdir -p /var/lib/point

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

mv /root/luna_point_1.4.0 /var/lib/point

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

yum install unzip

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

cd /var/lib/point

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

unzip luna_point_1.4.0.zip

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

ln -s luna_point_1.4.0 current

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

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

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

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

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

### GLOBAL ###

# Where to preserve persistent data

DATA=./
DOCKER_URL=dockerhub.visionlabs.ru/luna-point

# username for databases

LUNA_POINT_DB_USERNAME=lunapoint

# Password for services

LUNA_POINT_DB_PASSWORD=lunapoint

# services tags
CLEMENTINE_AUTH_VER=v1.1.12
CLEMENTINE_API_VER=v1.9.0
VL_NOTIFIER_VER=0.1.16
LUNA_POINT_API_VER=v1.0.5
LUNA_POINT_UI_VER=1.14.2

# 3rd party services tags

POSTGRESQL_VER=12

### Configs ###

# clementine-api
CLEMENTINE_API_HOST=clementine_api
CLEMENTINE_API_PORT=9010

# clementine-auth

CLEMENTINE_AUTH_HOST=clementine_auth
CLEMENTINE_AUTH_PORT=9000
CLEMENTINE_AUTH_DOMAIN=127.0.0.1
CLEMENTINE_AUTH_PROTOCOL=HTTP
CLEMENTINE_AUTH_DSN=postgresql://lunapoint:lunapoint@db/clementine_auth

# luna-point-api
LUNA_POINT_API_HOST=luna_point_api
LUNA_POINT_API_PORT=8000
LUNA_POINT_API_DSN=postgresql://lunapoint:lunapoint@db/lunapoint


# luna-point-ui
LUNA_POINT_UI_HOST=luna_point_ui
LUNA_POINT_UI_PORT=8080

# luna

LUNA_API_HOST=127.0.0.1
LUNA_API_PORT=5000
LUNA_LICENSES_HOST=127.0.0.1
LUNA_LICENSES_PORT=5120
LUNA_ACCOUNT_ID=a0000000-0000-4000-a000-000000000000

# luna-streams

LUNA_STREAMS_HOST=127.0.0.1
LUNA_STREAMS_PORT=5160

# vl-notifier API
VLNOTIFIER_HOST=vlnotifier
VLNOTIFIER_PORT=9200
VLNOTIFIER_SUBJECT="Clementine VL Notifier"

# OTHER

LOG_LEVEL=1
TELEGRAM_BOT_TOKEN=
SMTP_SERVER=
SMTP_PORT=
SMTP_SENDER=
SMTP_LOGIN=
SMTP_PASSWORD=

В конфигурационный файл .env внесите необходимые настройки, представленные в Таблице 2.

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

Параметр Описание
Параметры конфигурации БД LUNA POINT
DATA=./ Точка монтирования данных контейнеров. Указывать необязательно
DOCKER_url= По умолчанию: dockerhub.visionlabs.ru/luna-point
CLEMENTINE_USERNAME= Название БД
По умолчанию: lunapoint
CLEMENTINE_PASSWORD= Пароль БД
По умолчанию: lunapoint
Теги
Теги Clementine:
CLEMENTINE_AUTH_VER= CLEMENTINE_AUTH_VER=v1.1.12;
CLEMENTINE_API_VER= CLEMENTINE_API_VER=v1.9.0
LUNA_POINT_UI_VER= LUNA_POINT_UI_VER=v1.14.2;
LUNA_POINT_API_VER= LUNA_POINT_API_VER=v1.0.5;
Теги сторонних компонентов:
VL_NOTIFIER_VER= VL_NOTIFIER_VER=0.1.15;
POSTGRESQL_VER= POSTGRESQL_VER=12
Параметры конфигурации CLEMENTINE UI
POINT_UI_HOST= Адрес сервера LUNA POINT UI
По умолчанию: luna_point_ui
POINT_UI_PORT= Порт, на котором будет запущен компонент
По умолчанию: 8080
Параметры конфигурации CLEMENTINE API
POINT_API_HOST= Адрес сервера LUNA POINT API
По умолчанию: luna_point_api
POINT_API_PORT= Порт, на котором будет запущен компонент
По умолчанию: 9010
Параметры конфигурации 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-шифрованием
По умолчанию: HTTP
CLEMENTINE_AUTH_DSN= Подключение компонента CLEMENTINE AUTH к БД
По умолчанию: postgresql://clementine:clementine@clementine_db/clementine_auth
Параметры конфигурации LUNA PLATFORM 5
LUNA_API_HOST= Хост LP5. IP адрес сервера, на котором развернута LP5
По умолчанию: 127.0.0.1
LUNA_API_PORT= Порт компонента API LP5
По умолчанию: 5000
LUNA_LICENSES_HOST= Хост LUNA LICENSES
По умолчанию: 127.0.0.1
LUNA_LICENSES_PORT= Порт компонента LUNA LICENSES.
По умолчанию: 5120
LUNA_ACCOUNT_ID= Идентификатор аккаунта пользователя в LP5 1
По умолчанию: a0000000-0000-4000-a000-000000000000
Конфигурация 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
Параметры конфигурации модуля учета рабочего времени
VLTIMETRACKER_HOST= Адрес сервера компонента учета рабочего времени
По умолчанию: 127.0.0.1
VLTIMETRACKER_PORT= Порт компонента учета рабочего времени
По умолчанию: 8003
Параметры конфигурации VL Access
VLACCESS_HOST= Адрес сервера VL Access
По умолчанию: 127.0.0.1
VLACCESS_PORT= Порт VL Access
По умолчанию: 9091
Параметры конфигурации 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 не являются критически важными и необходимы только в случае использования адреса электронной почты для регистрации новых пользователей и сброса паролей.

Параметры конфигурации SMTP также используются для компонента уведомлений.

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

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

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

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

Настройка веб-интерфейса Сервиса выполняется в директории 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

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

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

1․ Перейдите в папку media.

2․ Перенесите файлы с изображениями логотипа в формате .svg в папку.

3․ Назовите файл "logo.svg" для светлой темы и "dark-logo.svg" для тёмной.

3․ В файле config.json пропишите пути для файлов (Рисунок 2):

"logoUrl": "/static/media/logo.svg",
"darkLogoUrl": "/static/media/dark-logo.svg"
Пути для файлов лого в config.json
Рисунок 2. Пути для файлов лого в config.json

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

В LUNA POINT доступна интеграция с сервисом "Гольфстрим". При появлении события с видеоаналитикой (подробнее см. "LUNA POINT. Руководство пользователя", раздел "Панель оператора") пользователь может отправить уведомление в сервис для активации группы реагирования, нажав кнопку "Тревога". Чтобы в интерфейсе появилась кнопка, добавьте в конфигурационный файл config.json в директории example-docker/config/ui/ настройки и заполните все поля:

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

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

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

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

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

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

./start_point.sh

Проверьте статус всех запущенных Docker-контейнеров:

docker-compose ps

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

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

docker-compose exec clementine_auth python3 cli.py createaccount

Укажите логин (адрес электронной почты) и пароль учетной записи, установите роль пользователя.

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

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

docker-compose exec clementine_auth python3 cli.py createauth

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

docker-compose exec clementine_auth python3 cli.py setaccountrole

  1. Является примером идентификатора, а не реальным параметром. Необходимо подставить ID из LP5.