clustered-fucks/compose-files/download-stack/download-stack/docker-compose.yml
Maddox ecac3c8949 Add compose file management infrastructure
- collect-compose.yml: Fetches all compose files from docker_hosts
- collect-env-templates.yml: Creates .env.example with secrets redacted
- deploy-compose.yml: Pushes compose files to hosts (with optional restart)
- diff-compose.yml: Shows differences before deploying

Collected 23 compose files from 7 hosts:
- replicant: 12 stacks (arr-stack, mealie, portainer, etc)
- docker666: 4 stacks (unifi, gluetun, uptime, utils)
- databases: 3 stacks (postgres, forgejo, utils)
- download-stack: 2 stacks (download-stack, utils)
- media-transcode: 1 stack (utils)
- network-services: 1 stack (utils)
- immich: 1 stack (utils)
2026-01-23 19:11:23 +00:00

119 lines
3.3 KiB
YAML

services:
gluetun:
image: qmcgaw/gluetun:v3
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
environment:
- VPN_SERVICE_PROVIDER=protonvpn
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- SERVER_COUNTRIES=United States
- SERVER_CITIES=Secaucus,Chicago,New York
- TZ=America/New_York
- PUID=1000
- PGID=1000
- HTTPPROXY=on
- HTTPPROXY_LISTENING_ADDRESS=:38888
- HTTPPROXY_STEALTH=on
- BLOCK_ADS=on
- BLOCK_MALICIOUS=on
- HTTP_CONTROL_SERVER_ADDRESS=:8000
ports:
- 33000:3000 # ruTorrent web interface (via Gluetun)
- 38888:38888 # Gluetun HTTP proxy server
- 38443:443 # HTTPS/SSL traffic passthrough
- 35000:5000 # Additional application port
- 51413:51413 # ruTorrent BitTorrent incoming connections
- 6789:6789 # NZBGet web interface (via Gluetun)
- 8999:80 # HTTP traffic/alternative web interface port
- 38000:8000 # Gluetun control server API
- 38388:8388 # Shadowsocks proxy (TCP/UDP) - currently disabled
volumes:
- ./gluetun:/gluetun
networks:
- download
restart: unless-stopped
deploy:
resources:
limits:
cpus: '1.0'
memory: 512M
reservations:
memory: 128M
labels:
- "autoheal=true"
- "com.centurylinklabs.watchtower.enable=true"
- "homepage.group=Downloads"
- "homepage.name=Gluetun"
- "homepage.icon=gluetun.png"
- "homepage.widget.type=gluetun"
- "homepage.widget.url=http://192.168.1.122:38000"
nzbget:
image: lscr.io/linuxserver/nzbget:latest
container_name: nzbget
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- ./nzbget:/config
- /mnt/nas/downloads/nzbget:/downloads
- /mnt/nas/media:/media
network_mode: service:gluetun
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
memory: 256M
depends_on:
- gluetun
restart: unless-stopped
labels:
- "autoheal=true"
- "com.centurylinklabs.watchtower.enable=true"
- "homepage.group=Downloads"
- "homepage.name=NZBGet"
- "homepage.icon=nzbget.png"
- "homepage.href=https://nzb.3ddbrewery.com"
- "homepage.widget.type=nzbget"
- "homepage.widget.url=http://192.168.1.122:6789"
rutorrent:
image: lscr.io/linuxserver/rutorrent:latest
container_name: rutorrent
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- ./rutorrent:/config
- /mnt/nas/downloads/rutorrent:/downloads
- /mnt/nas/media:/media
network_mode: service:gluetun
depends_on:
- gluetun
restart: unless-stopped
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
memory: 256M
labels:
- "autoheal=true"
- "com.centurylinklabs.watchtower.enable=true"
- "homepage.group=Downloads"
- "homepage.name=ruTorrent"
- "homepage.icon=rutorrent.png"
- "homepage.href=https://rutorrent.3ddbrewery.com"
networks:
download:
external: true