Start / Cheat Sheets

Cheat Sheet

Open WebUI: Integration und Betrieb — Cheat Sheet

Stand: · Open WebUI im Unternehmen

Open WebUIMCPKI-BetriebSicherheit

Der Spickzettel zur zweiten Hälfte des Seminars Open WebUI im Unternehmen: welcher Weg ein Werkzeug anbindet, wo eine Freigabe wirklich greift, welche Standardwerte man ändert, was eine Abnahme prüft, was Open WebUI zu Logs und Kosten liefert und was nicht, und wie Mehrinstanzbetrieb, Sicherung und Upgrade zusammenhängen. Einordnung, Governance, Installation, Identitäten, Modelle und RAG stehen auf dem ersten Blatt: Open WebUI: Plattform aufbauen.

Maßgeblich für Variablen, Standardwerte und Versionsstände ist die Originaldoku unter docs.openwebui.com. Dieses Blatt trifft eine Auswahl, Stand Open WebUI v0.11.4 (Oktober 2026). Das Projekt veröffentlicht in kurzen Abständen — Standardwerte vor dem Einsatz gegen die Doku prüfen.

Werkzeuge anbinden: OpenAPI, MCP oder mcpo

WegLäuft woPasst für
Workspace Toolals Python im Open-WebUI-Prozesskleine Logik, Geheimnisse bleiben serverseitig
OpenAPI Tool Servereigener Dienst, per HTTP angebundenbestehende REST-Dienste, Unternehmensintegration
MCP (Streamable HTTP)eigener MCP-Servervorhandene MCP-Server und -Clients
mcpoProxy vor einem stdio- oder SSE-ServerMCP-Server ohne HTTP-Transport

Die Doku nennt OpenAPI für die meisten Installationen den bevorzugten Weg: Er passt zu SSO, API-Gateways, Audit und Quoten, und die Endpunkte lassen sich ohne Modell testen. MCP bindet Open WebUI nur über Streamable HTTP an; mcpo übersetzt stdio- oder SSE-Server in OpenAPI-Endpunkte.

OpenAPI Tool ServerMCP (Streamable HTTP)
Wer legt anauch Nutzer mit Direct Tool Serversnur Administratoren
Zustandzustandslos, feste Endpunktezustandsbehaftet, mit Sitzungen
Werkzeuge drumherumetabliert für Doku, Test, Sicherheitein Protokoll für viele Clients
Streamingkeine gestreamte Ausgabeauf Transportebene

Das Integrationsmuster bestimmt den Aufwand, nicht die Technik: Ein Dokumentimport riskiert veraltete Kopien, eine Live-Abfrage Datenabfluss, ein schreibendes Werkzeug Wirkung im Zielsystem und Doppelausführung.

Modul: Integration über APIs und MCP

Identität beim Werkzeug und MCP-Authentifizierung

MechanismusWas beim Werkzeug ankommtVertrauen
ENABLE_FORWARD_USER_INFO_HEADERSX-OpenWebUI-User-Id, -Email, -Role, -Namenur im geschützten Netz
FORWARD_USER_INFO_HEADER_JWT_SECRETein signiertes JWT statt der Einzelheaderprüfbar mit gemeinsamem Geheimnis
MCP-Auth Nonekein Tokennur im internen Netz
MCP-Auth Bearerfester Schlüssel aus dem Feld Keytechnisches Konto, keine Person
MCP-Auth Sessiondas Open-WebUI-Sitzungstoken des Nutzersso gut wie der Transportweg
MCP-Auth OAuthZugriffstoken aus der SSO-Anmeldungvom Zielsystem prüfbar
MCP-Auth OAuth 2.1 / (Static)Nutzer verbindet sein Konto selbst, Client per DCR oder fest hinterlegtvom Zielsystem prüfbar

Unsignierte Header kann jeder setzen, der den Tool-Server erreicht — für Rechteprüfungen das JWT nehmen. Berechtigungen gehören ins Zielsystem: Eine Modellanweisung wie „Ändere nur eigene Tickets” ist keine Kontrolle. Eingaben begrenzt die OpenAPI-Spezifikation (eine operationId je Endpunkt, pattern im Schema); geprüft wird im Server, nicht im Modell.

Modul: Integration über APIs und MCP

Freigaben für schreibende Aktionen

OrtWieGrenze
Tool Permissions„Ask for approval” stoppt vor jedem Aufruf mit Allow/Denyexperimentell, aus per Standard (ENABLE_TOOL_PERMISSIONS)
Python-WerkzeugBestätigungsdialog über __event_call__ mit type: "confirmation"gilt nur für dieses Werkzeug
Action FunctionKnopf an der Nachricht, vom Menschen ausgelöstkein Aufruf durch das Modell
ZielsystemWerkzeug legt nur einen Vorschlag an, Mensch bestätigt dorteigener Freigabeweg nötig

Automationen und Channels laufen immer ohne Rückfrage. Jede Schreibaktion bekommt einen eigenen Endpunkt — lesen und schreiben nie in einer Operation. Ohne WEBSOCKET_EVENT_CALLER_TIMEOUT wartet eine Rückfrage unbegrenzt.

Module: Integration über APIs und MCP · Erweiterungen und agentische Abläufe

Erweiterungen: Tools, Functions und was Pipelines ersetzt

TypAufgabeWer verwaltet
ToolFähigkeit, die das Modell aufruftWorkspace > Tools
Pipeerscheint als eigenes Modell und beantwortet selbstnur Admins
Filterverändert Anfragen und Antworten (inlet, stream, outlet)nur Admins
ActionKnopf an einer Nachricht, vom Menschen ausgelöstnur Admins
Eventreagiert auf Systemereignisse, neu ab 0.10.0nur Admins
In Pipelines (Legacy)Heute stattdessen
Pipeline vom Typ pipePipe Function
Pipeline vom Typ filterFilter Function
externer HTTP-DienstOpenAPI Tool Server oder MCP-Server
Worker-Container auf Port 9099entfällt

Valves setzt der Admin für alle, UserValves jede Person selbst. Ein Passwort-Feld maskiert nur die Anzeige; verschlüsselt wird erst mit ENABLE_VALVE_ENCRYPTION, abhängig von WEBUI_SECRET_KEY. Das Recht, Werkzeuge anzulegen, gilt laut Security Policy als root-gleich.

Modul: Erweiterungen und agentische Abläufe

Agentische Läufe und Codeausführung begrenzen

StellschraubeStandardWirkung
CHAT_RESPONSE_MAX_TOOL_CALL_ITERATIONS256Werkzeugrunden je Antwort, dann Abbruch
AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVERwie AIOHTTP_CLIENT_TIMEOUTWartezeit auf einen Tool-Server
WEBSOCKET_EVENT_CALLER_TIMEOUTohneWartezeit auf eine Rückfrage im Browser
Function Name Filter Listallesichtbare Werkzeuge eines MCP-Servers
Builtin Tools je Modellaneingebaute Werkzeugkategorien
CodeausführungIsolationEinsatz
Code Interpreter (pyodide)im BrowserLegacy, nur Bestand
Open Terminalein Container je Verbindungfrei, eine Person oder ein Team
Open Terminal, Multi-UserArbeitsbereiche in einem Container — keine Sicherheitsgrenzenur gleich vertraute Nutzer
Terminals (Orchestrator)ein Container je Nutzer und RichtlinieEnterprise-Lizenz für Produktion

Modul: Erweiterungen und agentische Abläufe

Härtung: Standardwerte, Netzwerk und Secrets

EinstellungStandardWarum ändern
ENABLE_SIGNUPConfigVarnach dem ersten Start gewinnt der Datenbankwert
ENABLE_ADMIN_CHAT_ACCESStrueAdmins sehen alle Chats — mit Betriebsrat regeln
BYPASS_ADMIN_ACCESS_CONTROLtrueAdmins umgehen Freigaben von Wissen und Modellen
ENABLE_COMMUNITY_SHARINGtruefür interne Inhalte unnötig
ENABLE_ADMIN_EXPORTtrueMassenexport nur, wenn ein Prozess ihn braucht
ENABLE_OPENAI_API_PASSTHROUGHfalsebleibt aus: sonst Admin-Schlüssel ohne Modellrechte
JWT_EXPIRES_IN4 Wochenkürzer, solange Redis Tokens nicht widerrufen kann
FORWARDED_ALLOW_IPS*nur der Proxy, sonst fälschen Clients ihre Adresse
ENABLE_LOCAL_WEB_FETCH—aus lassen: SSRF-Sperre für interne Dienste

Ohne explizite Werte gelten CORS und Proxyheader offen für alle, das Cookie ohne Secure und keine Sicherheitsheader (HSTS, XFRAME_OPTIONS).

SecretFolge der Rotation
WEBUI_SECRET_KEYalle Sitzungen enden, MCP-Tokens neu verbinden
OAUTH_SESSION_TOKEN_ENCRYPTION_KEYgespeicherte OAuth-Tokens werden unlesbar
OAUTH_CLIENT_SECRETgleichzeitig beim Identitätsanbieter und in Open WebUI tauschen
DatenbankpasswortNeustart aller Instanzen

Sicherheitskorrekturen erhält nur der aktuelle Stand; GitHub Security Advisories beobachten, erst auf dem Testsystem einspielen.

Modul: Plattform absichern

Bedrohungsmodell nach OWASP LLM Top 10 (2026)

RisikoPrüffrage
LLM01 Prompt InjectionWas passiert, wenn ein Dokument der Wissensbasis Anweisungen enthält?
LLM02 Sensitive Information DisclosureSieht eine Gruppe Inhalte einer anderen?
LLM03 Excessive AgencyKann ein Modell ohne Freigabe im Zielsystem schreiben?
LLM04 Supply ChainWoher stammen Image, Modelle, Tools und Functions?
LLM06 Unbounded ConsumptionWas begrenzt Tokens, Werkzeugschleifen und Uploads?
LLM07 MisinformationErkennt der Assistent widersprüchliche Fassungen?
LLM08 Hidden Context ExposureStehen Geheimnisse im Systemprompt oder in Werkzeugantworten?
LLM09 Vector and Embedding WeaknessesGreift die Gruppenfreigabe auch bei der Vektorsuche?
LLM10 Improper Output HandlingWerden Links und Code aus Antworten ungeprüft weiterverarbeitet?

Abflusswege mit eigener technischer Grenze: Antworten, Werkzeuge, Suchdienste, Links und Bilder, Logs. Ein Restrisiko ohne Namen und Prüftermin ist nicht akzeptiert, sondern vergessen.

Modul: Plattform absichern

Abnahme: Tests und Kriterien

PrüfungBestanden, wenn
Person ohne Gruppenrecht fragt nach fremder Wissensbasisweder Inhalt noch Dateiname erscheinen
Konto ohne Freigabe ruft Assistenten über die APIAnfrage abgelehnt
Konto mit Rolle pendingkein Zugriff bis zur Freischaltung
Deaktiviertes Konto nutzt altes Token oder API-SchlüsselAnfrage abgelehnt
Dokument mit versteckter AnweisungAntwort folgt ihr nicht, Quelle sichtbar
WerkzeugschleifeObergrenze beendet die Antwort
ÄnderungErneut testen
Modell oder Parameteralle Referenzfragen und Injection-Tests
SystempromptReferenzfragen des Assistenten, direkte Injection
DokumenteRetrieval-Fragen, besonders Widersprüche
Embedding-Modellerst neu indexieren, dann alle Retrieval-Fragen
Release von Open WebUIZugriff, Login, Streaming, Werkzeuge

Zugriffstests laufen mit einem Testkonto je Gruppe, nie als Admin. Lasttests mit owb run chat-api aus open-webui/benchmark; Uploads und parallele Werkzeugaufrufe deckt es nicht ab. Ein einziger gescheiterter Zugriffstest oder eine Schreibaktion ohne Freigabe ist ein Ausschlusskriterium.

Module: Qualität und Abnahme · Abschlussprojekt

Auditlog, Telemetrie und Betriebskennzahlen

Stufe AUDIT_LOG_LEVELZeichnet aufFolge
NONEnichts — Standardkeine Nachvollziehbarkeit
METADATAGrundangaben zur AnfrageEmpfehlung der Härtungsseite
REQUESTzusätzlich den Request-BodyPrompts im Log
REQUEST_RESPONSEzusätzlich die AntwortChatinhalte doppelt gespeichert

Mit ENABLE_AUDIT_STDOUT=true geht das Auditlog an den Log-Collector. OpenTelemetry schalten ENABLE_OTEL, _TRACES, _METRICS und _LOGS ein — alle standardmäßig false. Traces enthalten db.statement und redis.args, brauchen also eine Datenschutzprüfung; Metriken liefern Anfragen und Dauer, keine Tokens.

KennzahlQuelle
Verfügbarkeit/health ohne Anmeldung
Modelle erreichbar/api/models mit eingeschränktem Monitoring-Konto
Ende zu Ende, Zeit bis zum ersten TokenTestanfrage an /api/chat/completions
Fehlerquote, Latenzhttp.server.requests, http.server.duration

Modul: Monitoring, Kosten und Fehlerdiagnose

Kosten: was Open WebUI zählt und was ein Gateway regelt

Open WebUIGateway, z. B. LiteLLM
ZählenTokens je Modell und Gruppe (Analytics)Kosten je Schlüssel, Team, Nutzer
Budgetkeins, keine Sperremax_budget mit budget_duration
Alarmkeinersoft_budget
Ratenlimitkeins für Modellerpm_limit, tpm_limit

Fehlende Tokenangaben erscheinen als 0; beim Streaming zählt nur, wer am Modell die Fähigkeit Usage gesetzt hat. Kosten = Eingabetokens × Eingabepreis + Ausgabetokens × Ausgabepreis — Preise pflegt man selbst. Hintergrundaufgaben des Task-Modells (Titel, Tags, Folgefragen) werden oft übersehen.

Modul: Monitoring, Kosten und Fehlerdiagnose

Fehlerbilder und Ursachen

SymptomWahrscheinliche Ursache
Login: mismatching_stateCookie oder Sitzung, SameSite, Proxy-Cache
Login: 404 auf den CallbackRedirect-URI passt nicht zu WEBUI_URL
Login-Schleife oder 401, nur mit mehreren InstanzenSecret Key oder Redis nicht gemeinsam
Wissensbasis wird ignoriertKontextfenster zu klein, etwa num_ctx in Ollama
Schlechte Treffer nach ModellwechselEmbedding-Modell geändert, nicht neu indexiert
Modellauswahl lädt endloseine Verbindung nicht erreichbar (AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST)
502, Connect call failed auf 127.0.0.1localhost im Container statt Dienstname
Markdown-Zeichen sichtbar, Text zerstückeltProxy puffert: proxy_buffering off fehlt
Chat hängt, WebSocket 403Upgrade- und Connection-Header fehlen

Von außen nach innen prüfen: /health, dann /api/models, dann eine Testanfrage. Erst die Ursache sichern, dann neu starten.

Modul: Monitoring, Kosten und Fehlerdiagnose

Mehrinstanzbetrieb: Pflichtvariablen

VariableWozu
DATABASE_URLPostgreSQL statt SQLite — Pflicht
VECTOR_DBz. B. pgvector; das eingebaute ChromaDB ist nicht mehrprozessfähig
REDIS_URLgemeinsamer Anwendungszustand
WEBSOCKET_MANAGERredis, sonst WebSocket-Fehler 403
ENABLE_WEBSOCKET_SUPPORTtrue
WEBUI_SECRET_KEYauf allen Instanzen identisch
OAUTH_SESSION_TOKEN_ENCRYPTION_KEYebenfalls identisch
ENABLE_DB_MIGRATIONSfalse auf allen Instanzen außer einer

Dazu ein gemeinsamer Dateispeicher. PGVECTOR_DB_URL fällt ohne eigene Angabe auf DATABASE_URL zurück. Pool mal Instanzen muss unter max_connections von PostgreSQL bleiben.

Modul: Hochverfügbarkeit, Backup und Releases

Sicherung, Wiederherstellung und Upgrade

BestandteilSicherung
Datenbank (Benutzer, Chats, Rechte, Einstellungen)pg_dump
Vektorenmit der Datenbank, wenn pgvector
Datenverzeichnis (Uploads, Bilder, Caches)Dateisicherung
KonfigurationRepository mit Compose, Proxy, Variablen
SchlüsselTresor, getrennt vom Backup
Image-Tagim Repository festgehalten

Ein automatisch erzeugter WEBUI_SECRET_KEY liegt in /app/backend/.webui_secret_key, nicht im Datenverzeichnis — wer nur das Volume sichert, stellt Daten ohne passenden Schlüssel wieder her. Die Datenbank- Schaltfläche im Admin-Bereich ist laut Doku nicht der empfohlene Sicherungsweg.

UmgebungUpdate-Strategie
eigene SpielwieseTag main, manuell ziehen
TeaminstanzVersion pinnen, Benachrichtigung über Diun
ProduktionVersion pinnen, Release Notes lesen, erst Staging
nächstes Release testenTag dev auf eigener Instanz mit eigenem Volume

Beim Start migriert Alembic das Schema automatisch; ohne kurzen Komplettausfall geht das laut Doku nicht. Alle Instanzen stoppen, eine allein migrieren lassen (UVICORN_WORKERS=1), dann die übrigen starten. Nach einer Migration bringt das alte Image das alte Schema nicht zurück — Rollback heißt Restore.

Modul: Hochverfügbarkeit, Backup und Releases

Pilot messen, übergeben und aussteigen können

NutzungWirkung
kommt aus Analyticskommt aus dem Fachbereich
Antworten, Tokens, aktive NutzerZeit oder Rückfragen pro Vorgang
zeigt Annahme und Kostenverlaufzeigt Arbeitsverbesserung
DatenExportwegGrenze
eigene ChatsSettings > Data Controls > Export ChatsJSON, je Person
alle ChatsAdmin-Export (ENABLE_ADMIN_EXPORT)abschaltbar
AssistentenExport der Workspace-ModelleFormat von Open WebUI
WissensbasenExport als ZIPextrahierter Text, nicht die Originale
Gesamtbestandpg_dumpSchema von Open WebUI, Abbildung nötig

Analytics zählt Antworten des Assistenten, nicht Nachrichten der Nutzer; personenbezogene Auswertungen sind mitbestimmungspflichtig. Art. 4 der KI-Verordnung verlangt seit dem Digital Omnibus (Juli 2026) Maßnahmen zur Förderung der KI-Kompetenz — Trainingsteilnahme dokumentieren. Übergeben ist erst, wenn der Regelbetrieb eine Störung ohne das Projektteam behoben hat.

Modul: Pilot, Rollout und Übergabe

Typische Fallen

  • MCP-Server mit Typ OpenAPI angelegt. Die Oberfläche hängt in einer Endlos-Ladeanzeige.
  • WEBUI_SECRET_KEY nicht fest gesetzt. Nach dem Neustart sind OAuth-Tokens unlesbar, bei mehreren Instanzen fliegen Nutzer beim Wechsel heraus.
  • Freigabe nur im Systemprompt verlangt. Das Modell kann den Aufruf trotzdem absetzen.
  • Ask for approval als Vorgabe angenommen. Jede Person wählt den Modus selbst; in temporären Chats und Automationen greift er nicht.
  • Workspace-Tools-Rechte an normale Nutzer. Das erlaubt eigenen Python-Code auf dem Server.
  • Function scheitert beim Laden und wird still inaktiv — die Ursache steht nur im Serverlog.
  • 256 Werkzeugrunden unverändert gelassen. Ein Lauf kann lange und teuer werden.
  • Multi-User-Modus für eine Sicherheitsgrenze gehalten. Für Fremde braucht es Terminals mit eigenem Container je Nutzer.
  • Signup in der .env abgeschaltet, aber den Datenbankwert übersehen, der ihn überschreibt.
  • ENABLE_LOGIN_FORM=false sperrt auch das lokale Notfallkonto aus.
  • Zugriffstests als Admin. Das Konto umgeht Freigaben standardmäßig.
  • Einen Injection-Test nach einem Lauf für bestanden erklärt. Modelle antworten nicht deterministisch.
  • REQUEST_RESPONSE vorsorglich eingeschaltet. Chatinhalte liegen dann dort, wo keine Löschung greift.
  • LOGURU_DIAGNOSE zur Fehlersuche eingeschaltet und vergessen. Tokens und Prompts landen in den Tracebacks.
  • Nur /health überwacht. Es meldet gesund, während kein Modell antwortet.
  • Ein Budget in Open WebUI gesucht. Es gibt Zählung, keine Ausgabegrenze.
  • Zweite Instanz neben SQLite. Folge: database is locked und beschädigte Daten.
  • Instanzen einzeln nacheinander aktualisiert. Zwei Versionen an einer Datenbank sind nicht sicher.
  • Wiederherstellung behauptet statt erprobt — und nie mit gemessener Dauer.
  • Bei der Außerbetriebnahme die Sicherungen vergessen. Die Daten leben dort weiter.

Dieses Thema als Schulung für Ihr Team

Dieser Beitrag erklärt das Thema. Damit Ihr Team es danach auch anwendet, gibt es Open WebUI im Unternehmen als Schulung — an Ihrem eigenen Code, mit den Fragen, die ein Text nicht beantwortet. Sie wählen die Module, wir bauen daraus ein Programm.

6 Tage·ab 900 EUR netto pro Tag (bis 3 Teilnehmende) ·Termin nach Vereinbarung

Als Team-Schulung anfragenZum Seminar Open WebUI im Unternehmen →