Konfigurationsreferenz

Umgebungsvariablen und Deployment-Modi für selbst gehostetes Noirdoc.

Ueberblick

Noirdoc wird vollstaendig ueber Umgebungsvariablen konfiguriert. Diese Seite deckt alle unterstützten Variablen ab, organisiert nach Deployment-Modus und Funktionsbereich. Als erforderlich gekennzeichnete Variablen muessen gesetzt sein, damit der Proxy startet.

Deployment-Modi

Noirdoc unterstützt zwei Deployment-Modi, gesteuert durch die Variable MODE:

  • Standalone (MODE=standalone) — Single-Tenant-Deployment mit einem statischen Bearer-Token. Keine Benutzerverwaltung, keine JWT-Authentifizierung. Empfohlen für Einzelteam- oder Einzelanwendungs-Deployments.
  • Cloud (MODE=cloud) — Multi-Tenant-Deployment mit JWT-Authentifizierung und Admin-Portal. Siehe Managed Service für die Portal-Anleitung.

Beide Modi verwenden denselben Proxy-Kern — PII-Erkennung, Pseudonymisierung, Streaming und Dateiverarbeitung funktionieren unabhaengig vom Modus identisch.

Kern-Einstellungen (alle Modi)

VariableErforderlichStandardBeschreibung
MODENeincloudstandalone oder cloud
DATABASE_URLJaPostgreSQL-Verbindungsstring. Beispiel: postgresql+asyncpg://noirdoc:secret@postgres:5432/noirdoc
REDIS_URLJaRedis-Verbindungsstring. Beispiel: redis://redis:6379/0
ENCRYPTION_KEYJaFernet-Schluessel zur Verschluesselung von Provider-API-Keys im Ruhezustand.

Verschluesselungsschluessel generieren

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Speichern Sie diesen Schluessel sicher. Wenn er verloren geht, werden alle verschluesselten Provider-Keys unwiederbringlich.

Standalone-Modus

Diese Variablen gelten nur bei MODE=standalone.

VariableErforderlichStandardBeschreibung
STANDALONE_BEARER_TOKENJaStatisches Bearer-Token für die Client-Authentifizierung
STANDALONE_PROVIDERJaLLM-Provider: openai, anthropic, azure_openai, openrouter
STANDALONE_PROVIDER_KEYJaAPI-Key für den konfigurierten Provider
STANDALONE_PROVIDER_BASE_URLNeinProvider-StandardBenutzerdefinierte Base-URL (Azure, selbst gehostete Modelle)

Im Standalone-Modus:

  • Es gibt keine Benutzerkonten, kein JWT und kein Portal.
  • Clients authentifizieren sich ueber den Authorization: Bearer <STANDALONE_BEARER_TOKEN>-Header.
  • Ein einzelner Provider wird ueber Umgebungsvariablen konfiguriert.
  • Alle Proxy-Features (Erkennung, Pseudonymisierung, Streaming, Dateiverarbeitung) funktionieren identisch zum Cloud-Modus.

Verwendung mit dem OpenAI SDK

Da Noirdoc ein Drop-in-Proxy ist, der mit dem OpenAI-API-Format kompatibel ist, richten Sie die Base-URL auf Ihre Instanz und verwenden Sie Ihr Standalone-Bearer-Token als API-Key:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="ihr-geheimes-token",
)

Der gleiche Ansatz funktioniert in Node.js, cURL, LangChain oder jedem anderen OpenAI-kompatiblen Client.

Token-Rotation

Aktualisieren Sie die Umgebungsvariable STANDALONE_BEARER_TOKEN und starten Sie den Proxy neu. Es gibt keine Uebergangsfrist für das alte Token — nach dem Neustart des Proxys wird nur das neue Token akzeptiert.

Cloud-Modus

Diese Variablen gelten nur bei MODE=cloud.

VariableErforderlichStandardBeschreibung
JWT_SECRETNeinAbgeleitet von ENCRYPTION_KEYSecret für JWT-Tokens. Explizit setzen für Multi-Instanz-Deployments.
JWT_ACCESS_TOKEN_EXPIRE_MINUTESNein15Lebensdauer des Access-Tokens
JWT_REFRESH_TOKEN_EXPIRE_DAYSNein7Lebensdauer des Refresh-Tokens
BOOTSTRAP_ADMIN_EMAILNeinAdmin-E-Mail, die beim ersten Start erstellt wird
BOOTSTRAP_ADMIN_PASSWORDNeinAdmin-Passwort. Muss zusammen mit der E-Mail gesetzt werden.
CORS_ORIGINSNein*Erlaubte CORS-Origins. In Produktion auf Ihre Frontend-Domain setzen.

Beim ersten Start erstellt Noirdoc einen Admin-Benutzer aus den Bootstrap-Variablen. Verwenden Sie die Portal API, um danach Tenants und Provider zu verwalten.

PII-Erkennung

VariableErforderlichStandardBeschreibung
DETECTION_LANGUAGESNeinde,enKomma-separierte Sprachcodes
DETECTION_SCORE_THRESHOLDNein0.35Konfidenz-Schwellenwert (0-1)

Pseudonym-Mappings

VariableErforderlichStandardBeschreibung
DEFAULT_MAPPING_TTL_DAYSNein30Tage, die Zuordnungen bestehen bleiben. 0 = nur für die Dauer der Anfrage.

Request-Weiterleitung

VariableErforderlichStandardBeschreibung
FORWARD_TIMEOUTNein120Upstream-Timeout in Sekunden

Logging

VariableErforderlichStandardBeschreibung
LOG_LEVELNeininfodebug, info, warning, error
LOG_FORMATNeinjsonjson oder text

Beispielkonfigurationen

Minimales Standalone-Setup

environment:
  - MODE=standalone
  - DATABASE_URL=postgresql+asyncpg://noirdoc:secret@postgres:5432/noirdoc
  - REDIS_URL=redis://redis:6379/0
  - ENCRYPTION_KEY=ihr-fernet-schluessel
  - STANDALONE_BEARER_TOKEN=mein-geheimes-token
  - STANDALONE_PROVIDER=openai
  - STANDALONE_PROVIDER_KEY=sk-ihr-openai-key

Cloud-Modus mit Bootstrap-Admin

environment:
  - MODE=cloud
  - DATABASE_URL=postgresql+asyncpg://noirdoc:secret@postgres:5432/noirdoc
  - REDIS_URL=redis://redis:6379/0
  - ENCRYPTION_KEY=ihr-fernet-schluessel
  - JWT_SECRET=ein-separates-jwt-secret
  - BOOTSTRAP_ADMIN_EMAIL=admin@ihreFirma.com
  - BOOTSTRAP_ADMIN_PASSWORD=sofort-aendern
  - CORS_ORIGINS=https://portal.ihreFirma.com

Sicherheitshinweise

  • Committen Sie niemals Secrets in die Versionskontrolle. Verwenden Sie Docker Secrets, eine .env-Datei, die von Git ausgeschlossen ist, oder einen Secrets-Manager.
  • ENCRYPTION_KEY ist das wichtigste Secret — es schützt alle gespeicherten Provider-Keys. Rotieren Sie es nur, wenn Sie zuvor alle gespeicherten Keys neu verschluesselt haben.
  • Setzen Sie CORS_ORIGINS in Produktion auf eine spezifische Domain anstelle des Wildcards *.
  • Verwenden Sie starke, zufaellig generierte Werte für Bearer-Tokens und Passwoerter.