A comprehensive media management stack running in Docker containers. This project uses the "Servarr" suite of applications (Radarr, Sonarr, etc.) along with supporting services to create a complete media management solution.
This Docker Compose setup provides a complete media automation stack with:
- VPN Integration: Built-in NordVPN support with proper network isolation
- Download Clients: Both torrent (qBittorrent) and Usenet (SABnzbd) support
- Media Management: Specialized tools for movies, TV shows, music, books, and adult content
- Supporting Services: Indexers, requests, subtitles, authentication, and more
- Docker and Docker Compose installed
- NordVPN subscription (for VPN container)
- Basic understanding of Docker networking
- Storage space for media libraries and downloads
| Service | Description | Default Port |
|---|---|---|
| vpn | NordLynx (NordVPN) container providing VPN connectivity | Various |
| authelia | Authentication and SSO system | 9091 |
| torrents | qBittorrent download client | 8080 |
| newsgroups | SABnzbd Usenet downloader | 6799 |
| indexer | Prowlarr for managing indexers | 9696 |
| movies | Radarr for movie management | 7878 |
| tv | Sonarr for TV show management | 8989 |
| music | Lidarr for music management | 8686 |
| books | Readarr for book/ebook management | 8787 |
| xxx | Whisparr for adult content management | 6969 |
| organizer | Organizr dashboard for all services | 80 |
| requests | Overseerr for media requests | 5055 |
| subtitles | Bazarr for subtitle management | 6767 |
| flaresolverr | Service to bypass Cloudflare protection | 8191 |
| unpacker | Unpackerr for automatic extraction of archives | N/A |
The stack uses two primary networking approaches:
- VPN Network: Download clients (torrents, newsgroups) run through the VPN container
- Proxy Network: Web interfaces exposed via a proxy network (you'll need to connect this to your reverse proxy)
Create a .env file in the same directory as your docker-compose.yml with the following variables:
# Core paths
ConfigRootPath=/path/to/config
DownloadsPath=/path/to/downloads
MoviesPath=/path/to/movies
TVPath=/path/to/tv
MusicPath=/path/to/music
LearningPath=/path/to/learning
XXXPath=/path/to/xxx
SSLCertificatePath=/path/to/certs
# VPN configuration
NordVPNPrivateKey=your_nordvpn_private_key
# Port configuration
QBitTorrentPort=8080
QBitTorrentTCPPorts=45000-45010:45000-45010/tcp
QBitTorrentUDPPorts=45000-45010:45000-45010/udp
SABnzbdPort=6799
AutheliaPort=9091
IndexerPort=9696
MoviesPort=7878
TVPort=8989
MusicPort=8686
BooksPort=8787
XXXPort=6969
OrganizerPort=80
RequestsPort=5055
SubtitlesPort=6767
FlareSolverrPort=8191
# API Keys (for Unpackerr)
SonarrAPIKey=your_sonarr_api_key
RadarrAPIKey=your_radarr_api_key
LidarrAPIKey=your_lidarr_api_key
ReadarrAPIKey=your_readarr_api_key
- All services use PUID/PGID for proper file permissions
- VPN container isolates download traffic
- Consider using Authelia for authentication
- Containers run with
no-new-privileges:truewhere appropriate
docker-compose up -ddocker-compose downdocker-compose pull
docker-compose up -dAfter starting the stack, access the services at:
- Radarr:
http://your-server:7878 - Sonarr:
http://your-server:8989 - Lidarr:
http://your-server:8686 - qBittorrent:
https://your-server:8080 - SABnzbd:
http://your-server:6799 - Organizr:
http://your-server:80 - Overseerr:
http://your-server:5055
For a seamless experience, consider connecting these services to a reverse proxy like Traefik or NGINX.
The docker-compose.yml uses YAML anchors and aliases for common settings:
defaultEnvironment: Standard environment variablescommonOptions: Restart policy and terminal settingsdnsServers: DNS server configurationdependsOnVPN: Dependencies for services that use the VPN
If you have issues with the VPN container:
- Check your NordVPN private key
- Verify port forwarding settings
- Check the logs with
docker logs vpn
For other services, check the respective container logs with docker logs container_name