Media Automation StackΒΆ
Complete media automation solution using Docker containers for downloading, organizing, and managing media content.
β οΈ PrerequisitesΒΆ
Docker Setup Required:
Before deploying this stack, ensure Docker is properly configured in your Proxmox environment:
Proxmox VE Docker - Docker setup for LXC containers
This script will install Docker, Docker Compose, and Portainer for container management.
π Stack OverviewΒΆ
The media automation stack consists of:
Transmission: BitTorrent client for downloading
Prowlarr: Indexer manager and proxy
Radarr: Movie collection manager
Sonarr: TV series collection manager
Bazarr: Subtitle management
Jellyfin: Media server (optional)
π Service ReferencesΒΆ
Radarr (Movie Management): - Docker Hub - LinuxServer Radarr - Guide to Radarr - Rapidseedbox
Transmission (Download Client): - Docker Hub - LinuxServer Transmission
Prowlarr (Indexer Manager): - Docker Hub - LinuxServer Prowlarr - Prowlarr GitHub Repository
Bazarr (Subtitle Management): - Bazarr Setup Guide - Official Wiki
π Quick DeploymentΒΆ
Option 1: Via Portainer (Recommended)
Access Portainer: - Navigate to
http://proxmox-ip:9000- Login with your Portainer credentialsDeploy Stack: - Go to Stacks β Add stack - Name:
media-automation- Copy the following Docker Compose configuration:media-automation-stack.ymlΒΆversion: '3.8' services: transmission: image: lscr.io/linuxserver/transmission:latest container_name: transmission environment: - PUID=1002 - PGID=1002 - TZ=Europe/Lisbon - USER=<username> - PASS=<password> - TRANSMISSION_DOWNLOAD_DIR=/downloads/complete - TRANSMISSION_INCOMPLETE_DIR=/downloads/incomplete - TRANSMISSION_WATCH_DIR=/watch volumes: - /docker/transmission/data:/config - /mnt/nas-library/MULTIMEDIA/Downloads:/downloads - /docker/transmission/watch:/watch ports: - 9091:9091 - 51413:51413 - 51413:51413/udp networks: - media-network restart: unless-stopped prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr environment: - PUID=1002 - PGID=1002 - TZ=Europe/Lisbon volumes: - /docker/prowlarr/config:/config ports: - 9696:9696 networks: - media-network restart: unless-stopped radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr environment: - PUID=1002 - PGID=1002 - TZ=Europe/Lisbon volumes: - /mnt/nas-library/MULTIMEDIA/movies:/movies:rw - /docker/radarr/config:/config:rw # Shared downloads folder with Transmission - /mnt/nas-library/MULTIMEDIA/Downloads:/downloads:rw ports: - 7878:7878 networks: - media-network depends_on: - transmission - prowlarr healthcheck: test: curl -f http://localhost:7878/ || exit 1 restart: on-failure:5 bazarr: image: lscr.io/linuxserver/bazarr:latest container_name: bazarr environment: - PUID=1002 - PGID=1002 - TZ=Europe/Lisbon volumes: - /docker/bazarr/config:/config # Shared movies folder with Radarr (now on NAS) - /mnt/nas-library/MULTIMEDIA/movies:/movies:rw ports: - 6767:6767 networks: - media-network depends_on: - radarr restart: unless-stopped networks: media-network: driver: bridge
Click Deploy the stack
Option 2: Via Command Line
Deploy Stack:
cd /opt/docker/media-stack docker-compose -f ../configs/docker-compose/media-automation-stack.yml up -d
Verify Services:
docker-compose ps
Access Web Interfaces:
Transmission:
http://proxmox-ip:9091Prowlarr:
http://proxmox-ip:9696Radarr:
http://proxmox-ip:7878Bazarr:
http://proxmox-ip:6767
π Directory StructureΒΆ
Required directories on Proxmox host:
# Create user for media services
adduser arr-stack --uid 1002 --disabled-password
# Docker configuration directories (on container filesystem)
mkdir -p /docker/{transmission/{data,watch},prowlarr/config,radarr/config,bazarr/config}
# Docker configuration directories (from host PROXMOX for LXC containers)
pct mount 23001
# mounted CT 23001 in '/var/lib/lxc/23001/rootfs'
chown -R 1002:1002 /var/lib/lxc/23001/rootfs/docker/
pct unmount 23001
# Media directories (on NAS via iSCSI mount)
mkdir -p /mnt/nas-library/MULTIMEDIA/{movies,Downloads/{complete,incomplete}}
# Set permissions
chown -R 1002:1002 /docker/
chown -R 1002:1002 /mnt/nas-library/MULTIMEDIA/
βοΈ Configuration StepsΒΆ
Step 1: Configure ProwlarrΒΆ
Access Prowlarr web interface
Add Indexers: Settings β Indexers β Add Indexer - Public: 1337x, The Pirate Bay, RARBG - Private: Add your private tracker credentials
Connect to Radarr: Settings β Apps β Add Application - Type: Radarr - Server:
http://radarr:7878- API Key: Copy from Radarr Settings β General
Step 2: Configure RadarrΒΆ
Download Client: Settings β Download Clients - Add Transmission:
http://transmission:9091Media Management: Settings β Media Management - Root Folder:
/movies- Enable movie renamingQuality Profiles: Configure preferred quality settings
Step 3: Configure BazarrΒΆ
Languages: Settings β Languages - Add preferred subtitle languages
Connect to Radarr: Settings β Radarr - Address:
http://radarr:7878- API Key: Same as Prowlarr configurationProviders: Settings β Providers - Enable OpenSubtitles, Subscene
π Workflow ProcessΒΆ
Add Movie β Radarr web interface
Search β Prowlarr provides indexer sources
Download β Radarr sends to Transmission
Process β Radarr moves completed files
Subtitles β Bazarr downloads automatically
Ready β Media available for consumption
π§ Maintenance TasksΒΆ
Regular MaintenanceΒΆ
Weekly: Check download queue and failed downloads
Monthly: Update indexer configurations
Quarterly: Review quality profiles and storage usage
TroubleshootingΒΆ
Check logs:
docker-compose logs [service-name]Restart services:
docker-compose restart [service-name]Update containers:
docker-compose pull && docker-compose up -d
π MonitoringΒΆ
Key metrics to monitor:
Download speeds and queue status
Storage usage and available space
Service health and uptime
Failed downloads and errors
Configuration Files:
media-automation-stack.yml - Complete Docker Compose stack configuration