/** * ecosystem.config.js – PM2 Prozess-Konfiguration für Rebreak * (backend/-Layout, post-cutover) * * Repo-Root: /srv/rebreak * Backend: /srv/rebreak/backend (standalone Nitro) * Node: /root/.nvm/versions/node/v24.11.1/bin/node * * Aktivierung auf Server: * pm2 startOrReload /srv/rebreak/ecosystem.config.js */ const NODE_BIN = "/root/.nvm/versions/node/v24.11.1/bin/node"; const REPO_ROOT = "/srv/rebreak"; const APP_DIR = `${REPO_ROOT}/backend`; module.exports = { apps: [ // ─── Rebreak Staging (Nitro standalone) ──────────────────────────────── { name: "rebreak-staging", script: `${APP_DIR}/start-staging.sh`, interpreter: "bash", cwd: APP_DIR, instances: 1, autorestart: true, watch: false, max_memory_restart: "700M", env: { NODE_ENV: "production", PORT: "3016", NITRO_PORT: "3016", }, }, // ─── Rebreak Prod (Nitro standalone) ─────────────────────────────────── // Wird erst aktiviert wenn Phase 3 (DNS-Cutover) abgeschlossen ist. // start-prod.sh wird analog start-staging.sh aufgesetzt // (existiert noch nicht im backend/ — nicht-blockierend für Cutover). // Start: pm2 start ecosystem.config.js --only rebreak // { // name: "rebreak", // script: `${APP_DIR}/start-prod.sh`, // interpreter: "bash", // cwd: APP_DIR, // instances: 1, // autorestart: true, // watch: false, // max_memory_restart: "700M", // env: { // NODE_ENV: "production", // PORT: "3015", // NITRO_PORT: "3015", // }, // }, // ─── Admin Staging (Nuxt 4 SSR, port 3017) ──────────────────────────── // Wird einmalig via SSH initial gestartet (pm2 start ecosystem.config.js --only rebreak-admin-staging). // Danach: deploy-admin-from-artifact.sh uebernimmt Restarts. // start-admin-staging.sh: infisical run + node .output-staging/server/index.mjs { name: "rebreak-admin-staging", script: `${REPO_ROOT}/apps/admin/start-admin-staging.sh`, interpreter: "bash", cwd: `${REPO_ROOT}/apps/admin`, instances: 1, autorestart: true, watch: false, max_memory_restart: "400M", env: { NODE_ENV: "production", PORT: "3017", NITRO_PORT: "3017", }, }, // ─── Webhook-Listener ────────────────────────────────────────────────── { name: "rebreak-webhook", script: `${REPO_ROOT}/scripts/deploy-webhook/server.mjs`, interpreter: NODE_BIN, cwd: REPO_ROOT, instances: 1, autorestart: true, watch: false, max_memory_restart: "128M", }, // ─── DNS-Blocker (auskommentiert bis DNS-Daemons aufgesetzt sind) ────── // { // name: "dns-rebreak", // script: `${APP_DIR}/server/dns/start-prod.sh`, // interpreter: "bash", // cwd: `${APP_DIR}/server/dns`, // instances: 1, // autorestart: true, // watch: false, // max_memory_restart: "512M", // }, // { // name: "dns-rebreak-staging", // script: `${APP_DIR}/server/dns/start-staging.sh`, // interpreter: "bash", // cwd: `${APP_DIR}/server/dns`, // instances: 1, // autorestart: true, // watch: false, // max_memory_restart: "512M", // }, ], };