A self-contained Docker Compose media stack for automated media management using AllDebrid (via RDT-Client) as the primary downloader, alongside Sonarr, Radarr, and Prowlarr. It also includes an optional qBittorrent client routed through Gluetun VPN for traditional torrent downloads.
Run the appropriate bootstrap script for your operating system to automatically create the required directory structure:
- Windows (Command Prompt/PowerShell):
setup.bat
- Linux / macOS / WSL (Bash):
chmod +x setup.sh ./setup.sh
This will bootstrap the following folder layout relative to your workspace root:
├── config/
│ ├── gluetun/
│ ├── prowlarr/
│ ├── qbittorrent/
│ ├── radarr/
│ ├── rdtclient/
│ ├── seerr/
│ └── sonarr/
└── data/
├── downloads/
│ ├── rdt/
│ │ ├── radarr/
│ │ └── sonarr/
│ └── torrents/
└── media/
├── movies/
└── tv/
- To run the primary AllDebrid stack (Sonarr, Radarr, Prowlarr, RDT-Client):
docker compose up -d
- To run the optional traditional torrent client behind VPN (Gluetun + qBittorrent):
- Open your
.envordocker-compose.ymland configure your VPN details in thegluetunservice environment block. - Start the stack with the profile:
docker compose --profile torrent-vpn up -d
- Open your
Once running, access the UIs from your local machine:
| App | Host Port | Internal Port | URL |
|---|---|---|---|
| Sonarr | 8989 |
8989 |
http://localhost:8989 |
| Radarr | 7878 |
7878 |
http://localhost:7878 |
| Prowlarr | 9696 |
9696 |
http://localhost:9696 |
| RDT-Client | 6500 |
6500 |
http://localhost:6500 |
| Seerr | 5055 |
5055 |
http://localhost:5055 |
| FlareSolverr | 8191 |
8191 |
http://localhost:8191 |
| qBittorrent (Optional) | 8080 (Via Gluetun) |
8080 |
http://localhost:8080 |
Note
If you start qbittorrent for the first time, check the container logs to find the temporary Web UI password:
docker logs qbittorrentRDT-Client acts as a fake qBittorrent client. Sonarr/Radarr add torrents to RDT-Client via standard torrent APIs, and RDT-Client feeds them to AllDebrid, downloads the completed files locally, and informs Sonarr/Radarr.
- Open http://localhost:6500.
- Go to Settings > Provider.
- Select AllDebrid as your provider and paste your AllDebrid API Key. Save settings.
- Go to Settings > General or Download Client:
- Download Path:
/data/downloads/rdt - Mapped Path:
/data/downloads/rdt
- Download Path:
- Enable the qBittorrent-compatible API (it is typically enabled by default on port
6500). - Set up a Web UI username and password under RDT-Client credentials for security.
Prowlarr coordinates tracker indexers and pushes them to Sonarr and Radarr. The API keys are automatically set at startup based on your .env configuration.
- Open http://localhost:9696.
- Go to Settings > Apps and click the (+) button.
- Select Sonarr:
- Prowlarr Server:
http://prowlarr:9696 - Sonarr Server:
http://sonarr:8989 - API Key: Use the value of
SONARR_API_KEYconfigured in your.envfile. - Sync Level:
Full SyncorAdd and Remove Only. - Click Test, then Save.
- Prowlarr Server:
- Repeat the same step for Radarr:
- Prowlarr Server:
http://prowlarr:9696 - Radarr Server:
http://radarr:7878 - API Key: Use the value of
RADARR_API_KEYconfigured in your.envfile. - Click Test, then Save.
- Prowlarr Server:
- Go to Indexers, click Add New, select your preferred authorized/public trackers, and Prowlarr will automatically sync them to both Sonarr and Radarr.
- (Optional) Configure FlareSolverr Proxy:
- Go to Settings > Indexers and click the (+) button under Search Link / Proxies.
- Select FlareSolverr:
- Name:
FlareSolverr - Host:
http://flaresolverr:8191 - Click Test, then Save.
- Name:
- Prowlarr will now route cloudflare-protected tracker queries through the FlareSolverr service automatically.
- Open http://localhost:8989.
- Go to Settings > Media Management:
- Click Add Root Folder and select
/data/media/tv. - Toggle Advanced Settings (top) to Shown.
- Ensure Use Hardlinks instead of Copy is enabled.
- Click Add Root Folder and select
- Go to Settings > Download Clients and click (+):
- Select qBittorrent (since RDT-Client emulates it).
- Name:
RDT Client - Host:
rdtclient(Docker service name resolver) - Port:
6500 - Username: (Your RDT-Client Web UI username)
- Password: (Your RDT-Client Web UI password)
- Category:
sonarr - Click Test and Save.
- Open http://localhost:7878.
- Go to Settings > Media Management:
- Click Add Root Folder and select
/data/media/movies. - Ensure Use Hardlinks instead of Copy is enabled.
- Click Add Root Folder and select
- Go to Settings > Download Clients and click (+):
- Select qBittorrent.
- Name:
RDT Client - Host:
rdtclient - Port:
6500 - Username: (Your RDT-Client Web UI username)
- Password: (Your RDT-Client Web UI password)
- Category:
radarr - Click Test and Save.
If you also want a normal client for direct torrenting through VPN:
- In the qBittorrent Web UI, set the default save path to
/data/downloads/torrents. - In Sonarr and Radarr, add another Download Client:
- Select qBittorrent.
- Name:
qBittorrent VPN - Host:
gluetun(Because qBittorrent shares Gluetun's network workspace) - Port:
8080 - Category:
sonarrorradarr - Click Test and Save.
You can search and add media to Sonarr and Radarr, plus monitor active download queues, directly from Telegram:
- Open Telegram and message @BotFather to create a new bot and get an API Token.
- In your
.envfile, setTELEGRAM_BOT_TOKEN=your_token_here. - Rebuild and start the bot service:
docker compose up -d --build telegram-bot
- Find your bot in Telegram, click Start, and send your search queries!
For more details on local configuration, manual testing, and command list, see the Telegram Bot README.
Seerr is the unified successor to Overseerr and Jellyseerr. It allows users to browse and request movies and TV shows, which are automatically sent to Sonarr/Radarr.
- Open http://localhost:5055.
- Choose to sign in using your Plex account or create a local Seerr account.
- During setup, configure your media library connections (Plex, Jellyfin, or Emby) if applicable.
- Add Radarr and Sonarr services under Settings > Services:
- Click Add Service.
- Select Radarr:
- Hostname/IP:
radarr(using Docker DNS resolver) - Port:
7878 - API Key: Use the value of
RADARR_API_KEYfrom your.envfile. - Click Test and Save.
- Hostname/IP:
- Select Sonarr:
- Hostname/IP:
sonarr - Port:
8989 - API Key: Use the value of
SONARR_API_KEYfrom your.envfile. - Click Test and Save.
- Hostname/IP:
- Path Mapping issues: By using a single root mount
- ./data:/dataacross Sonarr, Radarr, and RDT-Client, the containers share a unified view of the files. Downloads go to/data/downloads/rdtand media goes to/data/media/tv. Since they belong to the same mount point, Sonarr and Radarr can perform instant hardlinks or atomic moves without generating file copies or wearing down SSD write limits. - Check logs:
docker compose logs -f sonarr docker compose logs -f rdtclient