Skip to content

Instantly share code, notes, and snippets.

@AndyIsHereBoi
Last active March 9, 2026 02:41
Show Gist options
  • Select an option

  • Save AndyIsHereBoi/680598adcce686565617311d73108f28 to your computer and use it in GitHub Desktop.

Select an option

Save AndyIsHereBoi/680598adcce686565617311d73108f28 to your computer and use it in GitHub Desktop.
services:
# VPN
gluetun:
image: qmcgaw/gluetun
container_name: gluetun
restart: always
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
- 6881:6881
- 6881:6881/udp
- ${QBITTORRENT_PORT}:${QBITTORRENT_PORT}
- ${PROWLARR_PORT}:9696
- ${SEERR_PORT}:${SEERR_PORT}
- ${SONARR_PORT}:8989
- ${RADARR_PORT}:7878
- ${CLEANUPARR_PORT}:${CLEANUPARR_PORT}
volumes:
- ~/Auto-Media-Server/gluetun:/gluetun
environment:
- VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${WG_PRIVATE_KEY}
- WIREGUARD_ADDRESSES=${WG_ADDRESSES}
- WIREGUARD_PUBLIC_KEY=${WG_PUBLIC_KEY}
- WIREGUARD_ENDPOINT_IP=${WG_ENDPOINT_IP}
- WIREGUARD_ENDPOINT_PORT=${WG_ENDPOINT_PORT}
- WIREGUARD_PERSISTENT_KEEPALIVE=0
- DNS=${WG_DNS}
- TZ=${TZ}
- UPDATER_PERIOD=24h
- FIREWALL_OUTBOUND_SUBNETS=${WG_FIREWALL_OUTBOUND_SUBNETS}
# DOWNLOADER
qbittorrent:
image: ghcr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
network_mode: "service:gluetun"
restart: always
depends_on:
- gluetun
volumes:
- ~/Auto-Media-Server/qbittorrent:/config
- ~/Auto-Media-Server/downloads:/downloads
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ}
- WEBUI_PORT=${QBITTORRENT_PORT}
# INDEXER
prowlarr:
image: ghcr.io/linuxserver/prowlarr:latest
container_name: prowlarr
network_mode: "service:gluetun"
restart: unless-stopped
depends_on:
- gluetun
volumes:
- ~/Auto-Media-Server/prowlarr/config:/config
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ}
# TV
sonarr:
image: ghcr.io/linuxserver/sonarr:latest
container_name: sonarr
network_mode: "service:gluetun"
restart: unless-stopped
depends_on:
- gluetun
volumes:
- ~/Auto-Media-Server/sonarr/config:/config
- /mnt/Jellyfin/Shows:/tv
- ~/Auto-Media-Server/downloads:/downloads
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
# MOVIES
radarr:
image: ghcr.io/linuxserver/radarr:latest
container_name: radarr
network_mode: "service:gluetun"
restart: unless-stopped
depends_on:
- gluetun
volumes:
- ~/Auto-Media-Server/radarr/config:/config
- /mnt/Jellyfin/Movies:/movies
- ~/Auto-Media-Server/downloads:/downloads
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
# MEDIA REQUEST MANAGEMENT
seerr:
image: ghcr.io/seerr-team/seerr:latest
container_name: seerr
network_mode: "service:gluetun"
restart: unless-stopped
user: "0:0"
depends_on:
- gluetun
volumes:
- ~/Auto-Media-Server/jellyseerr:/app/config
environment:
- TZ=${TZ}
- LOG_LEVEL=debug
- PORT=${SEERR_PORT}
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:${SEERR_PORT}/api/v1/status || exit 1
start_period: 20s
timeout: 3s
interval: 15s
retries: 3
# CLEANUP
cleanuparr:
image: ghcr.io/cleanuparr/cleanuparr:latest
container_name: cleanuparr
network_mode: "service:gluetun"
restart: unless-stopped
depends_on:
- gluetun
volumes:
- ~/Auto-Media-Server/cleanuparr:/config
- ~/Auto-Media-Server/downloads:/downloads
environment:
- PORT=${CLEANUPARR_PORT}
- BASE_PATH=
- PUID=1000
- PGID=1000
- UMASK=022
- TZ=${TZ}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:${CLEANUPARR_PORT}/health"]
interval: 30s
timeout: 10s
start_period: 30s
retries: 3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment