From 25885ea4f09581e4668a5285b35a15cd7e611c7d Mon Sep 17 00:00:00 2001 From: sstent Date: Mon, 27 Apr 2026 08:13:37 -0700 Subject: [PATCH] fix: use ND_DBPATH to point to LiteFS database directly, avoiding symlink errors --- entrypoint.sh | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 2a5181b..46a7b15 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -16,29 +16,6 @@ PRIMARY_TAGS='["navidrome","web","traefik.enable=true","urlprefix-/navidrome","t # --- Helper Functions --- -# Ensure Navidrome's data directory exists and has the database symlinked to LiteFS -setup_data_dir() { - echo "Setting up Navidrome data directory..." - - # Ensure /data exists (should be a volume mount) - if [ ! -d "/data" ]; then - echo "Creating /data directory..." - mkdir -p /data || { echo "ERROR: Failed to create /data"; exit 1; } - fi - - # Check if we can write to /data - touch /data/.write_test && rm /data/.write_test || { echo "ERROR: /data is not writable!"; exit 1; } - - # Symlink the database and its sidecar files to the LiteFS mount. - # We use -f to overwrite any existing files. - echo "Creating symlinks to LiteFS..." - ln -sf /litefs/navidrome.db /data/navidrome.db || echo "Warning: Failed to symlink navidrome.db" - ln -sf /litefs/navidrome.db-wal /data/navidrome.db-wal || echo "Warning: Failed to symlink navidrome.db-wal" - ln -sf /litefs/navidrome.db-shm /data/navidrome.db-shm || echo "Warning: Failed to symlink navidrome.db-shm" - - echo "Data directory setup complete." -} - # Backup Database (Only on Primary) run_backup() { local backup_dir="/data/backup" @@ -90,12 +67,16 @@ deregister_service() { start_app() { echo "Node is Primary. Starting Navidrome..." - # Ensure shared directories exist + # Ensure shared directories exist on persistent host volume mkdir -p /data/plugins /data/cache /data/backup + # Tell Navidrome to use the database directly from the LiteFS mount. + # This avoids symlink issues on filesystems that don't support them. + export ND_DBPATH="/litefs/navidrome.db" + /app/navidrome & NAVIDROME_PID=$! - echo "Navidrome started with PID ${NAVIDROME_PID}" + echo "Navidrome started with PID ${NAVIDROME_PID} using DB at ${ND_DBPATH}" } # Stop Navidrome @@ -122,7 +103,6 @@ trap cleanup TERM INT # --- Main Loop --- echo "Starting Supervisor. Waiting for leadership settle..." -setup_data_dir echo "Node IP: $NODE_IP" echo "Consul: $CONSUL_HTTP_ADDR"