Версия ПО 1.7.0

Конфигурационные файлы

СервисПуть до конфигурационного файла
evi-core~/evi-installer/config/evi/evi-core.env
evi-core-web~/evi-installer/config/evi/web.env
evi-scud~/evi-installer/config/evi/scud.env
evi-live~/evi-installer/config/evi/live.env
evi-archive~/evi-installer/config/evi/archive.env
evi-analyzer

~/evi-installer/config/evi/analyzer.env

evi-analytics

~/evi-installer/config/evi/analytics.env

postgres

~/evi-installer/config/evi/postgres.env

clickhouse

~/evi-installer/config/evi/clickhouse.env

Модуль ядра evi-core

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

EVICORE_API_LISTEN=*                                                          # Адрес или интерфейс HTTPS API (* - all interfaces)
EVICORE_API_PORT=7000                                                         # Порт для HTTPS API

EVICORE_SSL_CERT_FILE=/opt/evi-core/cert/cert.crt                             # Файл сертификата
EVICORE_SSL_KEY_FILE=/opt/evi-core/cert/key.key                               # Файл ключа сертификата
EVICORE_SSL_PEM=                                                              # Парольная фраза сертификата (опционально)

EVICORE_LOG_LEVEL=trace                                                       # Уровень логов
EVICORE_LOG_FILE=/var/log/evi-core/evi-core.log                               # Путь до лог файла

EVICORE_POSTGRESQL_HOST=postgres                                              # PostgreSQL адрес
EVICORE_POSTGRESQL_PORT=5432                                                  # PostgreSQL порт
EVICORE_POSTGRESQL_DBNAME=core                                                # PostgreSQL имя базы
EVICORE_POSTGRESQL_USERNAME=core                                              # PostgreSQL пользователь 
EVICORE_POSTGRESQL_PASSWORD=core                                              # PostgreSQL пароль

EVICORE_CLICKHOUSE_HOST=clickhouse                                            # Clickhouse адрес
EVICORE_CLICKHOUSE_PORT=9000                                                  # Clickhouse порт
EVICORE_CLICKHOUSE_DBNAME=core                                                # Clickhouse имя базы
EVICORE_CLICKHOUSE_USERNAME=core                                              # Clickhouse пользователь
EVICORE_CLICKHOUSE_PASSWORD=core                                              # Clickhouse пароль
EVICORE_CLICKHOUSE_RTBUFFER=100                                               # Clickhouse RT buffer

EVICORE_EVISCUD_RPC_HOST=scud                                                 # Адрес evi-scud 
EVICORE_EVISCUD_RPC_PORT=7102                                                 # RPC порт evi-scud

EVICORE_EVIANALYTICS_RPC_HOST=analytics                                       # Адрес evi-analytics                 
EVICORE_EVIANALYTICS_RPC_PORT=7402                                            # RPC порт evi-analytics

EVICORE_EVILIVE_RPC_HOST=live                                                 # Адрес evi-live
EVICORE_EVILIVE_RPC_PORT=7202                                                 # RPC порт evi-live

EVICORE_EVIARCHIVE_RPC_HOST=archive                                           # Адрес evi-archive
EVICORE_EVIARCHIVE_RPC_PORT=7302                                              # RPC порт evi-archive

EVICORE_EVIANALYZER_RPC_HOST=analyzer                                         # Адрес evi-analyzer
EVICORE_EVIANALYZER_RPC_PORT=7502                                             # RPC порт evi-analyzer

EVICORE_LICENSE_SERVER=elm-dev-evi.eltex.loc:8099                             # Адрес сервера лицензии

EVICORE_PHOTO_SIZE=5242880                                                    # Лимит для загрузки фото                                                     

EVICORE_HTTP_MAX_DATA_LENGTH=20MB                                             # Лимит для данных http
EVICORE_WEBSOCKET_MAX_DATALENGTH=25MB                                         # Лимит для данных websocket


Модуль evi-scud

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

EVISCUD_SSL_CERT_FILE=/opt/evi-scud/cert/cert.crt                             # Файл сертификата
EVISCUD_SSL_KEY_FILE=/opt/evi-scud/cert/key.key                               # Файл ключа сертификата
EVISCUD_SSL_PEM=                                                              # Парольная фраза сертификата (опционально)

EVISCUD_LOG_LEVEL=trace                                                       # Уровень логов
EVISCUD_LOG_FILE=/var/log/evi-scud/evi-scud.log                               # Путь до лог файла

EVISCUD_POSTGRESQL_HOST=postgres                                              # PostgreSQL адрес
EVISCUD_POSTGRESQL_PORT=5432                                                  # PostgreSQL порт
EVISCUD_POSTGRESQL_DBNAME=core                                                # PostgreSQL имя базы
EVISCUD_POSTGRESQL_USERNAME=core                                              # PostgreSQL пользователь                                       
EVISCUD_POSTGRESQL_PASSWORD=core                                              # PostgreSQL пароль

EVISCUD_RPC_LISTEN=*                                                          # Адрес или интерфейс для RPC (* - все)
EVISCUD_RPC_PORT=7102                                                         # TCP SSL порт для RPC

EVISCUD_EVENTS_LISTEN=*                                                       # Адрес или интерфейс для событий (* - все)
EVISCUD_EVENTS_PORT=7104                                                      # TCP SSL порт для событий

EVISCUD_CONTROLLER_LISTEN=*                                                   # Адрес или интерфейс для связи с IPAER (* - все)
EVISCUD_CONTROLLER_PORT=7105                                                  # TCP порт для связи с IPAER
EVISCUD_CONTROLLER_SSL_PORT=8085                                              # TCP SSL порт для связи с IPAER

EVISCUD_GATEWAY_PORT=7105                                                     # Gateway порт scud

Модуль evi-live

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

Убедитесь, что значение extern_host соответствует внешнему IP-адресу или доменному имени сервера, по которому клиенты подключаются к системе (параметр может изменится при Миграции)

# только при сборке с DEVELOP
EVILIVE_API_DIR=./www                                                         # Путь до live API
EVILIVE_AUTH_LOGIN=eltex                                                      # Логин для авторизации планшета
EVILIVE_AUTH_PASSWORD=EVIEltex!1                                              # Пароль для авторизации планшета

EVILIVE_SSL_KEY_FILE=/opt/evi-live/cert/key.key                               # Файл сертификата
EVILIVE_SSL_CERT_FILE=/opt/evi-live/cert/cert.crt                             # Файл ключа сертификата                  
EVILIVE_SSL_PEM=000000                                                        # Парольная фраза сертификата (опционально)

EVILIVE_LOG_LEVEL=trace                                                       # Уровень логов
EVILIVE_LOG_FILE=/var/log/evi-live/evi-live.log                               # Путь до лог файла
EVIVIDEO_LOG_RAM_SIZE=0

EVILIVE_POSTGRESQL_PORT=5432                                                  # PostgreSQL порт
EVILIVE_POSTGRESQL_HOST=postgres                                              # PostgreSQL имя базы 
EVILIVE_POSTGRESQL_PASSWORD=core                                              # PostgreSQL пароль
EVILIVE_POSTGRESQL_USERNAME=core                                              # PostgreSQL пользователь
EVILIVE_POSTGRESQL_DBNAME=core                                                # PostgreSQL имя базы
EVILIVE_POSTGRESQL_ROTATIONDAY=8760                                           # Ротация дней
EVILIVE_POSTGRESQL_ROTATIONWEEK=1251                                          # Ротация недель
EVILIVE_POSTGRESQL_ROTATIONMONTH=24                                           # Ротация месяцев
EVILIVE_POSTGRESQL_ROTATIONYEAR=2                                             # Ротация лет

EVILIVE_RPC_HOST=*                                                            # Адрес или интерфейс для RPC (* - все)
EVILIVE_RPC_PORT=7202                                                         # TCP SSL порт для RPC

EVILIVE_EVENTS_HOST=*                                                         # Адрес или интерфейс для событий (* - все)
EVILIVE_EVENTS_PORT=7204                                                      # TCP SSL порт для событий          

EVILIVE_RTSP_HOST=live                                                        # Адрес или интерфейс RTSP
EVILIVE_RTSP_TCP_PORT=7260                                                    # TCP порт для RTSP 

EVILIVE_RTMP_HOST=*                                                           # Адрес или интерфейс для RTMP
EVILIVE_RTMP_PORT=7250                                                        # TCP порт для RTMP

EVILIVE_WEBRTC_HOST=*                                                         # Адрес или интерфейс для WebRTC
EVILIVE_WEBRTC_TCP_PORT=7285                                                  # TCP порт для WebRTC
EVILIVE_WEBRTC_UDP_PORT=7285                                                  # UDP порт для WebRTC

EVILIVE_GLOBAL_EXTERN_HOST=*                                                  # Внешний или прокси адрес
EVILIVE_GLOBAL_EXTERN_PORT_API=7200                                           # Внешний или прокси порт API
EVILIVE_GLOBAL_EXTERN_PORT_RTSP_TCP=7260                                      # Внешний или прокси порт RTSP TCP
EVILIVE_GLOBAL_EXTERN_PORT_RTMP=7250                                          # Внешний или прокси порт RTMP
EVILIVE_GLOBAL_EXTERN_WEBRTC_TCP=7285                                         # Внешний или прокси порт WebRTC TCP
EVILIVE_GLOBAL_EXTERN_WEBRTC_UDP=7285                                         # Внешний или прокси порт WebRTC UDP

Модуль evi-archive

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

EVIARCHIVE_SSL_KEY_FILE=/opt/evi-archive/cert/key.key                         # Файл ключа сертификата
EVIARCHIVE_SSL_CERT_FILE=/opt/evi-archive/cert/cert.crt                       # Файл сертификата
EVIARCHIVE_SSL_PEM=000000                                                     # Парольная фраза сертификата (опционально)

EVIARCHIVE_LOG_LEVEL=trace                                                    # Уровень логов
EVIARCHIVE_LOG_FILE=/var/log/evi-archive/evi-archive.log                      # Путь до лог файла
EVIVIDEO_LOG_RAM_SIZE=0

EVIARCHIVE_RPC_HOST=archive                                                   # Адрес или интерфейс для RPC (* - все)
EVIARCHIVE_RPC_PORT=7302                                                      # TCP SSL порт для RPC

EVIARCHIVE_EVENTS_HOST=*                                                      # Адрес или интерфейс для событий (* - все)
EVIARCHIVE_EVENTS_PORT=7304                                                   # TCP SSL порт для событий

EVIARCHIVE_ARCHIVE_PATH=/archive                                              # Путь до директории архива
EVIARCHIVE_BLOCK_RECORD=false                                                 # Блочная запись
EVIARCHIVE_BLOCK_SIZE=1048576                                                 # Размер блока
EVIARCHIVE_ARCHIVE_ASYNC=false                                                # Асинхронная запись
EVIARCHIVE_ARCHIVE_THRESHOLD=100                                              # Лимит буфера архивации

Модуль evi-analyzer

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

EVIANALYZER_RPC_HOST=analyzer                                                 # Адрес или интерфейс для RPC (* - all interfaces)
EVIANALYZER_RPC_PORT=7502                                                     # TCP SSL порт для RPC

EVIANALYZER_SSL_KEY_FILE=/opt/evi-analyzer/cert/key.key                       # Файл ключа сертификата
EVIANALYZER_SSL_CERT_FILE=/opt/evi-analyzer/cert/cert.crt                     # Файл сертификата
EVIANALYZER_SSL_PEM=000000                                                    # Парольная фраза сертификата (опционально)

EVIANALYZER_POSTGRESQL_PORT=5432                                              # PostgreSQL порт
EVIANALYZER_POSTGRESQL_HOST=postgres                                          # PostgreSQL адрес
EVIANALYZER_POSTGRESQL_PASSWORD=core                                          # PostgreSQL пароль
EVIANALYZER_POSTGRESQL_USERNAME=core                                          # PostgreSQL пользователь
EVIANALYZER_POSTGRESQL_DBNAME=core                                            # PostgreSQL имя базы

EVIANALYZER_LOG_LEVEL=info                                                    # Уровень логов
EVIANALYZER_LOG_FILE=/var/log/evi-analyzer/evi-analyzer.log                   # Путь до лог файла
EVIANALYZER_LOG_RAM_SIZE=0

EVIANALYZER_EVENTS_HOST=*                                                     # Адрес или интерфейс для событий  (* - all interfaces)
EVIANALYZER_EVENTS_PORT=7504                                                  # TCP SSL порт для событий

EVIANALYZER_MD_TRACKING_ADDITIONAL_LINKING=0                            
EVIANALYZER_MD_TRACKING_REMOVE_TIME=0.1
EVIANALYZER_MD_BACKGROUND_GROW_TIME=1
EVIANALYZER_MD_BACKGROUND_UPDATE_TIME=0.1
EVIANALYZER_MD_BACKGROUND_STAT_UPDATE_TIME=0.01
EVIANALYZER_MD_CLASSIFICATION_TIME_MIN=0.01
EVIANALYZER_MD_CLASSIFICATION_SHIFT_MIN=0.01
EVIANALYZER_MD_DIFFERENCE_DX_FEATURE_WEIGHT=0
EVIANALYZER_MD_DIFFERENCE_DY_FEATURE_WEIGHT=0

Модуль веб-интерфейса evi-core-web

Конфигурационный файл evi-core-web.conf располагается в /etc/angie/http.d/evi-core-web.conf:

# 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\", \"tablet\": true}";
        }

        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;
        }

        # Отдельная настройка для /api/v1/firmware
        location /api/v1/firmware {
                # включаем прокси — брать API-запросы с указанного URL:
                proxy_pass https://localhost:7000;

                # Увеличенный лимит для загрузки прошивки
                client_max_body_size 15M;
        }
}

Директория для сохранения видеоархива

Для настройки директории необходимо перейдите в редактирование конфигурационного файла:

/opt/evi-archive/evi-archive.conf

Укажите в разделе [archive] у параметра  path директорию, в которой будет храниться архив:

[archive]
path=./archive

Программа поддерживает только один путь сохранения.

Как подключить несколько дисков

Если требуется использовать несколько дисков, необходимо объединить их на уровне ОС Linux с помощью монтирования в общую папку.

  1. Подключите дополнительные диски.
  2. Создайте общий mount-путь, например: /mnt/archive
  3. Объедините диски в один логический путь через:
    1. LVM — объединение в единый том,
    2. RAID (например, RAID 0 или RAID 5) — для распределения данных,
    3. или bind-монтирование нескольких разделов в подкаталоги общей папки.

Укажите этот путь в конфигурации:

[archive]
path=/mnt/archive

Убедитесь, что у программы есть права на чтение/запись в папку.


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

Структура хранения файлов

Сохраняемый архив в директорию на сервере имеет внутренний формат .arc.

archive/live/{camera_id}/{date}.arc

Просмотр архивных файлов

Экспорт, просмотр архива производится с помощью evi-video-client.

Подробнее можно узнать в разделе Просмотр архива.

Загрузка SSL-сертификатов

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

Сервис evi-core

Перейдите в редактирование конфигурационного файла /opt/evi-core/evi-core.conf.

Укажите путь в разделе [ssl] у параметров crt и key путь до сертификата и ключа:

[ssl]
cert_file=<путь до сертификата>
key_file=<путь до ключа>

Сервис evi-scud

Перейдите в редактирование конфигурационного файла /opt/evi-scud/evi-scud.conf.

Укажите в разделе [ssl] у параметров crt и key путь до сертификата и ключа:

[ssl]
cert_file=<путь до сертификата>
key_file=<путь до ключа>

Сервис evi-live

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

Укажите в разделе [ssl] у параметров cert и key путь до сертификата и ключа:

[ssl]
cert_file=<путь до сертификата>
key_file=<путь до ключа>

Сервис evi-archive

Перейти в редактирование конфигурационного файла /opt/evi-archive/evi-archive.conf.

Укажите в разделе [ssl] у параметров cert и key путь до сертификата и ключа:

[ssl]
cert_file=<путь до сертификата>
key_file=<путь до ключа>

Сервис evi-analyzer

Перейти в редактирование конфигурационного файла /opt/evi-analyzer/evi-analyzer.conf.

Укажите в разделе [ssl] у параметров cert и key путь до сертификата и ключа:

[ssl]
cert_file=<путь до сертификата>
key_file=<путь до ключа>

Модуль evi-core-web

Перейдите в редактирование конфигурационного файла /etc/angie/http.d/evi-core-web.conf .

Укажите у параметров ssl_certificate и ssl_certificate_key путь до сертификата и ключа:

ssl_certificate <путь до сертификата>;
ssl_certificate_key <путь до сертификата>;

Docker-контейнер evi-analytics

Перейдите в редактирование файла evi-analytics_1.5.0_docker-compose.sh .

Укажите в переменных:

  #EVI-ANALYTICS CONFIG SECTION [ssl]
  : ${EVIANALYTICS_SSL_CERT_FILE="<путь до сертификата>"}
  : ${EVIANALYTICS_SSL_KEY_FILE="<путь до ключа>"}

Настройка связности сервисов для РЕД ОС

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

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

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

  1. Установите evi-core, evi-scud, postgres, clickhouse на машину 192.168.50.29.
  2. Установите evi-live, evi-archive, evi-analyzer на машину 192.168.50.250.
  3. Разверните Evi-analytics на 192.168.50.35.
  4. В конфигурации evi-core пропишите адреса баз данных, evi-scud, evi-analytics, evi-live, evi-archive, evi-analyzer.
    [postgresql]
    host=127.0.0.1          
    port=5432                             
    dbname=core              
    username=core                         
    password=core
    
    [clickhouse]
    host=127.0.0.1                        
    port=9000                             
    dbname=core                           
    username=core                         
    password=core                         
    
    [evi-scud]
    rpc_host=127.0.0.1                    
    rpc_port=7102                         
    
    [evi-analytics]
    rpc_host=192.168.50.35               
    rpc_port=7402                         
    
    [evi-live]
    rpc_host=192.168.50.250                   
    rpc_port=7202                        
    
    [evi-archive]
    rpc_host=192.168.50.250                  
    rpc_port=7302                         
    
    [evi-analyzer]
    rpc_host=192.168.50.250                    
    rpc_port=7502
  5. В конфигах postgres открываем базу для подключения с других адресов.
    # - Connection Settings -
    
    listen_addresses = '*' 
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
    local   all             all                                     trust
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            trust
    host    core            core            192.168.50.35/24        md5
    # IPv6 local connections:
    host    all             all             ::1/128                 trust
    # Allow replication connections from localhost, by a user with the
    # replication privilege.
    local   replication     all                                     trust
    host    replication     all             127.0.0.1/32            trust
    host    replication     all             ::1/128                 trust
  6. В конфиге evi-live прописываем адреса: базы данных, rpc, events, внешний IP.
    [postgresql]
    host=192.168.50.29                   
    port=5432                            
    dbname=core                          
    username=core                        
    password=core                        
    
    [rpc]
    listen=192.168.50.250                
    port=7202                            
    
    [events]
    listen=192.168.50.250                
    port=7204                            
    
    [global]
    extern_host=192.168.50.250           
    extern_port_rtsp_tcp=7260           
    extern_port_rtmp=7250               
    extern_port_webrtc_tcp=7285          
    extern_port_webrtc_udp=7285          
    extern_port_api=7200                 
    
    
  7. В конфиге evi-analyzer прописываем адреса: базы данных, rpc, events.
    [postgresql]
    host=192.168.50.29                           
    port=5432                                   
    dbname=core                                 
    username=core                               
    password=core                               
    
    [rpc]
    listen=192.168.50.250                        
    port=7502                                   
    
    [events]
    listen=192.168.50.250                            
    port=7504          
    
  8. В конфиге evi-archive прописываем адреса rpc и events.
    [rpc]
    listen=192.168.50.250                         
    port=7302                                
    
    [events]
    listen=192.168.50.250                     
    port=7304                                
    
  9. В докер файле evi-analitycs прописываем адрес базы данных. 
    : ${EVIANALYTICS_POSTGRESQL_HOST="192.168.50.29"}
    : ${EVIANALYTICS_POSTGRESQL_DBNAME="core"}
    : ${EVIANALYTICS_POSTGRESQL_USERNAME="core"}
    : ${EVIANALYTICS_POSTGRESQL_PASSWORD="core"}
    
    
  10. Перезапускаем все сервисы, в том числе evi-analytics.
После внесения изменений в сервис требуется его перезагрузка.

Ротация log-файлов

Лог-файлы сервисов располагаются в папке /var/log/имя-сервиса.

Сервисы EVI не выполняют автоматическую ротацию логов. 

Для настройки ротации используйте утилиту logrotate в соответствии с требованиями вашей системы.

Пример настроенной конфигурации для ротирования файла /var/log/evi-core/evi-core.log.

/var/log/evi-core/evi-core.log
{
        hourly
        size 100M
        dateext
        dateformat -%Y-%m-%d_%H-%s
        missingok
        rotate 15
        copytruncate
		compress
        notifempty
}

Пояснение параметров:

ПараметрОписание
hourlyротация каждый час
size 100Mротация при достижении размера 100 МБ
dateextдобавление даты к имени архивного лога
dateformatформат даты в имени файла
missingokне ошибка, если файл отсутствует
rotate 15хранить до 15 архивных копий
copytruncateкопировать и обрезать текущий лог (без перезапуска сервиса)
notifemptyне ротировать, если лог пуст