services: 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: - stash_external logging: driver: "json-file" options: max-file: "10" max-size: "2m" networks: stash_external: external: true