Files
musicgrabber/docker-compose.yml
g33kphr33k ac44fa9fce Album tracks get repaired in place, and the port stops playing hide and seek
- Search replacement on any album-browser track: the bad copy goes to
  Trash, the replacement keeps the folder, pressing, tags, and disc/track
  numbering, and the album M3U refreshes. Busy albums, stale selections,
  and ambiguous files get refused rather than guessed at.
- The Artists tab explains what following an artist actually includes:
  release-level credits, shared and featured credits, and the MusicBrainz
  release types that are skipped.
- Settings shows the configured bind address and port, /api/config
  exposes them, LISTEN_PORT rejects nonsense at startup, and the README
  covers VPN-container networking for Compose and Unraid.

Built with a human, a grumpy AI, and Codex, which did the heavy lifting
on this one while the grumpy AI held the clipboard.
2026-10-05 08:53:07 +01:00

61 lines
2.6 KiB
YAML

services:
music-grabber:
build: .
container_name: music-grabber
restart: unless-stopped
# Browser fallbacks need shared memory: Spotify playlists and Monochrome authentication can fail without this.
shm_size: '2gb'
ports:
- "38274:8080"
volumes:
# Mount your music library - adjust path as needed
- /mnt/music:/music
# Persist the job database and settings
- ./data:/data
# Optional: slskd downloads directory for Soulseek integration
- /mnt/music/downloads:/downloads
environment:
# Required paths
- MUSIC_DIR=/music
- DB_PATH=/data/music_grabber.db
# Optional: serve behind a reverse-proxy subpath (proxy must strip the prefix)
# - ROOT_PATH=/musicgrabber
# Optional: custom bind (defaults to 0.0.0.0:8080 if unset).
# If LISTEN_PORT changes, update the right side of ports above to match.
# Shared VPN network: remove this service's ports/networks, publish on
# the VPN container instead; see README "VPN-container networking".
# Recreate the container after changing environment variables.
# IPv6 demo (commented out):
# - LISTEN_ADDR=::
# - LISTEN_PORT=8080
# Optional: Run as specific user (like *arr stack)
# - PUID=1000
# - PGID=1000
# Optional: slskd downloads path (if using Soulseek)
- SLSKD_DOWNLOADS_PATH=/downloads
# Optional: increase timeouts for long tracks (DJ mixes, symphonies) or slow connections
# - TIMEOUT_YTDLP_DOWNLOAD=300 # yt-dlp download (default 5 min)
# - TIMEOUT_FFMPEG_CONVERT=120 # ffmpeg format conversion (default 2 min)
# Optional: add to your existing network if running with Navidrome/Jellyfin
# networks:
# - your-network
# =============================================================================
# CONFIGURATION
# =============================================================================
# Most settings can now be configured via the Settings tab in the web UI.
# Settings are stored in the SQLite database and persist across restarts.
#
# Environment variables can still be used to override UI settings:
# - SLSKD_URL, SLSKD_USER, SLSKD_PASS
# - NAVIDROME_URL, NAVIDROME_USER, NAVIDROME_PASS
# - JELLYFIN_URL, JELLYFIN_API_KEY
# - TELEGRAM_WEBHOOK_URL
# - SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_FROM, SMTP_TO, SMTP_TLS
# - NOTIFY_ON (singles,playlists,bulk,errors)
# - ENABLE_MUSICBRAINZ, ENABLE_LYRICS, DEFAULT_CONVERT_TO_FLAC
# - API_KEY (for authentication)
#
# When an env var is set, that setting will be locked in the UI.
# - DEFAULT_CONVERT_TO_FLAC=true