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: - /docker/mediaservices/jellyfin/config:/config - /docker/mediaservices/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: - /docker/mediaservices/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 container’s 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 - /docker/mediaservices/stash-db:/root/.stash - /docker/mediaservices/stash/data/data:/data - /docker/mediaservices/stash/data/metadata:/metadata - /docker/mediaservices/stash/data/cache:/cache - /docker/mediaservices/stash/data/blobs:/blobs - /docker/mediaservices/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