https://github.com/mekayelanik/ispyagentdvr-docker
Multi Aarch image of iSpy's Agent DVR, standalone free-to-use NVR software for IP Camera management
https://github.com/mekayelanik/ispyagentdvr-docker
docker-image
Last synced: about 2 months ago
JSON representation
Multi Aarch image of iSpy's Agent DVR, standalone free-to-use NVR software for IP Camera management
- Host: GitHub
- URL: https://github.com/mekayelanik/ispyagentdvr-docker
- Owner: MekayelAnik
- License: gpl-3.0
- Created: 2023-08-07T14:17:07.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-11T23:16:25.000Z (4 months ago)
- Last Synced: 2025-02-18T04:12:10.811Z (3 months ago)
- Topics: docker-image
- Language: Shell
- Homepage: https://hub.docker.com/r/mekayelanik/ispyagentdvr
- Size: 359 KB
- Stars: 30
- Watchers: 2
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
iSpy Agent DVR multi-arch image
![]()
This is an unofficial multi-aarch docker image of Agent DVR of iSpy created for multiplatform support. iSpy Agent DVR creates a local server for IP cameras to be managed. Official Website: https://www.ispyconnect.com
![]()
The architectures supported by this image are:
Architecture
Available
Tag
Status
x86-64
✅
amd64-<version tag>
Tested "WORKING"
arm64
✅
arm64v8-<version tag>
Tested "WORKING"
armhf
✅
arm32v7-<version tag>
Tested "WORKING" (4.8.2.0 and newer versions)
Anouncements:
- PLEASE NOTE: Regular latest version (6.1.3.0) has been released! ⚠️⚠️⚠️ From Now on, using BETA images is strictly discouraged!
- The following possible BREAKING CHANGES will be present in every future deployments
- FFMPEG version bumped from 6.0.1 to 7.0.2
- DOTNET version bumped to 9.0
- Environment Variable
WEBUI_PORT
is now changed toAGENTDVR_WEBUI_PORT
. Those who use Environment Variable to change the Port for Web UI, please useAGENTDVR_WEBUI_PORT
from now on. - TURN Server Port range is changed from
50000-50010
to50000-50100
. Please set the range in Docker CLI or Docker Compose to50000-50100
- The Following images: gpu-hwaccel-latest
,vlc-hwaccel-latest
& vlc-support-latest
will be taken down on 1st August 2024. Some images were re-uploaded. The Versions that have been re-uploaded are from 5.3.5.0 to the 5.6.0.0 AgentDVR versions. Only the Default tags were re-uploaded & do incorporate all the features combined that were avalable on the previously maintained 4 types of images in itself. Sorry for the inconvenience!This is done inorder to Raid Bug detection, complexity reduction and ease of maintanance
- Alhamdulillah, The ARMHF image has been fixed. Special Thanks To Sean T for fixing the underlying issues. For ARM32-bit/ARMHF devices, please download image version greater or equal to 4.8.2.0.
- For GPU HW-Accelarated Encode/Decode please use version 5.3.5.0 or NEWER images
This image provides various versions that are available via tags. Please read the update information carefully and exercise caution when using "older versions" tags as they tend to contain unfixed bugs.
Tag
Available
Description
Status
stable
✅
"iSpy Agent DVR" Most Stable image till date
Tested "WORKING"
latest
✅
"iSpy Agent DVR" Latest releases image
Tested "WORKING"
beta
⚠️
"iSpy Agent DVR" BETA releases image
❌ LATEST BETA for "BETA TESTING". Backup config before trying!!! Discouraged to use currently!!! ❌
6.1.3.0
✅
"iSpy Agent DVR" Static version 6.1.3.0 image
Tested "WORKING"
6.1.1.0-beta
⚠️
"iSpy Agent DVR" 6.0.4.0 beta realese for testing
❌ THOROUGH TESTING REQUIRED. Backup config before trying!!! Discouraged to use currently!!!❌
Running Image :
Here are some example snippets to help you get started creating a container.
docker-compose (recommended, click here for more info)
---
services:
ispyagentdvr:
image: mekayelanik/ispyagentdvr:latest
container_name: ispyagentdvr
environment:
- PUID=1000
- PGID=1000
- AGENTDVR_WEBUI_PORT=8090
- TZ=Asia/Dhaka
volumes:
- /path/to/config:/AgentDVR/Media/XML
- /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media
- /path/to/commands:/AgentDVR/Commands
ports:
- 8090:8090
- 3478:3478/udp
- 50000-50100:50000-50100/udp
restart: unless-stopped
Note:
- In the case of Raspberry Pi and other low power ARM SBCs, please hit the WebUI URL atleast 30 seconds after the container deployment. A few seconds maybe required by the ARM processors to kick start the needed services. Before this time you may not get response in the web browser. Also at the first time, you may have to refresh the WebUI a couple of times for the UI to get fully loaded.
- Also if you have a large number of Camera, the boot time will increase accordingly. So please be patient and have a look in the AgentDVR docker container log.
docker cli ( click here for more info)
docker run -d \
--name=ispyagentdvr \
-e PUID=1000 \
-e PGID=1000 \
-e AGENTDVR_WEBUI_PORT=8090
-e TZ=Asia/Dhaka \
-p 8090:8090 \
-p 3478:3478/udp \
-p 50000-50100:50000-50100/udp \
-v /path/to/config:/AgentDVR/Media/XML \
-v /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media \
-v /path/to/commands:/AgentDVR/Commands \
--restart unless-stopped \
mekayelanik/ispyagentdvr:latest
If anyone wishes to give dedicated Local IP to iSpy Agent DVR container using MACVLAN ( click here for more info)
---
services:
ispyagentdvr:
image: mekayelanik/ispyagentdvr:latest
container_name: ispyagentdvr
environment:
- PUID=1000
- PGID=1000
- AGENTDVR_WEBUI_PORT=8090
- TZ=Asia/Dhaka
volumes:
- /path/to/config:/AgentDVR/Media/XML
- /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media
- /path/to/commands:/AgentDVR/Commands
ports:
- 8090:8090
- 3478:3478/udp
- 50000-50100:50000-50100/udp
restart: unless-stopped
hostname: ispyagentdvr
domainname: local
mac_address: AB-BC-C0-D1-E2-EF
networks:
macvlan-1:
ipv4_address: 192.168.2.12
networks:
macvlan-1:
name: macvlan-1
external: True
In oreder to macvlan work properly, you must map any valid MAC address to mac_address:
. Also you muat map any valid IP address in your ip_range
to ipv4_address:
.This will be your containr's IP. Then you must map your Router's Local IP Subnet to subnet:
After that you must map your Desired Local IP range within the subnet to ip_range:
Finally you must map your Router's LAN IP Address gateway:
In the case of MACVLAN, you must access the WebUI using http://ipv4_address:8090
GPU HW-Acceleration (Tested "WORKING" on images with tag 5.3.5.0 or NEWER)
One must use images from 5.3.5.0 or NEWER image to get the provisioned GPU HW-Acceleration. Older images will not work. If you face any issues please report in github of this image. github link can be found at the bottom of this page.
docker-compose (recommended, click here for more info)
One must be able to pass GPU (Redering devices) to the container as is instructed below!
---
services:
ispyagentdvr:
image: mekayelanik/ispyagentdvr:latest
container_name: ispyagentdvr
environment:
- PUID=1000
- PGID=1000
- AGENTDVR_WEBUI_PORT=8090
- TZ=Asia/Dhaka
volumes:
- /path/to/config:/AgentDVR/Media/XML
- /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media
- /path/to/commands:/AgentDVR/Commands
ports:
- 8090:8090
- 3478:3478/udp
- 50000-50100:50000-50100/udp
restart: unless-stopped
docker cli ( click here for more info)
docker run -d \
--name=ispyagentdvr \
-e PUID=1000 \
-e PGID=1000 \
-e AGENTDVR_WEBUI_PORT=8090 \
-e TZ=Asia/Dhaka \
-p 8090:8090 \
-p 3478:3478/udp \
-p 50000-50100:50000-50100/udp \
-v /path/to/config:/AgentDVR/Media/XML \
-v /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media \
-v /path/to/commands:/AgentDVR/Commands \
--restart unless-stopped \
mekayelanik/ispyagentdvr:latest
For Nvidia GPUs
To get GPU Hardware acceleration from Nvidia, user MUST INSTALL THE "LATEST" Nvidia Drivers & Nvidia Container Toolkit on the Host Machine/Server/VM/LXC provided by Nvidia. Instructions for Nvidia Container Toolkit can be found here:
Nvidia-Container-Toolkit
We added the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime `--runtime=nvidia` and add an environment variable `-e NVIDIA_VISIBLE_DEVICES=all` (can also be set to a specific gpu's UUID, this can be discovered by running `nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv` ). NVIDIA automatically mounts the GPU and drivers from your host into the AgentDVR docker container.
For AMD GPUs & iGPUs
The Followings have to be added in docker-compose file/docker-cli cm respectively
docker compose
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
- /dev/kfd:/dev/kfd
docker cli
--device /dev/dri/renderD128:/dev/dri/renderD128 --device /dev/dri:/dev/dri/card0 --device /dev/kfd:/dev/kfd
For Intel GPUs & iGPUs
The Followings have to be added in docker-compose file/docker-cli cm respectively
docker compose
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
docker cli
--device /dev/dri/renderD128:/dev/dri/renderD128 --device /dev/dri/card0:/dev/dri/card0
For Rockchip SBC's intergrated VPU, use the CLI command below
docker run -d \
--name=ispyagentdvr \
-e PUID=1000 \
-e PGID=1000 \
-e AGENTDVR_WEBUI_PORT=8090 \
-e TZ=Asia/Dhaka \
-p 8090:8090 \
-p 3478:3478/udp \
-p 50000-50100:50000-50100/udp \
-v /path/to/config:/AgentDVR/Media/XML \
-v /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media \
-v /path/to/commands:/AgentDVR/Commands \
--restart unless-stopped \
`for dev in dri dma_heap mali0 rga mpp_service \
iep mpp-service vpu_service vpu-service \
hevc_service hevc-service rkvdec rkvenc vepu h265e ; do \
[ -e "/dev/$dev" ] && echo " --device /dev/$dev"; \
done`
mekayelanik/ispyagentdvr:latest
DISCLAIMER: Jellyfin FFMPEG and corresponding ideas were used in this image to enable the HW-Acceleration
Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal>
respectively. For example, -p 8090:80
would expose port 80
from inside the container to be accessible from the host's IP on port 8090
outside the container.
Parameter
Function
-p 8090
Map AgentDVR WebUI Port to HOST
-p 3478/udp
Map Main port used for TURN server communication to HOST
-p 50000-50100//udp
Map Ports from AgentDVR to HOST, to be used to create connections or WebRTC. These will be used as needed
-e PUID=1000
For UserID - see below for explanation
-e PGID=1000
For GroupID - see below for explanation
-e TZ=Asia/Dhaka
Specify a timezone to use, see this list.
-e AGENTDVR_WEBUI_PORT=8090
Specify a Port to Expose AgentDVR WebUI
-v /AgentDVR/Media/XML
Contains all relevant configuration files.
-v /AgentDVR/Media/WebServerRoot/Media
Location of Survaillance Recordings on disk.
-v /AgentDVR/Commands
Location to store desired iSpy Agent DVR Commands.
User / Group Identifiers
When using volumes ( -v
flags) permissions issues can arise between the host OS and the container, One can avoid this issue by allowing you to specify the user PUID
and group PGID
.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance PUID=1000
and PGID=1000
, to find yours use id user
as below:
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
For iSpy Agent DVR specific userguide visit:
https://www.ispyconnect.com/userguide-agent-dvr.aspx
Non host network use:
To useNon host network, you will need to open up ports for this to porperly work, thus the UDP ports listed in the sample runs.
To access WebUI go to the container's http://container's ip:8090
or http://ipv4_address:8090
Updating Info
Below are the instructions for updating containers:
Via Docker Compose (recommended)
- Update all images:
docker compose pull
- or update a single image:
docker compose pull ispyagentdvr
- or update a single image:
- Let compose update all containers as necessary:
docker compose up -d
- or update a single container (recommended):
docker compose up -d ispyagentdvr
- or update a single container (recommended):
- To remove the old unused images run:
docker image prune
Via Docker Run
- Update the image:
docker pull mekayelanik/ispyagentdvr:latest
- Stop the running container:
docker stop ispyagentdvr
- Delete the container:
docker rm ispyagentdvr
- Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your
/AgentDVR/Media/XML
folder and settings will be preserved) - To remove the old unused images run:
docker image prune
Via Watchtower auto-updater (only use if you don't remember the original parameters)
-
Pull the latest image at its tag and replace it with the same env variables in one run:
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower\
--run-once ispyagentdvr
-
To remove the old unused images run:
docker image prune
Note: You can use Watchtower as a solution to automated updates of existing Docker containers. But it is discouraged to use automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, it is recommend to use Docker Compose.
Image Update Notifications - Diun (Docker Image Update Notifier)
- You can also use Diun for update notifications. Other tools that automatically update containers unattended are not encouraged
Migration Notes:
If you had the old format of audio and video volumes please move them within the new media folder before starting the container again.
It would look something like this:
mkdir -p /ispyagentdvr/media/old && \
mv /path/to/recordings/audio /ispyagentdvr/media/old && \
mv /path/to/recordings/video /ispyagentdvr/media/old
NOTES:
- Audio playback on Linux host: If you experiencing sound playback issues on Linux server hosts (Debian/Ubuntu etc.), i.e. Action sound won't play through server's speaker, add these lines to docker-compose.yml:
group_add:
- audio
devices:
- /dev/snd:/dev/snd
- ARM SBCs: In the case of Raspberry Pi (Only 4 and newer can have GPU acceleration if v4l2 Encode/Decode is enabled, which is Disabled by default in RaspiOS and very trick to enable. Personally I haven't been able to enable this till now). Also the performance of Encode/Decode on ARM is somewhat not usable. If you have a HIGH END SBC then you may research a way to pass your relative Render device and get VAAPI working. Personally I don't posses a HIGH END ARM SBC. So I am unable to provide any instruction. If anyone gets success please let me know via Github. Rest assured, I will include that instruction and will give you proper credit in the github.
- Things to make sure before Submitting a issue:
- Update your Docker Engine to the latest available, specially on OSX. After updating docker engine please check if the issue has been resolved.
- Inspect the
AgentDVR-IP:AGENTDVR_WEBUI_PORT/logs.html
for Error list
- If you intending to run this image on Raspberry Pi 5 then use Ubuntu or Ubuntu Server as your OS. There is a bug in debian which fataly effects the execution of AgentDVR and many other applications that are written on .Net Core. Other Raspberry Pi doesn't have this issue at the time of writing this.
- Make sure to have you have access to your Docker Compose File/Docker CLI command which was used to deploy your container and Logs from
logs.html
include those to your github issue/reddit post.
- Major Changes
-
6.1.3.0: - ✅Regular version updated to 6.1.3.0. From now on, using BETA images is ❌STRICTLY DISCOURAGED -
6.0.9.0: - ⚠️⚠️⚠️ Updated Intel GPU driver and updated jellyfin-ffmpeg to 7.0.2-9 ⚠️⚠️⚠️ -
6.0.1.0: - ⚠️⚠️⚠️ Added driver support for Intel Battlemage GPUs ⚠️⚠️⚠️ -
5.8.4.0: - ⚠️⚠️⚠️ Config files file format changed from XML to JSON ⚠️⚠️⚠️ -
5.8.1.0: - ⚠️ FFMPEG version bumped from 6.0.1 to 7.0.2 -
5.8.1.0: - ⚠️ DOTNET version bumped to 9.0 -
5.8.1.0: - ⚠️⚠️⚠️ Environment VariableWEBUI_PORT
is now changed toAGENTDVR_WEBUI_PORT
. Those who use Environment Variable to change the Port for Web UI, please useAGENTDVR_WEBUI_PORT
from now on. -
5.8.1.0: -mekayelank/ispyagentdvr
image is now fully backword compatible withdoitandbedone/ispyagentdvr
image. From now on, you don't have to change the directory mapping to switch fromdoitandbedone/ispyagentdvr
tomekayelank/ispyagentdvr
-
5.8.1.0: - ⚠️⚠️⚠️ TURN Server Port range changed from50000-50010
to50000-50100
. Please set the range in Docker CLI or Docker Compose to50000-50100
-
5.3.5.0: - Fixed HW-Accelerated Encode/Decode for AMD, Nvidia & Intel GPUs (From v5.3.5.0 GPU Accelerated Encode/Decode is Tested WORKING in x86_64 but improvements maybe needed. Please submit issues in github, if one faces any.) -
5.2.8.0 : - (BETA) Added HW-Acceleration for Nvidia, AMD & Intel GPUs & iGPUs (in x86_64). Also added HW-Acceleration for Raspberry Pi 4 and beyond. Related configs may need to be added to the /boot/config.txt -
4.8.2.0: - Fixed ARMHF dependency issues and other improvements. -
4.8.0.0: - ⚠️ Major Bug fixes with ONVIF fix -
4.7.4.0:- Fixed bump FFmpeg 6 version that was crashing on missing GPU drivers
- Add TURN server option to local server settings.
-
4.7.3.0: - ⚠️ Bumped FFmpeg version from 5 to 6. -
4.1.2.0: - Initial Release.
Issues & Requests
To submit this Docker image specific issues or requests visit this docker image's Github Link: https://www.github.com/MekayelAnik/ispyagentdvr-docker
For iSpy AgentDVR related issues and requests, please visit: https://www.reddit.com/r/ispyconnect/