From 84fdaba9c7a07151f6c53c5c2ce6947a193dc103 Mon Sep 17 00:00:00 2001 From: Gal Podlipnik Date: Tue, 8 Jul 2025 20:40:52 +0000 Subject: [PATCH] Stack --- .env | 7 ++ README.md | 0 docker-compose.yml | 197 ++++++++++++++++++++++++++++++++++++++++++ withvpn.yml | 207 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 411 insertions(+) create mode 100644 .env create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 withvpn.yml diff --git a/.env b/.env new file mode 100644 index 0000000..4925be7 --- /dev/null +++ b/.env @@ -0,0 +1,7 @@ +# Main path for all ARR apps: +ARRPATH=/media/Arr/ # in Windows it will be sth like ARRPATH=C:\myfolder\Arr\ + +# Global Variables +PUID=1000 +PGID=1000 +TZ=Europe/Ljubljana diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c17976d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,197 @@ +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 + restart: unless-stopped + env_file: + - '.env' + networks: + - media_network + +# ███████╗ ██████╗ ███╗ ██╗ █████╗ ██████╗ ██████╗ +# ██╔════╝██╔═══██╗████╗ ██║██╔══██╗██╔══██╗██╔══██╗ +# ███████╗██║ ██║██╔██╗ ██║███████║██████╔╝██████╔╝ +# ╚════██║██║ ██║██║╚██╗██║██╔══██║██╔══██╗██╔══██╗ +# ███████║╚██████╔╝██║ ╚████║██║ ██║██║ ██║██║ ██║ +# ╚══════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ + + 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 + restart: unless-stopped + env_file: + - '.env' + networks: + - media_network + +# ██████╗ █████╗ ██████╗ █████╗ ██████╗ ██████╗ +# ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗ +# ██████╔╝███████║██║ ██║███████║██████╔╝██████╔╝ +# ██╔══██╗██╔══██║██║ ██║██╔══██║██╔══██╗██╔══██╗ +# ██║ ██║██║ ██║██████╔╝██║ ██║██║ ██║██║ ██║ +# ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ + + 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 + restart: unless-stopped + env_file: + - '.env' + networks: + - media_network + +# ██╗ ██╗██████╗ █████╗ ██████╗ ██████╗ +# ██║ ██║██╔══██╗██╔══██╗██╔══██╗██╔══██╗ +# ██║ ██║██║ ██║███████║██████╔╝██████╔╝ +# ██║ ██║██║ ██║██╔══██║██╔══██╗██╔══██╗ +# ███████╗██║██████╔╝██║ ██║██║ ██║██║ ██║ +# ╚══════╝╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ + + 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 + restart: unless-stopped + env_file: + - '.env' + networks: + - media_network + +# ██████╗ ███████╗ █████╗ ██████╗ █████╗ ██████╗ ██████╗ +# ██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗ +# ██████╔╝█████╗ ███████║██║ ██║███████║██████╔╝██████╔╝ +# ██╔══██╗██╔══╝ ██╔══██║██║ ██║██╔══██║██╔══██╗██╔══██╗ +# ██║ ██║███████╗██║ ██║██████╔╝██║ ██║██║ ██║██║ ██║ +# ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ + + 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 + restart: unless-stopped + env_file: + - '.env' + networks: + - media_network + + jellyseerr: + image: fallenbagel/jellyseerr:latest + container_name: jellyseerr + environment: + - LOG_LEVEL=debug + - TZ=Europe/Ljubljana + - PORT=5055 #optional + ports: + - 5055:5055 + volumes: + - ${ARRPATH}JELLYSEERR/config:/app/config + restart: unless-stopped + env_file: + - '.env' + networks: + - media_network + +# ██╗███████╗██╗ ██╗ ██╗ ██╗███████╗██╗███╗ ██╗ +# ██║██╔════╝██║ ██║ ╚██╗ ██╔╝██╔════╝██║████╗ ██║ +# ██║█████╗ ██║ ██║ ╚████╔╝ █████╗ ██║██╔██╗ ██║ +# ██ ██║██╔══╝ ██║ ██║ ╚██╔╝ ██╔══╝ ██║██║╚██╗██║ +# ╚█████╔╝███████╗███████╗███████╗██║ ██║ ██║██║ ╚████║ +# ╚════╝ ╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ + + 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 + env_file: + - '.env' + restart: unless-stopped + networks: + - media_network + +# ██████╗ ██████╗ ██╗████████╗████████╗ ██████╗ ██████╗ ██████╗ ███████╗███╗ ██╗████████╗ +# ██╔═══██╗██╔══██╗██║╚══██╔══╝╚══██╔══╝██╔═══██╗██╔══██╗██╔══██╗██╔════╝████╗ ██║╚══██╔══╝ +# ██║ ██║██████╔╝██║ ██║ ██║ ██║ ██║██████╔╝██████╔╝█████╗ ██╔██╗ ██║ ██║ +# ██║▄▄ ██║██╔══██╗██║ ██║ ██║ ██║ ██║██╔══██╗██╔══██╗██╔══╝ ██║╚██╗██║ ██║ +# ╚██████╔╝██████╔╝██║ ██║ ██║ ╚██████╔╝██║ ██║██║ ██║███████╗██║ ╚████║ ██║ +# ╚══▀▀═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝ ╚═╝ + + 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 + healthcheck: + start_period: 15s + env_file: + - '.env' + networks: + - media_network + +# Define the custom network +networks: + media_network: + driver: bridge \ No newline at end of file diff --git a/withvpn.yml b/withvpn.yml new file mode 100644 index 0000000..fd580fe --- /dev/null +++ b/withvpn.yml @@ -0,0 +1,207 @@ +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 \ No newline at end of file