ispyagentdvr
Multi Aarch image of iSpy's Agent DVR, standalone free-to-use NVR software for IP Camera management
1M+
Official Agent DVR image. Website: https://www.ispyconnect.com
DISCLAIMER: Buy me coffee link below is NOT affiliated in anyway with the main iSpy AgentDVR. The docker image publisher is NOT affiliated with the main iSpy AgentDVR either.
| 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) |
/AgentDVR from /home/agentdvr/AgentDVR. It is SPECIALLY IMPORTANT to correctly apply this change in unRAID, Synology NAS and other GUID based container deployer. ⚠️⚠️⚠️50000-50010 to 50000-50100. Please set the range in Docker CLI or Docker Compose to 50000-50100⚠️⚠️⚠️| Tag | Available | Description | Status |
|---|---|---|---|
| stable | ✅ | "iSpy Agent DVR" Most Stable image to date | Tested "WORKING". An image will be made "stable" if an image remains "latest" for at least 5 days |
| 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 on mission-critical environments!!! ⚠️ |
| 7.6.6.0 | ✅ | "iSpy Agent DVR" Static version 7.6.6.0 image | Tested "WORKING" |
| 7.2.4.0-beta | ⚠️ | "iSpy Agent DVR" 7.2.4.0 beta release for testing | ⚠️ THOROUGH TESTING REQUIRED. Backup config before trying!!! Discouraged to use on mission-critical envirenments!!! ⚠️ |
---
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/models:/AgentDVR/Media/Models
- /path/to/commands:/AgentDVR/Commands
ports:
- 8090:8090
- 3478:3478/udp
- 50000-50100:50000-50100/udp
restart: unless-stopped
Note:
- On Raspberry Pi and other low-power ARM SBCs, wait about 30 seconds after deployment before opening WebUI, then refresh if needed.
- With many cameras, startup may take longer.
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/models:/AgentDVR/Media/Models \
-v /path/to/commands:/AgentDVR/Commands \
--restart unless-stopped \
mekayelanik/ispyagentdvr:latest
---
services:
ispyagentdvr:
image: ghcr.io/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/models:/AgentDVR/Media/Models
- /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: TrueTo make MACVLAN work, set valid values for mac_address, ipv4_address, subnet, ip_range, and gateway.
In the case of MACVLAN, you must access the WebUI using http://ipv4_address:8090
One must use images from 5.3.5.0 or NEWER images to get the provisioned GPU HW-Acceleration. Older images will not work. If you face any issues, please report this on GitHub of this image. The GitHub link can be found at the bottom of this page.
---
services:
ispyagentdvr:
image: ghcr.io/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/models:/AgentDVR/Media/Models
- /path/to/commands:/AgentDVR/Commands
ports:
- 8090:8090
- 3478:3478/udp
- 50000-50100:50000-50100/udp
restart: unless-stopped
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/models:/AgentDVR/Media/Models \
-v /path/to/commands:/AgentDVR/Commands \
--restart unless-stopped \
mekayelanik/ispyagentdvr:latestTo 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-ToolkitWe added the necessary environment variable that will utilize all the features available on a GPU on the host. Once Nvidia container runtime 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.
The following 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/kfddocker cli
--device /dev/dri/renderD128:/dev/dri/renderD128 --device /dev/dri:/dev/dri/card0 --device /dev/kfd:/dev/kfdThe following 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/card0docker cli
--device /dev/dri/renderD128:/dev/dri/renderD128 --device /dev/dri/card0:/dev/dri/card0docker 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/models:/AgentDVR/Media/Models \
-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:latestContainer images use runtime parameters. These are separated by a colon and indicate <external>:<internal>. For example, -p 8090:80 exposes port 80 inside the container on host port 8090.
| 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 Surveillance Recordings on disk. |
-v /AgentDVR/Media/Models
| Model files location for AgentDVR. |
-v /AgentDVR/Commands
| Location to store desired iSpy Agent DVR Commands. |
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(docker user) gid=1000(docker group) groups=1000(docker group)To use a Non-host network, you will need to open up ports for this to properly 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
Below are the instructions for updating containers:
docker compose pull
docker compose pull ispyagentdvr
docker compose up -d
docker compose up -d ispyagentdvr
docker image prune
docker pull mekayelanik/ispyagentdvr:latest
docker stop ispyagentdvr
docker rm ispyagentdvr
/AgentDVR/Media/XML folder and settings will be preserved) docker image prune
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 ispyagentdvrTo remove the old unused images run: docker image prune
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- 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: Raspberry Pi 4+ may support limited acceleration with proper host setup. Performance can vary; if you get a reliable VAAPI/VPU configuration, share it via GitHub and it can be documented with credit.
- Things to make sure before Submitting a issue:
AgentDVR-IP:AGENTDVR_WEBUI_PORT/logs.html for Error list
logs.html output.
- Major Changes
/AgentDVR/Media/Models ⚠️⚠️⚠️/AgentDVR from /home/agentdvr/AgentDVR. It is SPECIALLY IMPORTANT to correctly apply this change in unRAID, Synology NAS and other GUID based container deployer. ⚠️⚠️⚠️mekayelank/ispyagentdvr image is now fully backword compatible with doitandbedone/ispyagentdvr image. From now on, you don't have to change the directory mapping to switch from doitandbedone/ispyagentdvr to mekayelank/ispyagentdvr, UNLESS you are using unRAID/Synology NAS or other GUI based container deployer. In that case, you will have to follow the contents of the documentation to deploy this imageTo 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/
To have a deeper dive into the custom base image of this container, please visit: https://github.com/MekayelAnik/ispyagentdvr-base-image
Content type
Image
Digest
sha256:4b0391c41…
Size
356.8 MB
Last updated
21 days ago
docker pull mekayelanik/ispyagentdvr