fix(setup/native): correct repo URL, paths, and systemd for native install; support sqlite in production knex config

This commit is contained in:
2025-09-09 11:13:01 +02:00
parent ee13556c5c
commit 87b8414e44
2 changed files with 47 additions and 36 deletions
+31 -23
View File
@@ -26,29 +26,37 @@ const config = {
production: { production: {
client: process.env.DATABASE_CLIENT || 'pg', client: process.env.DATABASE_CLIENT || 'pg',
connection: { // Support both Postgres and SQLite in production based on DATABASE_CLIENT
host: process.env.DB_HOST || 'db', connection: (process.env.DATABASE_CLIENT || 'pg') === 'pg'
port: process.env.DB_PORT || 5432, ? {
user: process.env.DB_USER || 'picpeak', host: process.env.DB_HOST || 'db',
password: process.env.DB_PASSWORD, port: process.env.DB_PORT || 5432,
database: process.env.DB_NAME || 'picpeak', user: process.env.DB_USER || 'picpeak',
ssl: process.env.DB_SSL === 'true' ? { rejectUnauthorized: false } : false, password: process.env.DB_PASSWORD,
// Connection stability settings database: process.env.DB_NAME || 'picpeak',
connectionTimeoutMillis: 30000, ssl: process.env.DB_SSL === 'true' ? { rejectUnauthorized: false } : false,
idleTimeoutMillis: 30000, // Connection stability settings
keepAlive: true, connectionTimeoutMillis: 30000,
keepAliveInitialDelayMillis: 0 idleTimeoutMillis: 30000,
}, keepAlive: true,
pool: { keepAliveInitialDelayMillis: 0
min: 5, }
max: 25, : {
acquireTimeoutMillis: 60000, filename: path.join(__dirname, process.env.DATABASE_PATH || './data/photo_sharing.db')
createTimeoutMillis: 60000, },
idleTimeoutMillis: 30000, useNullAsDefault: (process.env.DATABASE_CLIENT || 'pg') !== 'pg',
reapIntervalMillis: 1000, pool: (process.env.DATABASE_CLIENT || 'pg') === 'pg'
createRetryIntervalMillis: 200, ? {
propagateCreateError: false min: 5,
}, max: 25,
acquireTimeoutMillis: 60000,
createTimeoutMillis: 60000,
idleTimeoutMillis: 30000,
reapIntervalMillis: 1000,
createRetryIntervalMillis: 200,
propagateCreateError: false
}
: undefined,
migrations: { migrations: {
directory: './migrations' directory: './migrations'
}, },
+14 -11
View File
@@ -13,7 +13,7 @@ IFS=$'\n\t'
# Script configuration # Script configuration
readonly SCRIPT_VERSION="2.0.0" readonly SCRIPT_VERSION="2.0.0"
readonly APP_NAME="PicPeak" readonly APP_NAME="PicPeak"
readonly REPO_URL="https://github.com/yourusername/wedding-photo-sharing" readonly REPO_URL="https://github.com/the-luap/picpeak.git"
readonly NODE_VERSION="20" readonly NODE_VERSION="20"
readonly MIN_RAM_DOCKER=2048 readonly MIN_RAM_DOCKER=2048
readonly MIN_RAM_NATIVE=1024 readonly MIN_RAM_NATIVE=1024
@@ -564,7 +564,9 @@ setup_native_installation() {
# Install dependencies # Install dependencies
log_step "Installing dependencies..." log_step "Installing dependencies..."
cd "$NATIVE_APP_DIR/backend" # The repository root contains both backend/ and frontend/
# Install backend production dependencies
cd "$NATIVE_APP_DIR/backend/backend"
npm install --production npm install --production
# Generate secrets # Generate secrets
@@ -573,7 +575,7 @@ setup_native_installation() {
# Create .env file # Create .env file
log_step "Creating configuration..." log_step "Creating configuration..."
cat > "$NATIVE_APP_DIR/backend/.env" <<EOF cat > "$NATIVE_APP_DIR/backend/backend/.env" <<EOF
# PicPeak Native Configuration # PicPeak Native Configuration
# Generated: $(date) # Generated: $(date)
@@ -588,10 +590,11 @@ ADMIN_PASSWORD=$ADMIN_PASSWORD
ADMIN_EMAIL=$ADMIN_EMAIL ADMIN_EMAIL=$ADMIN_EMAIL
# Database # Database
DATABASE_PATH=$NATIVE_APP_DIR/backend/database.sqlite DATABASE_CLIENT=sqlite3
DATABASE_PATH=$NATIVE_APP_DIR/backend/backend/data/photo_sharing.db
# Storage # Storage
PHOTOS_DIR=$NATIVE_APP_DIR/events STORAGE_PATH=$NATIVE_APP_DIR
# Email # Email
SMTP_ENABLED=${SMTP_HOST:+true} SMTP_ENABLED=${SMTP_HOST:+true}
@@ -618,11 +621,11 @@ EOF
# Set permissions # Set permissions
chown -R $NATIVE_APP_USER:$NATIVE_APP_USER "$NATIVE_APP_DIR" chown -R $NATIVE_APP_USER:$NATIVE_APP_USER "$NATIVE_APP_DIR"
chmod 600 "$NATIVE_APP_DIR/backend/.env" chmod 600 "$NATIVE_APP_DIR/backend/backend/.env"
# Run database migrations # Run database migrations
log_step "Initializing database..." log_step "Initializing database..."
cd "$NATIVE_APP_DIR/backend" cd "$NATIVE_APP_DIR/backend/backend"
sudo -u $NATIVE_APP_USER npm run migrate sudo -u $NATIVE_APP_USER npm run migrate
# Create systemd services # Create systemd services
@@ -654,7 +657,7 @@ After=network.target
[Service] [Service]
Type=simple Type=simple
User=$NATIVE_APP_USER User=$NATIVE_APP_USER
WorkingDirectory=$NATIVE_APP_DIR/backend WorkingDirectory=$NATIVE_APP_DIR/backend/backend
Environment="NODE_ENV=production" Environment="NODE_ENV=production"
ExecStart=/usr/bin/node server.js ExecStart=/usr/bin/node server.js
Restart=always Restart=always
@@ -675,7 +678,7 @@ After=network.target picpeak-backend.service
[Service] [Service]
Type=simple Type=simple
User=$NATIVE_APP_USER User=$NATIVE_APP_USER
WorkingDirectory=$NATIVE_APP_DIR/backend WorkingDirectory=$NATIVE_APP_DIR/backend/backend
Environment="NODE_ENV=production" Environment="NODE_ENV=production"
ExecStart=/usr/bin/node src/services/workerManager.js ExecStart=/usr/bin/node src/services/workerManager.js
Restart=always Restart=always
@@ -878,8 +881,8 @@ print_success_message() {
echo echo
echo "📚 Documentation:" echo "📚 Documentation:"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Setup Guide: https://github.com/yourusername/wedding-photo-sharing/blob/main/SIMPLE_SETUP.md" echo "Setup Guide: https://github.com/the-luap/picpeak/blob/main/SIMPLE_SETUP.md"
echo "Full Docs: https://github.com/yourusername/wedding-photo-sharing" echo "Full Docs: https://github.com/the-luap/picpeak"
echo echo
echo -e "${GREEN}✨ Setup complete! Visit the admin panel to start creating galleries.${NC}" echo -e "${GREEN}✨ Setup complete! Visit the admin panel to start creating galleries.${NC}"
} }