--- networks: traefik: external: true media: name: media volumes: jellyseerr_config: transmission_config: prowlarr_config: radarr_config: sonarr_config: wizarr_config: services: transmission-openvpn: image: haugene/transmission-openvpn:5.3.1 container_name: transmission-openvpn cap_add: - NET_ADMIN networks: - traefik - media volumes: - transmission_config:/config - ${MEDIA_DIRECTORY:-/mnt/media}/torrents:${MEDIA_DIRECTORY:-/mnt/media}/torrents environment: - PUID=${PUID:-8796} - PGID=${PGID:-3005} - OPENVPN_PROVIDER=${OPENVPN_PROVIDER:-SURFSHARK} # - OPENVPN_CONFIG=us-sea.prod.surfshark.com_udp # The startup script fails when cloning and checking out the configuration # repo for some reason. Passing a URL to skip that seems to work though. - OPENVPN_CONFIG_URL=${OPENVPN_CONFIG_URL:-https://raw.githubusercontent.com/haugene/vpn-configs-contrib/refs/heads/main/openvpn/surfshark/us-lax.prod.surfshark.com_udp.ovpn} - OPENVPN_USERNAME=${OPENVPN_USERNAME} - OPENVPN_PASSWORD=${OPENVPN_PASSWORD} # If OpenVPN stops, container will stop and then restart option # below will bring it back to life. # Surfshark seems to switch IPs frequently (as of 9/8/2023) so # this is helpful. - OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60 - TRANSMISSION_DOWNLOAD_DIR=${MEDIA_DIRECTORY:-/mnt/media}/torrents/completed - TRANSMISSION_INCOMPLETE_DIR=${MEDIA_DIRECTORY:-/mnt/media}/torrents/incomplete - TRANSMISSION_WEB_UI=flood-for-transmission - TZ=America/Vancouver - LOCAL_NETWORK=10.0.0.0/16 restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.transmission_openvpn.rule=Host(`${TRANSMISSION_HOST:-tovpn.jumper.mnke.org}`)" - "traefik.http.routers.transmission_openvpn.entrypoints=websecure" - "traefik.http.routers.transmission_openvpn.tls=true" - "traefik.http.services.transmission_openvpn.loadbalancer.server.port=9091" - "traefik.docker.network=traefik" deploy: resources: limits: cpus: '0.50' memory: 512M reservations: cpus: '0.25' memory: 64M prowlarr: image: lscr.io/linuxserver/prowlarr:1.30.2 container_name: prowlarr environment: - PUID=${PUID:-8796} - PGID=${PGID:-3005} - TZ=America/Vancouver networks: - media - traefik volumes: - prowlarr_config:/config restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.prowlarr.rule=Host(`${PROWLARR_HOST:-prowlarr.jumper.mnke.org}`)" - "traefik.http.routers.prowlarr.entrypoints=websecure" - "traefik.http.routers.prowlarr.tls=true" - "traefik.http.services.prowlarr.loadbalancer.server.port=9696" - "traefik.docker.network=traefik" deploy: resources: limits: cpus: '0.5' memory: 256M reservations: cpus: '0.1' memory: 64M radarr: image: lscr.io/linuxserver/radarr:5.18.4 container_name: radarr environment: - PUID=${PUID:-8796} - PGID=${PGID:-3005} - TZ=America/Vancouver networks: - media - traefik volumes: - radarr_config:/config - ${MEDIA_DIRECTORY:-/mnt/media}:${MEDIA_DIRECTORY:-/mnt/media} depends_on: transmission-openvpn: condition: service_healthy restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.radarr.rule=Host(`${RADARR_HOST:-radarr.jumper.mnke.org}`)" - "traefik.http.routers.radarr.entrypoints=websecure" - "traefik.http.routers.radarr.tls=true" - "traefik.http.services.radarr.loadbalancer.server.port=7878" - "traefik.docker.network=traefik" deploy: mode: replicated resources: limits: cpus: '0.5' memory: 512M reservations: cpus: '0.1' memory: 64M sonarr: image: lscr.io/linuxserver/sonarr:4.0.12 container_name: sonarr environment: - PUID=${PUID:-8796} - PGID=${PGID:-3005} - TZ=America/Vancouver networks: - media - traefik volumes: - sonarr_config:/config - ${MEDIA_DIRECTORY:-/mnt/media}:${MEDIA_DIRECTORY:-/mnt/media} depends_on: transmission-openvpn: condition: service_healthy restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.sonarr.rule=Host(`${SONARR_HOST:-sonarr.jumper.mnke.org}`)" - "traefik.http.routers.sonarr.entrypoints=websecure" - "traefik.http.routers.sonarr.tls=true" - "traefik.http.services.sonarr.loadbalancer.server.port=8989" - "traefik.docker.network=traefik" deploy: resources: limits: cpus: '0.5' memory: 512M reservations: cpus: '0.1' memory: 64M flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:v3.3.21 container_name: flaresolverr environment: - LOG_LEVEL=${FLARESOLVERR_LOG_LEVEL:-info} - LOG_HTML=${FLARESOLVERR_LOG_HTML:-false} - CAPTCHA_SOLVER=${FLARESOLVERR_CAPTCHA_SOLVER:-none} - TZ=America/Vancouver networks: - media # ports: # - "${PORT:-8191}:8191" restart: unless-stopped deploy: resources: limits: cpus: '0.25' memory: 256M reservations: cpus: '0.1' memory: 64M jellyseerr: image: fallenbagel/jellyseerr:2.3.0 container_name: jellyseerr environment: # - LOG_LEVEL=debug - TZ=America/Vancouver networks: - media - traefik volumes: - jellyseerr_config:/app/config # This does have a soft dependency on radarr and sonarr, but I don't want # to wait for it because when rolling out updates, I want to have as little # downtime on jellyseerr as possible # depends_on: # radarr: # condition: service_started # sonarr: # condition: service_started restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.jellyseerr.rule=Host(`${JELLYSEERR_HOST:-seerr.jumper.mnke.org}`)" - "traefik.http.routers.jellyseerr.entrypoints=websecure" - "traefik.http.routers.jellyseerr.tls=true" - "traefik.http.services.jellyseerr.loadbalancer.server.port=5055" - "traefik.docker.network=traefik" deploy: resources: limits: cpus: '0.5' memory: 512M reservations: cpus: '0.1' memory: 64M wizarr: image: tonyd33/wizarr container_name: wizarr environment: # This is intentionally not WIZARR_HOST. I'm still in the process of # migrating everything into mnke.org domain. - 'APP_URL=https://wizarr.tonydu.me' - DISABLE_BUILTIN_AUTH=false - TZ=America/Vancouver volumes: - wizarr_config:/data/database networks: - media - traefik restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.wizarr.rule=Host(`${WIZARR_HOST:-wizarr.jumper.mnke.org}`)" - "traefik.http.routers.wizarr.entrypoints=websecure" - "traefik.http.routers.wizarr.tls=true" - "traefik.http.services.wizarr.loadbalancer.server.port=5690" - "traefik.docker.network=traefik"