homelab/docker/compose/media/docker-compose.yml

202 lines
6.0 KiB
YAML

---
networks:
traefik:
external: true
media:
volumes:
jellyseerr_config:
transmission_config:
prowlarr_config:
radarr_config:
sonarr_config:
services:
transmission-openvpn:
image: haugene/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
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: '0.50'
memory: 512M
reservations:
cpus: '0.25'
memory: 64M
prowlarr:
image: lscr.io/linuxserver/prowlarr
environment:
- PUID=${PUID:-8796}
- PGID=${PGID:-3005}
- TZ=America/Vancouver
networks:
- media
- traefik
volumes:
- prowlarr_config:/config
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
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
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: 256M
reservations:
cpus: '0.1'
memory: 64M
sonarr:
image: lscr.io/linuxserver/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
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: 256M
reservations:
cpus: '0.1'
memory: 64M
flaresolverr:
image: ghcr.io/flaresolverr/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"
deploy:
resources:
limits:
cpus: '0.25'
memory: 256M
reservations:
cpus: '0.1'
memory: 64M
jellyseerr:
image: fallenbagel/jellyseerr
environment:
# - LOG_LEVEL=debug
- TZ=America/Vancouver
networks:
- media
- traefik
volumes:
- jellyseerr_config:/app/config
depends_on:
radarr:
condition: service_started
sonarr:
condition: service_started
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