--- services: nzbget: image: lscr.io/linuxserver/nzbget:latest container_name: nzbget network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Europe/Brussels - NZBGET_USER=admin - NZBGET_PASS=${NZBGET_PASSWORD} volumes: - /mnt/.ix-apps/app_mounts/nzbget/config:/config - /mnt/pool-main/media/downloads:/downloads healthcheck: interval: 1m timeout: 10s retries: 3 start_period: 30s test: ["CMD-SHELL", "curl -f http://127.0.0.1:6789 >/dev/null 2>&1"] restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true ############################ # JELLYFIN ############################ jellyfin: image: lscr.io/linuxserver/jellyfin:latest deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] container_name: jellyfin network_mode: bridge ports: - 8096:8096 environment: - PUID=1000 - PGID=1000 - TZ=Europe/Brussels volumes: - /mnt/.ix-apps/app_mounts/jellyfin/config:/config - /mnt/pool-main/media/series:/data/tvshows - /mnt/pool-main/media/movies:/data/movies healthcheck: interval: 1m timeout: 10s retries: 3 start_period: 30s test: ["CMD-SHELL", "curl -f http://127.0.0.1:8096 >/dev/null 2>&1"] restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true ############################ # PLEX ############################ plex: image: lscr.io/linuxserver/plex:latest container_name: plex deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] network_mode: host environment: - PUID=1000 - PGID=1000 - TZ=Europe/Brussels - VERSION=docker - PLEX_CLAIM=claim-1sArduhvJJ87ywxKQeHr volumes: - /mnt/.ix-apps/app_mounts/plex/config:/config - /mnt/pool-main/media/series:/tv - /mnt/pool-main/media/movies:/movies restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true ############################ # TAUTULLI ############################ tautulli: image: lscr.io/linuxserver/tautulli:latest container_name: tautulli depends_on: - plex environment: - PUID=1000 - PGID=1000 - TZ=Europe/Brussels volumes: - /mnt/.ix-apps/app_mounts/tautulli/config:/config ports: - 8181:8181 healthcheck: interval: 1m timeout: 10s retries: 3 start_period: 30s test: ["CMD-SHELL", "curl -f http://127.0.0.1:8181 >/dev/null 2>&1"] restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true ############################ # RADARR ############################ radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Europe/Brussels 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 labels: - com.centurylinklabs.watchtower.enable=true ############################ # SONARR ############################ sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Europe/Brussels volumes: - /mnt/.ix-apps/app_mounts/sonarr/config:/config - /mnt/pool-main/media/series:/tv #optional - /mnt/pool-main/media/downloads:/downloads #optional healthcheck: interval: 1m timeout: 10s retries: 3 start_period: 30s test: ["CMD-SHELL", "curl -f http://127.0.0.1:8989 >/dev/null 2>&1"] restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true ############################ # PROWLARR ############################ prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Europe/Brussels volumes: - /mnt/.ix-apps/app_mounts/prowlarr/config:/config healthcheck: interval: 1m timeout: 10s retries: 3 start_period: 30s test: ["CMD-SHELL", "curl -f http://127.0.0.1:9696 >/dev/null 2>&1"] restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true ############################ # BAZARR ############################ bazarr: image: lscr.io/linuxserver/bazarr:latest container_name: bazarr network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Europe/Brussels volumes: - /mnt/.ix-apps/app_mounts/bazarr/config:/config - /mnt/pool-main/media/movies:/movies - /mnt/pool-main/media/series:/tv healthcheck: interval: 1m timeout: 10s retries: 3 start_period: 30s test: ["CMD-SHELL", "curl -f http://127.0.0.1:6767 >/dev/null 2>&1"] restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true ############################ # LIDARR ############################ lidarr: image: lscr.io/linuxserver/lidarr:latest container_name: lidarr network_mode: "service:gluetun" environment: - PUID=1000 - PGID=1000 - TZ=Europe/Brussels volumes: - /mnt/.ix-apps/app_mounts/lidarr/config:/config - /mnt/pool-main/media/music:/music #optional - /mnt/pool-main/media/downloads:/downloads #optional healthcheck: interval: 1m timeout: 10s retries: 3 start_period: 30s test: ["CMD-SHELL", "curl -f http://127.0.0.1:8686 >/dev/null 2>&1"] restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true ############################ # JELLYSEERR ############################ jellyseerr: image: fallenbagel/jellyseerr:latest container_name: jellyseerr ports: - 5055:5055 environment: - LOG_LEVEL=debug - TZ=Europe/Brussels volumes: - /mnt/.ix-apps/app_mounts/jellyseerr/config:/app/config restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true ############################ # TRANSMISSION ############################ transmission: image: lscr.io/linuxserver/transmission:latest container_name: transmission network_mode: "service:gluetun" depends_on: - gluetun environment: - PUID=1000 - PGID=1000 - TZ=Europe/Brussels - USER=admin - PASS=${TRANSMISSION_PASSWORD} volumes: - /mnt/.ix-apps/app_mounts/transmission/data:/config - /mnt/pool-main/media/downloads:/downloads #optional healthcheck: interval: 1m timeout: 10s retries: 3 start_period: 30s test: ["CMD-SHELL", "curl -f http://127.0.0.1:9091 >/dev/null 2>&1"] restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true ############################ # TRAEFIK (commented) ############################ # 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 ############################ # GLUETUN ############################ gluetun: image: qmcgaw/gluetun container_name: gluetun ports: - 51413:51413 #transmission - 51413:51413/udp #transmission - 6767:6767 #bazarr - 6789:6789 - 7359:7359/udp #jellyfin - 7878:7878 #radarr - 8686:8686 #lidarr - 8787:8787 #readarr - 8920:8920 #jellyfin - 8989:8989 #sonarr - 9091:9091 #transmission - 9696:9696 #prowlarr 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 - TZ=Europe/Brussels restart: unless-stopped labels: - com.centurylinklabs.watchtower.enable=true - autoheal=true ############################ # WATCHTOWER (automatic updates) ############################ watchtower: image: containrrr/watchtower:latest container_name: watchtower volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - TZ=Europe/Brussels - WATCHTOWER_SCHEDULE=0 0 3 * * * - WATCHTOWER_CLEANUP=true - WATCHTOWER_NO_STARTUP_MESSAGE=true - WATCHTOWER_LABEL_ENABLE=true restart: unless-stopped ############################ # AUTOHEAL (restart unhealthy containers) ############################ autoheal: image: willfarrell/autoheal:latest container_name: autoheal environment: - AUTOHEAL_CONTAINER_LABEL=autoheal - AUTOHEAL_INTERVAL=30 - AUTOHEAL_START_PERIOD=300 - AUTOHEAL_DEFAULT_STOP_TIMEOUT=30 volumes: - /var/run/docker.sock:/var/run/docker.sock restart: unless-stopped