How to Configure Ivideon Server for CLI⚓︎
Summary⚓︎
This article will explain how to configure a headless Ivideon Server for CLI using Docker. The overall configuration is straightforward, but does require a bit of effort.
Initial Config⚓︎
Since Ivideon Server will be running in a Docker container, the following configuration should be used in docker-compose_homelab.yml:
docker-compose_homelab.yml
Bring up the container with docker-compose up -d.
Configuration File⚓︎
The instructions from the project say to do the following:
The best way to create a configuration file is to setup Ivideon Server application through a graphical interface on any Desktop Windows or Linux system. Then copy obtained config file from
~/.IvideonServer/videoserverd.configorC:\Users\<USER>\AppData\Local\Ivideon\IvideonServer\videoserverd.configto/configvolume location.
Since I already had a configuration file setup on my old server, I brought up the server and navigated to ~/.IvideonServer/videoserverd.config. After launching the container, a default configuration file is created automatically. This file should be deleted in favor of the configuration file being copied from the old server.
The configuration file can be found below.
videoserverd.config
{
"account" : {
"email" : "dave.levine87@gmail.com",
"password" : "cqe13i2ubk9hS9Zp",
"serverName" : "Jackson's Room",
"uid" : "{a972352e-044e-4fdb-bbf9-6c0186f58ab2}",
"uin" : 100002163063
},
"analytics" : {
"tevian_faces" : null
},
"archive" : {
"id" : 0,
"maxEventLogSize" : 10,
"name" : "Local archive",
"path" : "/home/xenadmin/.IvideonServer/archive",
"sizeLimit" : 40960,
"sizeToCleanup" : 1024,
"useArchive" : true,
"useEventLog" : false,
"webcamBitRate" : 2048,
"webcamFrameRate" : 30,
"webcamResolution" : 0,
"webcamVideoFormat" : 1
},
"cameras" : [
{
"archiveId" : 0,
"audioUrl" : "",
"gui" : {
"desktop" : {
"channel" : 0,
"manufacturer" : "",
"model" : "",
"password" : "",
"showAdvancedSettings" : true,
"showSubstreamsSettings" : true,
"syncSubstreams" : true,
"user" : ""
}
},
"id" : 0,
"mdExcludedZoneList" : null,
"mdSensitivity" : 67,
"mdType" : "",
"name" : "Jackson's Room",
"ptzUrl" : "",
"recordQuality" : "high",
"recordType" : "motion",
"rtspTransport" : "auto",
"schedule" : [
{
"action" : "rec_m",
"begin" : 0,
"dayOfWeek" : "su",
"end" : 86400
},
{
"action" : "rec_m",
"begin" : 0,
"dayOfWeek" : "mo",
"end" : 86400
},
{
"action" : "rec_m",
"begin" : 0,
"dayOfWeek" : "tu",
"end" : 86400
},
{
"action" : "rec_m",
"begin" : 0,
"dayOfWeek" : "we",
"end" : 86400
},
{
"action" : "rec_m",
"begin" : 0,
"dayOfWeek" : "th",
"end" : 86400
},
{
"action" : "rec_m",
"begin" : 0,
"dayOfWeek" : "fr",
"end" : 86400
},
{
"action" : "rec_m",
"begin" : 0,
"dayOfWeek" : "sa",
"end" : 86400
}
],
"soundDetectorThreshold" : 50,
"streamHigh" : {
"audioBitrateKbps" : 0,
"audioBufferLenSec" : 0,
"audioMaxFrameSize" : 0,
"videoBitrateKbps" : 0,
"videoBufferLenSec" : 0,
"videoMaxFrameSize" : 0
},
"streamLow" : {
"audioBitrateKbps" : 0,
"audioBufferLenSec" : 0,
"audioMaxFrameSize" : 0,
"videoBitrateKbps" : 0,
"videoBufferLenSec" : 0,
"videoMaxFrameSize" : 0
},
"streamMedium" : {
"audioBitrateKbps" : 0,
"audioBufferLenSec" : 0,
"audioMaxFrameSize" : 0,
"videoBitrateKbps" : 0,
"videoBufferLenSec" : 0,
"videoMaxFrameSize" : 0
},
"streamPreview" : {
"audioBitrateKbps" : 0,
"audioBufferLenSec" : 0,
"audioMaxFrameSize" : 0,
"videoBitrateKbps" : 0,
"videoBufferLenSec" : 0,
"videoMaxFrameSize" : 0
},
"urlHigh" : "rtsp://192.168.1.200:7447/3A4fHOC8FJEMKilp",
"urlLow" : "",
"urlMedium" : "",
"urlPreview" : "",
"useCamera" : true,
"useCameraMotionDetector" : false,
"useMotionDetector" : false,
"usePreview" : false,
"usePtz" : false,
"useSound" : true,
"useSoundDetector" : false
}
],
"customDevInfo" : {
"modulesPath" : ":/cdi_modules",
"useModules" : true
},
"externalModules" : {
"enabled" : true,
"path" : ":/modules"
},
"gui" : {
"desktop" : {
"geometry" : [ 400, 116, 400, 600 ],
"isHidden" : false,
"isHiddenMode" : false,
"isMaximized" : false,
"language" : "en",
"lastArchiveId" : 65535,
"lastDvrId" : 65535,
"lastId" : 0,
"notifyUpdates" : true,
"openIvideonPage" : true,
"startWithWindows" : true,
"useSecureConnection" : true
}
},
"ivslog" : {
"profile" : "default",
"profiles" : {
"default" : [
{
"in" : [ "qmmcast" ],
"level" : "info",
"out" : [
{
"file" : "/home/xenadmin/.IvideonServer/videoserver.log{1}~2048K"
}
]
},
{
"in" : [ "*", "!rtsp" ],
"level" : "info",
"out" : [
{
"file" : "/home/xenadmin/.IvideonServer/service.log{1}~2048K"
}
]
},
{
"in" : [ "rtsp" ],
"level" : "info",
"out" : [
{
"file" : "/home/xenadmin/.IvideonServer/RTSPClientDll.log{1}~2048K"
}
]
},
{
"in" : [ "vsdll.analyt" ],
"level" : "debug",
"out" : [
{
"file" : "/home/xenadmin/.IvideonServer/analytics.log{1}~8192K"
}
]
}
]
}
},
"localEvents" : {
"dbPath" : "/home/xenadmin/.IvideonServer/local-event-storage.db",
"timeLimit" : "3d",
"useLocalStorage" : true
},
"localView" : {
"gui" : {
"desktop" : {
"isNetworkEnabled" : false
}
},
"passwordHash" : "",
"streamerPort" : 8080,
"useLocalView" : false
},
"network" : {
"httpProxyUrl" : "http://:3128/",
"useHttpProxy" : false
},
"system" : {
"cloudConfig" : true,
"cwd" : "/home/xenadmin/.IvideonServer"
}
}
Finishing Touches⚓︎
Once the config file is saved, the container needs to be restarted in order for the new configuration to take effect.
- Run
docker psand locate the Container ID. - Copy the Container ID and run
docker restart <container ID>to restart the container. - Once the container finishes restarting, open the Ivideon Client and confirm the video feed appears. Additionally, motion recordings should also be saved to
/storage/ivideon/, which can be played back through the Ivideon Client.