Self-Hosting-Übersicht

Architektur, Deployment-Modi und Systemanforderungen.

Kommerzielle Lizenz erforderlich

Self-Hosting von Noirdoc erfordert eine kommerzielle Lizenz. Kontaktieren Sie uns für Zugang zum Docker-Image und Lizenzdetails.

Warum Self-Hosting?

Noirdoc Cloud nimmt Ihnen die gesamte Infrastruktur ab, aber manche Organisationen benoetigen die vollstaendige Kontrolle über ihre Datenverarbeitung. Beim Self-Hosting betreiben Sie den gesamten Noirdoc-Proxy auf Ihrer eigenen Infrastruktur — Ihre Server, Ihr Netzwerk, Ihre Regeln. Pseudonym-Mappings und Provider-API-Keys verlassen Ihre Umgebung zu keinem Zeitpunkt.

Architektur

Ein selbst gehostetes Noirdoc-Deployment besteht aus drei Kerndiensten:

  • Proxy — die FastAPI-Anwendung (Python 3.13+), bereitgestellt mit Uvicorn. Übernimmt PII-Erkennung, Pseudonymisierung, Request-Weiterleitung und Response-Wiederherstellung.
  • PostgreSQL — speichert Tenants, Portal-Konfigurationen, Provider-Einstellungen und Audit-Daten. Erfordert PostgreSQL 14 oder hoeher.
  • Redis — speichert Pseudonym-Mappings für die requestübergreifende Persistenz. Mappings werden mit dem konfigurierten Fernet-Key verschluesselt gespeichert.

Ein optionaler vierter Dienst, Caddy, kann vor den Proxy geschaltet werden, um automatisches HTTPS über Let’s Encrypt bereitzustellen. Dies wird für Produktions-Deployments empfohlen, die über das Internet erreichbar sind, ist aber für interne oder Entwicklungs-Setups nicht erforderlich.

Client-App  -->  [Caddy (optional)]  -->  Noirdoc Proxy  -->  LLM-Provider
                                               |       |
                                            Postgres  Redis

Deployment-Modi

Noirdoc unterstützt zwei Deployment-Modi, gesteuert über die Umgebungsvariable MODE.

Cloud-Modus (MODE=cloud)

Der Cloud-Modus ist das vollstaendige Multi-Tenant-Deployment. Er umfasst:

  • JWT-basierte Authentifizierung mit Access- und Refresh-Tokens
  • Multi-Tenant-Isolation — jeder Tenant hat eigene Provider, Keys und Mappings
  • Admin-Portal zur Verwaltung von Benutzern, Tenants und Provider-Konfigurationen
  • Automatische Erstellung eines Admin-Benutzers über Umgebungsvariablen

Verwenden Sie den Cloud-Modus, wenn Sie mehrere Teams oder Organisationen über eine einzige Noirdoc-Instanz bedienen moechten oder das vollstaendige Admin-Portal benoetigen.

Standalone-Modus (MODE=standalone)

Der Standalone-Modus ist ein vereinfachtes Single-Tenant-Deployment. Er verzichtet auf Benutzer- und Tenant-Verwaltung zugunsten eines einzelnen statischen Bearer-Tokens. Dies ist der einfachste Weg, Noirdoc für ein einzelnes Team oder eine einzelne Anwendung selbst zu hosten.

  • Keine Benutzerkonten, keine JWT-Tokens, kein Portal
  • Authentifizierung über einen statischen STANDALONE_BEARER_TOKEN
  • Ein einzelner Provider, konfiguriert über Umgebungsvariablen
  • Alle anderen Funktionen — PII-Erkennung, Pseudonymisierung, Streaming, Dateiverarbeitung — funktionieren identisch

Detaillierte Einrichtungsanweisungen finden Sie in der Konfigurationsreferenz.

Systemanforderungen

Minimale Hardware

  • CPU: 2 Kerne (4 empfohlen — das NER-Modell profitiert von paralleler Inferenz)
  • RAM: Mindestens 4 GB, 8 GB empfohlen (das NER-Modell wird beim Start in den Speicher geladen)
  • Festplatte: 10 GB für das Docker-Image und die Datenbankspeicherung

Software

  • Docker Engine 24+ und Docker Compose V2
  • Alternativ Python 3.13+ mit pip für Bare-Metal-Installationen (für Produktion nicht empfohlen)

Netzwerk

  • Ausgehender HTTPS-Zugriff auf Ihren LLM-Provider (z. B. api.openai.com, api.anthropic.com)
  • Eingehender Zugriff auf Port 8000 (Proxy) oder 443 (bei Verwendung von Caddy für HTTPS)

Health-Check

Jede Noirdoc-Instanz stellt einen Health-Endpunkt unter GET /health bereit. Verwenden Sie ihn für Container-Orchestrierung, Load-Balancer-Probes oder Monitoring:

curl http://localhost:8000/health
{
  "status": "ok",
  "version": "1.0.0",
  "mode": "standalone"
}

Das Feld mode zeigt den aktiven Deployment-Modus an. Das Feld version gibt die laufende Noirdoc-Version zurueck.

Nächste Schritte