/agentdvr-docker

Multi Aarch image of iSpy's Agent DVR, standalone free-to-use NVR software for IP Camera management

Primary LanguageShellGNU General Public License v3.0GPL-3.0

ispyagentdvr-docker

Multi Aarch image of iSpy's Agent DVR, standalone free-to-use NVR software for IP Camera management

iSpy Agent DVR multi-arch image

ispyagentdvr

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 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

Version Tags

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

Running Image :

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 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

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 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.

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 ispydvragent
  • Let compose update all containers as necessary: docker compose up -d
    • or update a single container (recommended): docker compose up -d ispydvragent
  • To remove the old unused images run: docker image prune

Via Docker Run

  • 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.

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

Versions

  • 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.