services: gluetun: image: qmcgaw/gluetun:latest container_name: gluetun restart: unless-stopped cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun environment: - VPN_SERVICE_PROVIDER=mullvad - VPN_TYPE=wireguard - WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY} - WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES} - SERVER_CITIES=${SERVER_CITIES} ports: - "8080:8080" volumes: - gluetun_data:/gluetun networks: - proxy healthcheck: test: ["CMD", "/gluetun-entrypoint", "healthcheck"] interval: 30s timeout: 10s retries: 3 start_period: 30s labels: - "traefik.enable=true" # Sonarr - "traefik.http.routers.sonarr.rule=Host(`sonarr.home.jens.pub`)" - "traefik.http.routers.sonarr.entrypoints=websecure" - "traefik.http.routers.sonarr.service=sonarr" - "traefik.http.services.sonarr.loadbalancer.server.port=8989" # Radarr - "traefik.http.routers.radarr.rule=Host(`radarr.home.jens.pub`)" - "traefik.http.routers.radarr.entrypoints=websecure" - "traefik.http.routers.radarr.service=radarr" - "traefik.http.services.radarr.loadbalancer.server.port=7878" # Prowlarr - "traefik.http.routers.prowlarr.rule=Host(`prowlarr.home.jens.pub`)" - "traefik.http.routers.prowlarr.entrypoints=websecure" - "traefik.http.routers.prowlarr.service=prowlarr" - "traefik.http.services.prowlarr.loadbalancer.server.port=9696" # SABnzbd - "traefik.http.routers.sabnzbd.rule=Host(`sabnzbd.home.jens.pub`)" - "traefik.http.routers.sabnzbd.entrypoints=websecure" - "traefik.http.routers.sabnzbd.service=sabnzbd" - "traefik.http.services.sabnzbd.loadbalancer.server.port=8080" sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr network_mode: "service:gluetun" restart: unless-stopped environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} volumes: - sonarr_config:/config - ${TV_PATH}:/tv - ${DOWNLOADS_PATH}:/downloads depends_on: gluetun: condition: service_healthy radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr network_mode: "service:gluetun" restart: unless-stopped environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} volumes: - radarr_config:/config - ${MOVIES_PATH}:/movies - ${DOWNLOADS_PATH}:/downloads depends_on: gluetun: condition: service_healthy prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr network_mode: "service:gluetun" restart: unless-stopped environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} volumes: - prowlarr_config:/config depends_on: gluetun: condition: service_healthy sabnzbd: image: lscr.io/linuxserver/sabnzbd:latest container_name: sabnzbd network_mode: "service:gluetun" restart: unless-stopped environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} - HOST_WHITELIST_ENTRIES=sabnzbd.home.jens.pub volumes: - sabnzbd_config:/config - ${DOWNLOADS_PATH}:/downloads depends_on: gluetun: condition: service_healthy seerr: image: ghcr.io/seerr-team/seerr:latest container_name: seerr init: true restart: unless-stopped environment: - TZ=${TZ} volumes: - ${SEERR_DATA_PATH}:/app/config networks: - proxy labels: - "traefik.enable=true" - "traefik.http.routers.seerr.rule=Host(`seerr.home.jens.pub`)" - "traefik.http.routers.seerr.entrypoints=websecure" - "traefik.http.services.seerr.loadbalancer.server.port=5055" healthcheck: test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1 start_period: 20s timeout: 3s interval: 15s retries: 3 depends_on: gluetun: condition: service_healthy networks: proxy: external: true volumes: gluetun_data: sonarr_config: radarr_config: prowlarr_config: sabnzbd_config: