Files
self-hosted/docker-compose.yml
2025-05-31 15:00:24 +02:00

223 lines
6.3 KiB
YAML

---
services:
############################
# RADARR
############################
# radarr:
# image: lscr.io/linuxserver/radarr:latest
# container_name: radarr
# network_mode: "service: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"
# 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"
# 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"
# environment:
# - PUID=1000
# - PGID=1000
# - TZ=Etc/UTC
# volumes:
# - /mnt/.ix-apps/app_mounts/bazarr/config:/config
# - /media/arr/radarr/movies:/movies #optional
# - /media/arr/sonarr/tvseries:/tv #optional
# 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"
# environment:
# - PUID=1000
# - PGID=1000
# - TZ=Etc/UTC
# volumes:
# - /media/arr/readarr/config:/config
# - /media/arr/readarr/books:/books #optional
# - /media/arr/qbittorrent/downloads:/downloads #optional
# restart: unless-stopped
############################
# QBITTORRENT
############################
# transmission:
# image: lscr.io/linuxserver/transmission:latest
# container_name: transmission
# network_mode: "service:gluetun"
# environment:
# - PUID=1000
# - PGID=1000
# - TZ=Etc/UTC
# - USER=admin
# - PASS=${TRANSMISSION_PASSWORD}
# volumes:
# - ${MOUNTED_VOLUME}/transmission/data:/config
# - ${MOUNTED_VOLUME}/downloads:/downloads #optional
# ports:
# - 9091:9091
# - 51413:51413
# - 51413:51413/udp
# 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_SUBDOMAINS} # 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
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.jellyfin.rule=Host(`${JELLYFIN_SUBDOMAIN}.duckdns.org`)"
# - "traefik.http.routers.jellyfin.entrypoints=websecure"
# - "traefik.http.routers.jellyfin.tls.certresolver=myresolver"
# - "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
# environment:
# - PUID=1000
# - PGID=1000
# - TZ=Etc/UTC
# volumes:
# - /mnt/pool-main/portainer/jellyfin/config:/config
# - /mnt/pool-main/media/series:/data/series
# - /mnt/pool-main/media/movies:/data/movies
# restart: unless-stopped
# traefik:
# image: traefik:v2.10
# container_name: traefik
# command:
# - "--api.insecure=true" # Optional: Enable Traefik dashboard
# - "--providers.docker=true"
# - "--providers.docker.exposedbydefault=false"
# - "--entrypoints.web.address=:80"
# - "--entrypoints.websecure.address=:443"
# - "--certificatesresolvers.myresolver.acme.dnschallenge=true"
# - "--certificatesresolvers.myresolver.acme.dnschallenge.provider=duckdns"
# - "--certificatesresolvers.myresolver.acme.email=${ACME_EMAIL}"
# - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
# ports:
# - "80:80" # HTTP
# - "443:443" # HTTPS
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock
# - /mnt/pool-main/portainer/traefik/letsencrypt:/letsencrypt
# - /mnt/pool-main/portainer/traefik/config:/config
# environment:
# - DUCKDNS_TOKEN=${DUCKDNS_TOKEN} # Your DuckDNS token
# restart: unless-stopped
############################
# GLUETUN
############################
gluetun:
image: qmcgaw/gluetun
container_name: gluetun
ports:
- 80:80
- 443:443
# - 8096:8096 #jellyfin
# - 9696:9696 #prowlarr
# - 7878:7878 #radarr
# - 8989:8989 #sonarr
# - 6767:6767 #bazarr
# - 8686:8686 #lidarr
# - 8787:8787 #readarr
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