mirror of
https://github.com/kyantech/Palmr.git
synced 2025-10-22 22:02:00 +00:00
refactor: simplify server startup script and move provider/config checks to separate files docs: update documentation to reflect encryption changes and default UID/GID values - Changed default behavior to disable filesystem encryption for improved performance. - Updated environment variable handling for DISABLE_FILESYSTEM_ENCRYPTION and ENCRYPTION_KEY across multiple configuration files. - Added new scripts and configuration files for managing application settings and providers. - Adjusted Dockerfile and server start scripts to reflect changes in UID/GID handling and file management. - Enhanced documentation to clarify encryption options and their implications.
104 lines
3.8 KiB
Bash
104 lines
3.8 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
echo "🌴 Starting Palmr Server..."
|
|
|
|
TARGET_UID=${PALMR_UID:-1000}
|
|
TARGET_GID=${PALMR_GID:-1000}
|
|
|
|
if [ -n "$PALMR_UID" ] || [ -n "$PALMR_GID" ]; then
|
|
echo "🔧 Runtime UID/GID: $TARGET_UID:$TARGET_GID"
|
|
|
|
echo "🔐 Updating file ownership..."
|
|
chown -R $TARGET_UID:$TARGET_GID /app/palmr-app 2>/dev/null || echo "⚠️ Some ownership changes may have failed"
|
|
chown -R $TARGET_UID:$TARGET_GID /home/palmr 2>/dev/null || echo "⚠️ Some home directory ownership changes may have failed"
|
|
|
|
if [ -d "/app/server" ]; then
|
|
chown -R $TARGET_UID:$TARGET_GID /app/server 2>/dev/null || echo "⚠️ Some data directory ownership changes may have failed"
|
|
fi
|
|
|
|
echo "✅ UID/GID configuration completed"
|
|
fi
|
|
|
|
cd /app/palmr-app
|
|
|
|
export DATABASE_URL="file:/app/server/prisma/palmr.db"
|
|
|
|
echo "📂 Data directory: /app/server"
|
|
echo "💾 Database: $DATABASE_URL"
|
|
|
|
echo "📁 Creating data directories..."
|
|
mkdir -p /app/server/prisma /app/server/uploads /app/server/temp-uploads
|
|
|
|
if [ "$(id -u)" = "0" ]; then
|
|
echo "🔐 Ensuring proper ownership before database operations..."
|
|
chown -R $TARGET_UID:$TARGET_GID /app/server/prisma 2>/dev/null || true
|
|
fi
|
|
|
|
run_as_user() {
|
|
if [ "$(id -u)" = "0" ]; then
|
|
su-exec $TARGET_UID:$TARGET_GID "$@"
|
|
else
|
|
"$@"
|
|
fi
|
|
}
|
|
|
|
if [ ! -f "/app/server/prisma/configs.json" ]; then
|
|
echo "📄 Copying configuration files..."
|
|
cp -f /app/infra/configs.json /app/server/prisma/configs.json 2>/dev/null || echo "⚠️ Failed to copy configs.json"
|
|
cp -f /app/infra/providers.json /app/server/prisma/providers.json 2>/dev/null || echo "⚠️ Failed to copy providers.json"
|
|
cp -f /app/infra/check-missing.js /app/server/prisma/check-missing.js 2>/dev/null || echo "⚠️ Failed to copy check-missing.js"
|
|
|
|
if [ "$(id -u)" = "0" ]; then
|
|
chown $TARGET_UID:$TARGET_GID /app/server/prisma/configs.json /app/server/prisma/providers.json /app/server/prisma/check-missing.js 2>/dev/null || true
|
|
fi
|
|
fi
|
|
|
|
if [ ! -f "/app/server/prisma/palmr.db" ]; then
|
|
echo "🚀 First run detected - setting up database..."
|
|
|
|
echo "🗄️ Creating database schema..."
|
|
run_as_user npx prisma db push --schema=./prisma/schema.prisma --skip-generate
|
|
|
|
echo "🌱 Seeding database..."
|
|
run_as_user node ./prisma/seed.js
|
|
|
|
echo "✅ Database setup completed!"
|
|
else
|
|
echo "♻️ Existing database found"
|
|
|
|
echo "🔧 Checking for schema updates..."
|
|
run_as_user npx prisma db push --schema=./prisma/schema.prisma --skip-generate
|
|
|
|
echo "🔍 Checking if new tables need seeding..."
|
|
NEEDS_SEEDING=$(run_as_user node ./prisma/check-missing.js check-seeding 2>/dev/null || echo "true")
|
|
|
|
if [ "$NEEDS_SEEDING" = "true" ]; then
|
|
echo "🌱 New tables detected or missing data, running seed..."
|
|
|
|
MISSING_PROVIDERS=$(run_as_user node ./prisma/check-missing.js check-providers 2>/dev/null || echo "Error checking providers")
|
|
MISSING_CONFIGS=$(run_as_user node ./prisma/check-missing.js check-configs 2>/dev/null || echo "Error checking configurations")
|
|
|
|
if [ "$MISSING_PROVIDERS" != "No missing providers" ] && [ "$MISSING_PROVIDERS" != "Error checking providers" ]; then
|
|
echo "🔍 $MISSING_PROVIDERS"
|
|
fi
|
|
|
|
if [ "$MISSING_CONFIGS" != "No missing configurations" ] && [ "$MISSING_CONFIGS" != "Error checking configurations" ]; then
|
|
echo "⚙️ $MISSING_CONFIGS"
|
|
fi
|
|
|
|
run_as_user node ./prisma/seed.js
|
|
echo "✅ Seeding completed!"
|
|
else
|
|
echo "✅ All tables have data, no seeding needed"
|
|
fi
|
|
fi
|
|
|
|
echo "🚀 Starting Palmr server..."
|
|
|
|
if [ "$(id -u)" = "0" ]; then
|
|
echo "🔽 Dropping privileges to UID:GID $TARGET_UID:$TARGET_GID"
|
|
exec su-exec $TARGET_UID:$TARGET_GID node dist/server.js
|
|
else
|
|
exec node dist/server.js
|
|
fi |