Предварительные действия

Установка часового пояса

При установке Ubuntu-22.04 не предлагается указать часовой пояс (по умолчанию устанавливается время UTC). Его нужно установить вручную (для корректной работы видеоархива, календарей доступа и т.д.), например:

sudo timedatectl set-timezone Asia/Novosibirsk

Обновление ОС

Перед началом установки необходимо обновить ОС:

sudo apt update
sudo apt upgrade

Установка платформы EVI

Добавление репозитория

Добавить ключ
wget -q -O - --no-check-certificate https://archive.eltex-co.ru/evi-raw/key/public.gpg.key | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/nexus-ext.eltex.loc.gpg --import
Добавить репозиторий
echo "deb https://archive.eltex-co.ru/evi/ jammy main" | sudo tee /etc/apt/sources.list.d/evi.list
Выдать права на файл
sudo chmod a+r /etc/apt/trusted.gpg.d/nexus-ext.eltex.loc.gpg
Обновить зависимости
sudo apt update

Установка базы данных

Минимальная версия postgresql 17.

Все сервисы используют 1 базу данных для работы.

Рекомендуем размещать базу данных рядом с evi-core и evi-scud.

Установка postgresql 17

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --yes --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
sudo apt update
sudo apt install postgresql-17

Установка обязательных зависимостей

Каждый из пакетов требует наличие пакета libpq5 (>= 17.2).

При установке сервисов на разные серверы необходимо установить на каждый из них libpq5.

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --yes --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
sudo apt update
sudo apt install libpq5

Установка пакетов EVI

Установка модуля Ядра

Для установки ядра системы выполните следующую команду:

Установка пакетов
sudo apt install evi-core

Установка модуля web-интерфейса

Для установки модуля web-интерфейса выполните следующую команду:

Установка пакетов
sudo apt install evi-core-web

Установка модуля СКУД

Для установки модуля СКУД выполните следующую команду:

Установка пакетов
sudo apt install evi-scud

Установка модуля Видеонаблюдения

Для установки модуля Видеонаблюдения выполните следующую команду:

Установка пакетов
sudo apt install evi-live evi-archive evi-analyzer

Параметр extern_ip в конфигурации /opt/evi-live/evi-live.conf

В конфигурационном файле сервиса evi-live, который находится по пути /opt/evi-live/evi-live.conf, в параметре extern_ip укажите IP-адрес или доменное имя, доступное для пользователей в вашей локальной сети. По умолчанию указывается 127.0.0.1.

Иначе просмотр видео с камер будет невозможен.

Создание базы данных

Для создания базы данных необходимо выполнить следующие команды:

Команды приведены для случая установки всех сервисов на один сервер.

В случае установки сервисов на разные серверы необходимо открыть доступ к базе.

Остановить все сервисы:

Остановить все сервисы
sudo systemctl stop evi-core.service evi-scud.service evi-live.service evi-archive.service evi-analyzer.service

Запустить скрипт:

Создание БД
sudo bash /opt/evi-core/sql/sql_insert.sh &>/dev/null

Запустить все сервисы:

Запустить основной сервис
sudo systemctl start evi-core.service
Запустить остальные сервисы
sudo systemctl start evi-scud.service evi-live.service evi-archive.service evi-analyzer.service

Проверка работоспособности

Проверка работоспособности
sudo systemctl is-active evi-core.service evi-scud.service evi-live.service evi-archive.service evi-analyzer.service

В выводе все компоненты должны быть активны:

Активность сервисов
active
active
active
active
active

Установка модуля видеоаналитики

Рекомендуется обновить ядро системы перед установкой видеодрайвера.

Автоматическая установка docker и драйвера

Для автоматической установки docker и драйвера Nvidia выполните следующие команды:

nvidia-docker.sh
wget -q -O - --no-check-certificate https://archive.eltex-co.ru/evi-raw/evi-1.3.0/evi-prepare-analytics_install.sh | bash
Обязательно требуется перезагрузка сервера.
sudo reboot

Далее переходите к разделу в документации Загрузка образа и запуск контейнера evi-analytics

Ручная установка docker и драйвера

Версия драйвера

Рекомендуем использовать доступный актуальный драйвер в репозитории OC.

Для работы с видеокартой необходимо установить драйвер:

Установить драйвер для видеокарты
sudo apt install -yfqq nvidia-driver-550

Далее необходимо установить docker для работы с контейнером аналитики и nvidia-docker2 для работы с видеокартой:

Установка зависимостей
sudo apt-get update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Добавление репозитория docker
curl https://get.docker.com | sh \
  && sudo systemctl --now enable docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
Установка docker
sudo apt-get update
sudo apt-get install docker-ce docker-compose nvidia-docker2
Перезапуск сервиса docker
sudo systemctl restart docker

Добавить пользователя в группу docker:

Добавить пользователя в группу docker
sudo usermod -aG docker $(whoami)
Обязательно требуется перезагрузка сервера.
sudo reboot

Загрузка образа и запуск контейнера evi-analytics

Необходимо загрузить на сервер аналитики скрипт evi-analytics_1.3.0.sh:

Загрузить скрипт evi-analytics_1.3.0_public.sh
wget --no-check-certificate https://archive.eltex-co.ru/evi-raw/evi-1.3.0/evi-analytics_1.3.0.sh
Запустить скрипт evi-analytics_1.3.0_public.sh
bash evi-analytics_1.3.0.sh EFNRS_DB_HOST="IP-адрес базы данных postgres"

Проверка работоспособности

docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"

Пример успешно запущенных контейнеров

CONTAINER ID   NAMES                                                    STATUS
f01deee7d6a5   user-triton1-1                                       Up 23 hours
d70d9e7004ac   user-triton3-1                                       Up 23 hours
c011105320e9   user-triton2-1                                       Up 23 hours
d17d6261648f   user-evi-analytics-haproxy-1            Up 23 hours
fa2db6812f3b    user-evi-analytics-1                             Up 23 hours


Настройка связности сервисов

При установке сервисов на разные серверы необходимо настроить связность сервисов между собой.

Пример: необходимо установить модуль СКУД и Видеонаблюдения на разные сервера.

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

  1. Указать адрес базы данных и открыть ее для подключения со стороннего сервера в разделе [db].
  2. Указать адрес для подключения модуля СКУД в разделе [scud] в конфигурационном файле evi-core.
  3. Указать адрес для подключения модуля Аналитики в разделе [analytics] в конфигурационном файле evi-core.
  4. Указать адрес для подключения модуля Видеонаблюдения в разделе [perimeter] в конфигурационном файле evi-core.
  5. В конфигурационном файле evi-live указать адрес для подключения к evi-analytics в разделе [analytics].
  6. В конфигурационном файле evi-live указать адрес, через который пользователю будет доступен видеопоток с камер в разделе [global].
  7. В конфигурационном файле evi-archive указать адрес для подключения к evi-live в разделе [evi_video].
  8. В конфигурационном файле evi-archive указать место записи архива в разделе [other].
  9. В конфигурационном файле evi-analyzer указать адрес для подключения к evi-live в разделе [evi_video].
После внесения изменений в сервис требуется его перезагрузка.

Файлы конфигурации сервисов

Конфигурационный файл evi-core располагается в /opt/evi-core/evi-core.conf.

/opt/evi-core/evi-core.conf
[core]
crt=/opt/evi-core/ssl/cert.crt
key=/opt/evi-core/ssl/server.key
listen=*
apiport=7001
apiportssl=7000

[db]
databaseip=127.0.0.1
databaseport=5432
databasename=core
databaseusername=core
databasepassword=core

[logs]
loglvl=info
logpath=/var/log/evi-core

[scud]
ip=127.0.0.1  - Адрес evi-scud
port=8000

[analytics]
ip=127.0.0.1 - Адрес модуля аналитики  
port=9000

[perimeter]
ip=127.0.0.1 - Адрес evi-live
port=10000

Конфигурационный файл evi-scud располагается в /opt/evi-scud/evi-scud.conf.

/opt/evi-scud/evi-scud.conf
[core]
crt=/opt/evi-scud/ssl/cert.crt
key=/opt/evi-scud/ssl/server.key
apiportssl=8001
apiport=8000
listen=*
wsport=8010
wssport=8011

[logs]
logpath=/var/log/evi-scud
loglevel=info

[db]
databaseport=5432
databaseip=127.0.0.1
databasepassword=core
databaseusername=core
databasename=core

[controller]
port=8084
portssl=8085

Конфигурационный файл evi-live располагается в /opt/evi-live/evi-live.conf.

/opt/evi-live/evi-live.conf
[analytics]
host=127.0.0.1 — адрес модуля аналитики 
port=9011

[api]
host=*
port=10000
ssl_port=10001

[db]
databaseip=127.0.0.1
databasename=core
databasepassword=core
databaseport=5432
databaseusername=core

[event]
event_ws_port=10010
event_wss_port=10011
host=*

[global]
extern_ip=127.0.0.1 — этот IP-Адрес(можно указать домен) должен быть доступен пользователю для просмотра видеопотока

[log]
dir=//var/log/evi-live
file_name=evi-live.log
level=info

[other]
count_thread=0

[receiver]
rtmp_port=10050
rtsp_port=10060

[ssl]
cert=/opt/evi-live/ssl/server.crt
key=/opt/evi-live/ssl/server.key

[webrtc]
tcp_port=10085
udp_port=10085

Конфигурационный файл evi-archive располагается в /opt/evi-archive/evi-archive.conf.

/opt/evi-archive/evi-archive.conf
[api]
host=*
port=10200
ssl_port=10201

[evi_video]
host=127.0.0.1 - Адрес evi-live 
port=10001

[log]
dir=//var/log/evi-archive
file_name=evi-archive.log
level=info

[other]
archive_path=./archive - Расположение архива видеозаписей

[ssl]
cert=/opt/evi-archive/ssl/server.crt
key=/opt/evi-archive/ssl/server.key

Конфигурационный файл evi-analyzer располагается в /opt/evi-analyzer/evi-analyzer.conf.

/opt/evi-analyzer/evi-analyzer.conf
[api]
host=*
port=10300
ssl_port=10301

[evi_video]
host=127.0.0.1 - Адрес evi-live
port=10001

[log]
dir=//var/log/evi-analyzer
file_name=evi-analyzer.log
level=info

[receiver]
rtmp_port=5050
rtsp_port=5060

[ssl]
cert=/opt/evi-analyzer/ssl/server.crt
key=/opt/evi-analyzer/ssl/server.key

Конфигурационный файл evi-core-web располагается в /etc/nginx/sites-available/evi-core-web.

/etc/nginx/sites-available/evi-core-web
# evi-core-web configuration
#
server {
        listen 80;
        listen [::]:80;
        return 301 https://$host$request_uri;
        
        server_name $hostname $server_addr 127.0.0.1 localhost;
}

server {
        listen 443 ssl;
        ssl_certificate /etc/ssl/certs/evi-core-web.crt;
        ssl_certificate_key /etc/ssl/private/evi-core-web.key;

        root /usr/share/evi-core-web/www/browser;

        index index.html;

        server_name $hostname $server_addr 127.0.0.1 localhost;

        location /assets/config.json {
                set $apiAddress $scheme://$http_host;
                set $wsAddress wss://$http_host;
                default_type application/json;
                return 200 "{\"api\": \"$apiAddress/api/v1\", \"ws\": \"$wsAddress/api/v1\"}";
        }

        location / {
                # kill browser cache for all html pages
                add_header Last-Modified $date_gmt;
                add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
                if_modified_since off;
                expires off;
                etag off;

                try_files $uri $uri/ /index.html;
        }

        # настройки для API:
        location /api/v1 {
                # включить прокси — брать API-запросы с указанного URL:
                proxy_pass https://localhost:7000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;

                # лимит в 5 МБ для загрузки файлов с клиента на сервер
                client_max_body_size 5M;
        }
}


  • Нет меток