mapletree/mediaservices/docker-compose.yml
2026-01-26 16:03:22 +00:00

161 lines
4.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
ports:
- "8096:8096"
runtime: nvidia
environment:
- TZ=America/Edmonton
- JELLYFIN_DATA_DIR=/config
- JELLYFIN_CONFIG_DIR=/config/config
- JELLYFIN_CACHE_DIR=/cache
- JELLYFIN_LOG_DIR=/config/log
- PUID=1000
- PGID=1000
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
- TRANSCODE_OPERATING_MODE=ram
volumes:
- ./jellyfin/config:/config
- ./jellyfin/cache:/cache
- /pool/music:/music
- /pool/tv:/tv
- /pool/movies:/movies
- /dev/shm:/transcode
cpus: "4.0"
mem_limit: "12288m"
mem_reservation: "4096m"
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
restart: unless-stopped
labels:
- "traefik.enable=true"
# Router
- "traefik.http.routers.jellyfin.rule=Host(`media.mapletree.email`)"
- "traefik.http.routers.jellyfin.entrypoints=web,websecure"
- "traefik.http.routers.jellyfin.tls.certresolver=myresolver"
# Service (points to internal port)
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
networks:
- media
plex:
container_name: plex
image: plexinc/pms-docker:latest
restart: unless-stopped
network_mode: host
runtime: nvidia
environment:
- TZ=US
- VERSION=latest
#- PLEX_CLAIM=claim-MTdwY-AT5KdnTMp7KfU3
- PUID=1000
- PGID=1000
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
- TRANSCODE_OPERATING_MODE=ram
cpus: "4.0"
mem_limit: "12288m"
mem_reservation: "4096m"
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
volumes:
- ./plex:/config
- /pool/tv/library:/mnt/tv
- /pool/movies/library:/mnt/movies
- /pool/music/library:/mnt/music
- /dev/shm:/trasncode
stash:
build:
context: .
dockerfile: dockerfile.stash
container_name: stash
restart: unless-stopped
# Match the containers exposed port with the internal Stash port
ports:
- "9999:9999"
# Optional: for DLNA (comment ports above and uncomment this)
# network_mode: host
# Resource limits
cpus: "4.0"
mem_limit: "8192m"
mem_reservation: "2048m"
runtime: nvidia
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
environment:
# Stash internal paths
- STASH_STASH=/data/
- STASH_GENERATED=/generated/
- STASH_METADATA=/metadata/
- STASH_CACHE=/cache/
- STASH_PORT=9999
- TRANSCODE_OPERATING_MODE=ram
- STASH_EXTERNAL_HOST=https://stash.mapletree.email
# Run as root (can adjust later if needed)
- PUID=1000
- PGID=1000
# Optional — enable headless Chromium for scrapers
- CHROME_PATH=/usr/bin/chromium
- STASH_BROWSER=chromium
# GPU enable tfor transcoding
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
volumes:
- /etc/localtime:/etc/localtime:ro
- /dev/shm:/tmp
# Persistent Stash app data
- ./stash-db:/root/.stash
- ./stash/data/data:/data
- ./stash/data/metadata:/metadata
- ./stash/data/cache:/cache
- ./stash/data/blobs:/blobs
- ./stash/data/generated:/generated
# Media mounts (your library)
- /pool/other:/media
labels:
- "traefik.enable=true"
- "wud.ignore=true"
# Router
- "traefik.http.routers.stash.rule=Host(`stash.mapletree.email`)"
- "traefik.http.routers.stash.entrypoints=web,websecure"
- "traefik.http.routers.stash.tls.certresolver=myresolver"
- "traefik.http.routers.stash.middlewares=stash-headers"
- "traefik.http.middlewares.stash-headers.headers.customrequestheaders.X-Forwarded-Proto=https"
# Service (points to internal port)
- "traefik.http.services.stash.loadbalancer.server.port=9999"
networks:
- web
logging:
driver: "json-file"
options:
max-file: "10"
max-size: "2m"
networks:
media:
external: true
web:
external: true