§ DOCUMENTATION
Self-Hosted-Deployment
Betreiben Sie die vollständige Execlave-Governance-Plattform auf Ihrer eigenen Infrastruktur mit den veröffentlichten Docker-Images und einem Lizenzschlüssel. Ihre Daten verlassen niemals Ihr Netzwerk — das Einzige, was die Grenze überschreitet, ist ein Lizenz-Heartbeat (ein Fingerabdruck und ein Zeitstempel, keine Kundendaten).
Datenschutz: standardmäßig keine externen KI-API-Aufrufe
Das standardmäßige Self-Hosted-Deployment sendet null Prompts, Traces oder Modelleingaben an einen externen KI-Anbieter. Semantische Klassifizierung und Richtliniengenerierung laufen gegen ein lokales LLM (Ollama oder einen beliebigen OpenAI-kompatiblen Endpunkt), konfiguriert über LOCAL_LLM_URL. Ist dieser Endpunkt nicht erreichbar, degradieren diese Funktionen sauber zu deterministischen Heuristiken — die Durchsetzung funktioniert weiter, Sie verlieren lediglich die beratenden Klassifizierungen.
Was das für Beschaffungsprüfungen bedeutet
- Prompts und Traces verlassen niemals Ihre VPC.
- In der Standardkonfiguration sind keine API-Schlüssel für Anthropic, OpenAI, Google oder einen anderen externen LLM-Anbieter erforderlich — oder werden akzeptiert.
- Wenn Sie für einen bestimmten Workflow einen externen Anbieter einbinden möchten (z. B. ein gehostetes LLM für die Richtliniengenerierungs-UI), sind Sie für die Compliance-Implikationen der Datenübertragung verantwortlich.
- Optionale Produkttelemetrie (PostHog, Accoil) ist standardmäßig aus. Lassen Sie die entsprechenden Umgebungsvariablen leer, um alle Analysen on-premise zu halten.
Voraussetzungen
- Linux-Host (beliebige Cloud oder Bare Metal) mit mindestens 4 CPU, 8 GB RAM
- Docker 24+ und Docker Compose v2
- Eine PostgreSQL-15-Instanz — in der Compose-Datei enthalten oder Ihre eigene mitbringen
- Eine Redis-7-Instanz — in der Compose-Datei enthalten oder Ihre eigene mitbringen
- Einen Lizenzschlüssel (anfordern unter /get-license)
- Ausgehendes HTTPS zu
license.execlave.comfür den Heartbeat (Air-Gapped-Modus verfügbar — siehe §08)
Schnellstart
curl -O https://get.execlave.com/docker-compose.ymlexport LICENSE_KEY=exe_lic_<your-key>docker compose up -dopen http://localhost:3000Vier Befehle. Der Stack ist auf einem modernen Host in ~45 Sekunden hochgefahren. Melden Sie sich mit den im Startup-Output ausgegebenen Admin-Anmeldedaten an oder konfigurieren Sie Logto.
Einen Lizenzschlüssel erhalten
Kostenlose und kostenpflichtige Self-Hosted-Lizenzen werden derzeit manuell ausgestellt. Fordern Sie eine unter /get-license an.
- Free-Plan: Lizenz trifft innerhalb von 1 Geschäftsstunde ein
- Kostenpflichtige Pläne: wir melden uns, um zuerst die Zahlung einzurichten
- Enterprise: wir vereinbaren einen 30-minütigen Anruf
Der Lizenzschlüssel ist ein von unserem Lizenzserver signiertes JWT. Derselbe Schlüssel kann auf mehreren Instanzen bis zum Instanzlimit des Plans verwendet werden (jeder eindeutige Host-Fingerabdruck zählt als eine Instanz).
Architektur
Alles läuft innerhalb Ihres Netzwerks. Der einzige ausgehende Verkehr ist der Lizenz-Heartbeat.
+-------------------------------------------------+| Your infrastructure || || +---------+ +---------+ +-----------+ || | Next.js |-->| Express |-->| Postgres | || | (3000) | | (4000) | | (5432) | || +---------+ +---------+ +-----------+ || | || v || +---------+ +-----------+ || | Worker |-->| Redis | || | (BullMQ)| | (6379) | || +---------+ +-----------+ || || +-------------------+ || | Processing | || | (Python/FastAPI) | || +-------------------+ |+-------------------------------------------------+ | | outbound HTTPS only (heartbeat) v+-----------------------------+| license.execlave.com || (fingerprint + timestamp) |+-----------------------------+Konfiguration
Erforderliche Umgebungsvariablen
| Variable | Beschreibung |
|---|---|
LICENSE_KEY | Der JWT-Lizenzschlüssel, den wir Ihnen per E-Mail senden |
DEPLOYMENT_MODE | Auf self-hosted setzen (steuert die Aktivierung des Lizenz-Clients) |
DATABASE_URL | PostgreSQL-Verbindungszeichenkette |
REDIS_URL | Redis-Verbindungszeichenkette |
LOGTO_ENDPOINT | Logto-Endpunkt (Backend) |
LOGTO_APP_ID | Logto-Dashboard-Client-App-ID (Backend) |
LOGTO_APP_SECRET | Logto-Dashboard-Client-App-Secret (Backend) |
NEXT_PUBLIC_LOGTO_ENDPOINT | Logto-Endpunkt (Frontend) |
NEXT_PUBLIC_LOGTO_APP_ID | Logto-Dashboard-Client-App-ID (Frontend) |
Optionale Umgebungsvariablen
| Variable | Standard | Beschreibung |
|---|---|---|
LICENSE_SERVER_URL | https://license.execlave.com/api | Override für Air-Gapped-Proxys |
LICENSE_CACHE_PATH | ~/.execlave/ | Wo der Lizenz-Client die validierte Lizenz zwischenspeichert |
LICENSE_HEARTBEAT_INTERVAL_MS | 86400000 | Wie oft beim Lizenzserver eingecheckt wird (Standard 24 Std.) |
LOCAL_LLM_URL | nicht gesetzt | URL für den lokalen LLM-Dienst für semantische Klassifizierung + Richtliniengenerierung |
STRIPE_SECRET_KEY | nicht gesetzt | Im Self-Hosted-Modus nicht verwendet |
SENTRY_DSN | nicht gesetzt | Optionale Fehlerverfolgung |
Lizenzschlüssel: wie sie funktionieren
Der Lizenzschlüssel ist ein signiertes JWT. Wenn Ihre Instanz startet:
- Startup-Validierung — der Lizenz-Client verifiziert die JWT-Signatur gegen unseren öffentlichen Schlüssel (im Image gebündelt) und prüft Plan, Ablauf und Instanzlimits.
- Instanzregistrierung — der Host-Fingerabdruck Ihrer Instanz (Hash aus Hostname + MAC + Docker-Compose-Projektname) wird beim Lizenzserver registriert.
- Zwischengespeicherter Offline-Modus — die validierte Lizenz wird lokal zwischengespeichert, sodass die Instanz auch dann booten kann, wenn der Lizenzserver nicht erreichbar ist.
- Heartbeat — alle 24 Stunden sendet die Instanz einen Heartbeat, der ihren Fingerabdruck und einen Zeitstempel enthält. Es werden keine Kundendaten eingeschlossen.
- Kulanzzeitraum — ist der Lizenzserver 14 aufeinanderfolgende Tage nicht erreichbar, geht die Instanz in den Kulanzmodus über und protokolliert eine Warnung. Nach 21 Tagen wird die Durchsetzung bis zur erneuten Verbindung pausiert.
{fingerprint, timestamp, license_id, version}Aktualisierung, Backups und Air-Gapped-Modus
Aktualisierung
Ziehen Sie die neuesten Images und starten Sie neu:
docker compose pulldocker compose up -dDatenbankmigrationen laufen beim Start automatisch. Erstellen Sie immer zuerst ein Backup.
Backups
Sichern Sie das Postgres-Volume und den Lizenz-Cache:
docker compose exec postgres pg_dump -U execlave execlave > backup.sqldocker cp $(docker compose ps -q backend):/root/.execlave/ ./license-cacheEine Wiederherstellung aus einem Backup regeneriert den Host-Fingerabdruck beim ersten Boot und registriert sich erneut beim Lizenzserver.
Air-Gapped-Modus
Wenn Ihre Umgebung license.execlave.com nicht erreichen kann:
- Kontaktieren Sie uns, um ein Offline-Lizenzbündel anzufordern — ein JWT mit einem längeren Offline-Kulanzfenster (typischerweise 1 Jahr).
- Setzen Sie
LICENSE_SERVER_URLauf einen internen Proxy, der Heartbeats in eine Warteschlange stellt und sie während eines periodischen Sync-Fensters wiedergibt, ODER - Lassen Sie den Heartbeat ganz weg mit
LICENSE_HEARTBEAT_INTERVAL_MS=0, wenn Sie eine Offline-Lizenz haben.
Offline-Bündel sind an eine signierte Support-Vereinbarung gebunden; schreiben Sie an support@execlave.com für Details.
Fehlerbehebung
- Stellen Sie sicher, dass
LICENSE_KEYin der Umgebung korrekt gesetzt ist - Prüfen Sie, dass das JWT nicht abgelaufen ist:
echo $LICENSE_KEY | cut -d. -f2 | base64 -d - Verifizieren Sie, dass ausgehendes HTTPS zu
license.execlave.comerlaubt ist
- Ihr Lizenzplan begrenzt die Anzahl gleichzeitiger Host-Fingerabdrücke
- Löschen Sie veraltete Instanzen über den Lizenzserver oder aktualisieren Sie Ihren Plan
- Das ist während des 14-tägigen Kulanzzeitraums zu erwarten — eine Warnung wird protokolliert
- Prüfen Sie
docker compose logs backend | grep -i licenseauf den genauen Fehler
- Der Stack führt beim Boot alle ausstehenden Migrationen aus. Schlägt eine Migration fehl, stellen Sie aus Ihrem Backup wieder her und kontaktieren Sie den Support.
Support
- Dokumentation: execlave.com/docs
- E-Mail: support@execlave.com
- Lizenz anfordern: /get-license