Skip to content
🚧 These docs are a work in progress and may contain inaccuracies. Content is being actively reviewed and validated.

Unraid

Once listed, installation is straightforward:

  1. Go to the Apps tab
  2. Search for dubby or dubbytv
  3. Click Install
  4. Configure the template (see paths and variables below)
  5. Click Apply
  1. Go to Docker > Add Container
  2. Set Repository: dubbytv/dubby:beta
  3. Add port mapping: 30003000
  4. Add the volume paths and environment variables below
  5. For GPU transcoding, see Hardware acceleration
  6. Click Apply
Container pathHost pathModeDescription
/data/mnt/user/appdata/dubbyrwDatabase, images, trickplay
/cache/mnt/user/appdata/dubby/cacherwTranscode segments (ephemeral)
/media/mnt/user/mediaroMedia library
NameRequiredValue
BETTER_AUTH_SECRETYesGenerate with openssl rand -base64 32
TMDB_API_KEYNoTMDB API key for metadata. Free at themoviedb.org. Can be set in the UI.

Add the GPU device in the container settings:

  • Device: /dev/dri/dev/dri

Or in the Extra Parameters field:

--device=/dev/dri

The Intel GPU TOP plugin is optional — it provides GPU utilization monitoring on the Unraid dashboard but is not required for transcoding.

NVIDIA GPU passthrough on Unraid requires the Nvidia-Driver plugin:

  1. Install Nvidia-Driver from Community Apps
  2. Select your driver version in Settings > Nvidia-Driver and reboot
  3. Note the GPU UUID listed on the plugin settings page
  4. Edit the Dubby container and add to Extra Parameters:
--runtime=nvidia
  1. Add these environment variables:
NameValue
NVIDIA_VISIBLE_DEVICESGPU UUID from plugin settings
NVIDIA_DRIVER_CAPABILITIESall

Without a GPU device mapped, Dubby falls back to CPU-based software transcoding (libx264). This works but uses significantly more CPU — see Hardware Acceleration for details.

You can import this template directly in Unraid. Go to Docker > Add Container, switch to Advanced View (top right), and paste this URL in the Template URL field — or save it to /boot/config/plugins/dockerMan/templates-user/dubby.xml.

<?xml version="1.0"?>
<Container version="2">
<Name>dubby</Name>
<Repository>dubbytv/dubby:beta</Repository>
<Registry>https://hub.docker.com/r/dubbytv/dubby</Registry>
<Network>bridge</Network>
<Privileged>false</Privileged>
<Support>https://dubby.tv</Support>
<Project>https://dubby.tv</Project>
<Overview>Self-hosted media server with adaptive streaming, metadata enrichment, and multi-platform clients. Alternative to Plex and Jellyfin.</Overview>
<Category>MediaServer:Video</Category>
<WebUI>http://[IP]:[PORT:3000]</WebUI>
<Icon>https://dubby.tv/icon.png</Icon>
<Config Name="Web UI" Target="3000" Default="3000" Mode="tcp" Description="Web interface port" Type="Port" Display="always" Required="true">3000</Config>
<Config Name="Data" Target="/data" Default="/mnt/user/appdata/dubby" Mode="rw" Description="Database and configuration" Type="Path" Display="always" Required="true">/mnt/user/appdata/dubby</Config>
<Config Name="Cache" Target="/cache" Default="/mnt/user/appdata/dubby/cache" Mode="rw" Description="Transcode cache — use SSD-backed share" Type="Path" Display="always" Required="true">/mnt/user/appdata/dubby/cache</Config>
<Config Name="Media" Target="/media" Default="/mnt/user/media" Mode="ro" Description="Media library (movies and TV shows)" Type="Path" Display="always" Required="true">/mnt/user/media</Config>
<Config Name="BETTER_AUTH_SECRET" Target="BETTER_AUTH_SECRET" Default="" Mode="" Description="Auth secret — generate with: openssl rand -base64 32" Type="Variable" Display="always" Required="true"></Config>
<Config Name="TMDB_API_KEY" Target="TMDB_API_KEY" Default="" Mode="" Description="TMDB API key for metadata (optional — can be set in admin UI)" Type="Variable" Display="always" Required="false"></Config>
<Config Name="Intel GPU" Target="" Default="" Mode="" Description="Intel Quick Sync support" Type="Device" Display="advanced" Required="false">/dev/dri</Config>
</Container>
  1. Go to the Docker tab
  2. Click the container icon for dubby
  3. Click Check for Updates
  4. If an update is available, click Apply Update

Unraid pulls the new image and recreates the container with the same template settings. No manual reconfiguration is needed. Database migrations run automatically on startup.

To switch to a specific version, click the container icon, select Edit, change the Repository field to the desired tag (e.g., dubbytv/dubby:0.1.0-beta.6), and click Apply.

Check the container logs from the Docker tab (click the container icon > Logs). Common causes:

  • Missing BETTER_AUTH_SECRET — This is required. Generate one with openssl rand -base64 32 in the Unraid terminal.
  • Permission errors on /data — The container runs as UID 1000. Ensure the appdata path is writable.

The library path in the Dubby UI must match the container mount path, not the host path. If your host media is at /mnt/user/media/movies, add /media/movies as the library path in the UI.

Terminal window
# Check if /dev/dri exists on the host
ls -la /dev/dri/
# Verify the device is passed to the container
docker exec dubby ls -la /dev/dri/
# Check VA-API support (Intel/AMD)
docker exec dubby vainfo

If /dev/dri doesn’t exist on the host, your CPU may not have integrated graphics, or the i915/amdgpu kernel module isn’t loaded.

Transcode segments are cleaned up when playback sessions end. If the cache grows unexpectedly:

Terminal window
# Check cache size
du -sh /mnt/user/appdata/dubby/cache
# Safe to delete — will be recreated on next transcode
rm -rf /mnt/user/appdata/dubby/cache/*

Consider setting cache size limits in Settings > Transcoding in the Dubby admin UI.