services: jellyfin: image: lscr.io/linuxserver/jellyfin:latest container_name: jellyfin environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} volumes: - /mnt/e/library:/config - ${TVSHOWS}:/data/tvshows - ${MOVIES}:/data/movies ports: - "8096:8096" - "8920:8920" - "7359:7359/udp" - "1900:1900/udp" restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8096/health"] start_period: 30s timeout: 5s interval: 30s retries: 3 networks: - lingen jellyseerr: image: ghcr.io/fallenbagel/jellyseerr:latest init: true container_name: jellyseerr environment: - LOG_LEVEL=debug - TZ=${TZ} - PORT=5055 ports: - "5055:5055" volumes: - ./JellySeerr/config:/app/config 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 restart: unless-stopped networks: - lingen sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} volumes: - ./Sonarr/data:/config - ./Sonarr/downloads:/downloads - ${TVSHOWS}:/data/tvshows - ${MOVIES}:/data/movies - ${DOWNLOADS}:/data/downloads ports: - "8989:8989" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8989/ping"] start_period: 30s timeout: 5s interval: 30s retries: 3 restart: unless-stopped networks: - lingen prowlarr: container_name: prowlarr image: ghcr.io/hotio/prowlarr ports: - "9696:9696" environment: - PUID=${PUID} - PGID=${PGID} - UMASK=002 - TZ=${TZ} volumes: - ./Prowlarr/config:/config healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9696/api/v1/health"] start_period: 30s timeout: 5s interval: 30s retries: 3 networks: - lingen radarr: container_name: radarr image: ghcr.io/hotio/radarr ports: - "7878:7878" environment: - PUID=${PUID} - PGID=${PGID} - UMASK=002 - TZ=${TZ} volumes: - ./Radarr/config:/config - ./Radarr/data:/data - ./Radarr/downloads:/downloads - ${TVSHOWS}:/data/tvshows - ${MOVIES}:/data/movies - ${DOWNLOADS}:/data/downloads healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7878/ping"] start_period: 30s timeout: 5s interval: 30s retries: 3 networks: - lingen flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest container_name: flaresolverr environment: - LOG_LEVEL=${LOG_LEVEL:-info} - LOG_HTML=${LOG_HTML:-false} - CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none} - TZ=${TZ} ports: - ${PORT:-8191}:8191 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8191"] start_period: 30s timeout: 5s interval: 30s retries: 3 restart: unless-stopped networks: - lingen gluetun-webui: image: scuzza/gluetun-webui:latest container_name: gluetun-webui ports: - "127.0.0.1:3002:3000" environment: - GLUETUN_CONTROL_URL=http://gluetun:8000 - TRUST_PROXY=true # - GLUETUN_API_KEY=${GLUETUN_API_KEY} networks: - lingen restart: unless-stopped read_only: true tmpfs: - /tmp security_opt: - no-new-privileges:true cap_drop: - ALL healthcheck: test: ["CMD-SHELL", "wget -q -O- http://localhost:3000/api/health || exit 1"] interval: 30s timeout: 5s start_period: 10s retries: 3 gluetun: image: qmcgaw/gluetun 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=${SERVER_COUNTRIES} - API_LOG_LEVEL=info volumes: - /home/shaun/Projects/JellyFin/Gluetun/auth:/gluetun/auth ports: - "51820:51820/udp" - "8000:8000" - "8080:8080" # Add qBittorrent WebUI port - "6881:6881" # Add qBittorrent listening port - "6881:6881/udp" # Add qBittorrent listening port UDP healthcheck: test: ["CMD-SHELL", "wget -q -O- http://localhost:8000/v1/vpn/status || exit 1"] start_period: 30s timeout: 5s interval: 30s retries: 3 networks: - lingen restart: unless-stopped qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest container_name: qbittorrent environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} - WEBUI_PORT=8080 volumes: - ./Radarr/config:/config - ${TVSHOWS}:/data/tvshows - ${MOVIES}:/data/movies - ${DOWNLOADS}:/data/downloads healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080"] start_period: 30s timeout: 5s interval: 30s retries: 3 restart: unless-stopped network_mode: "container:gluetun" depends_on: gluetun: condition: service_healthy networks: lingen: driver: bridge