Phase-1-Vorbereitung für den Rebreak-Cutover (apps/rebreak Nuxt → backend
standalone Nitro). Alle Änderungen sind lokal verifiziert (build = 9.66 MB
gzipped 3.08 MB, node .output/server/index.mjs startet ohne ERR_MODULE_NOT_FOUND
auf :3000). Kein Push, kein Server-Eingriff in dieser Session.
Inhalt:
- backend/nitro.config.ts: 8 zusätzliche runtimeConfig-Keys (cartesia*, eleven*,
supabaseUrl/AnonKey/ServiceKey, public.supabase.{url,key}). Schließt den
Auth-500-Cascade vom 2026-05-06 (server/utils/auth.ts:32 liest
config.public.supabase ?? config.supabase — beide Pfade jetzt deklariert).
- .npmrc (NEU, root-level): node-linker=hoisted für Prisma 7 transitive
@prisma/client-runtime-utils (siehe feedback_backend_runtime_config.md).
- backend/start-staging.sh: Pfad korrigiert von /srv/rebreak-monorepo/...
→ /srv/rebreak/backend/.output-staging/server/index.mjs. infisical run
wrapper (kein NUXT_*-Mapping mehr — runtimeConfig liest process.env.X
direkt). IMAP-Services entfernt (sind Mo's Scope, separat in ecosystem).
- scripts/deploy.sh (NEU): adaptiert von /srv/rebreak/scripts/deploy.sh
für backend/-Layout. APP_DIR=backend, pnpm --filter rebreak-backend build,
.output → .output-staging atomic-move bleibt erhalten, pm2 restart
--update-env zieht neue Infisical-Secrets.
- scripts/deploy-webhook/server.mjs (NEU): 1:1-Kopie vom Server, damit
ecosystem.config.js auf die Repo-Version zeigen kann.
- ecosystem.config.js (NEU, root-level): rebreak-staging zeigt auf
backend/start-staging.sh, rebreak-webhook zeigt auf scripts/deploy-webhook.
rebreak-prod + dns-* sind kommentiert (folgen in späterer Phase).
- ops/CUTOVER_PLAN.md: Plan-Doku vom 2026-05-06 (yesterday's work).
- .gitignore: .claude/ und xgit ergänzt (lokale Agent-State, nicht versioniert).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
92 lines
2.9 KiB
JavaScript
92 lines
2.9 KiB
JavaScript
/**
|
||
* 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",
|
||
// },
|
||
// },
|
||
|
||
// ─── 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",
|
||
// },
|
||
],
|
||
};
|