All apps · 0 apps
HDHomeRunDVR
Docker app from Yoshiofthewire's Repository
Overview
Readme
View on GitHubdocker-hdhomerundvr
Docker container for the HDHomeRun DVR Server by SiliconDust.
HDHomeRun DVR Server version: 20250815
Base image: debian:bookworm-slim
Features
- Runs the HDHomeRun DVR recording engine inside a Docker container
entrypoint.shkeeps the process alive — auto-restarts if the DVR daemon crashes (up to 10 retries)- Container-level
restart: unless-stoppedpolicy recovers from container failures - Minimal image (no Python/supervisord) — the DVR daemon runs as an unprivileged user via
setpriv - Timezone configurable via the
TZenvironment variable - Host networking for full HDHomeRun device discovery (UDP broadcast)
Requirements
- A working HDHomeRun network tuner with up-to-date firmware (see below)
- Docker and Docker Compose installed on the host
Quick Start
Option A: Docker Hub
Use the published image from Docker Hub:
https://hub.docker.com/repository/docker/yoshiofthewire/hdhomerundvr/general
Option B: Build Locally
# 1. Clone the repository
git clone https://github.com/Yoshiofthewire/docker-hdhomerundvr.git
cd docker-hdhomerundvr
# 2. Edit docker-compose.yml and set your recordings path and timezone
# volumes:
# - /your/recordings/path:/hdhomerun
# environment:
# - TZ=America/New_York
# 3. Build and start
docker compose up -d --build
Configuration
Environment Variables
| Environment Variable | Default | Description |
|---|---|---|
TZ |
UTC |
Timezone (e.g. America/New_York, Europe/London) |
Volumes
| Container Path | Description |
|---|---|
/hdhomerun |
Recording output directory — map this to your storage path |
Ports
| Port | Protocol | Description |
|---|---|---|
65001 |
UDP | HDHomeRun discovery |
65002 |
TCP | DVR control/streaming |
Note:
network_mode: hostis used indocker-compose.ymlso that UDP broadcast device discovery works correctly. In host mode, theportsmapping is bypassed, so the ports above are documentation only.
Updating the HDHomeRun Firmware
Before the first install or when updating firmware:
- Install the HDHomeRun Windows or Mac application.
- When prompted to install the DVR server component, select Don't Install.
- You will be prompted to configure the tuner after setup completes.
- Re-run the tuner setup — this will update the firmware.
- You may need to re-scan channels after the firmware update.
CI / Release Workflow
This repository includes a GitHub Actions workflow at .github/workflows/docker-release.yml.
On each push to main or manual dispatch, the workflow:
- computes an auto-incrementing release version from the Git commit count
- builds the Docker image
- tags and pushes the image to Docker Hub
- creates a Git tag like
v1.0.<commit_count> - creates a GitHub release for the tag
To allow Docker image publishing, configure these repository secrets:
DOCKERHUB_USERNAMEDOCKERHUB_TOKEN
The built image is published as:
docker.io/yoshiofthewire/hdhomerundvr:1.0.<commit_count>docker.io/yoshiofthewire/hdhomerundvr:latest
How It Works
flowchart TD
A[Docker container] --> B[entrypoint.sh\nPID 1]
B --> C[setpriv drops to hdhomerun user\nruns hdhomerun_wrapper.sh]
C --> D[hdhomerun_record_x64 start\nStarts DVR daemon]
C --> E[Monitors DVR process\nevery 15 seconds]
E --> F[If the DVR process disappears, the wrapper exits non-zero]
F --> G[entrypoint.sh restarts the wrapper\nup to 10 retries]
H[SIGTERM from Docker] --> I[entrypoint.sh forwards TERM to the wrapper,\nwhich calls hdhomerun_record_x64 stop]
entrypoint.shruns as PID 1 in the foreground, preventing spurious container exits.- It uses
setprivto drop from root to the unprivilegedhdhomerunuser before runninghdhomerun_wrapper.sh, which wraps the DVR daemon (which forks to the background) and stays alive to monitor it. - If the DVR process disappears, the wrapper exits with a non-zero code so
entrypoint.shrestarts it (up to 10 retries). SIGTERMfrom Docker is caught cleanly byentrypoint.sh, which forwards it to the wrapper — the wrapper callshdhomerun_record_x64 stopbefore exiting.
License
GPL v2.0
Install HDHomeRunDVR on Unraid in a few clicks.
Find HDHomeRunDVR in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/yoshiofthewire/docker-hdhomerundvr:latestRuntime arguments
- Network
host- Shell
sh- Privileged
- false
Template configuration
Where the DVR engine writes recordings. Must be a share the container can write to.
- Target
- /hdhomerun
- Default
- /mnt/user/Media/HDHomeRun/
- Value
- /mnt/user/Media/HDHomeRun/