dmb-fastapi

dmb-fastapi

Docker app from UnJustice's Repository

Overview

THIS PROJECT IS NO LONGER RELEVANT AS OF MARCH 2025!!!THE FASTAPI BRANCH WAS MERGED INTO THE MAIN BRANCH! IF YOU WANT TO USE DMB, USE THE DMB MAIN BRANCH! NOTE THIS IS AN EXPERIMENTAL BRANCH OF DEBRID MEDIA BRIDGE--EVEN MORE SO THAN THE OTHER DMB BUILD--YOU HAVE BEEN MADE AWARE Second Note: This dmb-fastapi xml template was put together by discord user Portgas D. Ace. This has been posted to my Unraid template GitHub repo with their permission (with some tweaks by me) Third Note: If you need help or support, the number 1 best place to seek it is the discord channel linked in the support section of this template This is just a quick template I threw together in order to try to help you other Unraid users to try out the FastAPI release. Massive thanks the DMB creator I-AM-PUID-0 as well as massive thanks to the devs of Riven & Yowmamasita's Zurg. I also thank Unlearned6688 for his Unraid templates as it made this one easier for me to create. https://github.com/Unlearned6688/Unraid-templates/ DMB AIO wiki: https://github.com/I-am-PUID-0/DMB/wiki FastAPI branch repository: https://github.com/I-am-PUID-0/DMB/tree/FastAPI Links to source repositories for the underlying projects: https://github.com/rivenmedia/riven https://github.com/debridmediamanager/zurg-testing https://rclone.org/docs/ https://www.postgresql.org/ As stated I threw this together in order to try to help out. I am no expert so don't harpoon me if something is less than perfect. If you have questions I'm in the discord @Portgas D. Ace

🎬 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-fastapi on Unraid in a few clicks.

Find dmb-fastapi 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-fastapi Review the template variables and paths Click Install

Download Statistics

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

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
iampuid0/dmb:FastAPI
Last Updated2025-08-27
First Seen2025-01-19

Runtime arguments

Web UI
http://[IP]:[PORT:3000]
Network
bridge
Shell
sh
Privileged
false
Extra Params
-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
Value
America/New_York
rclone config directoryPathrw

Directory where your rclone config file will be stored.

Target
/config
Default
/mnt/user/appdata/dmb-fastapi/config
Value
/mnt/user/appdata/dmb-fastapi/config
log directoryPathrw

Directory where your DMB logs will be found.

Target
/log
Default
/mnt/user/appdata/dmb-fastapi/log
Value
/mnt/user/appdata/dmb-fastapi/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-fastapi/zurg/RD
Value
/mnt/user/appdata/dmb-fastapi/zurg/RD
Riven backend directoryPathrw

Directory for the riven backend.

Target
/riven/backend/data
Default
/mnt/user/appdata/dmb-fastapi/riven/data
Value
/mnt/user/appdata/dmb-fastapi/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. The container path in Plex can be named how you wish. DO NOT ADD THIS AS A LIBRARY! ONLY ADD THE PATH TO PLEX! THAT'S ALL!

Target
/data
Default
/mnt/user/DMB/dmb-fastapi/zurg/mnt
Value
/mnt/user/DMB/dmb-fastapi/zurg/mnt
Riven symlink mount directory -- ADD THIS DIRECTORY TO Plex/Jellyfin/Emby!Pathrw
Target
/mnt
Default
/mnt/user/DMB/dmb-fastapi/riven/mnt
Value
/mnt/user/DMB/dmb-fastapi/riven/mnt
PostgresSQL/data directoryPathrw

Directory for the postgreSQL database files used with DMB.

Target
/postgres_data
Default
/mnt/user/appdata/dmb-fastapi/postgres/data
Value
/mnt/user/appdata/dmb-fastapi/postgres/data
pgadmin/data directoryPathrw

pgAdmin is used to provide a GUI to explore databases in postgreSQL

Target
/pgadmin/data
Default
/mnt/user/appdata/dmb-fastapi/pgadmin/data
Value
/mnt/user/appdata/dmb-fastapi/pgadmin/data
Zilean/app/data directoryPathrw

Zilean is a scraper used to find good quality cached media. Optional. Can be removed if not used.

Target
/zilean/app/data
Default
/mnt/user/DMB/zilean/data
Value
/mnt/user/DMB/zilean/data
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
DEBUG
Value
DEBUG
RealDebrid API token:Variable

Enter your RealDebrid API token. Get it here: https://real-debrid.com/apitoken

Target
ZURG_INSTANCES_REALDEBRID_API_KEY
Default
YOUR-REALDEBRID-API-KEY-HERE
Value
YOUR-REALDEBRID-API-KEY-HERE
ORIGIN (your machine/host IP)Variable

Set to your machine/host IP ex. http://192.168.1.0:3000 else you'll get cross-site POST error

Target
ORIGIN
Default
http://0.0.0.0:3000
Value
http://YOUR-IP-ADDRESS:3000
GITHUB Token for private repo access:Variable

Enter your Github token for repo access. This is only relevant if you're a Yowmamasita patreon supporter and have access to the private Zurg repo otherwise remove variable.

Target
DMB_GITHUB_TOKEN
Default
YOUR-GITHUB-TOKEN-HERE
Value
YOUR-GITHUB-TOKEN-HERE
Specific Zurg repoVariable

This specifies which branch of zurg to use. If you subscribe via Patreon, keep this set as zurg. If you don't subscribe, remove this variable.

Target
ZURG_INSTANCES_REALDEBRID_REPO_NAME
Default
zurg
Value
zurg
Yes or No variable to use specific versionVariable

Is Specific Zurg Version applied? If yes, then set to true. Can remove otherwise

Target
ZURG_INSTANCES_REALDEBRID_RELEASE_VERSION_ENABLED
Default
true
Value
true
Specific Zurg VersionVariable

2024.12.26.0027-nightly is the latest version for private Zurg repo. If non patreon supporter latest is: v0.9.3-final This is for pinning specific releases - You can remove this if you just want latest

Target
ZURG_INSTANCES_REALDEBRID_RELEASE_VERSION
Default
2024.12.26.0027-nightly
Value
2024.12.26.0027-nightly
Access Host OS fuseDevice

has to be included otherwise fuser fails to mount.

Target
/dev/fuse:/dev/fuse:rwm
Value
/dev/fuse:/dev/fuse:rwm
Riven webGUI portPorttcp

3000 by default

Target
3000
Value
3000
DMB FRONTEND PORTPorttcp

Maybe not required. This port is used to access the new json editing functions in fastapi. Your webUI URL will be http://your-server-ip:3005

Target
3005
Value
3005
PUIDVariable

set the system PID. unraid uses nobody:users (99:100). docker should match the OS if possible.

Default
99
Value
99
PGIDVariable

set the system PID. unraid uses nobody:users (99:100). docker should match the OS if possible.

Default
100
Value
100