mirror of
https://github.com/community-scripts/ProxmoxVE-Local.git
synced 2026-04-05 08:53:56 -04:00
fix: allow update without existing database file
Database verification now allows missing database files for new installations. The app will create the database automatically via Prisma migrations on first start.
This commit is contained in:
53
update.sh
53
update.sh
@@ -72,7 +72,7 @@ load_github_token() {
|
||||
# Initialize log file
|
||||
init_log() {
|
||||
# Clear/create log file
|
||||
> "$LOG_FILE"
|
||||
>"$LOG_FILE"
|
||||
log "Starting ProxmoxVE-Local update process..."
|
||||
log "Log file: $LOG_FILE"
|
||||
}
|
||||
@@ -100,19 +100,19 @@ check_dependencies() {
|
||||
|
||||
local missing_deps=()
|
||||
|
||||
if ! command -v curl &> /dev/null; then
|
||||
if ! command -v curl &>/dev/null; then
|
||||
missing_deps+=("curl")
|
||||
fi
|
||||
|
||||
if ! command -v jq &> /dev/null; then
|
||||
if ! command -v jq &>/dev/null; then
|
||||
missing_deps+=("jq")
|
||||
fi
|
||||
|
||||
if ! command -v npm &> /dev/null; then
|
||||
if ! command -v npm &>/dev/null; then
|
||||
missing_deps+=("npm")
|
||||
fi
|
||||
|
||||
if ! command -v node &> /dev/null; then
|
||||
if ! command -v node &>/dev/null; then
|
||||
missing_deps+=("node")
|
||||
fi
|
||||
|
||||
@@ -418,6 +418,12 @@ restore_backup_files() {
|
||||
verify_database_restored() {
|
||||
log "Verifying database was restored correctly..."
|
||||
|
||||
# Ensure data directory exists (will be auto-created by app if needed)
|
||||
if [ ! -d "data" ]; then
|
||||
log "Creating data directory..."
|
||||
mkdir -p data
|
||||
fi
|
||||
|
||||
# Check for both possible database filenames
|
||||
local db_file=""
|
||||
if [ -f "data/database.sqlite" ]; then
|
||||
@@ -425,8 +431,10 @@ verify_database_restored() {
|
||||
elif [ -f "data/settings.db" ]; then
|
||||
db_file="data/settings.db"
|
||||
else
|
||||
log_error "Database file not found after restore! (checked database.sqlite and settings.db)"
|
||||
return 1
|
||||
# Database doesn't exist yet - this is OK for new installations
|
||||
# The app will create it automatically via Prisma migrations
|
||||
log_warning "No existing database file found - will be created automatically on first start"
|
||||
return 0
|
||||
fi
|
||||
|
||||
local db_size=$(stat -f%z "$db_file" 2>/dev/null || stat -c%s "$db_file" 2>/dev/null)
|
||||
@@ -461,9 +469,9 @@ ensure_database_url() {
|
||||
|
||||
# Add DATABASE_URL to .env file
|
||||
log "Adding DATABASE_URL to .env file..."
|
||||
echo "" >> .env
|
||||
echo "# Database" >> .env
|
||||
echo "DATABASE_URL=\"file:./data/settings.db\"" >> .env
|
||||
echo "" >>.env
|
||||
echo "# Database" >>.env
|
||||
echo "DATABASE_URL=\"file:./data/settings.db\"" >>.env
|
||||
|
||||
log_success "DATABASE_URL added to .env file"
|
||||
}
|
||||
@@ -481,11 +489,9 @@ check_service() {
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Stop the application before updating
|
||||
stop_application() {
|
||||
|
||||
|
||||
# Change to the application directory if we're not already there
|
||||
local app_dir
|
||||
if [ -f "package.json" ] && [ -f "server.js" ]; then
|
||||
@@ -577,7 +583,7 @@ update_files() {
|
||||
|
||||
# Create a temporary file list to avoid process substitution issues
|
||||
local file_list="/tmp/file_list_$$.txt"
|
||||
find "$actual_source_dir" -type f > "$file_list"
|
||||
find "$actual_source_dir" -type f >"$file_list"
|
||||
|
||||
while IFS= read -r file; do
|
||||
local rel_path="${file#$actual_source_dir/}"
|
||||
@@ -606,7 +612,7 @@ update_files() {
|
||||
else
|
||||
files_excluded=$((files_excluded + 1))
|
||||
fi
|
||||
done < "$file_list"
|
||||
done <"$file_list"
|
||||
|
||||
# Clean up temporary file
|
||||
rm -f "$file_list"
|
||||
@@ -624,7 +630,6 @@ update_files() {
|
||||
log_success "Application files updated successfully ($files_copied files)"
|
||||
}
|
||||
|
||||
|
||||
# Install dependencies and build
|
||||
install_and_build() {
|
||||
log "Installing dependencies..."
|
||||
@@ -647,7 +652,7 @@ install_and_build() {
|
||||
export NODE_ENV=development
|
||||
|
||||
# Run npm install to get ALL dependencies including devDependencies
|
||||
if ! npm install --include=dev > "$npm_log" 2>&1; then
|
||||
if ! npm install --include=dev >"$npm_log" 2>&1; then
|
||||
log_error "Failed to install dependencies"
|
||||
log_error "npm install output (last 30 lines):"
|
||||
tail -30 "$npm_log" | while read -r line; do
|
||||
@@ -669,7 +674,7 @@ install_and_build() {
|
||||
|
||||
# Generate Prisma client
|
||||
log "Generating Prisma client..."
|
||||
if ! npx prisma generate > "$npm_log" 2>&1; then
|
||||
if ! npx prisma generate >"$npm_log" 2>&1; then
|
||||
log_error "Failed to generate Prisma client"
|
||||
log_error "Prisma generate output:"
|
||||
cat "$npm_log" | while read -r line; do
|
||||
@@ -691,7 +696,7 @@ install_and_build() {
|
||||
|
||||
# Run Prisma migrations
|
||||
log "Running Prisma migrations..."
|
||||
if ! npx prisma migrate deploy > "$npm_log" 2>&1; then
|
||||
if ! npx prisma migrate deploy >"$npm_log" 2>&1; then
|
||||
log_warning "Prisma migrations failed or no migrations to run"
|
||||
log "Prisma migrate output:"
|
||||
cat "$npm_log" | while read -r line; do
|
||||
@@ -709,7 +714,7 @@ install_and_build() {
|
||||
# Create temporary file for npm build output
|
||||
local build_log="/tmp/npm_build_$$.log"
|
||||
|
||||
if ! npm run build > "$build_log" 2>&1; then
|
||||
if ! npm run build >"$build_log" 2>&1; then
|
||||
log_error "Failed to build application"
|
||||
log_error "npm run build output:"
|
||||
cat "$build_log" | while read -r line; do
|
||||
@@ -763,7 +768,7 @@ start_with_npm() {
|
||||
log "Starting application with npm start..."
|
||||
|
||||
# Start in background
|
||||
nohup npm start > server.log 2>&1 &
|
||||
nohup npm start >server.log 2>&1 &
|
||||
local npm_pid=$!
|
||||
|
||||
# Wait a moment and check if it started
|
||||
@@ -865,10 +870,10 @@ check_node_version() {
|
||||
|
||||
log "Detected Node.js version: $current"
|
||||
|
||||
if (( major_version < 24 )); then
|
||||
if ((major_version < 24)); then
|
||||
log_warning "Node.js < 24 detected → upgrading to Node.js 24 LTS..."
|
||||
upgrade_node_to_24
|
||||
elif (( major_version > 24 )); then
|
||||
elif ((major_version > 24)); then
|
||||
log_warning "Node.js > 24 detected → script tested only up to Node 24"
|
||||
log "Continuing anyway…"
|
||||
else
|
||||
@@ -887,14 +892,14 @@ upgrade_node_to_24() {
|
||||
|
||||
# Install NodeSource repo for Node.js 24
|
||||
curl -fsSL https://deb.nodesource.com/setup_24.x -o /tmp/node24_setup.sh
|
||||
if ! bash /tmp/node24_setup.sh > /tmp/node24_setup.log 2>&1; then
|
||||
if ! bash /tmp/node24_setup.sh >/tmp/node24_setup.log 2>&1; then
|
||||
log_error "Failed to configure Node.js 24 repository"
|
||||
tail -20 /tmp/node24_setup.log | while read -r line; do log_error "$line"; done
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "Installing Node.js 24…"
|
||||
if ! apt-get install -y nodejs >> "$LOG_FILE" 2>&1; then
|
||||
if ! apt-get install -y nodejs >>"$LOG_FILE" 2>&1; then
|
||||
log_error "Failed to install Node.js 24"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user