nixos-servers/docker_swarm/roles/media/docker-stack.yml.j2

257 lines
7.4 KiB
Django/Jinja

# vi: ft=yaml
version: '3.5'
networks:
traefik:
external: true
volumes:
media:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/media"
jellyfin_config:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/jellyfin/config"
transmission_config:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/transmission/config"
jellyseerr_config:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/jellyseerr/config"
radarr_config:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/radarr/config"
sonarr_config:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/sonarr/config"
prowlarr_config:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/prowlarr/config"
bazarr_config:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/bazarr/config"
jellyfin_cache:
services:
jellyfin:
image: jellyfin/jellyfin:10.8.13-1
network_mode: 'host'
volumes:
- jellyfin_cache:/cache
- type: volume
source: jellyfin_config
target: /config
volume:
nocopy: true
- type: volume
source: media
target: /media
volume:
nocopy: true
# Alternative address used for autodiscovery
environment:
- JELLYFIN_PublishedServerUrl=http://media.kun.is:444
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
# extra_hosts:
# - "host.docker.internal:host-gateway"
networks:
- traefik
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.jellyfin.entrypoints=websecure
- traefik.http.routers.jellyfin.rule=Host(`media.kun.is`)
- traefik.http.routers.jellyfin.tls=true
- traefik.http.routers.jellyfin.tls.certresolver=letsencrypt
- traefik.http.routers.jellyfin.service=jellyfin
- traefik.http.services.jellyfin.loadbalancer.server.port=8096
- traefik.docker.network=traefik
transmission:
image: lscr.io/linuxserver/transmission:latest
ports:
- "{{ bittorrent_port }}:{{ bittorrent_port }}"
- "{{ bittorrent_port }}:{{ bittorrent_port }}/udp"
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- type: volume
source: transmission_config
target: /config
volume:
nocopy: true
- type: volume
source: media
target: /media
volume:
nocopy: true
networks:
- traefik
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.transmission.entrypoints=localsecure
- traefik.http.routers.transmission.rule=Host(`transmission.kun.is`)
- traefik.http.routers.transmission.tls=true
- traefik.http.routers.transmission.tls.certresolver=letsencrypt
- traefik.http.routers.transmission.service=transmission
- traefik.http.services.transmission.loadbalancer.server.port=9091
- traefik.docker.network=traefik
jellyseerr:
image: fallenbagel/jellyseerr:1.7.0
environment:
# TODO: fix log level
- LOG_LEVEL=debug
- TZ=Europe/Amsterdam
volumes:
- type: volume
source: jellyseerr_config
target: /app/config
volume:
nocopy: true
networks:
- traefik
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.jellyseerr.entrypoints=localsecure
- traefik.http.routers.jellyseerr.rule=Host(`jellyseerr.kun.is`)
- traefik.http.routers.jellyseerr.tls=true
- traefik.http.routers.jellyseerr.tls.certresolver=letsencrypt
- traefik.http.routers.jellyseerr.service=jellyseerr
- traefik.http.services.jellyseerr.loadbalancer.server.port=5055
- traefik.docker.network=traefik
radarr:
image: lscr.io/linuxserver/radarr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- type: volume
source: radarr_config
target: /config
volume:
nocopy: true
- type: volume
source: media
target: /media
volume:
nocopy: true
networks:
- traefik
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.radarr.entrypoints=localsecure
- traefik.http.routers.radarr.rule=Host(`radarr.kun.is`)
- traefik.http.routers.radarr.tls=true
- traefik.http.routers.radarr.tls.certresolver=letsencrypt
- traefik.http.routers.radarr.service=radarr
- traefik.http.services.radarr.loadbalancer.server.port=7878
- traefik.docker.network=traefik
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- type: volume
source: prowlarr_config
target: /config
volume:
nocopy: true
networks:
- traefik
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.prowlarr.entrypoints=localsecure
- traefik.http.routers.prowlarr.rule=Host(`prowlarr.kun.is`)
- traefik.http.routers.prowlarr.tls=true
- traefik.http.routers.prowlarr.tls.certresolver=letsencrypt
- traefik.http.routers.prowlarr.service=prowlarr
- traefik.http.services.prowlarr.loadbalancer.server.port=9696
- traefik.docker.network=traefik
sonarr:
image: lscr.io/linuxserver/sonarr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- type: volume
source: sonarr_config
target: /config
volume:
nocopy: true
- type: volume
source: media
target: /media
volume:
nocopy: true
networks:
- traefik
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.sonarr.entrypoints=localsecure
- traefik.http.routers.sonarr.rule=Host(`sonarr.kun.is`)
- traefik.http.routers.sonarr.tls=true
- traefik.http.routers.sonarr.tls.certresolver=letsencrypt
- traefik.http.routers.sonarr.service=sonarr
- traefik.http.services.sonarr.loadbalancer.server.port=8989
- traefik.docker.network=traefik
bazarr:
image: lscr.io/linuxserver/bazarr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- type: volume
source: bazarr_config
target: /config
volume:
nocopy: true
- type: volume
source: media
target: /media
volume:
nocopy: true
networks:
- traefik
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.bazarr.entrypoints=localsecure
- traefik.http.routers.bazarr.rule=Host(`bazarr.kun.is`)
- traefik.http.routers.bazarr.tls=true
- traefik.http.routers.bazarr.tls.certresolver=letsencrypt
- traefik.http.routers.bazarr.service=bazarr
- traefik.http.services.bazarr.loadbalancer.server.port=6767
- traefik.docker.network=traefik