my-arr-stack/docker-compose.yml
Steve Dogiakos 72fe943b23
Refactor paths and add services: seedboxapi, requestrr, jackett.
- Moved all config volumes to `${ROOT}/config`  
- Added healthchecks for jackett and prowlarr  
- Added `depends_on` directives for inter-service readiness  
- Introduced new services: seedboxapi, requestrr, jackett 
  - seedboxapi needs a new variable in the .env `mam_id`, which can be found in your myanonymouse account.
2025-04-20 11:55:23 -06:00

231 lines
5.1 KiB
YAML

---
services:
vpn:
container_name: vpn
image: 'dperson/openvpn-client:latest'
environment:
- 'OTHER_ARGS= --mute-replay-warnings'
cap_add:
- NET_ADMIN
- SYS_MODULE
restart: unless-stopped
volumes:
- '${ROOT}/config/vpn:/vpn'
- /lib/modules:/lib/modules
security_opt:
- 'label:disable'
devices:
- '/dev/net/tun:/dev/net/tun'
ports:
- '8112:8112' # Deluge Web UI Port
command: '-f "" -r 192.168.68.0/24'
deluge:
container_name: deluge
image: 'linuxserver/deluge:latest'
restart: unless-stopped
environment:
- 'PUID=${PUID}'
- 'PGID=${PGID}'
- 'TZ=${TZ}'
volumes:
- '${ROOT}/config/deluge:/config'
- '${HDDSTORAGE}:/MediaCenterBox'
network_mode: 'service:vpn'
depends_on:
- vpn
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=1000
- PGID=1000
- 'TZ=${TZ}'
volumes:
- '${ROOT}/config/prowlarr:/config'
restart: unless-stopped
ports:
- '9696:9696'
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9696"]
interval: 30s
timeout: 10s
retries: 3
sonarr:
container_name: sonarr
image: 'linuxserver/sonarr:latest'
restart: unless-stopped
network_mode: host
environment:
- 'PUID=${PUID}'
- 'PGID=${PGID}'
- 'TZ=${TZ}'
volumes:
- '${ROOT}/config/sonarr:/config'
- '${HDDSTORAGE}:/MediaCenterBox'
depends_on:
- prowlarr
- jackett
radarr:
container_name: radarr
image: 'linuxserver/radarr:latest'
restart: unless-stopped
network_mode: host
environment:
- 'PUID=${PUID}'
- 'PGID=${PGID}'
- 'TZ=${TZ}'
volumes:
- '${ROOT}/config/radarr:/config'
- '${HDDSTORAGE}:/MediaCenterBox'
depends_on:
- prowlarr
- jackett
bazarr:
container_name: bazarr
image: 'linuxserver/bazarr:latest'
restart: unless-stopped
environment:
- 'PUID=${PUID}'
- 'PGID=${PGID}'
- 'TZ=${TZ}'
- UMASK_SET=022
volumes:
- '${ROOT}/config/bazarr:/config'
- '${HDDSTORAGE}:/MediaCenterBox'
ports:
- '6767:6767'
depends_on:
- sonarr
- radarr
plex-server:
container_name: plex-server
image: 'plexinc/pms-docker:latest'
restart: unless-stopped
environment:
- 'TZ=${TZ}'
network_mode: host
volumes:
- '${ROOT}/config/plex/db:/config'
- '${ROOT}/config/plex/transcode:/transcode'
- '${HDDSTORAGE}/Completed:/MediaCenterBox'
wireguard:
image: ghcr.io/linuxserver/wireguard:latest
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- SERVERURL=${SERVERURL}
- SERVERPORT=51820
- PEERS=${PEERS}
- PEERDNS=auto
- INTERNAL_SUBNET=172.168.69.0
- ALLOWEDIPS=0.0.0.0/0
volumes:
- '${ROOT}/config/wireguard:/config'
- /lib/modules:/lib/modules
ports:
- '51820:51820/udp'
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: always
overseerr:
image: 'sctx/overseerr:latest'
container_name: overseerr
environment:
- LOG_LEVEL=debug
- 'TZ=${TZ}'
ports:
- '5055:5055'
volumes:
- '${ROOT}/config/overseerr/config:/app/config'
restart: unless-stopped
tautulli:
container_name: tautulli
image: linuxserver/tautulli:latest
restart: unless-stopped
environment:
- 'PUID=${PUID}'
- 'PGID=${PGID}'
- 'TZ=${TZ}'
volumes:
- '${ROOT}/config/tautulli:/config'
- '/portainer/Logs:/logs'
ports:
- '8181:8181'
lidarr:
container_name: lidarr
image: linuxserver/lidarr:latest
restart: unless-stopped
environment:
- 'PUID=${PUID}'
- 'PGID=${PGID}'
- 'TZ=${TZ}'
volumes:
- '${ROOT}/config/lidarr:/config'
- '${HDDSTORAGE}:/MediaCenterBox'
ports:
- '8686:8686'
network_mode: host
depends_on:
- prowlarr
- jackett
seedboxapi:
image: myanonamouse/seedboxapi
user: 1000:1000 # Run as a non-root user.
container_name: seedboxapi
network_mode: "service:vpn"
restart: unless-stopped
depends_on:
- vpn
volumes:
- '${ROOT}/config/seedboxapi:/config'
environment:
- DEBUG=1
- mam_id=${mam_id}
- interval=1
requestrr:
image: thomst08/requestrr
container_name: requestrr
ports:
- '4545:4545'
volumes:
- '${ROOT}/config/requestrr:/root/config'
restart: unless-stopped
jackett:
image: lscr.io/linuxserver/jackett:latest
container_name: jackett
environment:
- 'PUID=${PUID}'
- 'PGID=${PGID}'
- 'TZ=${TZ}'
- AUTO_UPDATE=true # optional
- RUN_OPTS= # optional
volumes:
- '${ROOT}/config/jackett:/config'
- '${HDDSTORAGE}/Downloads:/downloads'
ports:
- '9117:9117'
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9117"]
interval: 30s
timeout: 10s
retries: 3