Skip to content

Media Stack

Docker Compose (docker-compose.yaml)

services:
  gluetun:
    image: qmcgaw/gluetun
    container_name: gluetun
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    ports:
      - 6881:6881
      - 6881:6881/udp
      - 8112:8112 # deluge
    volumes:
      - ${CONFIG_DIR}/gluetun:/gluetun
    environment:
      - VPN_SERVICE_PROVIDER=private internet access
      - OPENVPN_USER=${VPN_USER}
      - OPENVPN_PASSWORD=${VPN_PASS}
      - SERVER_REGIONS=${VPN_REGION}
      - PORT_FORWARD_ONLY=true
      - VPN_PORT_FORWARDING=on
      - VPN_PORT_FORWARDING_STATUS_FILE=/gluetun/forwarded_port

  deluge:
    image: lscr.io/linuxserver/deluge:latest
    container_name: deluge
    restart: unless-stopped
    network_mode: "service:gluetun"
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - DELUGE_LOGLEVEL=error #optional
    volumes:
      - ${CONFIG_DIR}/gluetun:/pia:ro
      - ${CONFIG_DIR}/deluge:/config
      - ${DL_DIR}:/data/downloads
    depends_on:
      gluetun:
        condition: service_healthy

  prowlarr: #default port is 9696
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    restart: unless-stopped
    ports:
      - 9696:9696
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ${CONFIG_DIR}/prowlarr:/config

  radarr: #default port is 7878
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    restart: unless-stopped
    ports:
      - 7878:7878
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ${CONFIG_DIR}/radarr:/config
      - ${DATA_DIR}:/data

  radarr-anime: #default port is 7878
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr-anime
    restart: unless-stopped
    ports:
      - 8787:7878
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ${CONFIG_DIR}/radarr-anime:/config
      - ${DATA_DIR}:/data

  sonarr: #default port is 8989
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    restart: unless-stopped
    ports:
      - 8989:8989
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ${CONFIG_DIR}/sonarr:/config
      - ${DATA_DIR}:/data

  sonarr-anime: #default port is 8989
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr-anime
    restart: unless-stopped
    ports:
      - 9898:8989
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ${CONFIG_DIR}/sonarr-anime:/config
      - ${DATA_DIR}:/data

  recyclarr:
    image: ghcr.io/recyclarr/recyclarr
    container_name: recyclarr
    restart: unless-stopped
    user: ${PUID}:${PGID}
    volumes:
      - ${CONFIG_DIR}/recyclarr:/config
    environment:
      - TZ=${TZ}

Environment File (.env)

PUID=1000
PGID=1000
TZ=path/to/timezone
VPN_USER=vpn_user
VPN_PASS=vpn_pass
VPN_REGION=vpn_region
CONFIG_DIR=path/to/config/dir
DL_DIR=path/to/dl/dir
MEDIA_DIR=path/to/media/dir