Firmware version 1.5.0
Configuration files
| Service | Path to the configuration file |
|---|---|
| evi-core | /opt/evi-core/evi-core.conf |
| evi-core-web | /etc/angie/http.d/evi-core-web.conf |
| evi-scud | /opt/evi-scud/evi-scud.conf |
| evi-live | /opt/evi-live/evi-live.conf |
| evi-archive | /opt/evi-archive/evi-archive.conf |
| evi-analyzer | /opt/evi-analyzer/evi-analyzer.conf |
Evi-core kernel module
The evi-core configuration file is located in /opt/evi-core/evi-core.conf.
[api] listen=127.0.0.1 # HTTPS API address or interface (* - all interfaces) (ENV: EVICORE_API_LISTEN) port=7000 # Port for HTTPS API (ENV: EVICORE_API_PORT) [ssl] cert_file=/opt/evi-core/ssl/cert.crt # Certificate file (ENV: EVICORE_SSL_CERT_FILE) key_file=/opt/evi-core/ssl/cert.key # Certificate key file (ENV: EVICORE_SSL_KEY_FILE) # pem=123 # Certificate passphrase (optional) (ENV: EVICORE_SSL_PEM) [log] level=info # Log level (ENV: EVICORE_LOG_LEVEL) file=/var/log/evi-core/evi-core.log # Path to log file (ENV: EVICORE_LOG_FILE) [postgresql] host=127.0.0.1 # PostgreSQL address (ENV: EVICORE_POSTGRESQL_HOST) port=5432 # PostgreSQL port (ENV: EVICORE_POSTGRESQL_PORT) dbname=core # PostgreSQL database name (ENV: EVICORE_POSTGRESQL_DBNAME) username=core # PostgreSQL user (ENV: EVICORE_POSTGRESQL_USERNAME) password=core # PostgreSQL password (ENV: EVICORE_POSTGRESQL_PASSWORD) [clickhouse] host=127.0.0.1 # Clickhouse address (ENV: EVICORE_CLICKHOUSE_HOST) port=9000 # Clickhouse port (ENV: EVICORE_CLICKHOUSE_PORT) dbname=core # Clickhouse database name (ENV: EVICORE_CLICKHOUSE_DBNAME) username=core # Clickhouse user (ENV: EVICORE_CLICKHOUSE_USERNAME) password=core # Clickhouse password (ENV: EVICORE_CLICKHOUSE_PASSWORD) [evi-scud] rpc_host=127.0.0.1 # evi-scud address (ENV: EVICORE_EVISCUD_RPC_HOST) rpc_port=7102 # evi-scud RPC port (ENV: EVICORE_EVISCUD_RPC_PORT) [evi-analytics] rpc_host=127.0.0.1 # evi-analytics address (ENV: EVICORE_EVIANALYTICS_RPC_HOST) rpc_port=7402 # evi-analytics RPC port (ENV: EVICORE_EVIANALYTICS_RPC_PORT) [evi-live] rpc_host=127.0.0.1 # evi-live address (ENV: EVICORE_EVILIVE_RPC_HOST) rpc_port=7202 # evi-live RPC port (ENV: EVICORE_EVILIVE_RPC_PORT) [evi-archive] rpc_host=127.0.0.1 # evi-archive address (ENV: EVICORE_EVIARCHIVE_RPC_HOST) rpc_port=7302 # evi-archive RPC port (ENV: EVICORE_EVIARCHIVE_RPC_PORT) [evi-analyzer] rpc_host=127.0.0.1 # evi-analyzer address (ENV: EVICORE_EVIANALYZER_RPC_HOST) rpc_port=7502 # evi-analyzer RPC port (ENV: EVICORE_EVIANALYZER_RPC_PORT)
Evi-scud module
The evi-scud configuration file is located in /opt/evi-scud/evi-scud.conf.
[ssl] cert_file=/opt/evi-scud/ssl/cert.crt # Certificate file (ENV: EVISCUD_SSL_CERT_FILE) key_file=/opt/evi-scud/ssl/cert.key # Certificate key file (ENV: EVISCUD_SSL_KEY_FILE) # pem=123 # Certificate passphrase (optional) (ENV: EVISCUD_SSL_PEM) [log] level=info # Log level (ENV: EVISCUD_LOG_LEVEL) file=/var/log/evi-scud/evi-scud.log # Path to log file (ENV: EVISCUD_LOG_FILE) [postgresql] host=127.0.0.1 # PostgreSQL address (ENV: EVISCUD_POSTGRESQL_HOST) port=5432 # PostgreSQL port (ENV: EVISCUD_POSTGRESQL_PORT) dbname=core # PostgreSQL database name (ENV: EVISCUD_POSTGRESQL_DBNAME) username=core # PostgreSQL user (ENV: EVISCUD_POSTGRESQL_USERNAME) password=core # PostgreSQL password (ENV: EVISCUD_POSTGRESQL_PASSWORD) [rpc] listen=127.0.0.1 # Address or interface for RPC (* - all) (ENV: EVISCUD_RPC_LISTEN) port=7102 # TCP SSL port for RPC (ENV: EVISCUD_RPC_PORT) [events] listen=127.0.0.1 # Address or interface for events (* - all) (ENV: EVISCUD_EVENTS_LISTEN) port=7104 # TCP SSL port for events (ENV: EVISCUD_EVENTS_PORT) [controller] listen=* # Address or interface for communication with IPAER (* - all) (ENV: EVISCUD_CONTROLLER_LISTEN) port=7105 # TCP port for communication with IPAER (ENV: EVISCUD_CONTROLLER_PORT) ssl_port=8085 # TCP SSL port for communication with IPAER (ENV: EVISCUD_CONTROLLER_SSL_PORT)
Evi-live module
The evi-live configuration file is located in /opt/evi-live/evi-live.conf.
Make sure that the extern_host value matches the external IP address or domain name of the server via which clients connect to the system (this setting may change during migration)
[api] listen=* # Address or interface HTTPS API for HTTPS API (* - all interfaces) (ENV: EVILIVE_API_HOST) port=7200 # Port for HTTPS API (ENV: EVILIVE_API_PORT) [ssl] cert_file=/opt/evi-live/ssl/cert.crt # Certificate file (ENV: EVILIVE_SSL_CERT_FILE) key_file=/opt/evi-live/ssl/cert.key # Certificate key file (ENV: EVILIVE_SSL_KEY_FILE) # pem=123 # Certificate passphrase (optional) (ENV: EVILIVE_SSL_PEM) [log] level=info # Log level (ENV: EVILIVE_LOG_LEVEL) file=/var/log/evi-live/evi-live.log # Path to log file (ENV: EVILIVE_LOG_FILE) [postgresql] host=127.0.0.1 # PostgreSQL address (ENV: EVILIVE_POSTGRESQL_HOST) port=5432 # PostgreSQL port (ENV: EVILIVE_POSTGRESQL_PORT) dbname=core # PostgreSQL database name (ENV: EVILIVE_POSTGRESQL_DBNAME) username=core # PostgreSQL user (ENV: EVILIVE_POSTGRESQL_USERNAME) password=core # PostgreSQL password (ENV: EVILIVE_POSTGRESQL_PASSWORD) [rpc] listen=127.0.0.1 # Address or interface for RPC (* - all) (ENV: EVILIVE_RPC_HOST) port=7202 # TCP SSL port for RPC (ENV: EVILIVE_RPC_PORT) [events] listen=127.0.0.1 # Address or interface for events (* - all) (ENV: EVILIVE_EVENTS_HOST) port=7204 # TCP SSL port for events (ENV: EVILIVE_EVENTS_PORT) [global] extern_host=127.0.0.1 # External or proxy address (ENV: EVILIVE_GLOBAL_EXTERN_HOST) extern_port_rtsp_tcp=7260 # External or proxy RTSP TCP port (ENV: EVILIVE_GLOBAL_EXTERN_PORT_RTSP_TCP) extern_port_rtmp=7250 # External or proxy RTMP port (ENV: EVILIVE_GLOBAL_EXTERN_PORT_RTMP) extern_port_webrtc_tcp=7285 # External or proxy port for WebRTC TCP (ENV: EVILIVE_GLOBAL_EXTERN_WEBRTC_TCP) extern_port_webrtc_udp=7285 # External or proxy port for WebRTC UDP (ENV: EVILIVE_GLOBAL_EXTERN_WEBRTC_UDP) extern_port_api=7200 # External or proxy API port (ENV: EVILIVE_GLOBAL_EXTERN_PORT_API) [rtsp] listen=* # RTSP address or interface (* - all) (ENV: EVILIVE_RTSP_HOST) tcp_port=7260 # TCP port for RTSP (ENV: EVILIVE_RTSP_TCP_PORT) [rtmp] listen=* # Address or interface for RTMP (* - all interfaces) (ENV: EVILIVE_RTMP_HOST) port=7250 # TCP port for RTMP (ENV: EVILIVE_RTMP_PORT) [webrtc] listen=* # Address or interface for WebRTC (* - all interfaces) (ENV: EVILIVE_WEBRTC_HOST) tcp_port=7285 # TCP port for WebRTC (ENV: EVILIVE_WEBRTC_TCP_PORT) udp_port=7285 # UDP port for WebRTC (ENV: EVILIVE_WEBRTC_UDP_PORT)
Evi-archive module
The evi-archive configuration file is located in /opt/evi-archive/evi-archive.conf.
[ssl] cert_file=/opt/evi-archive/ssl/cert.crt # Certificate file (ENV: EVIARCHIVE_SSL_CERT_FILE) key_file=/opt/evi-archive/ssl/cert.key # Certificate key file (ENV: EVIARCHIVE_SSL_KEY_FILE) # pem=123 # Certificate passphrase (optional) (ENV: EVIARCHIVE_SSL_PEM) [log] level=info # Log level(ENV: EVIARCHIVE_LOG_LEVEL) file=/var/log/evi-archive/evi-archive.log # Path to log file (ENV: EVIARCHIVE_LOG_FILE) [rpc] listen=127.0.0.1 # Address or interface for RPC (* - all) (ENV: EVIARCHIVE_RPC_HOST) port=7302 # TCP SSL port for RPC (ENV: EVIARCHIVE_RPC_PORT) [events] listen=127.0.0.1 # Address or interface for events (* - all) (ENV: EVIARCHIVE_EVENTS_HOST) port=7304 # TCP SSL port for events (ENV: EVIARCHIVE_EVENTS_PORT) [archive] path=./archive # Path to the archive directory (ENV: EVIARCHIVE_ARCHIVE_PATH)
Evi-analyzer module
The evi-analyzer configuration file is located in /opt/evi-analyzer/evi-analyzer.conf.
[ssl] cert_file=/opt/evi-analyzer/ssl/cert.crt # Certificate file (ENV: EVIANALYZER_SSL_CERT_FILE) key_file=/opt/evi-analyzer/ssl/cert.key # Certificate key file (ENV: EVIANALYZER_SSL_KEY_FILE) # pem=123 # Certificate passphrase (optional) (ENV: EVIANALYZER_SSL_PEM) [log] level=info # Log level (ENV: EVIANALYZER_LOG_LEVEL) file=/var/log/evi-analyzer/evi-analyzer.log # Path to log file (ENV: EVIANALYZER_LOG_FILE) [postgresql] host=127.0.0.1 # PostgreSQL address (ENV: EVIANALYZER_POSTGRESQL_HOST) port=5432 # PostgreSQL port (ENV: EVIANALYZER_POSTGRESQL_PORT) dbname=core # PostgreSQL database name (ENV: EVIANALYZER_POSTGRESQL_DBNAME) username=core # PostgreSQL user (ENV: EVIANALYZER_POSTGRESQL_USERNAME) password=core # PostgreSQL password (ENV: EVIANALYZER_POSTGRESQL_PASSWORD) [rpc] listen=127.0.0.1 # Address or interface for RPC (* - all interfaces) (ENV: EVIANALYZER_RPC_HOST) port=7502 # TCP SSL port for RPC (ENV: EVIANALYZER_RPC_PORT) [events] listen=127.0.0.1 # Address or interface for events (* - all interfaces) (ENV: EVIANALYZER_EVENTS_HOST) port=7504 # TCP SSL port for events (ENV: EVIANALYZER_EVENTS_PORT)
Evi-core-web module
The evi-core-web.conf configuration file is located in /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 settings:
location /api/v1 {
# Enable the proxy — receive API requests from the specified 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;
# a 5 MB limit for uploading files from the client to the server
client_max_body_size 5M;
}
# Separate configuration for /api/v1/firmware
location /api/v1/firmware {
# Enable the proxy — receive API requests from the specified URL:
proxy_pass https://localhost:7000;
# Increased limit for firmware downloads
client_max_body_size 15M;
}
}
Directory for storing video archives
To configure the directory, it is necessary to proceed to editing the configuration file:
/opt/evi-archive/evi-archive.conf
And specify the directory where the archive will be stored in the [archive] section under the path parameter:
[archive] path=./archive
The program supports only one save path.
Connecting multiple drives
If it is necessary to use multiple drives, they must be combined at the Linux OS level by mounting them into a shared folder.
- Connect additional drives.
- Create a shared mount path, for example: /mnt/archive.
- Combine the drives into a single logical path using:
- LVM – combining into a single volume,
- RAID (e.g., RAID 0 or RAID 5) – for data distribution,
- bind-mounting multiple partitions into subdirectories of a shared folder.
Specify the following path in the configuration:
[archive] path=/mnt/archive
Ensure that the program has read/write permissions for the folder.
File storage structure
The archive stored in the directory on the server has the internal .arc format.
archive/live/{camera_id}/{date}.arcViewing archived files
Exporting and viewing archives is performed using evi-video-client.
For more details, see the Viewing an archive section.
Uploading SSL certificates
To use your own certificates in service configuration files, it is necessary to specify the path to the certificate and key files.
Evi-core module
Switch to editing the /opt/evi-core/evi-core.conf configuration file.
Specify the path to the certificate and key in the [ssl] section under the crt and key parameters:
[ssl] cert_file=<path to certificate> key_file=<path to key>
Evi-scud module
Switch to editing the /opt/evi-scud/evi-scud.conf configuration file.
Specify the path to the certificate and key in the [ssl] section under the crt and key parameters:
[ssl] cert_file=<path to certificate> key_file=<path to key>
Evi-live module
Switch to editing the /opt/evi-live/evi-live.conf configuration file.
Specify the path to the certificate and key in the [ssl] section under the crt and key parameters:
[ssl] cert_file=<path to certificate> key_file=<path to key>
Evi-archive module
Switch to editing the /opt/evi-archive/evi-archive.conf configuration file.
Specify the path to the certificate and key in the [ssl] section under the crt and key parameters:
[ssl] cert_file=<path to certificate> key_file=<path to key>
Evi-analyzer module
Switch to editing the /opt/evi-analyzer/evi-analyzer.conf configuration file.
Specify the path to the certificate and key in the [ssl] section under the crt and key parameters:
[ssl] cert_file=<path to certificate> key_file=<path to key>
Evi-core-web module
Switch to editing the /etc/angie/http.d/evi-core-web.conf configuration file /etc/angie/http.d/evi-core-web.conf.
Specify the path to the certificate and key under the ssl_certificate and ssl_certificate_key parameters:
ssl_certificate <path to certificate>; ssl_certificate_key <path to key>;
Evi-analytics Docker container
Switch to editing the evi-analytics_1.5.0_docker-compose.sh file.
Specify in variables:
#EVI-ANALYTICS CONFIG SECTION [ssl]
: ${EVIANALYTICS_SSL_CERT_FILE="<path to certificate>"}
: ${EVIANALYTICS_SSL_KEY_FILE="<path to key>"}
Log file rotation
Service log files are located in the /var/log/service-name folder.
EVI services do not perform automatic log rotation.
To configure rotation, use the logrotate utility according to your system requirements.
Example of configuration for rotating the /var/log/evi-core/evi-core.log file.
/var/log/evi-core/evi-core.log
{
hourly
size 100M
dateext
dateformat -%Y-%m-%d_%H-%s
missingok
rotate 15
copytruncate
compress
notifempty
}
Explanation of parameters:
| Parameter | Description |
|---|---|
| hourly | hourly rotation |
| size 100M | rotation when reaching a size of 100 MB |
| dateext | adding a date to the name of an archive log |
| dateformat | date format in the file name |
| missingok | no error if the file is missing |
| rotate 15 | store up to 15 backup copies |
| copytruncate | copy and trim the current log (without rebooting the service) |
| notifempty | do not rotate if the log is empty |