Skip to content

Instantly share code, notes, and snippets.

@FalconNL93
Last active May 7, 2025 06:57
Show Gist options
  • Save FalconNL93/dbd9bfe31fadb8d1ebbb7d9abf23a6de to your computer and use it in GitHub Desktop.
Save FalconNL93/dbd9bfe31fadb8d1ebbb7d9abf23a6de to your computer and use it in GitHub Desktop.
Docker download stack
PUID=1000
PGID=1000
TIMEZONE=Europe/Amsterdam
WEBUI_PORT=8080
RADARR_API_KEY=your_radarr_api_key_here
SONARR_API_KEY=your_sonarr_api_key_here
QBITTORRENT_URL=https://qbit.domeinhier.nl:443
QBITTORRENT_USERNAME=your_qbittorrent_username_here
QBITTORRENT_PASSWORD=your_qbittorrent_password_here
services:
vpn:
image: lscr.io/linuxserver/wireguard:latest
container_name: mullvad
cap_add:
- NET_ADMIN
security_opt:
- label:disable
dns:
- 1.1.1.1
- 1.0.0.1
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv6.conf.all.disable_ipv6=1
volumes:
- /data/torrent/data/vpn/wg0.conf:/config/wg_confs/wg0.conf
- /lib/modules:/lib/modules
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "curl -4 -fsS https://icanhazip.com || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 5s
qbit:
network_mode: service:vpn
image: lscr.io/linuxserver/qbittorrent:latest
depends_on:
vpn:
condition: service_healthy
environment:
- WEBUI_PORT=${WEBUI_PORT:-8080}
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TIMEZONE}
volumes:
- /data/torrent/data/qb:/config
- /Storage/hdd0/Downloads:/Storage/hdd0/Downloads
- /Storage/hdd1/Downloads:/Storage/hdd1/Downloads
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
healthcheck:
test:
- CMD
- wget
- -q
- --spider
- http://127.0.0.1:8080/
interval: 5s
timeout: 20s
retries: 10
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TIMEZONE}
volumes:
- /data/torrent/data/sonarr:/config
- /Storage/hdd0/Downloads:/Storage/hdd0/Downloads
- /Storage/hdd1/Downloads:/Storage/hdd1/Downloads
- /Storage/hdd0/Series:/Storage/hdd0/Series
- /Storage/hdd1/Series:/Storage/hdd1/Series
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
expose:
- 8989
restart: unless-stopped
healthcheck:
test:
- CMD
- curl
- -f
- http://127.0.0.1:8989
interval: 2s
timeout: 10s
retries: 15
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=Europe/Amsterdam
volumes:
- /data/torrent/data/radarr:/config
- /Storage/hdd0/Downloads:/Storage/hdd0/Downloads
- /Storage/hdd1/Downloads:/Storage/hdd1/Downloads
- /Storage/hdd0/Movies:/Storage/hdd0/Movies
- /Storage/hdd1/Movies:/Storage/hdd1/Movies
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
expose:
- 7878
restart: unless-stopped
healthcheck:
test:
- CMD
- curl
- -f
- http://127.0.0.1:7878
interval: 2s
timeout: 10s
retries: 15
bazarr:
image: lscr.io/linuxserver/bazarr:latest
container_name: bazarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TIMEZONE}
volumes:
- /data/torrent/data/bazarr:/config
- /Storage/hdd0/Downloads:/Storage/hdd0/Downloads
- /Storage/hdd1/Downloads:/Storage/hdd1/Downloads
- /Storage/hdd0/Movies:/Storage/hdd0/Movies
- /Storage/hdd0/Series:/Storage/hdd0/Series
- /Storage/hdd1/Movies:/Storage/hdd1/Movies
- /Storage/hdd1/Series:/Storage/hdd1/Series
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
expose:
- 6767
restart: unless-stopped
healthcheck:
test:
- CMD
- curl
- -f
- http://127.0.0.1:6767
interval: 2s
timeout: 10s
retries: 15
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TIMEZONE}
volumes:
- /data/torrent/data/prowlarr:/config
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
expose:
- 9696
restart: unless-stopped
healthcheck:
test:
- CMD
- curl
- -f
- http://127.0.0.1:9696
interval: 2s
timeout: 10s
retries: 15
decluttarr:
image: ghcr.io/manimatter/decluttarr:latest
container_name: decluttarr
restart: unless-stopped
environment:
TZ: ${TIMEZONE}
PUID: ${PUID}
PGID: ${PGID}
LOG_LEVEL: INFO
REMOVE_TIMER: 10
REMOVE_FAILED: True
REMOVE_FAILED_IMPORTS: True
REMOVE_METADATA_MISSING: True
REMOVE_MISSING_FILES: True
REMOVE_ORPHANS: True
REMOVE_SLOW: True
REMOVE_STALLED: True
REMOVE_UNMONITORED: True
RUN_PERIODIC_RESCANS: |
{
"SONARR": {"MISSING": true, "CUTOFF_UNMET": true, "MAX_CONCURRENT_SCANS": 3, "MIN_DAYS_BEFORE_RESCAN": 7},
"RADARR": {"MISSING": true, "CUTOFF_UNMET": true, "MAX_CONCURRENT_SCANS": 3, "MIN_DAYS_BEFORE_RESCAN": 7}
}
FAILED_IMPORT_MESSAGE_PATTERNS: |
[
"Not a Custom Format upgrade for existing",
"Not an upgrade for existing"
]
PERMITTED_ATTEMPTS: 3
NO_STALLED_REMOVAL_QBIT_TAG: Don't Kill
MIN_DOWNLOAD_SPEED: 100
RADARR_URL: http://radarr:7878
RADARR_KEY: ${RADARR_API_KEY}
SONARR_URL: http://sonarr:8989
SONARR_KEY: ${SONARR_API_KEY}
QBITTORRENT_URL: ${QBITTORRENT_URL}
QBITTORRENT_USERNAME: ${QBITTORRENT_USERNAME}
QBITTORRENT_PASSWORD: ${QBITTORRENT_PASSWORD}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment