--- services: ############################ # JELLYFIN ############################ jellyfin: image: lscr.io/linuxserver/jellyfin:latest deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] container_name: jellyfin network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /mnt/.ix-apps/app_mounts/jellyfin/config:/config - /mnt/pool-main/media/series:/data/tvshows - /mnt/pool-main/media/movies:/data/movies restart: unless-stopped ############################ # PLEX ############################ plex: image: lscr.io/linuxserver/plex:latest deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] container_name: plex network_mode: "service:gluetun" depends_on: - gluetun # ports: # - 32400:32400 #plex # - 1900:1900/udp #plex # - 5353:5353/udp #plex # - 8324:8324 #plex # - 32410:32410/udp #plex # - 32412:32412/udp #plex # - 32413:32413/udp #plex # - 32414:32414/udp #plex # - 32469:32469 #plex environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - VERSION=docker - PLEX_CLAIM=claim-QuA5aYBfFCuKsQG9fotK volumes: - /mnt/.ix-apps/app_mounts/plex/config:/config - /mnt/pool-main/media/series:/tv - /mnt/pool-main/media/movies:/movies restart: unless-stopped plex-local: image: lscr.io/linuxserver/plex:latest deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] container_name: plex-local network_mode: bridge ports: - 32401:32400 # Avoid conflict with VPN Plex (32400) - 1901:1900/udp - 5354:5353/udp - 8325:8324 - 32411:32410/udp - 32415:32412/udp - 32416:32413/udp - 32417:32414/udp - 32470:32469 environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - VERSION=docker - PLEX_CLAIM=claim-KWdNouGJLD72xyqbELLs volumes: - /mnt/.ix-apps/app_mounts/plex-local/config:/config - /mnt/pool-main/media/series:/tv - /mnt/pool-main/media/movies:/movies restart: unless-stopped ############################ # RADARR ############################ radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /mnt/.ix-apps/app_mounts/radarr/config:/config - /mnt/pool-main/media/movies:/movies #optional - /mnt/pool-main/media/downloads:/downloads #optional restart: unless-stopped ############################ # SONARR ############################ sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /mnt/.ix-apps/app_mounts/sonarr/config:/config - /mnt/pool-main/media/series:/tv #optional - /mnt/pool-main/media/downloads:/downloads #optional restart: unless-stopped ############################ # PROWLARR ############################ prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /mnt/.ix-apps/app_mounts/prowlarr/config:/config restart: unless-stopped ############################ # BAZARR ############################ bazarr: image: lscr.io/linuxserver/bazarr:latest container_name: bazarr network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /mnt/.ix-apps/app_mounts/bazarr/config:/config - /mnt/pool-main/media/movies:/movies - /mnt/pool-main/media/series:/tv restart: unless-stopped ############################ # LIDARR ############################ lidarr: image: lscr.io/linuxserver/lidarr:latest container_name: lidarr network_mode: "service:gluetun" environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /mnt/.ix-apps/app_mounts/lidarr/config:/config - /mnt/pool-main/media/music:/music #optional - /mnt/pool-main/media/downloads:/downloads #optional restart: unless-stopped ############################ # READARR ############################ readarr: image: lscr.io/linuxserver/readarr:develop container_name: readarr network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /mnt/.ix-apps/app_mounts/readarr/config:/config - /mnt/pool-main/media/books:/books #optional - /mnt/pool-main/media/downloads:/downloads #optional restart: unless-stopped ############################ # OVERSEERR ############################ overseerr: image: lscr.io/linuxserver/overseerr:latest container_name: overseerr network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /mnt/.ix-apps/app_mounts/overseerr/config:/config restart: unless-stopped ############################ # TRANSMISSION ############################ transmission: image: lscr.io/linuxserver/transmission:latest container_name: transmission network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - USER=admin - PASS=${TRANSMISSION_PASSWORD} volumes: - /mnt/.ix-apps/app_mounts/transmission/data:/config - /mnt/pool-main/media/downloads:/downloads #optional restart: unless-stopped ############################ # TRAEFIK ############################ # traefik: # image: traefik:latest # container_name: traefik # network_mode: "service:gluetun" # depends_on: # - gluetun # command: # - "--api.insecure=true" # - "--providers.docker=true" # - "--providers.docker.exposedbydefault=false" # - "--entrypoints.web.address=:8081" # - "--log.level=DEBUG" # - "--accesslog=true" # labels: # - "traefik.enable=true" # - "traefik.http.routers.traefik.rule=Host(`traefik.${DUCKDNS_SUBDOMAIN}.duckdns.org`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`))" # - "traefik.http.routers.traefik.entrypoints=web" # - "traefik.http.routers.traefik.service=api@internal" # volumes: # - /var/run/docker.sock:/var/run/docker.sock # - /mnt/.ix-apps/app_mounts/traefik/letsencrypt:/letsencrypt # - /mnt/.ix-apps/app_mounts/traefik/config:/config # restart: unless-stopped ############################ # DUCKDNS ############################ # duckdns: # image: linuxserver/duckdns:latest # container_name: duckdns # network_mode: "service:gluetun" # Route through gluetun # depends_on: # - gluetun # environment: # - PUID=1000 # - PGID=1000 # - TZ=Etc/UTC # - SUBDOMAINS=${DUCKDNS_SUBDOMAIN} # Replace with your DuckDNS subdomain(s) # - TOKEN=${DUCKDNS_TOKEN} # Replace with your DuckDNS token # restart: unless-stopped ############################ # JELLYFIN ############################ # jellyfin: # image: lscr.io/linuxserver/jellyfin:latest # container_name: jellyfin # # network_mode: "service:gluetun" # # depends_on: # # - gluetun # # labels: # # - "traefik.enable=true" # # - "traefik.http.routers.jellyfin.rule=Host(`jelly.${DUCKDNS_SUBDOMAIN}.duckdns.org`)" # # - "traefik.http.routers.jellyfin.entrypoints=web" # # - "traefik.http.services.jellyfin.loadbalancer.server.port=8096" # ports: # - 8096:8096 # environment: # - PUID=1000 # - PGID=1000 # - TZ=Etc/UTC # volumes: # - /mnt/.ix_apps/app_mounts/portainer/jellyfin/config:/config # - /mnt/pool-main/media/series:/data/series # - /mnt/pool-main/media/movies:/data/movies # restart: unless-stopped ############################ # GLUETUN ############################ gluetun: image: qmcgaw/gluetun container_name: gluetun ports: # - 8081:8081 # traefik # - 443:443 - 9696:9696 #prowlarr - 7878:7878 #radarr - 8989:8989 #sonarr - 6767:6767 #bazarr - 8686:8686 #lidarr - 8787:8787 #readarr - 5055:5055 #overseerr - 9091:9091 #transmission - 51413:51413 #transmission - 51413:51413/udp #transmission - 32400:32400 #plex - 1900:1900/udp #plex - 5353:5353/udp #plex - 8324:8324 #plex - 32410:32410/udp #plex - 32412:32412/udp #plex - 32413:32413/udp #plex - 32414:32414/udp #plex - 32469:32469 #plex - 8096:8096 #jellyfin - 8920:8920 #jellyfin - 7359:7359/udp #jellyfin cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun environment: - VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER} - OPENVPN_USER=${VPN_USER} - OPENVPN_PASSWORD=${VPN_PASSWORD} - SERVER_COUNTRIES=Switzerland