This commit is contained in:
Gal Podlipnik 2025-07-11 23:38:39 +00:00
parent 84fdaba9c7
commit ad7d8288ca
3 changed files with 55 additions and 250 deletions

5
.env
View File

@ -5,3 +5,8 @@ ARRPATH=/media/Arr/ # in Windows it will be sth like ARRPATH=C:\myfolder\Arr\
PUID=1000 PUID=1000
PGID=1000 PGID=1000
TZ=Europe/Ljubljana TZ=Europe/Ljubljana
# Gluetun Variables
NORDVPN_USERNAME=Thyd3J8tFaezzat7EoBn8Kfe
NORDVPN_PASSWORD=BHhL7tSYrJcGcssAAhQCAjwH
SERVER_COUNTRIES=Netherlands

View File

@ -1,5 +1,46 @@
services: services:
# ██████╗ ██╗ ██╗ ██╗███████╗████████╗██╗ ██╗███╗ ██╗
# ██╔════╝ ██║ ██║ ██║██╔════╝╚══██╔══╝██║ ██║████╗ ██║
# ██║ ███╗██║ ██║ ██║█████╗ ██║ ██║ ██║██╔██╗ ██║
# ██║ ██║██║ ██║ ██║██╔══╝ ██║ ██║ ██║██║╚██╗██║
# ╚██████╔╝███████╗╚██████╔╝███████╗ ██║ ╚██████╔╝██║ ╚████║
# ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
env_file:
- '.env'
ports:
- 8080:8080 # qBittorrent
- 9696:9696 # Prowlarr
- 8989:8989 # Sonarr
- 7878:7878 # Radarr
- 8686:8686 # Lidarr
- 8787:8787 # Readarr
- 5055:5055 # Jellyseerr
- 8096:8096 # Jellyfin
- 7359:7359/udp # Jellyfin discovery
- 1900:1900/udp # Jellyfin DLNA
- 6881:6881 # qBittorrent
- 6881:6881/udp # qBittorrent
environment:
- VPN_SERVICE_PROVIDER=nordvpn
- OPENVPN_USER=${NORDVPN_USERNAME}
- OPENVPN_PASSWORD=${NORDVPN_PASSWORD}
- SERVER_COUNTRIES=${SERVER_COUNTRIES}
- TZ=${TZ}
volumes:
- ${ARRPATH}gluetun/config:/gluetun
restart: unless-stopped
networks:
- media_network
# ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ █████╗ ██████╗ ██████╗ # ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ █████╗ ██████╗ ██████╗
# ██╔══██╗██╔══██╗██╔═══██╗██║ ██║██║ ██╔══██╗██╔══██╗██╔══██╗ # ██╔══██╗██╔══██╗██╔═══██╗██║ ██║██║ ██╔══██╗██╔══██╗██╔══██╗
# ██████╔╝██████╔╝██║ ██║██║ █╗ ██║██║ ███████║██████╔╝██████╔╝ # ██████╔╝██████╔╝██║ ██║██║ █╗ ██║██║ ███████║██████╔╝██████╔╝
@ -10,18 +51,14 @@ services:
prowlarr: prowlarr:
image: linuxserver/prowlarr:latest image: linuxserver/prowlarr:latest
container_name: prowlarr container_name: prowlarr
hostname: prowlarr
volumes: volumes:
- ${ARRPATH}Prowlarr/config:/config - ${ARRPATH}Prowlarr/config:/config
- ${ARRPATH}Prowlarr/backup:/data/Backup - ${ARRPATH}Prowlarr/backup:/data/Backup
- ${ARRPATH}Downloads:/downloads - ${ARRPATH}Downloads:/downloads
ports: network_mode: "service:gluetun"
- 9696:9696
restart: unless-stopped restart: unless-stopped
env_file: env_file:
- '.env' - '.env'
networks:
- media_network
# ███████╗ ██████╗ ███╗ ██╗ █████╗ ██████╗ ██████╗ # ███████╗ ██████╗ ███╗ ██╗ █████╗ ██████╗ ██████╗
# ██╔════╝██╔═══██╗████╗ ██║██╔══██╗██╔══██╗██╔══██╗ # ██╔════╝██╔═══██╗████╗ ██║██╔══██╗██╔══██╗██╔══██╗
@ -33,19 +70,15 @@ services:
sonarr: sonarr:
image: linuxserver/sonarr:latest image: linuxserver/sonarr:latest
container_name: sonarr container_name: sonarr
hostname: sonarr
volumes: volumes:
- ${ARRPATH}Sonarr/config:/config - ${ARRPATH}Sonarr/config:/config
- ${ARRPATH}Sonarr/backup:/data/Backup - ${ARRPATH}Sonarr/backup:/data/Backup
- ${ARRPATH}Sonarr/tvshows:/data/tvshows - ${ARRPATH}Sonarr/tvshows:/data/tvshows
- ${ARRPATH}Downloads:/downloads - ${ARRPATH}Downloads:/downloads
ports: network_mode: "service:gluetun"
- 8989:8989
restart: unless-stopped restart: unless-stopped
env_file: env_file:
- '.env' - '.env'
networks:
- media_network
# ██████╗ █████╗ ██████╗ █████╗ ██████╗ ██████╗ # ██████╗ █████╗ ██████╗ █████╗ ██████╗ ██████╗
# ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗ # ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗
@ -57,19 +90,15 @@ services:
radarr: radarr:
image: linuxserver/radarr:latest image: linuxserver/radarr:latest
container_name: radarr container_name: radarr
hostname: radarr
volumes: volumes:
- ${ARRPATH}Radarr/config:/config - ${ARRPATH}Radarr/config:/config
- ${ARRPATH}Radarr/movies:/data/movies - ${ARRPATH}Radarr/movies:/data/movies
- ${ARRPATH}Radarr/backup:/data/Backup - ${ARRPATH}Radarr/backup:/data/Backup
- ${ARRPATH}Downloads:/downloads - ${ARRPATH}Downloads:/downloads
ports: network_mode: "service:gluetun"
- 7878:7878
restart: unless-stopped restart: unless-stopped
env_file: env_file:
- '.env' - '.env'
networks:
- media_network
# ██╗ ██╗██████╗ █████╗ ██████╗ ██████╗ # ██╗ ██╗██████╗ █████╗ ██████╗ ██████╗
# ██║ ██║██╔══██╗██╔══██╗██╔══██╗██╔══██╗ # ██║ ██║██╔══██╗██╔══██╗██╔══██╗██╔══██╗
@ -81,18 +110,14 @@ services:
lidarr: lidarr:
image: linuxserver/lidarr:latest image: linuxserver/lidarr:latest
container_name: lidarr container_name: lidarr
hostname: lidarr
volumes: volumes:
- ${ARRPATH}Lidarr/config:/config - ${ARRPATH}Lidarr/config:/config
- ${ARRPATH}Lidarr/music:/data/musicfolder - ${ARRPATH}Lidarr/music:/data/musicfolder
- ${ARRPATH}Downloads:/downloads - ${ARRPATH}Downloads:/downloads
ports: network_mode: "service:gluetun"
- 8686:8686
restart: unless-stopped restart: unless-stopped
env_file: env_file:
- '.env' - '.env'
networks:
- media_network
# ██████╗ ███████╗ █████╗ ██████╗ █████╗ ██████╗ ██████╗ # ██████╗ ███████╗ █████╗ ██████╗ █████╗ ██████╗ ██████╗
# ██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗ # ██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗
@ -104,18 +129,14 @@ services:
readarr: readarr:
image: linuxserver/readarr:develop image: linuxserver/readarr:develop
container_name: readarr container_name: readarr
hostname: readarr
volumes: volumes:
- ${ARRPATH}Readarr/config:/config - ${ARRPATH}Readarr/config:/config
- ${ARRPATH}Readarr/books:/data/books - ${ARRPATH}Readarr/books:/data/books
- ${ARRPATH}Downloads:/downloads - ${ARRPATH}Downloads:/downloads
ports: network_mode: "service:gluetun"
- 8787:8787
restart: unless-stopped restart: unless-stopped
env_file: env_file:
- '.env' - '.env'
networks:
- media_network
jellyseerr: jellyseerr:
image: fallenbagel/jellyseerr:latest image: fallenbagel/jellyseerr:latest
@ -124,15 +145,12 @@ services:
- LOG_LEVEL=debug - LOG_LEVEL=debug
- TZ=Europe/Ljubljana - TZ=Europe/Ljubljana
- PORT=5055 #optional - PORT=5055 #optional
ports:
- 5055:5055
volumes: volumes:
- ${ARRPATH}JELLYSEERR/config:/app/config - ${ARRPATH}JELLYSEERR/config:/app/config
network_mode: "service:gluetun"
restart: unless-stopped restart: unless-stopped
env_file: env_file:
- '.env' - '.env'
networks:
- media_network
# ██╗███████╗██╗ ██╗ ██╗ ██╗███████╗██╗███╗ ██╗ # ██╗███████╗██╗ ██╗ ██╗ ██╗███████╗██╗███╗ ██╗
# ██║██╔════╝██║ ██║ ╚██╗ ██╔╝██╔════╝██║████╗ ██║ # ██║██╔════╝██║ ██║ ╚██╗ ██╔╝██╔════╝██║████╗ ██║
@ -144,21 +162,16 @@ services:
jellyfin: jellyfin:
image: linuxserver/jellyfin image: linuxserver/jellyfin
container_name: jellyfin container_name: jellyfin
ports:
- '8096:8096/tcp' # Jellyfin web interface
- '7359:7359/udp' # Network discovery
- '1900:1900/udp' # DLNA port
volumes: volumes:
- ${ARRPATH}Jellyfin/config:/config - ${ARRPATH}Jellyfin/config:/config
- ${ARRPATH}Radarr/movies:/data/Movies - ${ARRPATH}Radarr/movies:/data/Movies
- ${ARRPATH}Sonarr/tvshows:/data/TVShows - ${ARRPATH}Sonarr/tvshows:/data/TVShows
- ${ARRPATH}Lidarr/music:/data/Music - ${ARRPATH}Lidarr/music:/data/Music
- ${ARRPATH}Readarr/books:/data/Books - ${ARRPATH}Readarr/books:/data/Books
network_mode: "service:gluetun"
env_file: env_file:
- '.env' - '.env'
restart: unless-stopped restart: unless-stopped
networks:
- media_network
# ██████╗ ██████╗ ██╗████████╗████████╗ ██████╗ ██████╗ ██████╗ ███████╗███╗ ██╗████████╗ # ██████╗ ██████╗ ██╗████████╗████████╗ ██████╗ ██████╗ ██████╗ ███████╗███╗ ██╗████████╗
# ██╔═══██╗██╔══██╗██║╚══██╔══╝╚══██╔══╝██╔═══██╗██╔══██╗██╔══██╗██╔════╝████╗ ██║╚══██╔══╝ # ██╔═══██╗██╔══██╗██║╚══██╔══╝╚══██╔══╝██╔═══██╗██╔══██╗██╔══██╗██╔════╝████╗ ██║╚══██╔══╝
@ -170,28 +183,22 @@ services:
qbittorrent: qbittorrent:
image: linuxserver/qbittorrent:latest image: linuxserver/qbittorrent:latest
container_name: qbittorrent container_name: qbittorrent
hostname: qbittorrent
restart: unless-stopped restart: unless-stopped
labels: labels:
- "com.centurylinklabs.watchtower.enable=false" - "com.centurylinklabs.watchtower.enable=false"
volumes: volumes:
- ${ARRPATH}qbittorrent/config:/config - ${ARRPATH}qbittorrent/config:/config
- ${ARRPATH}Downloads:/downloads - ${ARRPATH}Downloads:/downloads
ports:
- 8080:8080
- 6881:6881
- 6881:6881/udp
environment: environment:
- WEBUI_PORT=8080 - WEBUI_PORT=8080
- TORRENTING_PORT=6881 - TORRENTING_PORT=6881
network_mode: "service:gluetun"
healthcheck: healthcheck:
start_period: 15s start_period: 15s
env_file: env_file:
- '.env' - '.env'
networks:
- media_network
# Define the custom network # Define the custom network
networks: networks:
media_network: media_network:
driver: bridge driver: bridge

View File

@ -1,207 +0,0 @@
services:
# ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ █████╗ ██████╗ ██████╗
# ██╔══██╗██╔══██╗██╔═══██╗██║ ██║██║ ██╔══██╗██╔══██╗██╔══██╗
# ██████╔╝██████╔╝██║ ██║██║ █╗ ██║██║ ███████║██████╔╝██████╔╝
# ██╔═══╝ ██╔══██╗██║ ██║██║███╗██║██║ ██╔══██║██╔══██╗██╔══██╗
# ██║ ██║ ██║╚██████╔╝╚███╔███╔╝███████╗██║ ██║██║ ██║██║ ██║
# ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═
prowlarr:
image: linuxserver/prowlarr:latest
container_name: prowlarr
volumes:
- ${ARRPATH}Prowlarr/config:/config
- ${ARRPATH}Prowlarr/backup:/data/Backup
- ${ARRPATH}Downloads:/downloads
restart: unless-stopped
env_file:
- '.env'
network_mode: "service:gluetun"
depends_on:
- gluetun
# ███████╗ ██████╗ ███╗ ██╗ █████╗ ██████╗ ██████╗
# ██╔════╝██╔═══██╗████╗ ██║██╔══██╗██╔══██╗██╔══██╗
# ███████╗██║ ██║██╔██╗ ██║███████║██████╔╝██████╔╝
# ╚════██║██║ ██║██║╚██╗██║██╔══██║██╔══██╗██╔══██╗
# ███████║╚██████╔╝██║ ╚████║██║ ██║██║ ██║██║ ██║
# ╚══════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝
sonarr:
image: linuxserver/sonarr:latest
container_name: sonarr
volumes:
- ${ARRPATH}Sonarr/config:/config
- ${ARRPATH}Sonarr/backup:/data/Backup
- ${ARRPATH}Sonarr/tvshows:/data/tvshows
- ${ARRPATH}Downloads:/downloads
restart: unless-stopped
env_file:
- '.env'
network_mode: "service:gluetun"
depends_on:
- gluetun
# ██████╗ █████╗ ██████╗ █████╗ ██████╗ ██████╗
# ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗
# ██████╔╝███████║██║ ██║███████║██████╔╝██████╔╝
# ██╔══██╗██╔══██║██║ ██║██╔══██║██╔══██╗██╔══██╗
# ██║ ██║██║ ██║██████╔╝██║ ██║██║ ██║██║ ██║
# ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝
radarr:
image: linuxserver/radarr:latest
container_name: radarr
volumes:
- ${ARRPATH}Radarr/config:/config
- ${ARRPATH}Radarr/movies:/data/movies
- ${ARRPATH}Radarr/backup:/data/Backup
- ${ARRPATH}Downloads:/downloads
restart: unless-stopped
env_file:
- '.env'
network_mode: "service:gluetun"
depends_on:
- gluetun
# ██╗ ██╗██████╗ █████╗ ██████╗ ██████╗
# ██║ ██║██╔══██╗██╔══██╗██╔══██╗██╔══██╗
# ██║ ██║██║ ██║███████║██████╔╝██████╔╝
# ██║ ██║██║ ██║██╔══██║██╔══██╗██╔══██╗
# ███████╗██║██████╔╝██║ ██║██║ ██║██║ ██║
# ╚══════╝╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝
lidarr:
image: linuxserver/lidarr:latest
container_name: lidarr
volumes:
- ${ARRPATH}Lidarr/config:/config
- ${ARRPATH}Lidarr/music:/data/musicfolder
- ${ARRPATH}Downloads:/downloads
restart: unless-stopped
env_file:
- '.env'
network_mode: "service:gluetun"
depends_on:
- gluetun
# ██████╗ ███████╗ █████╗ ██████╗ █████╗ ██████╗ ██████╗
# ██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗
# ██████╔╝█████╗ ███████║██║ ██║███████║██████╔╝██████╔╝
# ██╔══██╗██╔══╝ ██╔══██║██║ ██║██╔══██║██╔══██╗██╔══██╗
# ██║ ██║███████╗██║ ██║██████╔╝██║ ██║██║ ██║██║ ██║
# ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝
readarr:
image: linuxserver/readarr:develop
container_name: readarr
volumes:
- ${ARRPATH}Readarr/config:/config
- ${ARRPATH}Readarr/books:/data/books
- ${ARRPATH}Downloads:/downloads
restart: unless-stopped
env_file:
- '.env'
network_mode: "service:gluetun"
depends_on:
- gluetun
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=Europe/Ljubljana
- PORT=5055 #optional
volumes:
- ${ARRPATH}JELLYSEERR/config:/app/config
restart: unless-stopped
env_file:
- '.env'
network_mode: "service:gluetun"
depends_on:
- gluetun
# ██╗███████╗██╗ ██╗ ██╗ ██╗███████╗██╗███╗ ██╗
# ██║██╔════╝██║ ██║ ╚██╗ ██╔╝██╔════╝██║████╗ ██║
# ██║█████╗ ██║ ██║ ╚████╔╝ █████╗ ██║██╔██╗ ██║
# ██ ██║██╔══╝ ██║ ██║ ╚██╔╝ ██╔══╝ ██║██║╚██╗██║
# ╚█████╔╝███████╗███████╗███████╗██║ ██║ ██║██║ ╚████║
# ╚════╝ ╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝
jellyfin:
image: linuxserver/jellyfin
container_name: jellyfin
volumes:
- ${ARRPATH}Jellyfin/config:/config
- ${ARRPATH}Radarr/movies:/data/Movies
- ${ARRPATH}Sonarr/tvshows:/data/TVShows
- ${ARRPATH}Lidarr/music:/data/Music
- ${ARRPATH}Readarr/books:/data/Books
env_file:
- '.env'
restart: unless-stopped
network_mode: "service:gluetun"
depends_on:
- gluetun
# ██████╗ ██████╗ ██╗████████╗████████╗ ██████╗ ██████╗ ██████╗ ███████╗███╗ ██╗████████╗
# ██╔═══██╗██╔══██╗██║╚══██╔══╝╚══██╔══╝██╔═══██╗██╔══██╗██╔══██╗██╔════╝████╗ ██║╚══██╔══╝
# ██║ ██║██████╔╝██║ ██║ ██║ ██║ ██║██████╔╝██████╔╝█████╗ ██╔██╗ ██║ ██║
# ██║▄▄ ██║██╔══██╗██║ ██║ ██║ ██║ ██║██╔══██╗██╔══██╗██╔══╝ ██║╚██╗██║ ██║
# ╚██████╔╝██████╔╝██║ ██║ ██║ ╚██████╔╝██║ ██║██║ ██║███████╗██║ ╚████║ ██║
# ╚══▀▀═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝ ╚═╝
qbittorrent:
image: linuxserver/qbittorrent:latest
container_name: qbittorrent
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=false"
volumes:
- ${ARRPATH}qbittorrent/config:/config
- ${ARRPATH}Downloads:/downloads
# Removed port mappings as they'll be exposed via gluetun
environment:
- WEBUI_PORT=8080
- TORRENTING_PORT=6881
healthcheck:
start_period: 15s
env_file:
- '.env'
network_mode: "service:gluetun"
depends_on:
- gluetun
gluetun:
image: qmcgaw/gluetun
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
# Expose ports for all services that need to be accessible
- 8080:8080 # qBittorrent WebUI
- 6881:6881 # qBittorrent
- 6881:6881/udp # qBittorrent
- 9696:9696 # Prowlarr
- 8989:8989 # Sonarr
- 7878:7878 # Radarr
- 8686:8686 # Lidarr
- 8787:8787 # Readarr
- 5055:5055 # Jellyseerr
- 8096:8096 # Jellyfin
- 7359:7359/udp # Jellyfin discovery
- 1900:1900/udp # Jellyfin DLNA
environment:
- VPN_SERVICE_PROVIDER=protonvpn
- OPENVPN_USER=IWCz8b1ulCddlQ9E
- OPENVPN_PASSWORD=rWw8wsLtVAKNdXbEw4KYio37j6g6Jdv1
- SERVER_COUNTRIES=Netherlands
# Added settings to make gluetun work better as a gateway
- FIREWALL_VPN_INPUT_PORTS=8080,6881,9696,8989,7878,8686,8787,5055,8096,7359,1900
- DOT=off
- DNS_KEEP_NAMESERVER=on
restart: unless-stopped