Skip to main content
Skip table of contents

Еnv variablеs

NONE
APP_NAME=VMS # A project name 
APP_ENV=production # Setting up an environment. Certain code can only be executed in a specific environment.
APP_KEY=  # Is generated while installation. It's required for internal work of laravel.
APP_DEBUG=false  # Toggles On/Off degub
MINIMAL_VERSION=24.12.1.0 # A minimum supported client version

# The list of the user types in the system
USER_TYPES=user # These type of users can be created via the Integartion API

# The list of media server types in the system
SERVER_TYPES=media_server_v2 # The list of available mediaservers in VMS.

# The current release version
RELEASE=0.0.0.0 # The current release version that is used for sentry

# Application license data
LICENSE_SOURCE= # possible values: file and server
LICENSE_URL= # The url of a license to be used. Use this parameter if LICENSE_SOURCE=server
LICENSE_APP_NAME= # The application code. Use this parameter if LICENSE_SOURCE=server
LICENSE_APP_SECRET= # The application key. Use this parameter if LICENSE_SOURCE=server
LICENSE_PUBLIC_KEY= #The key for a license file. Use this parameter if LICENSE_SOURCE=file

# Locale settings
AVAILABLE_LOCALES_AND_DIRECTIONS=ru_ltr,en_ltr # If it's required to add a language or change settings, then change this variable before the nevironment is deployed. The specified order of languages will influence interface display. A language direction can be ltr и rtl.
FALLBACK_LOCALE=ru # When no translation is available for a language, this language will be used by default.
LOCALE=ru # The default language
TIMEZONE=UTC # The timezone in which in which all dates will be stored in the database.

# Database credentials
DB_CONNECTION=mysql # A driver to work with the database.
DB_HOST=mysql-server # A host to connect to the database.
DB_PORT=3306 # A port порт to connect to the adatabase.
DB_CRITICAL_PORT=3306 # A port to connect to the master node of the database. It's required only when the databse works in cluster mode.
DB_DATABASE=vms # A database name for connecting to the database.
DB_USERNAME=vms # A user for connecting to the database.
DB_PASSWORD=vms # A password for connecting to the database.
#error compare mysql 8 version (mysql 8 not support NO_AUTO_CREATE_USER mode)
DB_MYSQL_MODES=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

DB_TOKEN_CONNECTION_CREATE=critical
DB_TOKEN_CONNECTION_MODEL=critical

# Clickhouse settings
CLICKHOUSE_HOST=127.0.0.1
CLICKHOUSE_PORT=8123
CLICKHOUSE_DATABASE=vms
CLICKHOUSE_USERNAME=vms
CLICKHOUSE_PASSWORD=vms
CLICKHOUSE_TIMEOUT=10
CLICKHOUSE_PROTOCOL=http

# DHCP credentials
DB_DHCP_HOST=mysql-server
DB_DHCP_PORT=3306
DB_DHCP_DATABASE=kea_dhcp
DB_DHCP_USERNAME=kea_dhcp
DB_DHCP_PASSWORD=kea_dhcp

# Controller settings
CONTROLLER_ENDPOINT=http://localhost/rpc
CONTROLLER_TIMEOUT=5
CONTROLLER_TOKEN_LIFE_TIME=10800 # token lifetime for access to video streams, set in seconds. Default is 3 hours

# Storage settings
FILESYSTEM_DISK_PUBLIC=public # if you need to use s3 storage for storage, you need to set s3-public
FILESYSTEM_DISK_PRIVATE=private # if you need to use s3 storage for storage, you need to set s3-private
S3_BACKUP_PATH=backups/mysql # this is the folder where database dumps will be loaded, from the s3 side, you need to configure the lifetime of files in this folder so that they are automatically deleted, the system deletes only files that are stored locally
BACKUP_PATH=/var/www/api/storage/app/private/backups/

#AWS configuration settings
# Public files (images and public documents) are written to the public bucket
PUBLIC_AWS_ACCESS_KEY_ID=key_id # The access key identifier for the AWS account
PUBLIC_AWS_SECRET_ACCESS_KEY=secret_access_key # The secret access key for the AWS account
PUBLIC_AWS_DEFAULT_REGION=aws_region # The default AWS region to which the connection will be made to execute AWS services
PUBLIC_AWS_BUCKET=bucket_name # The name of the AWS S3 bucket that will be used to store files
PUBLIC_AWS_USE_PATH_STYLE_ENDPOINT=true_or_false # Specifies whether to use an endpoint-style path to access S3. When set to true, the AWS client will use a path-style URL to access objects in S3. Must be set to true to correctly obtain links when working with MinIO. By default, the config is set to true.
PUBLIC_AWS_ENDPOINT=http://localhost:8000 # The endpoint URL to connect to AWS services. (must be without a trailing slash)

# Database dams are written to a private bucket
PRIVATE_AWS_ACCESS_KEY_ID=
PRIVATE_AWS_SECRET_ACCESS_KEY=
PRIVATE_AWS_DEFAULT_REGION=
PRIVATE_AWS_BUCKET=
PRIVATE_AWS_USE_PATH_STYLE_ENDPOINT=true
PRIVATE_AWS_ENDPOINT=http://localhost:8000

# Logging settings
LOG_CHANNEL=daily # possible values: daily, syslogudp stderr
LOG_LEVEL=info
LOG_TTL_DAYS=30

# Settings for syslogudp
SYSLOG_UDP_HOST=
SYSLOG_UDP_PORT=

# List of variables for fine-grained settings of various channels logging
LOG_CHANNEL_INTERCOM=
LOG_LEVEL_INTERCOM=
LOG_CHANNEL_ORCHESTRATOR=
LOG_LEVEL_ORCHESTRATOR=
LOG_CHANNEL_LICENSE=
LOG_LEVEL_LICENSE=
LOG_CHANNEL_CONTROLLER=
LOG_LEVEL_CONTROLLER=
LOG_CHANNEL_BILLING=
LOG_LEVEL_BILLING=

# System settings
BROADCAST_DRIVER=pusher
CACHE_DRIVER=redis
QUEUE_CONNECTION=beanstalkd
# How many seconds the queue connection should wait before retrying a job that is being processed
QUEUE_RETRY_AFTER=90
FILESYSTEM_DISK=public
MIN_SYMBOLS_SEARCH_CAMERAS=3
DISABLE_THROTTLE=false
MAX_MEDIA_SERVER_STORAGE_USAGE=80
# The password for admin in seeder
ADMIN_PASSWORD=qweasdzxc # the default password for admin, which is created during system deployment
#The endpoint for download
DOWNLOAD_PAGE_PATH=/download # the path to download updates for the thick client
# Send push to users after creating, updating events connected to streams.
SEND_PUSH_STREAM_INACTIVE=false # set a flag to send push notifications to the user on the events of stream_active/stream_inactive
# PTZ local/server
PTZ=server # a work flow with PTZ
# The login and password for the ONVIF client
CAMERA_LOGIN=admin # the default login for working with camera via ONVIF
CAMERA_PASSWORD=admin # the default password for working with camera via ONVIF
# If the stream credentials do not fit, take credentials form the ONVIF config
CHECK_CREDENTIALS=false # the flag for working with credentials for ONVIF
# Enable requests for autoprovisioning
AUTOPROVISIONING_ENABLED=true # the flag for working autoprovisioning
# Delay for dispatch the AutoCreateStreamsDHCP job because the ONVIF client works with delay.
ONVIF_DELAY=120 # Delay (seconds) for the autoprovisioning stream creation job
# Delay for release after the SyncUserCameras job.
SYNC_USER_CAMERAS_DELAY=120 # delay between job executions if n jobs are processed for one user
# An interval for processing large tasks (in seconds).
INTERVAL_TOUCH_LARGE_JOBS=35 # an interval in seconds for updating jobs that take long time to complete (this is needed to fix a bug where the queue manager forgets about these jobs)
IS_STREAM_URL_UNIQUE=true # the flag to disable validation for adding unique video stream addresses
# The number of domains for the argument in the console command: stream_info 
OFFSET_STREAM_INFO_SERVERS=50
# Time during which the last motion detect mark on the camera can be updated (in minutes)
MARK_MOTION_DETECT_TIMEOUT=30
# The seconds by which the shift occurs when creating a mark
OFFSET_CREATING_MARK=5
# Force delete cameras after n days
FORCE_DELETE_CAMERAS=30
# Intercom tree maximum depth (counting depth from the root group)
INTERCOM_TREE_MAX_DEPTH=4
# The default number of days for the archive storage on the camera.
DEFAULT_ARCHIVE_STORAGE_DAYS=30

# Redis settings
REDIS_HOST=redis-server
REDIS_PASSWORD=null
REDIS_PORT=6379

# Beanstalkd settings
BEANSTALK_HOST=beanstalkd
BEANSTALK_PORT=11300

# WebSocket settings
PUSHER_APP_ID=app
PUSHER_APP_KEY=key
PUSHER_APP_SECRET=secret
PUSHER_APP_CLUSTER=mt1
PUSHER_HOST=push1st
PUSHER_PORT=6002
WEBSOCKET_CONNECTION_PATH=/pusher # A prefix to connect to webscoket

# Media Server settings
PROCESS_MEDIA_SERVER_V2_REQUEST=true
MEDIA_SERVER_V2_TIMEOUT=10
LOG_MEDIA_SERVER_V2_CALLBACK_REQUEST=true #Enables/disables logging of callbacks for the mediaserver
MEDIA_SERVER_V2_SYNC_CALLBACK=true # A configuration option to determine whether callbacks from the media server are processed synchronously or asynchronously.
MEDIA_SERVER_V2_EVENT_DVR_DURATION=180
OFFSET_ARCHIVE_RANGE_STREAMS=20
# Default limits for media server v2 servers.
MEDIA_SERVER_V2_STREAMS_LIMIT=200
MEDIA_SERVER_V2_BITRATE_LIMIT=300

# Flussonic settings
PROCESS_FLUSSONIC_REQUEST=true
FLUSSONIC_LOGIN=login
FLUSSONIC_PASSWORD=password
FLUSSONIC_SECRET_KEY=key
FLUSSONIC_MCELD_PROTOCOL=wss
FLUSSONIC_LICENCE=
FLUSSONIC_TIMEOUT=10
#The default limits for Flussonic servers
FLUSSONIC_STREAMS_LIMIT=200
FLUSSONIC_BITRATE_LIMIT=300

# IsApi credentials that are used to handle motion detection on camera.
IS_API_SCHEMA=http
IS_API_TIMEOUT=10
PROCESS_IS_API_REQUEST=true

# The analytics case settings
ANALYTIC_TIMEOUT=10
PROCESS_ANALYTIC_REQUEST=true
ORCHESTRATOR_TIMEOUT=10
ORCHESTRATOR_ENDPOINT=https://vms.local
ANALYTIC_ORCHESTRATOR_SOCKET_EVENT_ENDPOINT=ws://127.0.0.1:6001/ws/app/app-key/events/?session=session
ANALYTIC_ORCHESTRATOR_SOCKET_STAT_ENDPOINT=ws://127.0.0.1:6001/ws/app/app-key/stats/?session=session
ANALYTIC_LICENSE_STATISTIC_LIMIT=5
ANALYTIC_MAX_FILES_COUNT_FOR_GROUP=100
FORCE_DELETE_ANALYTIC_CASE_AFTER_DAYS=7
BASE_ENDPOINT_S3_STORAGE=http://localhost/
OVMS_STREAM_READING_ERROR_NOTIFICATION_LIFE_TIME=90 # The duration (in seconds) that the error message for the 'stream_reading_error' event will be shown in the analytics case.
# A custom endpoint for the analytics case callback. Leave it empty for a default domain.
ANALYTIC_CASE_CALLBACK_ENDPOINT=
NETWORK_FOR_ANALYTIC_CASE_STREAM=internal # Determines whether links for analytics capture are sent via an external or internal networ
NETWORK_FOR_ARCHIVE_GENERATION=internal # Determines how archive download links will be provided: via an external or internal network

# Analytic case meta setting
# Threshold in %
MOTION_DETECT_THRESHOLD=90
FACE_THRESHOLD=50
PERSON_COUNTING_THRESHOLD=30
LICENSE_PLATE_THRESHOLD=50
VISITOR_COUNTING_THRESHOLD=50
CROSSING_LINE_DETECTION_THRESHOLD=50
CAMERA_OBSTACLE_THRESHOLD=50
LOUD_SOUND_DETECTION_THRESHOLD=70
SMOKE_FIRE_THRESHOLD=50
FIGURES_MAX_NUMBER=6 # A number of zones that a user can create in one camera.

# Analytic files settings
ANALYTIC_FILES_DELETE_AFTER=30 #  a number of days to keep a deleted analytics file that was associated with events

# The size of a push in the sidebar (in bytes)
SIZE_OF_SIDEBAR_PUSH=20000

# Set a static IP for a camera during autoprovidioning
ONVIF_CHANGE_STATIC_NETWORK=false
ONVIF_CHANGE_DEFAULT_GATEWAY=false
USE_CAMERA_SERIAL_NUMBER_AS_PASSWORD=true

#Schedule settings
# The settings to perform cron tasks. It's necessary for load balancing across the cluster and for disabling unnecessary tasks.
SCHEDULE_IS_FLUSSONIC_ENABLED=false
SCHEDULE_MEDIA_SERVER_V2_ENABLED=true
SCHEDULE_IS_HIKVISION_ENABLED=false
SCHEDULE_IS_DHCP_ENABLED=true
SCHEDULE_IS_BASIC_SCRIPTS_ENABLED=true
SCHEDULE_IS_INTERCOM_ENABLED=false
SCHEDULE_IS_SYNC_INTERCOM_ENABLED=false
SCHEDULE_IS_SYNC_INTERCOM_KEY_ENABLED=false
SCHEDULE_IS_FORCE_DELETE_CAMERAS_ENABLE=true
SCHEDULE_IS_ANALYTIC_ENABLE=true

# Nodes settings
NODES_CLUSTER_ENABLE=false
# Available only when a cluster is enabled
NODE_NUMBER=1
NODES_COUNT=2
# Available only when a cluster disabled
OFFSET_ARCHIVE_RANGE_SERVERS=50

# The APN settings
# Set up the APN notifications for iOS devices
APN_KEY_ID=key
APN_TEAM_ID=id
APN_BUNDLE_ID=bundle
APN_PRIVATE_KEY=voip.p8
APN_PRODUCTION=false

# Huawei push settings
HUAWEI_APP_ID=
HUAWEI_CLIENT_SECRET=

#FCM settings
FIREBASE_CREDENTIALS=fcm.jsom

#Setting for the mobile clinet
MOBILE_SCHEMA= # A deep linking mechanism that allows users to authenticate externally and create profiles by scanning QR codes. The specific link structure is automatically generated during the build process.

# Intercom settings
INTERCOM_CODE_LIFE_TIME=60 # The lifespan (in seconds) of the code for adding the intercom, which needs to be entered directly on the intercom.
INTERCOM_KEY_LIFE_TIME=60 # The lifespan (in seconds) allowed to attach the key after entering the code on the intercom.
INTERCOM_ENDPOINT=https://api.sputnik.systems #The cloud address to be able work with an intercom
INTERCOM_TIMEOUT=3 # Maximum timeout for a response when a request is sent to the intercom system.
INTERCOM_PROCESS_REQUEST=true # A flag to process requests to an intercom. It's required when API must work, amd for sending real requests.
INTERCOM_USER_NUMBER_POSTFIX=@domain.com # The postfix added to a SIP address to identify apartments within an intercom system. 
INTERCOM_AUTH_TOKEN=token # A token to authorize requests to intercom.
INTERCOM_END_CALL=60
INTERCOM_SIP_SERVER=localhost:5060
# if the value is true - is_online will handle by webhook from cloud
# if the value is false - is_online will handle by re-interrogation in console command
INTERCOM_SPUTNIK_HANDLE_IS_ONLINE_BY_CALLBACK=false
# Maximum count of user temporary codes
INTERCOM_MAX_CODES_COUNT=5
INTERCOM_ANALYTIC_MAX_COUNT_FILES_UPLOAD=20 # Maximum number of uploaded files that user can add for opening the door by face recognition
FORCE_DELETE_INTERCOMS=30 # Force delete intercoms after n days

# Stream condition management
RESTART_STREAM_AFTER=30
# Standard for cameras without increased connection
FIRST_STEP_DISABLE_STREAM_AFTER=500
FIRST_STEP_DISMISS_STREAM_AFTER=168
SECOND_STEP_DISABLE_STREAM_AFTER=400
SECOND_STEP_DISMISS_STREAM_AFTER=120
THIRD_STEP_DISABLE_STREAM_AFTER=200
THIRD_STEP_DISMISS_STREAM_AFTER=5
# For cameras with increased connection
INCREASED_FIRST_STEP_DISABLE_STREAM_AFTER=1500
INCREASED_FIRST_STEP_DISMISS_STREAM_AFTER=144
INCREASED_SECOND_STEP_DISABLE_STREAM_AFTER=1000
INCREASED_SECOND_STEP_DISMISS_STREAM_AFTER=96
INCREASED_THIRD_STEP_DISABLE_STREAM_AFTER=500
INCREASED_THIRD_STEP_DISMISS_STREAM_AFTER=48

#BILLING
BILLING_AUTO_SYNC_CAMERAS=false
BILLING_AUTO_SYNC_CAMERAS_INTERVAL=7200
BILLING_URL_TO_SYNC_CAMERAS=
BILLING_URL_TO_UPDATE_PASSWORD=
BILLING_URL_TO_STORE_SUB_USER=
BILLING_URL_TO_DESTROY_SUB_USER=
BILLING_CAMERA_ADDRESS_TREE_SEGMENTS_COUNT=5 # A number of address tree segments to build a camera address tree (Note: a region, a city, a district, a street, an appartment).
BILLING_CAMERA_ADDRESS_TREE_URL_PARSE= # A URL to receive a complete camera address tree by a house identifier.
BILLING_CAMERA_ADDRESS_TREE_URL_N= # The Nth endpoint for creating a hierarchical camera address structure on an external service. The number of data URL parameters should match the number of segments.  
BILLING_TIMEOUT=2

# Bridge settings
BRIDGE_LOCAL_ARCHIVE_ENABLED_BY_DEFAULT=true # Whether local archive recording is enabled by default when creating a camera
BRIDGE_LOCAL_ARCHIVE_STORAGE_DAYS_BY_DEFAULT=30 # The default number of days for local archive recording for bridge cameras 
BRIDGE_CLOUD_ARCHIVE_ENABLED_BY_DEFAULT=true # Whether cloud archive recording is enabled by default when creating a camera
BRIDGE_CLOUD_ARCHIVE_STORAGE_DAYS_BY_DEFAULT=30 #The default number of days of archive recording to the cloud for bridge cameras
BRIDGE_DAYS_AFTER_BLOCK_BEFORE_DELETING=30 # The number of days after which a blocked device will be deleted from the database

# Settings for a camera with the installed Agent
CAMERA_AGENT_LOCAL_ARCHIVE_ENABLED_BY_DEFAULT=false # Whether local archive recording is enabled by default when creating a camera
CAMERA_AGENT_LOCAL_ARCHIVE_STORAGE_DAYS_BY_DEFAULT=30 # The default number of days for local archive recording for Agent-compatible cameras
CAMERA_AGENT_CLOUD_ARCHIVE_ENABLED_BY_DEFAULT=true # Whether cloud archive recording is enabled by default when creating a camera
CAMERA_AGENT_CLOUD_ARCHIVE_STORAGE_DAYS_BY_DEFAULT=30 # The default number of days of archive recording to the cloud for for Agent-compatible cameras
CAMERA_AGENT_DAYS_AFTER_BLOCK_BEFORE_DELETING=30 # Number of days after which a blocked device will be deleted from the database

TREE_CAMERA_SINGLE_REQUEST_MAX_CAMERAS_COUNT=100
TREE_LAYOUT_SINGLE_REQUEST_MAX_GROUPS_COUNT=5

#SMTP settings
#Available values peer and from
SMTP_EVENT_TAKE_IP_FROM=from

ARCHIVE_STREAM_ENABLED_TIME_INTERVAL_BEFORE=15 # Duration in seconds within which archived video before an event is avalable to watch. This is used when limitations are set to watch intercom video or for an individual user.
ARCHIVE_STREAM_ENABLED_TIME_INTERVAL_AFTER=30 # Duration in seconds within which archived video after an event is avalable to watch.This is used when limitations are set to watch intercom video or for an individual user.

CLIENT_MAP_CAMERAS_LIMIT=16 # The limit on the number of simultaneously open camera playback on the map/plan for clients (The maximum value is 16; any value greater than this will be ignored, and the system will default to 16)
ADMIN_MAP_CAMERAS_LIMIT=16 # The limit on the number of simultaneously open camera playback on the map/plan for admin (The maximum value is 16; any value greater than this will be ignored, and the system will default to 16.)

MAP_CLUSTER_ITEMS=500 # A number of elements on the map after which clustering begins

MAPS_TREE_MAX_DEPTH=2 # Maximum depth for map/plan groups

# Map coordinates
# For Admin
# Setting default coordinates for the admin map
#ADMIN_MAP_LATITUDE=
#ADMIN_MAP_LONGITUDE=
#ADMIN_MAP_ZOOM=
# For Client
# Setting default coordinates for the client map
#CLIENT_MAP_LATITUDE=
#CLIENT_MAP_LONGITUDE=
#CLIENT_MAP_ZOOM=

# Can the camera be transferred between public and private groups
IS_CAN_CHANGE_CAMERA_GROUP_TYPE_DURING_TRANSFER=true
ARCHIVE_SPEED_LIST_WEB=0.25,0.5,1.0,2.0,5.0,10.0 # Video playback speed for the web
ARCHIVE_SPEED_LIST_MOBILE=0.5,1.0,2.0,4.0,8.0 # Video playback speed for the mobile app
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.