The arr-stack
Notes
/DATA/AppData - find replace to a host path where you want to store all configs
/DATA/Media - find replace to a host path where you want to store the downloaded media (ideally this would point to a HDD)
restarter service is a custom bash script I added to restart everything every hour - I found this to be the easiest solution to fix anything and everything
glueten connects to the VPN and every container connects to glueten for internet access
/media - is the container path where the media is mounted. If you would like to change it make sure to read through this guide before.
Resources
My docker-compose.yaml
version: "3"
services:
gluetun:
image: qmcgaw/gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- /DATA/AppData/gluetun:/gluetun
environment:
- VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER}
- OPENVPN_USER=${OPENVPN_USER}
- OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
- SERVER_REGIONS=${SERVER_REGIONS}
ports:
- 9080:9080 # QBitTorrent Web-UI
- 7878:7878 # Radarr
- 8989:8989 # Sonarr
- 9696:9696 # Prowlarr
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
network_mode: service:gluetun
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- /DATA/AppData/prowlarr/config:/config
- /DATA/Media:/media
restart: unless-stopped
qbittorrent:
image: ghcr.io/linuxserver/qbittorrent
container_name: qbittorrent
network_mode: service:gluetun
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- WEBUI_PORT=9080
volumes:
- /DATA/AppData/qbittorrent/config:/config
- /DATA/Media:/media
restart: unless-stopped
radarr:
image: ghcr.io/linuxserver/radarr
container_name: radarr
network_mode: service:gluetun
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- /DATA/AppData/radarr/config:/config
- /DATA/Media:/media
restart: unless-stopped
sonarr:
image: ghcr.io/linuxserver/sonarr
container_name: sonarr
network_mode: service:gluetun
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- /DATA/AppData/sonarr/config:/config
- /DATA/Media:/media
restart: unless-stopped
jellyseerr:
image: fallenbagel/jellyseerr:latest
network_mode: service:gluetun
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=${TZ}
volumes:
- /DATA/AppData/jellyseerr:/app/config
restart: unless-stopped
readarr:
image: lscr.io/linuxserver/readarr:develop
container_name: readarr
network_mode: service:gluetun
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- UMASK=002
volumes:
- /DATA/AppData/readarr/config:/config
- /DATA/Media:/media
restart: unless-stopped
restarter:
image: docker:cli
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
command: >
/bin/sh -c "while true; do
echo 'Restarting services at: $(date)';
docker restart gluetun prowlarr qbittorrent radarr sonarr jellyseerr readarr;
sleep 3600;
done"
restart: unless-stopped