sabnzbd/compose.yaml

88 lines
2.3 KiB
YAML

services:
# Synchronisiert das Git-versionierte Postprocessing vor jedem SAB-Start
# atomar auf den bestehenden NFS-Skriptpfad und setzt das Execute-Bit.
script-sync:
image: alpine:3.22
container_name: sabnzbd-script-sync
volumes:
- ./usenet-scripts:/source:ro
- usenet:/usenet
command:
- /bin/sh
- -ec
- |
mkdir -p /usenet/scripts
install -m 0755 /source/movetdarr.sh /usenet/scripts/movetdarr.sh.new
mv -f /usenet/scripts/movetdarr.sh.new /usenet/scripts/movetdarr.sh
restart: "no"
# WireGuard VPN-Exit -> Hetzner wg2 (dedizierter Tunnel). SABnzbd teilt diesen Netzstack,
# damit der gesamte Usenet-Traffic ueber die Hetzner-IP rausgeht.
wireguard:
image: lscr.io/linuxserver/wireguard:latest
container_name: sabnzbd-wg
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
volumes:
- /app-config/sabnzbd/wg:/config
- /lib/modules:/lib/modules:ro
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
ports:
- 7777:7777 # SABnzbd-WebUI laeuft im Netzstack dieses Containers
healthcheck:
test: ["CMD-SHELL", "wg show wg0 | grep -q 'latest handshake' || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
restart: unless-stopped
sabnzbd:
image: lscr.io/linuxserver/sabnzbd:latest
container_name: sabnzbd
network_mode: "service:wireguard"
depends_on:
wireguard:
condition: service_healthy
script-sync:
condition: service_completed_successfully
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
volumes:
- /app-config/sabnzbd/config:/config
- usenet:/usenet
- tdarr:/tdarr
- chris:/chris
- /mnt/media:/data
restart: unless-stopped
volumes:
usenet:
name: tdarr_usenet
driver: local
driver_opts:
device: :/usenet
o: addr=10.2.1.1,nolock,hard,rw
type: nfs
tdarr:
name: tdarr
driver: local
driver_opts:
device: :/tdarr
o: addr=10.2.1.1,nolock,hard,rw
type: nfs
chris:
name: chris_data
driver: local
driver_opts:
device: :/chris
o: addr=10.7.1.106,nolock,hard,rw
type: nfs