diff --git a/dashcaddy-api/scripts/dashcaddy-update.sh b/dashcaddy-api/scripts/dashcaddy-update.sh index 4413434..e16aaae 100644 --- a/dashcaddy-api/scripts/dashcaddy-update.sh +++ b/dashcaddy-api/scripts/dashcaddy-update.sh @@ -115,7 +115,7 @@ main() { exit 1 fi - # 3. Backup current API files + # 3. Backup current API files AND data directory local backup_dir="${BACKUPS_DIR}/${from_version}" mkdir -p "$backup_dir" log "Backing up current API files to ${backup_dir}" @@ -126,9 +126,14 @@ main() { done [[ -d "$api_source_dir/routes" ]] && cp -rf "$api_source_dir/routes" "$backup_dir/" [[ -d "$api_source_dir/src" ]] && cp -rf "$api_source_dir/src" "$backup_dir/" - # VERSION (commit hash) was copied from api_source_dir above; preserve as-is - # so a rollback restores the original commit marker. The version *string* is - # already encoded in the backup dir name (${from_version}). + + # Backup data directory (services.json, config.json, credentials, TOTP, etc.) + # This is the critical gap — without this, user data is lost on every update. + if [[ -d "$api_source_dir/data" ]]; then + log "Backing up data directory: ${api_source_dir}/data/" + rm -rf "$backup_dir/data" + cp -rf "$api_source_dir/data" "$backup_dir/data" + fi cleanup_old_backups @@ -212,6 +217,12 @@ main() { rm -rf "$api_source_dir/src" cp -rf "$backup_dir/src" "$api_source_dir/src" fi + # Restore data directory (services.json, config.json, credentials, TOTP, etc.) + if [[ -d "$backup_dir/data" ]]; then + log "Restoring data directory from backup" + rm -rf "$api_source_dir/data" + cp -rf "$backup_dir/data" "$api_source_dir/data" + fi write_result "false" "$version" "$(( $(date +%s) - start_time ))" "Docker build failed" rm -f "${TRIGGER_FILE}.processing" @@ -237,6 +248,12 @@ main() { rm -rf "$api_source_dir/src" cp -rf "$backup_dir/src" "$api_source_dir/src" fi + # Restore data directory + if [[ -d "$backup_dir/data" ]]; then + log "Restoring data directory from backup" + rm -rf "$api_source_dir/data" + cp -rf "$backup_dir/data" "$api_source_dir/data" + fi docker compose build --quiet 2>&1 || docker-compose build --quiet 2>&1 || true docker compose up -d 2>&1 || docker-compose up -d 2>&1 || true @@ -267,6 +284,12 @@ main() { rm -rf "$api_source_dir/src" cp -rf "$backup_dir/src" "$api_source_dir/src" fi + # Restore data directory + if [[ -d "$backup_dir/data" ]]; then + log "Restoring data directory from backup" + rm -rf "$api_source_dir/data" + cp -rf "$backup_dir/data" "$api_source_dir/data" + fi docker compose build --quiet 2>&1 || docker-compose build --quiet 2>&1 || true docker compose up -d 2>&1 || docker-compose up -d 2>&1 || true