version: "3.1" services: gluetun: image: qmcgaw/gluetun container_name: gluetun cap_add: - NET_ADMIN ports: - 3000:3000 # chromium - 9091:9091 # transmission - 8191:8191 # flaresolverr - 7878:7878 # radarr - 8989:8989 # sonarr environment: - VPN_SERVICE_PROVIDER=custom - VPN_TYPE=wireguard - VPN_PORT_FORWARDING=on - VPN_PORT_FORWARDING_PROVIDER=protonvpn env_file: - .env restart: unless-stopped networks: - proxy transmission: # image: linuxserver/transmission:version-3.00-r8 image: linuxserver/transmission:version-4.0.5-r3 container_name: transmission environment: - PUID=1001 - PGID=1001 - TZ=America/New_York volumes: - ./transmission-config:/config - ./transmission-watch:/watch - /media/downloads:/media/downloads # /downloads/movies in transmission webUI settings # need to adjust port updater script based on paths network_mode: service:gluetun depends_on: gluetun: condition: service_healthy restart: unless-stopped chromium: image: linuxserver/chromium container_name: chromium security_opt: - seccomp:unconfined #optional environment: - PUID=1001 - PGID=1001 - TZ=America/New_York volumes: - ./chromium-config:/config network_mode: service:gluetun depends_on: gluetun: condition: service_healthy shm_size: "1gb" restart: unless-stopped prowlarr: image: linuxserver/prowlarr:latest container_name: prowlarr environment: - PUID=1001 - PGID=1001 - TZ=America/New_York volumes: - ./prowlarr-config:/config labels: - "traefik.enable=true" - "traefik.http.routers.prowlarr.entrypoints=websecure" - "traefik.http.routers.prowlarr.rule=Host(`prowlarr.meftimes.com`)" - "traefik.http.routers.prowlarr.middlewares=authelia@docker" - "traefik.http.services.prowlarr.loadbalancer.server.port=9696" network_mode: service:gluetun depends_on: gluetun: condition: service_healthy restart: unless-stopped radarr: image: linuxserver/radarr:latest container_name: radarr environment: - PUID=1001 - PGID=1001 - TZ=America/New_York volumes: - ./radarr-config:/config - /media:/media #optional # - /media/transmission/downloads/complete:/downloads #optional labels: - "traefik.enable=true" - "traefik.http.routers.radarr.entrypoints=websecure" - "traefik.http.routers.radarr.rule=Host(`radarr.meftimes.com`)" - "traefik.http.routers.radarr.middlewares=authelia@docker" - "traefik.http.services.radarr.loadbalancer.server.port=7878" network_mode: service:gluetun depends_on: gluetun: condition: service_healthy restart: unless-stopped sonarr: image: linuxserver/sonarr:latest container_name: sonarr environment: - PUID=1001 - PGID=1001 - TZ=America/New_York volumes: - ./sonarr-config:/config - /media:/media #optional labels: - "traefik.enable=true" - "traefik.http.routers.sonarr.entrypoints=websecure" - "traefik.http.routers.sonarr.rule=Host(`sonarr.meftimes.com`)" - "traefik.http.routers.sonarr.middlewares=authelia@docker" - "traefik.http.services.sonarr.loadbalancer.server.port=8989" network_mode: service:gluetun depends_on: gluetun: condition: service_healthy restart: unless-stopped flaresolverr: image: flaresolverr/flaresolverr:latest container_name: flaresolverr environment: - LOG_LEVEL=${LOG_LEVEL:-info} - LOG_HTML=${LOG_HTML:-false} - CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none} - TZ=Europe/London network_mode: service:gluetun depends_on: gluetun: condition: service_healthy restart: unless-stopped jellyfin: image: linuxserver/jellyfin:latest container_name: jellyfin environment: - PUID=1001 - PGID=1001 - TZ=America/New_York volumes: - ./jellyfin-config:/config - /media/jellyfin:/media/jellyfin # - /media/transmission/downloads/tvshows:/data/tvshows # - /media/transmission/downloads/movies:/data/movies labels: - "traefik.enable=true" - "traefik.http.routers.jellyfin.entrypoints=websecure" - "traefik.http.routers.jellyfin.rule=Host(`jellyfin.meftimes.com`)" # - "traefik.http.routers.jellyfin.middlewares=authelia@docker" - "traefik.http.services.jellyfin.loadbalancer.server.port=8096" restart: unless-stopped networks: - proxy jellyseerr: image: fallenbagel/jellyseerr:latest container_name: jellyseerr environment: - PUID=1001 - PGID=1001 - TZ=America/New_York - LOG_LEVEL=debug volumes: - ./jellyseerr-config:/app/config labels: - "traefik.enable=true" - "traefik.http.routers.jellyseerr.entrypoints=websecure" - "traefik.http.routers.jellyseerr.rule=Host(`jellyseerr.meftimes.com`)" - "traefik.http.services.jellyseerr.loadbalancer.server.port=5055" network_mode: service:gluetun depends_on: gluetun: condition: service_healthy restart: unless-stopped networks: proxy: external: true # media # ├── downloads # │ ├── movies # │ ├── music # │ └── tv # └── jellyfin # ├── movies # ├── music # └── tv