Environment Variables
Das ProcessCube® App-SDK verwendet Umgebungsvariablen zur Konfiguration der Verbindung zu Engine, Authority und anderen Services.
Verfügbare Variables
Engine Configuration
PROCESSCUBE_ENGINE_URL
- Standard:
http://localhost:10560 - Erforderlich: Nein
- Beschreibung: URL der ProcessCube® Engine
PROCESSCUBE_ENGINE_URL=http://localhost:10560Wenn die Variable nicht gesetzt ist, wird der Standardwert http://localhost:10560 verwendet.
Beispiele:
# Lokal
PROCESSCUBE_ENGINE_URL=http://localhost:10560
# Docker
PROCESSCUBE_ENGINE_URL=http://engine:80
# Production
PROCESSCUBE_ENGINE_URL=https://engine.yourcompany.comAuthority Configuration
PROCESSCUBE_AUTHORITY_URL
- Standard: -
- Erforderlich: Bei Verwendung von Authentifizierung
- Beschreibung: URL der ProcessCube® Authority (OpenID Connect Provider)
PROCESSCUBE_AUTHORITY_URL=http://localhost:11235Verwendung:
- Silent Refresh des User Access Token
- Login von External Task Workers
- OAuth 2.0 Client Credentials Flow
NextAuth.js Configuration
Bei Verwendung von NextAuth.js für die Authentifizierung:
NEXTAUTH_URL
- Erforderlich: Ja (bei NextAuth.js)
- Beschreibung: URL Ihrer Next.js Anwendung
NEXTAUTH_URL=http://localhost:3000NEXTAUTH_CLIENT_ID
- Erforderlich: Ja (bei NextAuth.js)
- Beschreibung: OAuth 2.0 Client ID (aus Authority)
NEXTAUTH_CLIENT_ID=my-processcube-appNEXTAUTH_SECRET
- Erforderlich: Ja (bei NextAuth.js)
- Beschreibung: Secret für Session-Verschlüsselung
# Generieren mit: openssl rand -base64 32
NEXTAUTH_SECRET=3ef62eb3-fe49-4c2c-ba6f-73e4d234321bVerwenden Sie für Production einen sicheren, zufälligen String. Generieren Sie ihn mit openssl rand -base64 32.
External Task Worker Configuration
Für External Task Workers (Server-Side):
PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID
- Erforderlich: Bei External Tasks mit Authentifizierung
- Beschreibung: Client ID für den External Task Worker
PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID=external-task-workerPROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET
- Erforderlich: Bei External Tasks mit Authentifizierung
- Beschreibung: Client Secret für den External Task Worker
PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET=5ef83eb1-fe28-4c2c-ba6f-46e4d234321bDiese Credentials werden vom External Task Worker verwendet, um sich automatisch bei der Authority zu authentifizieren.
Vollständige Konfiguration
Beispiel: Development
# ProcessCube Services
PROCESSCUBE_ENGINE_URL=http://localhost:10560
PROCESSCUBE_AUTHORITY_URL=http://localhost:11235
# NextAuth.js
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_CLIENT_ID=my-dev-app
NEXTAUTH_SECRET=dev-secret-change-in-production
# External Task Worker
PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID=external-task-worker
PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET=worker-secret-123Beispiel: Production
# ProcessCube Services
PROCESSCUBE_ENGINE_URL=https://engine.yourcompany.com
PROCESSCUBE_AUTHORITY_URL=https://authority.yourcompany.com
# NextAuth.js
NEXTAUTH_URL=https://app.yourcompany.com
NEXTAUTH_CLIENT_ID=prod-app
NEXTAUTH_SECRET=${NEXTAUTH_SECRET} # Von Hosting-Service injiziert
# External Task Worker
PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID=prod-worker
PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET=${WORKER_SECRET} # Von Hosting-Service injiziertUmgebungsspezifische Dateien
Next.js unterstützt verschiedene .env Dateien:
| Datei | Verwendung | In Git? |
|---|---|---|
.env | Alle Umgebungen | ✓ Ja (nur Default-Werte) |
.env.local | Lokale Überschreibungen | ✗ Nein |
.env.development | Development-Modus | ✓ Ja |
.env.production | Production-Build | ✓ Ja |
.env.production.local | Production-Überschreibungen | ✗ Nein |
Fügen Sie .env*.local zu .gitignore hinzu, um Secrets nicht ins Repository zu committen!
Client-Side Variables
Für Zugriff von Client-Side Code verwenden Sie das NEXT_PUBLIC_ Prefix:
# Nur Server-Side verfügbar
PROCESSCUBE_ENGINE_URL=http://localhost:10560
# Auch Client-Side verfügbar
NEXT_PUBLIC_APP_NAME=My ProcessCube App// Server Component - beide verfügbar
const engineUrl = process.env.PROCESSCUBE_ENGINE_URL;
const appName = process.env.NEXT_PUBLIC_APP_NAME;
// Client Component - nur NEXT_PUBLIC_ verfügbar
const appName = process.env.NEXT_PUBLIC_APP_NAME; // ✓ Funktioniert
const engineUrl = process.env.PROCESSCUBE_ENGINE_URL; // ✗ undefinedSetzen Sie NIEMALS sensible Informationen (API Keys, Secrets) in NEXT_PUBLIC_ Variables!
Verwendung im Code
Server-Side
import { getWaitingUserTasks } from '@5minds/processcube_app_sdk/server';
export async function GET() {
// Verwendet automatisch PROCESSCUBE_ENGINE_URL
const tasks = await getWaitingUserTasks();
return Response.json(tasks);
}Mit Custom Configuration
import { getWaitingUserTasks } from '@5minds/processcube_app_sdk/server';
export async function getTasksFromCustomEngine() {
const tasks = await getWaitingUserTasks({
engineUrl: 'https://custom-engine.com',
accessToken: 'custom-token',
});
return tasks;
}Validierung
Empfohlene Validierung der Environment Variables beim Start:
const requiredEnvVars = [
'PROCESSCUBE_ENGINE_URL',
'PROCESSCUBE_AUTHORITY_URL',
'NEXTAUTH_SECRET',
] as const;
export function validateEnv() {
const missing = requiredEnvVars.filter(
(varName) => !process.env[varName]
);
if (missing.length > 0) {
throw new Error(
`Fehlende Environment Variables: ${missing.join(', ')}`
);
}
}
// In app/layout.tsx oder instrumentation.ts
validateEnv();Troubleshooting
Variables werden nicht geladen
Problem: process.env.VARIABLE_NAME ist undefined
Lösungen:
- Datei muss
.env.localheißen (nicht.env.txt) - Development Server neu starten:
npm run dev - Keine Leerzeichen um
=:VAR=value(nichtVAR = value) - Keine Anführungszeichen bei Werten nötig
Client-Side undefined
Problem: Variable ist auf Client-Side undefined
Lösung: Verwenden Sie NEXT_PUBLIC_ Prefix
# Falsch - nur Server-Side
ENGINE_URL=http://localhost:10560
# Richtig - auch Client-Side
NEXT_PUBLIC_ENGINE_URL=http://localhost:10560Production Variables
Problem: Variablen funktionieren nicht in Production
Lösungen:
- Setzen Sie Environment Variables in Ihrem Hosting-Service (Vercel, AWS, etc.)
.env.productionwird nur beim Build verwendet, nicht zur Runtime- Bei Serverless: Variables müssen über das Hosting-Dashboard gesetzt werden
Nächste Schritte
- Plugin System - withApplicationSdk konfigurieren
- Examples: Authority - Authentifizierung einrichten
- Examples: External Tasks - Worker konfigurieren