Multi Aarch image of iSpy's Agent DVR, standalone free-to-use NVR software for IP Camera management
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
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) |
- Please download images for Status: Tested "WORKING" platforms only.
- Alhamdulillah, The ARMHF image has been fixed. Thanks To Sean T for fixing the issues
- For ARM32-bit/ARMHF devices, please download image version greater or equal to 4.8.2.0. From now on ARMHF is TESTED-OK
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 |
---|---|---|
latest | ✅ | Stable "iSpy Agent DVR" releases |
4.9.3.0 | ✅ | Static "iSpy Agent DVR" build version 4.9.3.0 |
Here are some example snippets to help you get started creating a container.
docker-compose (recommended, click here for more info)
---
version: "3.9"
services:
ispyagentdvr:
image: mekayelanik/ispyagentdvr:latest
container_name: ispyagentdvr
environment:
- PUID=1000
- PGID=1000
- 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-50010:50000-50010/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.
docker cli ( click here for more info)
docker run -d \
--name=ispyagentdvr \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Dhaka \
-p 8090:8090 \
-p 3478:3478/udp \
-p 50000-50010:50000-50010/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)
---
version: "3.9"
services:
ispyagentdvr:
image: mekayelanik/ispyagentdvr:latest
container_name: ispyagentdvr
environment:
- PUID=1000
- PGID=1000
- 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-50010:50000-50010/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
driver: macvlan
driver_opts:
parent: eth0
ipam:
config:
- subnet: "192.168.0.0/16"
ip_range: "192.168.2.1/24"
gateway: "192.168.1.1"
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
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
|
WebUI |
-p 3478/udp
|
Main port used for TURN server communication |
-p 50000-50010//udp
|
Ports 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. |
-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. |
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)
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
Below are the instructions for updating containers:
- Update all images:
docker compose pull
- or update a single image:
docker compose pull ispydvragent
- 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 ispydvragent
- or update a single container (recommended):
- To remove the old unused images run:
docker image prune
- Update the image:
docker pull mekayelanik/ispydvragent:latest
- Stop the running container:
docker stop ispydvragent
- Delete the container:
docker rm ispydvragent
- 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 ispydvragent
-
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.
- You can also use Diun for update notifications. Other tools that automatically update containers unattended are not encouraged
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
- 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.