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:

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)

  1. Access Portainer: - Navigate to http://proxmox-ip:9000 - Login with your Portainer credentials

  2. Deploy 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

  1. Deploy Stack:

    cd /opt/docker/media-stack
    docker-compose -f ../configs/docker-compose/media-automation-stack.yml up -d
    
  2. Verify Services:

    docker-compose ps
    

Access Web Interfaces:

  • Transmission: http://proxmox-ip:9091

  • Prowlarr: http://proxmox-ip:9696

  • Radarr: http://proxmox-ip:7878

  • Bazarr: 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ΒΆ

  1. Access Prowlarr web interface

  2. Add Indexers: Settings β†’ Indexers β†’ Add Indexer - Public: 1337x, The Pirate Bay, RARBG - Private: Add your private tracker credentials

  3. Connect to Radarr: Settings β†’ Apps β†’ Add Application - Type: Radarr - Server: http://radarr:7878 - API Key: Copy from Radarr Settings β†’ General

Step 2: Configure RadarrΒΆ

  1. Download Client: Settings β†’ Download Clients - Add Transmission: http://transmission:9091

  2. Media Management: Settings β†’ Media Management - Root Folder: /movies - Enable movie renaming

  3. Quality Profiles: Configure preferred quality settings

Step 3: Configure BazarrΒΆ

  1. Languages: Settings β†’ Languages - Add preferred subtitle languages

  2. Connect to Radarr: Settings β†’ Radarr - Address: http://radarr:7878 - API Key: Same as Prowlarr configuration

  3. Providers: Settings β†’ Providers - Enable OpenSubtitles, Subscene

πŸ”„ Workflow ProcessΒΆ

  1. Add Movie β†’ Radarr web interface

  2. Search β†’ Prowlarr provides indexer sources

  3. Download β†’ Radarr sends to Transmission

  4. Process β†’ Radarr moves completed files

  5. Subtitles β†’ Bazarr downloads automatically

  6. 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: