Architektur von OpenWebUI
OpenWebUI ist eine selbstgehostete Benutzeroberfläche zur Interaktion mit LLMs (Large Language Models). Es kombiniert Frontend und API-Layer in einer einzigen Webanwendung und bietet Unterstützung für verschiedene Sprachmodelle – lokal oder über APIs (z. B. OpenAI, Claude, Ollama, LM Studio).
Komponentenübersicht
Ein typisches OpenWebUI-System besteht aus folgenden Hauptkomponenten:
-
Benutzeroberfläche (Client)
- Darstellung der Chats
- Eingabefeld für Nutzereingaben
- Darstellung von Modellantworten
- Chat-Historie und Session-Management
-
API-Layer (integriert in OpenWebUI)
- Verarbeitung und Weiterleitung von Anfragen
- Token-Management (z. B. API-Keys)
- Sicherheit (z. B. Authentifizierung)
- Kontextverwaltung (z. B. System-Prompts, Rollen, Modelleinstellungen)
-
Sprachmodell(e)
- Externe APIs: OpenAI (GPT-4), Anthropic (Claude), etc.
- Lokale Modelle über Ollama, LM Studio, OpenRouter u.a.
- Mehrere Modelle gleichzeitig konfigurierbar
Architekturdiagramm
flowchart LR
subgraph OpenWebUI ["OpenWebUI (Self-Hosted Webapp)"]
A[Benutzeroberfläche<br>• Eingabe & Anzeige<br>• Session-Verwaltung]
B[API-Layer<br>• Anfrageverarbeitung<br>• Sicherheit & Token<br>• Modellrouting]
end
C[Sprachmodell<br>• GPT-4 / OpenAI API<br>• LLaMA / Ollama<br>• Claude / API]
A -->|Anfrage| B
B -->|Verarbeitete Anfrage| C
C -->|Antwort| B
B -->|Formatierte Antwort| A
Besonderheiten
- Self-Contained: OpenWebUI enthält sowohl die Benutzeroberfläche als auch den API-Layer – keine zusätzliche Middleware nötig.
- Multimodellfähig: Nutzer können zwischen mehreren Modellen und Providern wählen.
- Privatsphäre: Lokale Modellanbindung (z. B. Ollama) möglich – keine Datenübertragung an Dritte.
- Plugins & Funktionen:
- Dateien hochladen und durchsuchen
- Konversationsverwaltung
- Rollenbasierte Prompts
- Unterstützung für Bildmodelle (optional)
Hosting-Optionen
- Docker (empfohlen)
- Manuelle Installation (Node.js + Backend)
- Unterstützung für Authentifizierung, mehrere Benutzer und persistente Einstellungen
Fazit
OpenWebUI ist eine leistungsstarke, modulare Lösung für den selbstgehostenen Einsatz von LLMs. Durch die Integration von Frontend und API eignet es sich besonders für Nutzer, die ohne Cloud-Dienste arbeiten wollen oder mehrere Modelle flexibel einbinden möchten.
OpenWebUI mit Docker und Traefik installieren
Diese Anleitung beschreibt die Installation von OpenWebUI auf einem Webserver mithilfe von Docker und Traefik als Reverse Proxy.
Voraussetzungen
- Ein Linux-Server mit root-Zugriff
- Installiertes Docker und Docker Compose
- Domain (z. B.
webui.example.com
) - Docker-Netzwerk für Traefik, z. B.
traefik-net
- Bereits laufender Traefik-Container
1. Verzeichnisstruktur anlegen
mkdir -p /data/docker/openwebui
cd /data/docker/openwebui
2. Docker-Compose-Datei erstellen
Erstelle eine Datei namens docker-compose.yml
mit folgendem Inhalt:
services:
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: openwebui
restart: unless-stopped
networks:
- traefik-net
labels:
- "traefik.enable=true"
- "traefik.http.routers.openwebui.rule=Host(`webui.kaulbach.de`)"
- "traefik.http.routers.openwebui.entrypoints=websecure"
- "traefik.http.routers.openwebui.tls.certresolver=letsencrypt"
- openwebui_data:/app/backend/data
volumes:
openwebui_data:
networks:
traefik-net:
external: true
3. Container starten
docker compose up -d
4. Zugriff auf die Weboberfläche
Rufe OpenWebUI im Browser auf:
https://webui.kaulbach.de
5. Logs und Verwaltung
- Logs anzeigen:
docker logs -f openwebui
- Stoppen:
docker compose down
6. Updates
docker compose pull
docker compose up -d
Weitere Infos
https://github.com/open-webui/open-webui
Einrichten
Admin
Beim ersten Login wird automatisch ein Admin-Benutzer angelegt.
ChatGPT
Im Administrationsbereich über Einstellungen -> Verbindungen kann der OpenAI-API-Key eingetragen werden:
Groq
Im Administrationsbereich über Einstellungen -> Verbindungen über das Plus-Zeichen eine neue Verbindung anlegen und die Groq-URL und API-Key eintragen:
URL: https://api.groq.com/openai/v1
Modelle
Im Administrationsbereich über Einstellungen -> Modelle kann ausgewählt werden, welche Modelle den Benutzern zur Auswahl angezeigt werden sollen.