Enhance deployment script to handle symlinks and ensure proper data restoration from backup
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 48s

This commit updates the deploy-production.sh script to check if the server/data directory is a symlink and removes it if necessary, ensuring that data is copied to a real directory. It also modifies the data restoration process to follow symlinks when copying from the backup, improving the reliability of data recovery during deployment.
This commit is contained in:
Torsten Schulz (local)
2026-01-17 18:54:05 +01:00
parent 5cf12d1838
commit 3577831149
3 changed files with 508 additions and 2 deletions

View File

@@ -0,0 +1,62 @@
// Load environment variables from .env (production secrets)
// Für Test-Instanz: /var/www/harheimertc.test/.env
try {
// eslint-disable-next-line global-require
require('dotenv').config({ path: '/var/www/harheimertc.test/.env' })
} catch (_e) {
// If dotenv isn't available or .env missing, continue (process.env may be set elsewhere)
}
// Helper function to create env object
function createEnv(port) {
return {
NODE_ENV: 'production',
PORT: port,
// Secrets/Config (loaded from .env above, if present)
ENCRYPTION_KEY: process.env.ENCRYPTION_KEY,
JWT_SECRET: process.env.JWT_SECRET,
SMTP_HOST: process.env.SMTP_HOST,
SMTP_PORT: process.env.SMTP_PORT,
SMTP_USER: process.env.SMTP_USER,
SMTP_PASS: process.env.SMTP_PASS,
SMTP_FROM: process.env.SMTP_FROM,
SMTP_ADMIN: process.env.SMTP_ADMIN,
NUXT_PUBLIC_BASE_URL: process.env.NUXT_PUBLIC_BASE_URL,
COOKIE_SECURE: process.env.COOKIE_SECURE,
COOKIE_SAMESITE: process.env.COOKIE_SAMESITE,
CSP_ENABLED: process.env.CSP_ENABLED,
CSP_REPORT_ONLY: process.env.CSP_REPORT_ONLY,
CSP_VALUE: process.env.CSP_VALUE,
HIBP_ENABLED: process.env.HIBP_ENABLED,
HIBP_USER_AGENT: process.env.HIBP_USER_AGENT,
HIBP_TIMEOUT_MS: process.env.HIBP_TIMEOUT_MS,
HIBP_CACHE_TTL_MS: process.env.HIBP_CACHE_TTL_MS,
HIBP_FAIL_CLOSED: process.env.HIBP_FAIL_CLOSED,
AUDIT_LOG_ENABLED: process.env.AUDIT_LOG_ENABLED,
WEBAUTHN_ORIGIN: process.env.WEBAUTHN_ORIGIN,
WEBAUTHN_RP_ID: process.env.WEBAUTHN_RP_ID,
WEBAUTHN_RP_NAME: process.env.WEBAUTHN_RP_NAME,
WEBAUTHN_REQUIRE_UV: process.env.WEBAUTHN_REQUIRE_UV
}
}
module.exports = {
apps: [
{
name: 'harheimertc.test',
// Nuxt 4 production build: direkt den Node-Server starten (kein "preview mode")
script: 'node',
args: '.output/server/index.mjs',
cwd: '/var/www/harheimertc.test',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: createEnv(process.env.PORT || 3102),
error_file: '/var/log/pm2/harheimertc.test-error.log',
out_file: '/var/log/pm2/harheimertc.test-out.log',
log_file: '/var/log/pm2/harheimertc.test-combined.log',
time: true
}
]
}