[server] # Use 0.0.0.0 when running in Docker; use 127.0.0.1 for local-only standalone use. host = "0.0.0.0" port = 7700 # IMPORTANT: change this to a long random string before exposing to the internet. # All API requests must include: Authorization: Bearer *** api_key = "change-me-to-something-secret" # Graceful shutdown: wait up to this many seconds for in-flight requests before force-exiting. shutdown_timeout_secs = 30 [library] # Paths to scan for music files. Sub-folders are scanned recursively. # In Docker: match these to the volume paths you mount in docker-compose.yml. # In sidecar mode (desktop app): managed automatically — no need to edit this. content_paths = [ "/music", ] # Rescan all content_paths on startup (true) or only when triggered via API (false). scan_on_startup = true # How many objects to read tags from in parallel during a remote scan. # Must stay above the [[library.remotes]] block below — in TOML a bare key # after a table header belongs to that table. # remote_scan_concurrency = 8 # ── Cloud storage (S3-compatible) ───────────────────────────────────────────── # Optional. Index music straight out of an S3-compatible bucket instead of (or # alongside) content_paths. Works with Hetzner Object Storage, Cloudflare R2, # Backblaze B2, Wasabi, MinIO, AWS S3, and anything else speaking the S3 API. # # Keep this block last in [library]: every key below it belongs to the remote. # # Example: Hetzner Object Storage, bucket "muorg" in Nuremberg. # [[library.remotes]] # name = "cloud" # letters/digits/-/_ only; used internally as remote://cloud/ # bucket = "muorg" # endpoint = "https://nbg1.your-objectstorage.com" # region = "nbg1" # the Hetzner location code # virtual_hosted_style = true # REQUIRED for Hetzner # prefix = "" # optional sub-folder inside the bucket # access_key_id = "..." # or MUORG_REMOTE_CLOUD_ACCESS_KEY_ID # secret_access_key = "..." # or MUORG_REMOTE_CLOUD_SECRET_ACCESS_KEY [storage] # In Docker: keep these inside the /data volume so they persist across restarts. db_path = "/data/muorg.db" backup_dir = "/data/backups" # Extracted album art for cloud tracks is cached here so covers do not hit the # bucket on every request. Local-folder tracks are unaffected. # cover_cache_dir = "/data/covers" # cover_cache_max_bytes = 536870912 # 512 MiB [cors] # Origins allowed to call the API. # Use ["*"] for LAN / home-server use; restrict to your domain for public deployments. allowed_origins = ["*"]