dmb

dmb

Docker app from UnJustice's Repository

Overview

This is an Unraid Docker template for: Debrid Media Bridge This project is now considered deprecated. Future efforts will be directed at Debrid Media Unlimited Bridge (DUMB) This template will therefore not receieve any further updates. I recommend checking out DUMB! Debrid Media Bridge (DMB) is an All-In-One (AIO) docker image for the unified deployment of the following projects/tools: cli_debrid, dmbdb, Decypharr, pgAdmin4, phalanx_db, plex_debrid, PostgreSQL, rclone, Riven, Zilean, Zurg https://github.com/I-am-PUID-0/DMB#-projects-included

🎬 Debrid Media Bridge 🎬

DMB

[!WARNING]

⚠️ Project Status: Deprecated

Debrid Media Bridge (DMB) is now deprecated.

DMB may continue to function, but it is no longer under active development and will not receive new features or ongoing support.

➡️ The recommended successor is DUMB (Debrid Unlimited Media Bridge):

📌 What DUMB Offers

DUMB is a consolidated media orchestration platform delivered as a single Docker image, with optional deployment of the following components:

  • Integrated media servers: Plex, Jellyfin, Emby
  • Arr ecosystem automation: Sonarr, Radarr, Lidarr, Prowlarr, Huntarr, Whisparr
  • Debrid / Usenet workflow tooling: CLI Debrid, Riven, Decypharr, NzbDAV
  • Storage and mount management: rclone, Zurg
  • Database services and tooling: PostgreSQL, pgAdmin, pgAgent
  • Service orchestration & operations: process supervision, health checks, embedded UIs, automatic restarts, managed updates

DUMB is actively maintained and supersedes DMB by consolidating service orchestration, automation, and operational control into a single, supported platform.

[!CAUTION] Docker Desktop CANNOT be used to run DMB. Docker Desktop does not support the mount propagation required for rclone mounts.

image

[!CAUTION] See the DMB Docs for alternative deployment options to run DMB on Windows through WSL2.

📜 Description

Debrid Media Bridge (DMB) is an All-In-One (AIO) docker image for the unified deployment of the following projects/tools.

📦 Projects Included

[!NOTE] You are free to use whichever components you like. Not all are required, and some may provide overlapping functionality in different ways.

Project Author Community / Docs / Support 🍻 Support Dev
cli_debrid godver3 Discord Sponsor
dmbdb nicocapalbo Issues
Decypharr Mukhtar Akere DocsIssues Sponsor
pgAdmin 4 pgAdmin Team DocsSupport Donate
phalanx_db godver3 Discord Sponsor
plex_debrid itsToggle DiscordIssues AffiliatePayPal
PostgreSQL Michael Stonebraker Docs Donate
rclone Nick Craig-Wood Docs Sponsor
Riven Riven Media DiscordDiscussions Sponsor
Zilean iPromKnight DocsIssues
Zurg yowmamasita Wiki Sponsor

🌟 Features

See the DMB Docs for a full list of features and settings.

🐳 Docker Hub

A prebuilt image is hosted on Docker Hub.

🏷️ GitHub Container Registry

A prebuilt image is hosted on GitHub Container Registry.

🐳 Docker-compose

[!NOTE] The below examples are not exhaustive and are intended to provide a starting point for deployment.

services:
  DMB:
    container_name: DMB
    image: iampuid0/dmb:latest                                       ## Optionally, specify a specific version of DMB w/ image: iampuid0/dmb:2.0.0
    stop_grace_period: 30s                                           ## Adjust as need to allow for graceful shutdown of the container
    shm_size: 128mb                                                  ## Increased for PostgreSQL
    stdin_open: true                                                 ## docker run -i
    tty: true                                                        ## docker run -t
    volumes:
      - /home/username/docker/DMB/config:/config                     ## Location of configuration files. If a Zurg config.yml and/or Zurg app is placed here, it will be used to override the default configuration and/or app used at startup.
      - /home/username/docker/DMB/log:/log                           ## Location for logs
      - /home/username/docker/DMB/Zurg/RD:/zurg/RD                   ## Location for Zurg RealDebrid active configuration
      - /home/username/docker/DMB/Riven/data:/riven/backend/data     ## Location for Riven backend data
      - /home/username/docker/DMB/PostgreSQL/data:/postgres_data     ## Location for PostgreSQL database
      - /home/username/docker/DMB/pgAdmin4/data:/pgadmin/data        ## Location for pgAdmin 4 data
      - /home/username/docker/DMB/Zilean/data:/zilean/app/data       ## Location for Zilean data
      - /home/username/docker/DMB/plex_debrid:/plex_debrid/config    ## Location for plex_debrid data
      - /home/username/docker/DMB/cli_debrid:/cli_debrid/data        ## Location for cli_debrid data
      - /home/username/docker/DMB/phalanx_db:/phalanx_db/data        ## Location for phalanx_db data
      - /home/username/docker/DMB/decypharr:/decypharr               ## Location for decypharr data
      - /home/username/docker/DMB/mnt/debrid:/mnt/debrid:rshared    ## Location for all symlinks and rclone mounts     
    environment:
      - TZ=
      - PUID=
      - PGID=
    # network_mode: container:gluetun                               ## Example to attach to gluetun vpn container if realdebrid blocks IP address
    ports:
      - "3005:3005"                                                 ## DMB Frontend
      - "3000:3000"                                                 ## Riven Frontend
      - "5050:5050"                                                 ## pgAdmin 4
      - "5000:5000"                                                 ## CLI Debrid Frontend      
      - "8282:8282"                                                 ## Decypharr Frontend         
    devices:
      - /dev/fuse:/dev/fuse:rwm
    cap_add:
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
      - no-new-privileges

🎥 Example Plex Docker-compose

[!IMPORTANT] The Plex server must be started after the rclone mount is available.
The below example uses the depends_on parameter to delay the start of the Plex server until the rclone mount is available.
The rclone mount must be shared to the Plex container.
The rclone mount location should not be added to the Plex library.
The Riven (If being used) symlink location must be shared to the Plex container and added to the Plex library.

Note: for depends_on to work this needs to be within the same docker compose file.

services:
  plex:
    image: plexinc/pms-docker:latest
    container_name: plex
    devices:
      - /dev/dri:/dev/dri
    volumes:
      - /home/username/docker/plex/library:/config
      - /home/username/docker/plex/transcode:/transcode
      - /home/username/docker/DMB/mnt/debrid:/mnt/debrid    ## mount location from DMB must be shared to Plex container. Add the symlinks directories to the Plex Libraries 
    environment:
      - TZ=
      - PLEX_UID=                                           ## Same as PUID
      - PLEX_GID=                                           ## Same as PGID
      - PLEX_CLAIM=claimToken                               ## Need for the first run of Plex - get claimToken here https://www.plex.tv/claim/
    ports:
      - "32400:32400"
    healthcheck:
      test: curl --connect-timeout 15 --silent --show-error --fail http://localhost:32400/identity
      interval: 1m00s
      timeout: 15s
      retries: 3
      start_period: 1m00s
    depends_on:                                             ## Used to delay the startup of plex to ensure the rclone mount is available.
      DMB:                                                  ## The name of the container running rclone
        condition: service_healthy
        restart: true                                       ## Will automatically restart the plex container if the DMB container restarts

🌐 Environment Variables

The following table lists the required environment variables used by the container.
The environment variables are set via the -e parameter or via the docker-compose file within the environment: section or with a .env file saved to the config directory.
Value of this parameter is listed as <VARIABLE_NAME>=<Value>

Variables required by DMB:

Variable Default Description
PUID 1000 Your User ID
PGID 1000 Your Group ID
TZ (null) Your time zone listed as Area/Location

See the .env.example for more.

🌐 Ports Used

[!NOTE] The below examples are default and may be configurable with the use of additional environment variables.

The following table describes the ports used by the container. The mappings are set via the -p parameter or via the docker-compose file within the ports: section. Each mapping is specified with the following format: <HOST_PORT>:<CONTAINER_PORT>[:PROTOCOL].

Container port Protocol Description
3005 TCP DMB frontend - a web UI is accessible at the assigned port
3000 TCP Riven frontend - A web UI is accessible at the assigned port
8080 TCP Riven backend - The API is accessible at the assigned port
5432 TCP PostgreSQL - The SQL server is accessible at the assigned port
5050 TCP pgAdmin 4 - A web UI is accessible at the assigned port
8182 TCP Zilean - The API and Web Ui (/swagger/index.html) is accessible at the assigned port
9090 TCP Zurg - A web UI is accessible at the assigned port
5000 TCP CLI Debrid - A web UI is accessible at the assigned port
8888 TCP Phalanx DB - The API is accessible at the assigned port
8282 TCP Decypharr - A web UI is accessible at the assigned port

📂 Data Volumes

The following table describes the data volumes used by the container. The mappings are set via the -v parameter or via the docker-compose file within the volumes: section. Each mapping is specified with the following format: <HOST_DIR>:<CONTAINER_DIR>[:PERMISSIONS].

Container path Permissions Description
/config rw This is where the application stores the rclone.conf, and any files needing persistence. CAUTION: rclone.conf is overwritten upon start/restart of the container. Do NOT use an existing rclone.conf file if you have other rclone services
/log rw This is where the application stores its log files
/zurg/RD rw This is where Zurg will store the active configuration and data for RealDebrid.
/riven/backend/data rw This is where Riven will store its data.
/postgres_data rw This is where PostgreSQL will store its data.
/pgadmin/data rw This is where pgAdmin 4 will store its data.
/plex_debrid/config rw This is where plex_debrid will store its data.
/cli_debrid/data rw This is where cli_debrid will store its data.
/phalanx_db/data rw This is where phalanx_db will store its data.
/decypharr rw This is where decypharr will store its data.
/mnt/debrid rshared This is where the symlinks and rclone mounts will be stored

📝 TODO

See the DMB roadmap for a list of planned features and enhancements.

🚀 Deployment

DMB allows for the simultaneous or individual deployment of any of the services

For additional details on deployment, see the DMB Docs

🌍 Community

  • For questions related to DMB, see the GitHub discussions
  • or create a new issue if you find a bug or have an idea for an improvement.
  • or join the DMB discord server

✅ GitHub Workflow Status

GitHub Workflow Status

Install Dmb on Unraid in a few clicks.

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

Open the Apps tab on your Unraid server Search Community Apps for Dmb Review the template variables and paths Click Install

Requirements

!!!DO ONE OF THESE TWO ACTIONS BELOW WHILE SETTING IT UP OR ELSE THE CONTAINER WILL NOT RUN!!!
Method 1 CLI
1. stop the docker container fully. Wait to see it fully stopped.
2. access the terminal as root user
3. run the command chown -R 99:100 /mnt/user/appdata/DMB
4. run the above command again for any other directories used by DMB eg /mnt/user/DMB (skip if you only have one directory-this template has two directories by default)
5. Restart the container. Check logs. You might need to stop container and run the chown command two times during the first setup only.

Method 2 unRAID GUI
1. stop the docker container fully. Wait to see it fully stopped.
2. login to unRAID GUI as root user
3. Locate your ./appdata/DMB directory (if you setup shares (most people do) then click shares, go into appdata, you'll see DMB there after the first run)
4. click the + sign on the right side of the ./appdata/DMB directory. Change owner. Choose nobody in the drop down menu (it is called just that: nobody) as the owner. Apply the change
5. repeat above steps if you have other directories used by DMB eg /mnt/user/DMB (this template has two directories by default)
6. Restart the container. Check logs. You might need to stop container and do the steps twice during the first setup only.

Download Statistics

103,957
Total Downloads
2,482
This Month
2,582
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
iampuid0/dmb:latest
Last Updated2025-08-27
First Seen2024-09-22

Runtime arguments

Web UI
http://[IP]:[PORT:3005]
Network
bridge
Privileged
false
Extra Params
--shm-size=128MB -it --cap-add SYS_ADMIN --security-opt apparmor:unconfined

Template configuration

TimezoneVariable

Enter your timezone. List here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Target
TZ
rclone config directoryPathrw

Directory where your rclone config file will be stored.

Target
/config
Default
/mnt/user/appdata/DMB/config
log directoryPathrw

Directory where your DMB logs will be found.

Target
/log
Default
/mnt/user/appdata/DMB/log
Real-debrid directoryPathrw

Directory for Real-Debrid config related files. These are used by the Zurg rclone mount of your Real-Debrid webDAV (read support documents for more info)

Target
/zurg/RD
Default
/mnt/user/appdata/DMB/Zurg/RD
PostgreSQL directoryPathrw

Directory for the postgreSQL database files used with DMB.

Target
/postgres_data
Default
/mnt/user/appdata/DMB/PostgreSQL/data
Riven backend data pathPathrw

Directory for the riven backend.

Target
/riven/backend/data
Default
/mnt/user/appdata/DMB/Riven/data
Zurg rclone mount -- ADD THIS DIRECTORY TO Plex/Jellyfin/Emby!Pathrw,shared

MUST BE 'Read/Write - Shared'!!! You must add the full host path above to your plex container. DO NOT ADD THIS AS A LIBRARY! ONLY ADD THE PATH TO PLEX! THAT'S ALL!

Target
/data
Default
/mnt/user/DMB/Zurg/mnt
Riven symlink mount directory -- ADD THIS DIRECTORY TO Plex/Jellyfin/Emby!Pathrw

Directory for the riven symlinks. This directory is where Plex/Jellyfin/Emby will be looking to see your shows/movies! ADD THIS DIRECTORY TO Plex/Jellyfin/Emby! ADD IT AS A LIBRARY! eg in Plex it would be a library to '/mnt/movies' and '/mnt/shows'

Target
/mnt
Default
/mnt/user/DMB/Riven/mnt
ORIGINVariable

origin URL http://[ip address]:[port] format No trailing slash!

Target
RIVEN_FRONTEND_ENV_ORIGIN
Default
http://0.0.0.0:3000
Real-Debrid API KeyVariable

https://real-debrid.com/apitoken Enter your real-debrid token from the link. Keep this token/key SAFE! Treat it as you would a password. If others obtain it, they can access your real-debrid account.

Target
ZURG_INSTANCES_REALDEBRID_API_KEY
Zilean Data PathPathrw

Ziilean is highly recommended to grab high quality cached torrent lists!

Target
/zilean/app/data
Default
/mnt/user/DMB/zilean/data
Zilean wwwroot pathPathrw

Maybe not required. Added because the container wasn't creating it automatically and causing errors.

Target
/zilean/wwwroot
Default
/mnt/user/DMB/zilean/wwwroot/
PGAdmin data directoryPathrw

Data directory for PGAdmin. Optional tool for managing the PostgreSQL database.

Target
/pgadmin/data
Default
/mnt/user/appdata/DMB/pgadmin/data
cli_debrid DataPathrw

Optional. Similiar to plex_debrid. Read: https://github.com/godver3/cli_debrid

Target
/cli_debrid/data
Default
/mnt/user/appdata/DMB/cli_debrid
Phalanx DatabasePathrw

Optional. Recommended if using cli_debrid. Read: https://github.com/godver3/phalanx_db_hyperswarm

Target
/phalanx_db/data
Default
/mnt/user/appdata/DMB/phalanx_db
Decypharr DataPathrw

Optional. Read: https://github.com/sirrobot01/decypharr

Target
/decypharr
Default
/mnt/user/appdata/DMB/decypharr
PGAdmin 4 PortPorttcp

Optional. Needed for running PGAdmin in non-host network mode. Port for pgAdmin 4. Can be removed if you aren't using pgAdmin. Host port number can be changed if required. Keep container port 5050.

Target
5050
Default
5050
DMB Frontend PortPorttcp

Only needed if running in non-host network. If running in Host network mode, this can be deleted

Target
3005
Default
3005
DMB Log LevelVariable

Set this to DEBUG for extensive info for ex troubleshooting. Can be set to NOTICE for less info in the log.

Target
DMB_LOG_LEVEL
Default
INFO
Riven webUI portPorttcp

This is the port the Riven webUI will show up on.

Target
3000
Default
3000
Decypharr PortPorttcp

This is the port the Decypharr webUI will show up on.

Target
8282
Default
8282
Access Host OS fuseDevice

Path to docker fuse on the unraid host. Has to be included otherwise fuser fails to mount.

Target
/dev/fuse:/dev/fuse:rwm
Default
/dev/fuse:/dev/fuse:rwm
PUIDVariable

Set the system PID. unraid uses nobody:users (99:100). docker should match the OS if possible. recommended to not change this unless you have a reason.

Default
99
PGIDVariable

Set the system PGID. unraid uses nobody:users (99:100). docker should match the OS if possible. recommended to not change this unless you have a reason.

Default
100