387 lines
10 KiB
YAML
387 lines
10 KiB
YAML
---
|
|
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
|