infra/servarr/docker-compose/servarr/docker-compose.yaml
2025-10-19 15:16:55 +02:00

155 lines
4.3 KiB
YAML

services:
sonarr:
image: lscr.io/linuxserver/sonarr:latest
labels:
- "traefik.enable=true"
- traefik.docker.network=traefik_traefik
- traefik.http.routers.sonarr-private.rule=Host(`sonarr.local`)
- traefik.http.routers.sonarr-private.entrypoints=web
- traefik.http.routers.sonarr-private.service=sonarr-private
- traefik.http.services.sonarr-private.loadbalancer.server.port=8989
container_name: sonarr
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- sonarr_config:/config
- servarr_data:/data
ports:
- 8401:8989
restart: unless-stopped
networks:
- servarr
- traefik_traefik
radarr:
image: lscr.io/linuxserver/radarr:latest
labels:
- "traefik.enable=true"
- traefik.docker.network=traefik_traefik
- traefik.http.routers.radarr-private.rule=Host(`radarr.local`)
- traefik.http.routers.radarr-private.entrypoints=web
- traefik.http.routers.radarr-private.service=radarr-private
- traefik.http.services.radarr-private.loadbalancer.server.port=7878
container_name: radarr
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- radarr_config:/config
- servarr_data:/data
ports:
- 8403:7878
restart: unless-stopped
networks:
- servarr
- traefik_traefik
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
labels:
- "traefik.enable=true"
- traefik.docker.network=traefik_traefik
- traefik.http.routers.prowlarr-private.rule=Host(`prowlarr.local`)
- traefik.http.routers.prowlarr-private.entrypoints=web
- traefik.http.routers.prowlarr-private.service=prowlarr-private
- traefik.http.services.prowlarr-private.loadbalancer.server.port=9696
container_name: prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- prowlarr_config:/config
ports:
- 8402:9696
restart: unless-stopped
networks:
- servarr
- traefik_traefik
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
labels:
- "traefik.enable=true"
- traefik.docker.network=traefik_traefik
- traefik.http.routers.qbittorrent-private.rule=Host(`torrent.local`)
- traefik.http.routers.qbittorrent-private.entrypoints=web
- traefik.http.routers.qbittorrent-private.service=qbittorrent-private
- traefik.http.services.qbittorrent-private.loadbalancer.server.port=8405
container_name: qbittorrent
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- WEBUI_PORT=8405
- TORRENTING_PORT=8406
volumes:
- qbittorrent_config:/config
- servarr_downloads:/data/downloads #optional
ports:
- 8405:8405
- 8406:8406
- 8406:8406/udp
restart: unless-stopped
networks:
- servarr
- traefik_traefik
jellyfin:
image: jellyfin/jellyfin
labels:
- "traefik.enable=true"
- traefik.docker.network=traefik_traefik
- traefik.http.routers.jellyfin-private.rule=Host(`jellyfin.local`)
- traefik.http.routers.jellyfin-private.entrypoints=web
- traefik.http.routers.jellyfin-private.service=jellyfin-private
- traefik.http.services.jellyfin-private.loadbalancer.server.port=8096
container_name: jellyfin
user: 1000:1000
ports:
- 8096:8096/tcp
- 7359:7359/udp
volumes:
- jellyfin_config:/config
- jellyfin_cache:/cache
- servarr_data:/data
restart: 'unless-stopped'
# Optional - alternative address used for autodiscovery
# environment:
# - JELLYFIN_PublishedServerUrl=http://example.com
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
prowlarr_config: {}
qbittorrent_config: {}
sonarr_config: {}
jellyfin_config: {}
jellyfin_cache: {}
radarr_config: {}
servarr_data:
driver_opts:
type: "nfs"
o: "addr=192.168.2.57,nolock,soft,rw"
device: ":/schneider/servarr/data"
servarr_downloads:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.2.57,nolock,soft,rw"
device: ":/schneider/servarr/data/downloads"
networks:
servarr: {}
traefik_traefik:
external: true