diff --git a/entrypoint.sh b/entrypoint.sh index b393f49..75f67bb 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -46,25 +46,6 @@ wait_for_litefs() { return 1 } -# Backup Database (Only on Primary) -run_backup() { - local backup_dir="/shared_data/backup" - local timestamp=$(date +%Y%m%d_%H%M%S) - local backup_file="${backup_dir}/navidrome.db_${timestamp}.bak" - - echo "Backing up database to ${backup_file}..." - mkdir -p "$backup_dir" - - if litefs export -name navidrome.db "$backup_file"; then - echo "Backup successful." - # Keep only last 7 days - find "$backup_dir" -name "navidrome.db_*.bak" -mtime +7 -delete - echo "Old backups cleaned." - else - echo "ERROR: Backup failed!" - fi -} - # Register Service with TTL Check register_service() { echo "Registering service ${SERVICE_ID} with Consul..." @@ -99,6 +80,19 @@ start_app() { # Ensure shared directories exist mkdir -p /shared_data/plugins /shared_data/cache /shared_data/backup /shared_data/artist_images + # SEEDING LOGIC: If DB doesn't exist, restore from backup + if [ ! -f /data/navidrome.db ]; then + echo "Database /data/navidrome.db not found. Looking for backups to seed..." + local latest_backup=$(ls -t /shared_data/backup/navidrome.db_*.bak 2>/dev/null | head -n 1) + if [ -n "$latest_backup" ]; then + echo "Seeding from $latest_backup..." + # We use litefs import to properly initialize the distributed state + litefs import -name navidrome.db "$latest_backup" + else + echo "No backups found. Navidrome will start with a fresh database." + fi + fi + # Wait for LiteFS to expose the DB file in the FUSE mount echo "Waiting for /data/navidrome.db..." local db_timeout=30 @@ -155,9 +149,6 @@ trap cleanup TERM INT echo "Starting Supervisor. Waiting for leadership settle..." wait_for_litefs || exit 1 -LAST_BACKUP_TIME=$(date +%s) -BACKUP_INTERVAL=86400 # 24 hours - while true; do if check_primary; then # === WE ARE PRIMARY === @@ -166,13 +157,6 @@ while true; do register_service fi pass_ttl - - # Handle periodic backup - CURRENT_TIME=$(date +%s) - if [ $((CURRENT_TIME - LAST_BACKUP_TIME)) -ge $BACKUP_INTERVAL ]; then - run_backup - LAST_BACKUP_TIME=$CURRENT_TIME - fi else # === WE ARE REPLICA === if [ "${NAVIDROME_PID}" -gt 0 ]; then