250 lines
7.5 KiB
YAML
250 lines
7.5 KiB
YAML
---
|
|
networks:
|
|
traefik:
|
|
external: true
|
|
media:
|
|
name: media
|
|
|
|
volumes:
|
|
jellyseerr_config:
|
|
transmission_config:
|
|
prowlarr_config:
|
|
radarr_config:
|
|
sonarr_config:
|
|
wizarr_config:
|
|
|
|
services:
|
|
transmission-openvpn:
|
|
image: haugene/transmission-openvpn:5.3.1
|
|
container_name: transmission-openvpn
|
|
cap_add:
|
|
- NET_ADMIN
|
|
networks:
|
|
- traefik
|
|
- media
|
|
volumes:
|
|
- transmission_config:/config
|
|
- ${MEDIA_DIRECTORY:-/mnt/media}/torrents:${MEDIA_DIRECTORY:-/mnt/media}/torrents
|
|
environment:
|
|
- PUID=${PUID:-8796}
|
|
- PGID=${PGID:-3005}
|
|
- OPENVPN_PROVIDER=${OPENVPN_PROVIDER:-SURFSHARK}
|
|
# - OPENVPN_CONFIG=us-sea.prod.surfshark.com_udp
|
|
# The startup script fails when cloning and checking out the configuration
|
|
# repo for some reason. Passing a URL to skip that seems to work though.
|
|
- OPENVPN_CONFIG_URL=${OPENVPN_CONFIG_URL:-https://raw.githubusercontent.com/haugene/vpn-configs-contrib/refs/heads/main/openvpn/surfshark/us-lax.prod.surfshark.com_udp.ovpn}
|
|
- OPENVPN_USERNAME=${OPENVPN_USERNAME}
|
|
- OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
|
|
# If OpenVPN stops, container will stop and then restart option
|
|
# below will bring it back to life.
|
|
# Surfshark seems to switch IPs frequently (as of 9/8/2023) so
|
|
# this is helpful.
|
|
- OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60
|
|
- TRANSMISSION_DOWNLOAD_DIR=${MEDIA_DIRECTORY:-/mnt/media}/torrents/completed
|
|
- TRANSMISSION_INCOMPLETE_DIR=${MEDIA_DIRECTORY:-/mnt/media}/torrents/incomplete
|
|
- TRANSMISSION_WEB_UI=flood-for-transmission
|
|
- TZ=America/Vancouver
|
|
- LOCAL_NETWORK=10.0.0.0/16
|
|
restart: unless-stopped
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.transmission_openvpn.rule=Host(`${TRANSMISSION_HOST:-tovpn.jumper.mnke.org}`)"
|
|
- "traefik.http.routers.transmission_openvpn.entrypoints=websecure"
|
|
- "traefik.http.routers.transmission_openvpn.tls=true"
|
|
- "traefik.http.services.transmission_openvpn.loadbalancer.server.port=9091"
|
|
- "traefik.docker.network=traefik"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '1.0'
|
|
# heavy boi
|
|
memory: 2048M
|
|
reservations:
|
|
cpus: '0.25'
|
|
memory: 64M
|
|
|
|
prowlarr:
|
|
image: lscr.io/linuxserver/prowlarr:1.30.2
|
|
container_name: prowlarr
|
|
environment:
|
|
- PUID=${PUID:-8796}
|
|
- PGID=${PGID:-3005}
|
|
- TZ=America/Vancouver
|
|
networks:
|
|
- media
|
|
- traefik
|
|
volumes:
|
|
- prowlarr_config:/config
|
|
restart: unless-stopped
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.prowlarr.rule=Host(`${PROWLARR_HOST:-prowlarr.jumper.mnke.org}`)"
|
|
- "traefik.http.routers.prowlarr.entrypoints=websecure"
|
|
- "traefik.http.routers.prowlarr.tls=true"
|
|
- "traefik.http.services.prowlarr.loadbalancer.server.port=9696"
|
|
- "traefik.docker.network=traefik"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.5'
|
|
memory: 256M
|
|
reservations:
|
|
cpus: '0.1'
|
|
memory: 64M
|
|
|
|
radarr:
|
|
image: lscr.io/linuxserver/radarr:5.18.4
|
|
container_name: radarr
|
|
environment:
|
|
- PUID=${PUID:-8796}
|
|
- PGID=${PGID:-3005}
|
|
- TZ=America/Vancouver
|
|
networks:
|
|
- media
|
|
- traefik
|
|
volumes:
|
|
- radarr_config:/config
|
|
- ${MEDIA_DIRECTORY:-/mnt/media}:${MEDIA_DIRECTORY:-/mnt/media}
|
|
depends_on:
|
|
transmission-openvpn:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.radarr.rule=Host(`${RADARR_HOST:-radarr.jumper.mnke.org}`)"
|
|
- "traefik.http.routers.radarr.entrypoints=websecure"
|
|
- "traefik.http.routers.radarr.tls=true"
|
|
- "traefik.http.services.radarr.loadbalancer.server.port=7878"
|
|
- "traefik.docker.network=traefik"
|
|
deploy:
|
|
mode: replicated
|
|
resources:
|
|
limits:
|
|
cpus: '0.5'
|
|
memory: 512M
|
|
reservations:
|
|
cpus: '0.1'
|
|
memory: 64M
|
|
|
|
sonarr:
|
|
image: lscr.io/linuxserver/sonarr:4.0.12
|
|
container_name: sonarr
|
|
environment:
|
|
- PUID=${PUID:-8796}
|
|
- PGID=${PGID:-3005}
|
|
- TZ=America/Vancouver
|
|
networks:
|
|
- media
|
|
- traefik
|
|
volumes:
|
|
- sonarr_config:/config
|
|
- ${MEDIA_DIRECTORY:-/mnt/media}:${MEDIA_DIRECTORY:-/mnt/media}
|
|
depends_on:
|
|
transmission-openvpn:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.sonarr.rule=Host(`${SONARR_HOST:-sonarr.jumper.mnke.org}`)"
|
|
- "traefik.http.routers.sonarr.entrypoints=websecure"
|
|
- "traefik.http.routers.sonarr.tls=true"
|
|
- "traefik.http.services.sonarr.loadbalancer.server.port=8989"
|
|
- "traefik.docker.network=traefik"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.5'
|
|
memory: 512M
|
|
reservations:
|
|
cpus: '0.1'
|
|
memory: 64M
|
|
|
|
flaresolverr:
|
|
image: ghcr.io/flaresolverr/flaresolverr:v3.3.21
|
|
container_name: flaresolverr
|
|
environment:
|
|
- LOG_LEVEL=${FLARESOLVERR_LOG_LEVEL:-info}
|
|
- LOG_HTML=${FLARESOLVERR_LOG_HTML:-false}
|
|
- CAPTCHA_SOLVER=${FLARESOLVERR_CAPTCHA_SOLVER:-none}
|
|
- TZ=America/Vancouver
|
|
networks:
|
|
- media
|
|
# ports:
|
|
# - "${PORT:-8191}:8191"
|
|
restart: unless-stopped
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.25'
|
|
memory: 256M
|
|
reservations:
|
|
cpus: '0.1'
|
|
memory: 64M
|
|
|
|
jellyseerr:
|
|
image: fallenbagel/jellyseerr:2.3.0
|
|
container_name: jellyseerr
|
|
environment:
|
|
# - LOG_LEVEL=debug
|
|
- TZ=America/Vancouver
|
|
networks:
|
|
- media
|
|
- traefik
|
|
volumes:
|
|
- jellyseerr_config:/app/config
|
|
# This does have a soft dependency on radarr and sonarr, but I don't want
|
|
# to wait for it because when rolling out updates, I want to have as little
|
|
# downtime on jellyseerr as possible
|
|
# depends_on:
|
|
# radarr:
|
|
# condition: service_started
|
|
# sonarr:
|
|
# condition: service_started
|
|
restart: unless-stopped
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.jellyseerr.rule=Host(`${JELLYSEERR_HOST:-seerr.jumper.mnke.org}`)"
|
|
- "traefik.http.routers.jellyseerr.entrypoints=websecure"
|
|
- "traefik.http.routers.jellyseerr.tls=true"
|
|
- "traefik.http.services.jellyseerr.loadbalancer.server.port=5055"
|
|
- "traefik.docker.network=traefik"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.5'
|
|
memory: 512M
|
|
reservations:
|
|
cpus: '0.1'
|
|
memory: 64M
|
|
|
|
wizarr:
|
|
image: tonyd33/wizarr
|
|
container_name: wizarr
|
|
environment:
|
|
# This is intentionally not WIZARR_HOST. I'm still in the process of
|
|
# migrating everything into mnke.org domain.
|
|
- 'APP_URL=https://wizarr.tonydu.me'
|
|
- DISABLE_BUILTIN_AUTH=false
|
|
- TZ=America/Vancouver
|
|
volumes:
|
|
- wizarr_config:/data/database
|
|
networks:
|
|
- media
|
|
- traefik
|
|
restart: unless-stopped
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.wizarr.rule=Host(`${WIZARR_HOST:-wizarr.jumper.mnke.org}`)"
|
|
- "traefik.http.routers.wizarr.entrypoints=websecure"
|
|
- "traefik.http.routers.wizarr.tls=true"
|
|
- "traefik.http.services.wizarr.loadbalancer.server.port=5690"
|
|
- "traefik.docker.network=traefik"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.2'
|
|
memory: 256M
|
|
reservations:
|
|
cpus: '0.1'
|
|
memory: 64M
|