Docker Wrapper for SiliconDust's HDHomeRun DVR Record Engine
Image based no Alpine Linux https://alpinelinux.org/ At this time the Ajax framework used is limited to PHP7 and thus the image will stick with Alpine 3.15 as 3.16 moves to PHP8 and removes PHP7
This container image built does not contain a binary of the silicondust record engine. It is assumed since the user has the ability to download the docker image then they have internet capability to get the latest engine - and thus the image contains a script to download the latest engine when the engine is started. Besides, you need internet for the DVR anyway. To update the engine stop the container and then start it again and it will get the latest. Note - at this time the nginx and php configurations will be restored to defaults.
Is important for HDHomeRun system to have everything on the same Network to scan for tuners, etc. thus run the container with the host network selected, i.e.
--network host
In addition to the DVR engine, the container also has an embedded NGINX web server with PHP FPM configured to deliver a simple Management GUI. By default the Web server will run on Port 80. Use the DVRUI_PORT environment variable to move this to a free port in the case where there is a conflict with another container, or the host.
You can override the user ID and group ID used by the container processes by setting the PUID/PGID to match a user on your system. By default NGINX will run as a user 'nginx'' and PHP as 'nobody' while the DVR will run simply as root or mapped if you use the --user settings of docket. If specified - then everything in /dvrdata and /dvrrec will be changed to the new user IDs.
At this time there isn't much stored in the /dvrdata that needs to persist through an update. Yes it would be useful to maintain the Storage UUID in the dvr.conf, but is safe to pretty much delete everything in the /dvrdata between updates (with a container stop and start) and it will be reconstructed on start. You may just need to update the params once more if you change from defaults.
Volume | Description |
---|---|
dvrrec | Recordings and the engine logs will be stored here |
dvrdata | Temporary data such as the engine itself, the config file, and a log output of the containers script |
Variable | Description |
---|---|
DVRUI_PORT | Override the default port of 80 for the embedded NGINX Server |
PUID | Override the default user ID for the DVR |
PGID | Override the default group ID for the DVR |
docker run -d --name dvr \
--restart=unless-stopped \
--network host \
-e DVRUI_PORT=10080 \
-e PUID=1000 \
-e PGID=1000 \
-v /path/to/hdhomerun/tempdata:/dvrdata \
-v /path/to/hdhomerun/recordings:/dvrrec \
demonrik/hdhrdvr-docker