Files
compose-files/media/media.yaml
T
admin ee2cc8d1eb
ci/woodpecker/push/woodpecker Pipeline was canceled
refactor(media): move to folder-based layout
2026-06-30 23:34:13 -07:00

226 lines
6.9 KiB
YAML

services:
Plex-Media-Server-GPU:
hostname: plex
cap_add:
- SYS_MODULE
entrypoint:
- "/init"
# - /bin/bash #turn on for DB maintenance
# command: -c "sleep infinity" #turn on for DB maintenance
environment:
- "PUID=0" #1027
- "PGID=0" #100
- "VERSION=latest"
- "ADVERTISE_IP=https://plex.${DOMAIN}:443/"
networks:
- traefik_backend
image: "linuxserver/plex:latest"
volumes:
- /volume1/TV Shows:/volume1/TV
- /volume1/Movies:/volume1/Movies
- /volume1/docker/Plex Media Server:/config
- /volume1/Plex-Backups:/Plex-Backups
- /dev/dri:/dev/dri
- type: tmpfs
target: /dev/shm
tmpfs:
size: 400000000000
healthcheck:
test: curl -fsSS http://localhost:32400/identity > /dev/null || exit 1
start_period: 900s
timeout: 10s
interval: 5s
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.plex.rule=Host(`plex.${DOMAIN}`)
- traefik.http.routers.plex.tls=true
- traefik.http.routers.plex.tls.certresolver=letsencrypt
- traefik.http.routers.plex.entrypoints=websecure
- traefik.http.services.plex.loadbalancer.server.port=32400
- traefik.http.services.plex.loadbalancer.server.scheme=https
- traefik.http.routers.plex.middlewares=crowdsec@file
- traefik.swarm.network=traefik_backend
- autoheal=true
resources:
limits:
cpus: '8'
memory: 4G
placement:
constraints:
- node.labels.block != databases
Radarr:
entrypoint:
- "/init"
environment:
- "PUID=0" #1027
- "PGID=0" #100
- "TZ=PST"
image: "linuxserver/radarr:latest"
hostname: movies
networks:
- traefik_backend
- postgresql_db-backend
stdin_open: true
tty: true
volumes:
- /volume1/docker/Radarr/config:/config
- /volume1/Box Office/incomplete:/incomplete
- /volume1/Box Office/Drop off:/dropoff
- /volume1/Movies:/movies
healthcheck:
test: curl -fSs http://127.0.0.1:7878 > /dev/null || exit 1
start_period: 90s
timeout: 5s
interval: 5s
retries: 3
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.radarr.rule=Host(`movies.${DOMAIN}`)
- traefik.http.routers.radarr.tls=true
- traefik.http.routers.radarr.tls.certresolver=letsencrypt
- traefik.http.routers.radarr.entrypoints=websecure
- traefik.http.services.movies.loadbalancer.server.port=7878
- traefik.swarm.network=traefik_backend
- traefik.http.routers.radarr.middlewares=forwardAuth-authentik@file, crowdsec@file
- autoheal=true
resources:
limits:
cpus: '2'
memory: 512M
Sonarr:
entrypoint:
- "/init"
environment:
- "TZ=PST"
- "PUID=0" #1027
- "PGID=0" #100
image: "linuxserver/sonarr:latest"
hostname: tv
networks:
- traefik_backend
- postgresql_db-backend
volumes:
- /volume1/Box Office/incomplete:/incomplete
- /volume1/Box Office/Drop off:/dropoff
- /volume1/TV Shows:/tv
- /volume1/docker/Sonarr/config:/config
healthcheck:
test: curl -fSs http://127.0.0.1:8989 || exit 1
start_period: 90s
timeout: 5s
interval: 5s
retries: 3
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.sonarr.rule=Host(`tv.${DOMAIN}`)
- traefik.http.routers.sonarr.tls=true
- traefik.http.routers.sonarr.tls.certresolver=letsencrypt
- traefik.http.routers.sonarr.entrypoints=websecure
- traefik.http.services.tv.loadbalancer.server.port=8989
- traefik.swarm.network=traefik_backend
- traefik.http.routers.sonarr.middlewares=forwardAuth-authentik@file, crowdsec@file
- autoheal=true
resources:
limits:
cpus: '2' # Limit to 0.5 CPU core
memory: 512M
TicketBox:
cap_add:
- NET_ADMIN
environment:
- "ENABLE_PRIVOXY=no"
- "STRICT_PORT_FORWARD=yes"
- "PGID=0"
- "PUID=0"
- "UMASK=000"
- "DEBUG=false"
- "NAME_SERVERS=1.1.1.1"
- "LAN_NETWORK=192.168.0.0/16,10.0.0.0/8,127.0.0.1/32"
- "VPN_PROV=custom"
- "VPN_ENABLED=yes"
- "DELUGE_ENABLE_WEBUI_PASSWORD=no"
image: "binhex/arch-delugevpn:latest"
hostname: ticketbox
networks:
- traefik_backend
volumes:
- /volume1/Box Office/Pick up:/pickup
- /volume1/docker/Deluge/config:/config
- /volume1/Box Office/incomplete:/incomplete
- /volume1/Box Office/Drop off:/dropoff
- /dev/net/tun:/dev/net/tun
healthcheck:
test: curl -fSs http://127.0.0.1:8112 || exit 1
start_period: 120s
timeout: 5s
interval: 5s
retries: 3
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.ticketbox.rule=Host(`ticketbox.${DOMAIN}`)
- traefik.http.routers.ticketbox.tls=true
- traefik.http.routers.ticketbox.tls.certresolver=letsencrypt
- traefik.http.routers.ticketbox.entrypoints=websecure
- traefik.http.services.ticketbox.loadbalancer.server.port=8112
- traefik.swarm.network=traefik_backend
- traefik.http.routers.ticketbox.middlewares=forwardAuth-authentik@file, crowdsec@file
- autoheal=true
resources:
limits:
cpus: '2'
memory: 1G
Jackett:
entrypoint:
- "/init"
environment:
- "TZ=PST"
- "PUID=0" #1027
- "PGID=0" #100
image: "linuxserver/jackett:latest"
hostname: jackett
networks:
- traefik_backend
stdin_open: true
tty: true
volumes:
- /volume1/docker/Jackett/config:/config
- /volume1/docker/Jackett/downloads:/downloads
deploy:
endpoint_mode: dnsrr
labels:
- traefik.enable=true
- traefik.http.routers.jackett-ip.rule=Host(`jackett.${DOMAIN}`) && ClientIP(`10.0.1.0/16`)
- traefik.http.routers.jackett-auth.rule=Host(`jackett.${DOMAIN}`)
- traefik.http.routers.jackett-ip.tls=true
- traefik.http.routers.jackett-auth.tls=true
- traefik.http.routers.jackett-ip.tls.certresolver=letsencrypt
- traefik.http.routers.jackett-auth.tls.certresolver=letsencrypt
- traefik.http.routers.jackett-ip.entrypoints=websecure
- traefik.http.routers.jackett-auth.entrypoints=websecure
- traefik.http.services.jackett.loadbalancer.server.port=9117
- traefik.swarm.network=traefik_backend
- traefik.http.routers.jackett-auth.middlewares=forwardAuth-authentik@file, crowdsec@file
- autoheal=true
placement:
constraints: [node.role == manager]
resources:
limits:
cpus: '0.5'
memory: 512M
networks:
postgresql_db-backend:
external: true
traefik_backend:
external: true
host:
external: true