Files
shpm/docker-compose.yml
T
nmemmertandClaude Sonnet 4.6 6f4e90a1c8 feat: play real music from local library in Memories slideshow
Scans MUSIC_DIR (mounted at /music in Docker) with music-metadata to
read embedded BPM/genre tags and classify tracks as upbeat/cinematic/
dreamy. Falls back to untagged general pool when mood bucket is thin.
Slideshow plays real audio via <audio> element with range-request
streaming; Web Audio synth is kept as fallback when MUSIC_DIR is unset.
Shows now-playing title/artist in the slideshow bottom bar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-18 15:26:18 -04:00

62 lines
1.3 KiB
YAML

services:
server:
image: ghcr.io/nmemmert/shpm:main
restart: unless-stopped
networks:
- luma_net
ports:
- "3700:3000"
environment:
PORT: "3000"
DB_PATH: /data/library.db
POSTER_DIR: /data/posters
MUSIC_DIR: /music
NODE_ENV: production
volumes:
- type: volume
source: luma_data
target: /data
- type: bind
source: /media/Plex/Gallery
target: /photos
- type: bind
source: /DATA/Media/Music
target: /music
read_only: true
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:3000/api/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
worker:
image: ghcr.io/nmemmert/shpm:main
restart: unless-stopped
networks:
- luma_net
command: ["node", "worker/index.js"]
environment:
DB_PATH: /data/library.db
POSTER_DIR: /data/posters
PHOTO_DIR: /photos
volumes:
- type: volume
source: luma_data
target: /data
- type: bind
source: /media/Plex/Gallery
target: /photos
read_only: true
depends_on:
server:
condition: service_healthy
networks:
luma_net:
external: true
volumes:
luma_data: