Files
homelab/services/rrr/docker-compose.yml
2026-04-04 14:34:22 +02:00

153 lines
4.1 KiB
YAML

services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
restart: unless-stopped
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
environment:
- VPN_SERVICE_PROVIDER=mullvad
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES}
- SERVER_CITIES=${SERVER_CITIES}
ports:
- "8080:8080"
volumes:
- gluetun_data:/gluetun
networks:
- proxy
healthcheck:
test: ["CMD", "/gluetun-entrypoint", "healthcheck"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
# Sonarr
- "traefik.http.routers.sonarr.rule=Host(`sonarr.home.jens.pub`)"
- "traefik.http.routers.sonarr.entrypoints=websecure"
- "traefik.http.routers.sonarr.service=sonarr"
- "traefik.http.services.sonarr.loadbalancer.server.port=8989"
# Radarr
- "traefik.http.routers.radarr.rule=Host(`radarr.home.jens.pub`)"
- "traefik.http.routers.radarr.entrypoints=websecure"
- "traefik.http.routers.radarr.service=radarr"
- "traefik.http.services.radarr.loadbalancer.server.port=7878"
# Prowlarr
- "traefik.http.routers.prowlarr.rule=Host(`prowlarr.home.jens.pub`)"
- "traefik.http.routers.prowlarr.entrypoints=websecure"
- "traefik.http.routers.prowlarr.service=prowlarr"
- "traefik.http.services.prowlarr.loadbalancer.server.port=9696"
# SABnzbd
- "traefik.http.routers.sabnzbd.rule=Host(`sabnzbd.home.jens.pub`)"
- "traefik.http.routers.sabnzbd.entrypoints=websecure"
- "traefik.http.routers.sabnzbd.service=sabnzbd"
- "traefik.http.services.sabnzbd.loadbalancer.server.port=8080"
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- sonarr_config:/config
- ${TV_PATH}:/tv
- ${DOWNLOADS_PATH}:/downloads
depends_on:
gluetun:
condition: service_healthy
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- radarr_config:/config
- ${MOVIES_PATH}:/movies
- ${DOWNLOADS_PATH}:/downloads
depends_on:
gluetun:
condition: service_healthy
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- prowlarr_config:/config
depends_on:
gluetun:
condition: service_healthy
sabnzbd:
image: lscr.io/linuxserver/sabnzbd:latest
container_name: sabnzbd
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- HOST_WHITELIST_ENTRIES=sabnzbd.home.jens.pub
volumes:
- sabnzbd_config:/config
- ${DOWNLOADS_PATH}:/downloads
depends_on:
gluetun:
condition: service_healthy
seerr:
image: ghcr.io/seerr-team/seerr:latest
container_name: seerr
init: true
restart: unless-stopped
environment:
- TZ=${TZ}
volumes:
- ${SEERR_DATA_PATH}:/app/config
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.seerr.rule=Host(`seerr.home.jens.pub`)"
- "traefik.http.routers.seerr.entrypoints=websecure"
- "traefik.http.services.seerr.loadbalancer.server.port=5055"
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
start_period: 20s
timeout: 3s
interval: 15s
retries: 3
depends_on:
gluetun:
condition: service_healthy
networks:
proxy:
external: true
volumes:
gluetun_data:
sonarr_config:
radarr_config:
prowlarr_config:
sabnzbd_config: