rebreak-monorepo/ecosystem.config.js
chahinebrini d1b71e76b2 chore(cutover): prepare backend/-Layout for Hetzner-Pipeline-Cutover
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>
2026-05-07 00:35:50 +02:00

92 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 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",
// },
],
};