{"id":25638684,"url":"https://github.com/mekayelanik/ispyagentdvr-docker","last_synced_at":"2025-04-15T00:22:08.974Z","repository":{"id":186756508,"uuid":"675699433","full_name":"MekayelAnik/ispyagentdvr-docker","owner":"MekayelAnik","description":"Multi Aarch image of iSpy's Agent DVR, standalone free-to-use NVR software for IP Camera management","archived":false,"fork":false,"pushed_at":"2025-02-11T23:16:25.000Z","size":368,"stargazers_count":30,"open_issues_count":0,"forks_count":10,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-18T04:12:10.811Z","etag":null,"topics":["docker-image"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/mekayelanik/ispyagentdvr","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MekayelAnik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-07T14:17:07.000Z","updated_at":"2025-02-14T14:00:40.000Z","dependencies_parsed_at":"2024-11-25T19:22:55.104Z","dependency_job_id":"81994cb4-52a8-4d0e-a916-d66ed5a69150","html_url":"https://github.com/MekayelAnik/ispyagentdvr-docker","commit_stats":null,"previous_names":["mekayelanik/ispyagentdvr-docker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MekayelAnik%2Fispyagentdvr-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MekayelAnik%2Fispyagentdvr-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MekayelAnik%2Fispyagentdvr-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MekayelAnik%2Fispyagentdvr-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MekayelAnik","download_url":"https://codeload.github.com/MekayelAnik/ispyagentdvr-docker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240261392,"owners_count":19773474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-image"],"created_at":"2025-02-23T02:32:27.818Z","updated_at":"2025-02-23T02:32:28.295Z","avatar_url":"https://github.com/MekayelAnik.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003eiSpy Agent DVR multi-arch image\u003c/h1\u003e\n\u003cimg alt=\"ispyagentdvr\" src=\"https://ispycontent.azureedge.net/img/ispy2.png\"\u003e\n\u003cp\u003eThis 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: \u003ca href=\"https://www.ispyconnect.com\" rel=\"nofollow noopener\"\u003ehttps://www.ispyconnect.com\u003c/a\u003e\n\u003c/p\u003e\n\u003cimg alt=\"Docker Pulls\" src=\"https://img.shields.io/docker/pulls/mekayelanik/ispyagentdvr.svg\"\u003e\u003cimg alt=\"Docker Stars\" src=\"https://img.shields.io/docker/stars/mekayelanik/ispyagentdvr.svg\"\u003e\n\u003ch2\u003eThe architectures supported by this image are:\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth align=\"center\"\u003eArchitecture\u003c/th\u003e\n      \u003cth align=\"center\"\u003eAvailable\u003c/th\u003e\n      \u003cth\u003eTag\u003c/th\u003e\n       \u003cth\u003eStatus\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003ex86-64\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n      \u003ctd\u003eamd64-\u0026lt;version tag\u0026gt;\u003c/td\u003e\n      \u003ctd\u003eTested \"WORKING\"\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003earm64\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n      \u003ctd\u003earm64v8-\u0026lt;version tag\u0026gt;\u003c/td\u003e\n      \u003ctd\u003eTested \"WORKING\"\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003earmhf\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n      \u003ctd\u003earm32v7-\u0026lt;version tag\u0026gt;\u003c/td\u003e\n      \u003ctd\u003eTested \"WORKING\" (4.8.2.0 and newer versions)\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eAnouncements:\u003c/h2\u003e\n\u003cp\u003e - \u003cb\u003ePLEASE NOTE: Regular latest version (6.1.3.0) has been released! ⚠️⚠️⚠️ From Now on, using BETA images is strictly discouraged!\u003c/b\u003e\u003c/p\u003e\n - \u003cb\u003eThe following possible BREAKING CHANGES will be present in every future deployments\u003c/b\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e FFMPEG version bumped from 6.0.1 to 7.0.2\u003c/li\u003e \n\u003cli\u003e DOTNET version bumped to 9.0\u003c/li\u003e\n\u003cli\u003e Environment Variable \u003ccode\u003eWEBUI_PORT\u003c/code\u003e is now changed to \u003ccode\u003eAGENTDVR_WEBUI_PORT\u003c/code\u003e. Those who use Environment Variable to change the Port for Web UI, please use \u003ccode\u003eAGENTDVR_WEBUI_PORT\u003c/code\u003e from now on.\u003c/li\u003e\n\u003cli\u003e TURN Server Port range is changed from \u003ccode\u003e50000-50010\u003c/code\u003e to \u003ccode\u003e50000-50100\u003c/code\u003e. Please set the range in Docker CLI or Docker Compose to \u003ccode\u003e50000-50100\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e - \u003cb\u003eThe Following images: \u003ccode\u003egpu-hwaccel-latest\u003c/code\u003e,\u003ccode\u003evlc-hwaccel-latest\u003c/code\u003e \u0026 \u003ccode\u003evlc-support-latest\u003c/code\u003e 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 \u0026 do incorporate all the features combined that were avalable on the previously maintained 4 types of images in itself. Sorry for the inconvenience!\u003c/b\u003eThis is done inorder to Raid Bug detection, complexity reduction and ease of maintanance\u003c/p\u003e\n\u003cp\u003e - Alhamdulillah, The \u003cstrong\u003eARMHF\u003c/strong\u003e image has been fixed. Special Thanks To \u003cstrong\u003e Sean T\u003c/strong\u003e for fixing the underlying issues. For \u003cstrong\u003eARM32-bit/ARMHF\u003c/strong\u003e devices, please download image version greater or equal to \u003cstrong\u003e4.8.2.0\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003e - For GPU HW-Accelarated Encode/Decode please use version \u003cstrong\u003e5.3.5.0 or NEWER\u003c/strong\u003e images\u003c/p\u003e\n\u003ch3\u003eThis image provides various versions that are available via tags. Please read the \u003ca href=\"https://www.ispyconnect.com/producthistory.aspx?productid=27\" rel=\"nofollow noopener\"\u003eupdate information\u003c/a\u003e carefully and exercise caution when using \"older versions\" tags as they tend to contain unfixed bugs. \u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth align=\"center\"\u003eTag\u003c/th\u003e\n      \u003cth align=\"center\"\u003eAvailable\u003c/th\u003e\n      \u003cth\u003eDescription\u003c/th\u003e\n       \u003cth\u003eStatus\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003estable\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n      \u003ctd\u003e\"iSpy Agent DVR\" Most Stable image till date\u003c/td\u003e\n      \u003ctd\u003eTested \"WORKING\"\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003elatest\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n      \u003ctd\u003e\"iSpy Agent DVR\" Latest releases image\u003c/td\u003e\n      \u003ctd\u003eTested \"WORKING\"\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003ebeta\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e⚠️\u003c/td\u003e\n      \u003ctd\u003e\"iSpy Agent DVR\" BETA releases image\u003c/td\u003e\n      \u003ctd\u003e❌ LATEST BETA for \"BETA TESTING\". Backup config before trying!!! Discouraged to use currently!!! ❌\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e6.1.3.0\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n      \u003ctd\u003e\"iSpy Agent DVR\" Static version 6.1.3.0 image\u003c/td\u003e\n      \u003ctd\u003eTested \"WORKING\"\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e6.1.1.0-beta\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e⚠️\u003c/td\u003e\n      \u003ctd\u003e\"iSpy Agent DVR\" 6.0.4.0 beta realese for testing\u003c/td\u003e\n      \u003ctd\u003e❌ THOROUGH TESTING REQUIRED. Backup config before trying!!! Discouraged to use currently!!!❌\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eRunning Image :\u003c/h2\u003e\n\u003cp\u003eHere are some example snippets to help you get started creating a container.\u003c/p\u003e\n\u003ch3\u003edocker-compose (recommended, \u003ca href=\"https://itnext.io/a-beginners-guide-to-deploying-a-docker-application-to-production-using-docker-compose-de1feccd2893\" rel=\"nofollow noopener\"\u003eclick here for more info\u003c/a\u003e) \u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003e---\nservices:\n  ispyagentdvr:\n    image: mekayelanik/ispyagentdvr:latest\n    container_name: ispyagentdvr\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - AGENTDVR_WEBUI_PORT=8090 \n      - TZ=Asia/Dhaka\n    volumes:\n      - /path/to/config:/AgentDVR/Media/XML\n      - /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media\n      - /path/to/commands:/AgentDVR/Commands\n    ports:\n      - 8090:8090\n      - 3478:3478/udp\n      - 50000-50100:50000-50100/udp\n    restart: unless-stopped\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cstrong\u003eNote:\u003c/strong\u003e \u003cp\u003e - 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.\u003c/p\u003e\n\u003cp\u003e - 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.\u003c/p\u003e\n\n\u003ch3\u003edocker cli ( \u003ca href=\"https://docs.docker.com/engine/reference/commandline/cli/\" rel=\"nofollow noopener\"\u003eclick here for more info\u003c/a\u003e) \u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003edocker run -d \\\n  --name=ispyagentdvr \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e AGENTDVR_WEBUI_PORT=8090\n  -e TZ=Asia/Dhaka \\\n  -p 8090:8090 \\\n  -p 3478:3478/udp \\\n  -p 50000-50100:50000-50100/udp \\\n  -v /path/to/config:/AgentDVR/Media/XML \\\n  -v /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media \\\n  -v /path/to/commands:/AgentDVR/Commands \\\n  --restart unless-stopped \\\n  mekayelanik/ispyagentdvr:latest\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eIf anyone wishes to give dedicated Local IP to iSpy Agent DVR container using MACVLAN ( \u003ca href=\"https://docs.docker.com/network/macvlan/\" rel=\"nofollow noopener\"\u003eclick here for more info\u003c/a\u003e) \u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003e---\nservices:\n  ispyagentdvr:\n    image: mekayelanik/ispyagentdvr:latest\n    container_name: ispyagentdvr\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - AGENTDVR_WEBUI_PORT=8090 \n      - TZ=Asia/Dhaka\n    volumes:\n      - /path/to/config:/AgentDVR/Media/XML\n      - /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media\n      - /path/to/commands:/AgentDVR/Commands\n    ports:\n      - 8090:8090\n      - 3478:3478/udp\n      - 50000-50100:50000-50100/udp\n    restart: unless-stopped\n    hostname: ispyagentdvr\n    domainname: local\n    mac_address: AB-BC-C0-D1-E2-EF\n    networks:\n      macvlan-1:\n        ipv4_address: 192.168.2.12\nnetworks:\n  macvlan-1:\n    name: macvlan-1\n    external: True\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIn oreder to macvlan work properly, you must map any valid MAC address to \u003ccode\u003emac_address:\u003c/code\u003e. Also you muat map any valid IP address in your \u003ccode\u003eip_range\u003c/code\u003e to \u003ccode\u003eipv4_address:\u003c/code\u003e.This will be your containr's IP. Then you must map your Router's Local IP Subnet to \u003ccode\u003esubnet:\u003c/code\u003e After that you must map your Desired Local IP range within the subnet to \u003ccode\u003eip_range:\u003c/code\u003e Finally you must map your Router's LAN IP Address \u003ccode\u003egateway:\u003c/code\u003e\n\u003c/p\u003e\n\u003cp\u003eIn the case of MACVLAN, you must access the WebUI using \u003ccode\u003ehttp://ipv4_address:8090\u003c/code\u003e\n\u003c/p\u003e\n\u003ch2\u003eGPU HW-Acceleration \u003cstrong\u003e(Tested \"WORKING\" on images with tag 5.3.5.0 or NEWER)\u003c/strong\u003e\u003c/h2\u003e\n\u003cp\u003eOne 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.\u003c/p\u003e\n\u003ch3\u003edocker-compose (recommended, \u003ca href=\"https://itnext.io/a-beginners-guide-to-deploying-a-docker-application-to-production-using-docker-compose-de1feccd2893\" rel=\"nofollow noopener\"\u003eclick here for more info\u003c/a\u003e) \u003c/h3\u003e\n\u003ch3\u003e\u003cstrong\u003eOne must be able to pass GPU (Redering devices) to the container as is instructed below!\u003c/strong\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003e---\nservices:\n  ispyagentdvr:\n    image: mekayelanik/ispyagentdvr:latest\n    container_name: ispyagentdvr\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - AGENTDVR_WEBUI_PORT=8090\n      - TZ=Asia/Dhaka\n    volumes:\n      - /path/to/config:/AgentDVR/Media/XML\n      - /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media\n      - /path/to/commands:/AgentDVR/Commands\n    ports:\n      - 8090:8090\n      - 3478:3478/udp\n      - 50000-50100:50000-50100/udp\n    restart: unless-stopped\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch3\u003edocker cli ( \u003ca href=\"https://docs.docker.com/engine/reference/commandline/cli/\" rel=\"nofollow noopener\"\u003eclick here for more info\u003c/a\u003e) \u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003edocker run -d \\\n  --name=ispyagentdvr \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e AGENTDVR_WEBUI_PORT=8090 \\\n  -e TZ=Asia/Dhaka \\\n  -p 8090:8090 \\\n  -p 3478:3478/udp \\\n  -p 50000-50100:50000-50100/udp \\\n  -v /path/to/config:/AgentDVR/Media/XML \\\n  -v /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media \\\n  -v /path/to/commands:/AgentDVR/Commands \\\n  --restart unless-stopped \\\n  mekayelanik/ispyagentdvr:latest\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eFor Nvidia GPUs\u003c/h3\u003e\n\u003cp\u003eTo get GPU Hardware acceleration from Nvidia, user \u003cstrong\u003eMUST INSTALL THE \"LATEST\" Nvidia Drivers \u0026 Nvidia Container Toolkit on the Host Machine/Server/VM/LXC\u003c/strong\u003e provided by Nvidia. Instructions for \u003cstrong\u003eNvidia Container Toolkit\u003c/strong\u003e can be found here:\u003c/p\u003e\n\u003ca href=\"https://github.com/NVIDIA/nvidia-container-toolkit\" rel=\"nofollow noopener\"\u003eNvidia-Container-Toolkit\u003c/a\u003e\n\u003cp\u003eWe 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.\n\u003c/p\u003e\n\u003ch3\u003eFor AMD GPUs \u0026 iGPUs\u003c/h3\u003e\n\u003cp\u003eThe Followings have to be added in docker-compose file/docker-cli cm respectively\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003edocker compose\u003c/strong\u003e\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003edevices:\n    - /dev/dri/renderD128:/dev/dri/renderD128\n    - /dev/dri/card0:/dev/dri/card0\n    - /dev/kfd:/dev/kfd\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003edocker cli\u003c/strong\u003e\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e--device /dev/dri/renderD128:/dev/dri/renderD128 --device /dev/dri:/dev/dri/card0 --device /dev/kfd:/dev/kfd\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eFor Intel GPUs \u0026 iGPUs\u003c/h3\u003e\n\u003cp\u003eThe Followings have to be added in docker-compose file/docker-cli cm respectively\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003edocker compose\u003c/strong\u003e\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003edevices:\n    - /dev/dri/renderD128:/dev/dri/renderD128\n    - /dev/dri/card0:/dev/dri/card0\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003edocker cli\u003c/strong\u003e\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e--device /dev/dri/renderD128:/dev/dri/renderD128 --device /dev/dri/card0:/dev/dri/card0\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch3\u003eFor Rockchip SBC's intergrated VPU, use the CLI command below\u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003edocker run -d \\\n  --name=ispyagentdvr \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e AGENTDVR_WEBUI_PORT=8090 \\\n  -e TZ=Asia/Dhaka \\\n  -p 8090:8090 \\\n  -p 3478:3478/udp \\\n  -p 50000-50100:50000-50100/udp \\\n  -v /path/to/config:/AgentDVR/Media/XML \\\n  -v /path/to/recordings:/AgentDVR/Media/WebServerRoot/Media \\\n  -v /path/to/commands:/AgentDVR/Commands \\\n  --restart unless-stopped \\\n`for dev in dri dma_heap mali0 rga mpp_service \\\n   iep mpp-service vpu_service vpu-service \\\n   hevc_service hevc-service rkvdec rkvenc vepu h265e ; do \\\n  [ -e \"/dev/$dev\" ] \u0026\u0026 echo \" --device /dev/$dev\"; \\\n done` \n  mekayelanik/ispyagentdvr:latest\u003c/code\u003e\u003c/pre\u003e\n\u003ch4\u003eDISCLAIMER: Jellyfin FFMPEG and corresponding ideas were used in this image to enable the HW-Acceleration\u003c/h4\u003e\n\u003ch2\u003eParameters\u003c/h2\u003e\n\u003cp\u003eContainer images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate \u003ccode\u003e\u0026lt;external\u0026gt;:\u0026lt;internal\u0026gt;\u003c/code\u003e respectively. For example, \u003ccode\u003e-p 8090:80\u003c/code\u003e would expose port \u003ccode\u003e80\u003c/code\u003e from inside the container to be accessible from the host's IP on port \u003ccode\u003e8090\u003c/code\u003e outside the container. \u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth align=\"center\"\u003eParameter\u003c/th\u003e\n      \u003cth\u003eFunction\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ccode\u003e-p 8090\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003eMap AgentDVR WebUI Port to HOST\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ccode\u003e-p 3478/udp\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003eMap Main port used for TURN server communication to HOST\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ccode\u003e-p 50000-50100//udp\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003eMap Ports from AgentDVR to HOST, to be used to create connections or WebRTC. These will be used as needed\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ccode\u003e-e PUID=1000\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003eFor UserID - see below for explanation\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ccode\u003e-e PGID=1000\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003eFor GroupID - see below for explanation\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ccode\u003e-e TZ=Asia/Dhaka\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003eSpecify a timezone to use, see this \u003ca href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List\" rel=\"nofollow noopener\"\u003elist\u003c/a\u003e. \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ccode\u003e-e AGENTDVR_WEBUI_PORT=8090\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003eSpecify a Port to Expose AgentDVR WebUI\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ccode\u003e-v /AgentDVR/Media/XML\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003eContains all relevant configuration files.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ccode\u003e-v /AgentDVR/Media/WebServerRoot/Media\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003eLocation of Survaillance Recordings on disk.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ccode\u003e-v /AgentDVR/Commands \u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003eLocation to store desired iSpy Agent DVR Commands.\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eUser / Group Identifiers\u003c/h2\u003e\n\u003cp\u003eWhen using volumes ( \u003ccode\u003e-v\u003c/code\u003e flags) permissions issues can arise between the host OS and the container, One can avoid this issue by allowing you to specify the user \u003ccode\u003ePUID\u003c/code\u003e and group \u003ccode\u003ePGID\u003c/code\u003e. \u003c/p\u003e\n\u003cp\u003eEnsure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.\u003c/p\u003e\n\u003cp\u003eIn this instance \u003ccode\u003ePUID=1000\u003c/code\u003e and \u003ccode\u003ePGID=1000\u003c/code\u003e, to find yours use \u003ccode\u003eid user\u003c/code\u003e as below: \u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ id username\nuid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eFor iSpy Agent DVR specific userguide visit:\u003c/h2\u003e\n\u003ca href=\"https://www.ispyconnect.com/userguide-agent-dvr.aspx\" rel=\"nofollow noopener\"\u003ehttps://www.ispyconnect.com/userguide-agent-dvr.aspx\u003c/a\u003e\n\u003c/p\u003e\n\u003ch2\u003eNon host network use:\u003c/h2\u003e\n\u003cp\u003e 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.\u003c/p\u003e\n\u003cp\u003eTo access WebUI go to the container's \u003ccode\u003ehttp://container's ip:8090\u003c/code\u003e or \u003ccode\u003ehttp://ipv4_address:8090\u003c/code\u003e\n\u003c/p\u003e\n\u003ch2\u003eUpdating Info\u003c/h2\u003e\n\u003cp\u003eBelow are the instructions for updating containers:\u003c/p\u003e\n\u003ch3\u003eVia Docker Compose (recommended)\u003c/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eUpdate all images: \u003ccode\u003edocker compose pull\u003c/code\u003e\n    \u003cul\u003e\n      \u003cli\u003eor update a single image: \u003ccode\u003edocker compose pull ispyagentdvr\u003c/code\u003e\n      \u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/li\u003e\n  \u003cli\u003eLet compose update all containers as necessary: \u003ccode\u003edocker compose up -d\u003c/code\u003e\n    \u003cul\u003e\n      \u003cli\u003eor update a single container (recommended): \u003ccode\u003edocker compose up -d ispyagentdvr\u003c/code\u003e\n      \u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/li\u003e\n  \u003cli\u003eTo remove the old unused images run: \u003ccode\u003edocker image prune\u003c/code\u003e\n  \u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVia Docker Run\u003c/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eUpdate the image: \u003ccode\u003edocker pull mekayelanik/ispyagentdvr:latest\u003c/code\u003e\n  \u003c/li\u003e\n  \u003cli\u003eStop the running container: \u003ccode\u003edocker stop ispyagentdvr\u003c/code\u003e\n  \u003c/li\u003e\n  \u003cli\u003eDelete the container: \u003ccode\u003edocker rm ispyagentdvr\u003c/code\u003e\n  \u003c/li\u003e\n  \u003cli\u003eRecreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your \u003ccode\u003e/AgentDVR/Media/XML\u003c/code\u003e folder and settings will be preserved) \u003c/li\u003e\n  \u003cli\u003eTo remove the old unused images run: \u003ccode\u003edocker image prune\u003c/code\u003e\n  \u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVia \u003ca href=\"https://containrrr.dev/watchtower/\" rel=\"nofollow noopener\"\u003eWatchtower\u003c/a\u003e auto-updater (only use if you don't remember the original parameters)\u003c/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n    \u003cp\u003ePull the latest image at its tag and replace it with the same env variables in one run:\u003c/p\u003e\n    \u003cpre\u003e\n\u003ccode\u003edocker run --rm \\\n-v /var/run/docker.sock:/var/run/docker.sock \\\ncontainrrr/watchtower\\\n--run-once ispyagentdvr\u003c/code\u003e\u003c/pre\u003e\n  \u003c/li\u003e\n  \u003cli\u003e\n    \u003cp\u003eTo remove the old unused images run: \u003ccode\u003edocker image prune\u003c/code\u003e\n    \u003c/p\u003e\n  \u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\n  \u003cstrong\u003eNote:\u003c/strong\u003e You can use \u003ca href=\"https://containrrr.dev/watchtower/\" rel=\"nofollow noopener\"\u003eWatchtower\u003c/a\u003e 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 \u003ca href=\"https://itnext.io/a-beginners-guide-to-deploying-a-docker-application-to-production-using-docker-compose-de1feccd2893\" rel=\"nofollow noopener\"\u003eDocker Compose\u003c/a\u003e.\n\u003c/p\u003e\n\u003ch3\u003eImage Update Notifications - Diun (Docker Image Update Notifier)\u003c/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eYou can also use \u003ca href=\"https://crazymax.dev/diun/\" rel=\"nofollow noopener\"\u003eDiun\u003c/a\u003e for update notifications. Other tools that automatically update containers unattended are not encouraged \u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMigration Notes:\u003c/h2\u003e\n\u003ch4\u003eIf you had the old format of audio and video volumes please move them within the new media folder before starting the container again.\u003c/h4\u003e\n\u003cp\u003eIt would look something like this:\n\u003cpre\u003e\n\u003ccode\u003emkdir -p /ispyagentdvr/media/old \u0026\u0026 \\\nmv /path/to/recordings/audio /ispyagentdvr/media/old \u0026\u0026 \\\nmv /path/to/recordings/video /ispyagentdvr/media/old\u003c/code\u003e\u003c/pre\u003e\n\n\n\u003ch2\u003e NOTES: \u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e - Audio playback on Linux host: \u003c/strong\u003e 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:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e    group_add:\n        - audio\n    devices:\n        - /dev/snd:/dev/snd\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003e - ARM SBCs: \u003c/strong\u003eIn 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.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e - Things to make sure before Submitting a issue:\u003c/strong\u003e \u003c/p\u003e\n  \u003cul\u003e\n    \u003cli\u003eUpdate your \u003cstrong\u003eDocker Engine\u003c/strong\u003e to the latest available, specially on OSX. After updating docker engine please check if the issue has been resolved.\n    \u003c/li\u003e\n    \u003cli\u003eInspect the \u003ccode\u003eAgentDVR-IP:AGENTDVR_WEBUI_PORT/logs.html\u003c/code\u003e for Error list\n    \u003c/li\u003e\n    \u003cli\u003eIf you intending to run this image on Raspberry Pi 5 then use \u003cstrong\u003eUbuntu or Ubuntu Server\u003c/strong\u003e 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.\n    \u003c/li\u003e\n    \u003cli\u003eMake sure to have you have access to your Docker Compose File/Docker CLI command which was used to deploy your container and Logs from \u003ccode\u003elogs.html\u003c/code\u003e include those to your github issue/reddit post.\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\n\u003cp\u003e\u003cstrong\u003e - Major Changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e6.1.3.0:\u003c/strong\u003e - ✅Regular version updated to 6.1.3.0. From now on, using BETA images is ❌STRICTLY DISCOURAGED\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e6.0.9.0:\u003c/strong\u003e - ⚠️⚠️⚠️ Updated Intel GPU driver and updated jellyfin-ffmpeg to 7.0.2-9 ⚠️⚠️⚠️\u003c/li\u003e \n\u003cli\u003e\u003cstrong\u003e6.0.1.0:\u003c/strong\u003e - ⚠️⚠️⚠️ Added driver support for Intel Battlemage GPUs ⚠️⚠️⚠️\u003c/li\u003e \n\u003cli\u003e\u003cstrong\u003e5.8.4.0:\u003c/strong\u003e - ⚠️⚠️⚠️ Config files file format changed from XML to JSON ⚠️⚠️⚠️\u003c/li\u003e \n\u003cli\u003e\u003cstrong\u003e5.8.1.0:\u003c/strong\u003e - ⚠️ FFMPEG version bumped from 6.0.1 to 7.0.2\u003c/li\u003e \n\u003cli\u003e\u003cstrong\u003e5.8.1.0:\u003c/strong\u003e - ⚠️ DOTNET version bumped to 9.0\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e5.8.1.0:\u003c/strong\u003e - ⚠️⚠️⚠️ Environment Variable \u003ccode\u003eWEBUI_PORT\u003c/code\u003e is now changed to \u003ccode\u003eAGENTDVR_WEBUI_PORT\u003c/code\u003e. Those who use Environment Variable to change the Port for Web UI, please use \u003ccode\u003eAGENTDVR_WEBUI_PORT\u003c/code\u003e from now on.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e5.8.1.0:\u003c/strong\u003e - \u003ccode\u003emekayelank/ispyagentdvr\u003c/code\u003e image is now fully backword compatible with \u003ccode\u003edoitandbedone/ispyagentdvr\u003c/code\u003e image. From now on, you don't have to change the directory mapping to switch from \u003ccode\u003edoitandbedone/ispyagentdvr\u003c/code\u003e to \u003ccode\u003emekayelank/ispyagentdvr\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e5.8.1.0:\u003c/strong\u003e - ⚠️⚠️⚠️ TURN Server Port range changed from \u003ccode\u003e50000-50010\u003c/code\u003e to \u003ccode\u003e50000-50100\u003c/code\u003e. Please set the range in Docker CLI or Docker Compose to \u003ccode\u003e50000-50100\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e5.3.5.0:\u003c/strong\u003e - Fixed HW-Accelerated Encode/Decode for AMD, Nvidia \u0026 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.)\u003c/li\u003e \n\u003cli\u003e\u003cstrong\u003e5.2.8.0 :\u003c/strong\u003e - (BETA) Added HW-Acceleration for Nvidia, AMD \u0026 Intel GPUs \u0026 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\u003c/li\u003e \n\u003cli\u003e\u003cstrong\u003e4.8.2.0:\u003c/strong\u003e - Fixed ARMHF dependency issues and other improvements.\u003c/li\u003e \n\u003cli\u003e\u003cstrong\u003e4.8.0.0:\u003c/strong\u003e - ⚠️ Major Bug fixes with ONVIF fix\u003c/li\u003e \n\u003cli\u003e\u003cstrong\u003e4.7.4.0:\u003c/strong\u003e \u003cul\u003e \u003cli\u003e Fixed bump FFmpeg 6 version that was crashing on missing GPU drivers\u003c/li\u003e  \u003cli\u003e Add TURN server option to local server settings.\u003c/li\u003e\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e4.7.3.0:\u003c/strong\u003e - ⚠️ Bumped FFmpeg version from 5 to 6.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e4.1.2.0:\u003c/strong\u003e - Initial Release.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003eIssues \u0026 Requests\u003c/h2\u003e\n\u003cp\u003e To submit this Docker image specific issues or requests visit this docker image's Github Link: \u003ca href=\"https://www.github.com/MekayelAnik/ispyagentdvr-docker\" rel=\"nofollow noopener\"\u003ehttps://www.github.com/MekayelAnik/ispyagentdvr-docker\u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003e For iSpy AgentDVR related issues and requests, please visit: \u003ca href=\"https://www.reddit.com/r/ispyconnect/\" rel=\"nofollow noopener\"\u003ehttps://www.reddit.com/r/ispyconnect/\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmekayelanik%2Fispyagentdvr-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmekayelanik%2Fispyagentdvr-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmekayelanik%2Fispyagentdvr-docker/lists"}