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
PGID=1000
TZ=Europe/Ljubljana
# Gluetun Variables
NORDVPN_USERNAME=Thyd3J8tFaezzat7EoBn8Kfe
NORDVPN_PASSWORD=BHhL7tSYrJcGcssAAhQCAjwH
SERVER_COUNTRIES=Netherlands

View File

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