#!/bin/bash # rebreak-backend Staging — startet Nitro mit Infisical-Secrets. # # Pattern: infisical login (universal-auth) → infisical run (--env=staging) # spritzt secrets als process.env.X in den node-Prozess. # Nitro's runtimeConfig (siehe nitro.config.ts) liest sie direkt — kein # NUXT_*-Prefix-Mapping mehr nötig (jeder Key in nitro.config.ts hat # `process.env.X ?? ""` als Default). # # Pfad-Konvention (Backyard-Layout, post-cutover): # - Repo-Root: /srv/rebreak # - Backend-Dir: /srv/rebreak/backend # - Build-Output (deployt von scripts/deploy.sh): backend/.output-staging/server/index.mjs # # IMAP-Services (rebreak-imap-staging, rebreak-idle-staging) sind NICHT mehr # Teil dieses Scripts — sie werden separat über ecosystem.config.js verwaltet # (Mo's Scope, fährt unter /srv/rebreak/apps/rebreak/imap-{proxy,idle}/). set -euo pipefail source /etc/environment if [[ -z "${INFISICAL_CLIENT_ID:-}" || -z "${INFISICAL_CLIENT_SECRET:-}" ]]; then echo "[start-staging] FEHLER: INFISICAL_CLIENT_ID / INFISICAL_CLIENT_SECRET nicht in /etc/environment" >&2 exit 1 fi INFISICAL_TOKEN=$(infisical login \ --method=universal-auth \ --client-id="${INFISICAL_CLIENT_ID}" \ --client-secret="${INFISICAL_CLIENT_SECRET}" \ --silent --plain 2>/dev/null) if [[ -z "$INFISICAL_TOKEN" ]]; then echo "[start-staging] FEHLER: Infisical login fehlgeschlagen" >&2 exit 1 fi export NODE_ENV=production export NITRO_PORT=3016 export NITRO_HOST=127.0.0.1 export PORT=3016 NODE_BIN="/root/.nvm/versions/node/v24.11.1/bin/node" INDEX_MJS="/srv/rebreak/backend/.output-staging/server/index.mjs" if [[ ! -f "$INDEX_MJS" ]]; then echo "[start-staging] FEHLER: $INDEX_MJS nicht gefunden — wurde deploy.sh ausgeführt?" >&2 exit 1 fi exec infisical run \ --projectId="${INFISICAL_PROJECT_ID:-14b11b35-ef59-4b8a-a16b-398f0cc3ad93}" \ --env=staging \ --token="$INFISICAL_TOKEN" \ -- "$NODE_BIN" "$INDEX_MJS"