Admin-Panel
Eine eigenständige Web-Benutzeroberfläche zur Verwaltung von LibreChat-Benutzern, Gruppen, Rollen, Konfigurations-Overrides und Systemberechtigungen – ohne manuelle Bearbeitung der librechat.yaml.
LibreChat Admin-Panel
Das LibreChat Admin Panel ist eine eigenständige, browserbasierte Verwaltungsoberfläche für LibreChat. Sie verbindet sich mit derselben Datenbank wie LibreChat selbst und bietet eine grafische Benutzeroberfläche für die administrativen Aufgaben, die die granulare Zugriffskontrolle ermöglichen: Benutzer- und Gruppenverwaltung, Rollenmanagement, Konfigurationsüberschreibungen mit Gültigkeitsbereich für Rollen oder Gruppen sowie die Vergabe von Berechtigungen auf Systemebene.
Status: Vorschau
Das Admin-Panel steht jetzt zum Testen bereit und ist die kommende Verwaltungsoberfläche, die auf den in LibreChat v0.8.5 eingeführten Admin-APIs aufbaut. Quellcode, Issues und Releases finden Sie unter github.com/ClickHouse/librechat-admin-panel.
Was es bewirkt
Das Admin-Panel ist ein Thin Client: Alle Daten befinden sich in der Datenbank von LibreChat, und jede Aktion erfolgt über die versionierten /api/admin/* Endpoints auf dem LibreChat API-Server. Es bietet Administratoren einen zentralen Ort, um:
- Konfiguration verwalten: Zeigen Sie alle LibreChat-Einstellungen über ein dynamisches, schema-basiertes Formular an und bearbeiten Sie diese. Neue Felder, die dem Konfigurationsschema hinzugefügt werden, erscheinen automatisch; eine Veröffentlichung des Admin-Panels ist nicht erforderlich.
- Anwendung von Überschreibungen pro Principal: Begrenzen Sie Konfigurationsüberschreibungen auf bestimmte Rollen oder Gruppen, mit einer prioritätsbasierten Kaskade, die den endgültigen aufgelösten Wert bestimmt, den jeder Benutzer bei der Anmeldung sieht.
- Benutzer verwalten: Alle Konten auf der Instanz auflisten, suchen und anzeigen.
- Gruppen verwalten: Gruppen erstellen und löschen, Mitglieder hinzufügen/entfernen und Gruppen als erstklassige Prinzipale in ACLs und Overrides verwenden.
- Rollen verwalten: Erstellen Sie benutzerdefinierte Rollen über die integrierten
USER/ADMINhinaus, bearbeiten Sie deren Funktionsberechtigungsmatrix und weisen Sie Benutzern Rollen zu. - Issue system grants: Delegieren Sie Administrator-Funktionen (z. B.
manage:users,read:usage,manage:mcpservers) an bestimmte Benutzer, Gruppen oder Rollen, ohne ihnen volle Administratorrechte zu erteilen. - Authentifizierung: Melden Sie sich mit einem lokalen LibreChat-Administratorkonto an oder über OpenID SSO / SAML / unterstützte OAuth-Anbieter, sofern diese auf der LibreChat-Instanz aktiviert sind.
Für das zugrunde liegende Berechtigungsmodell (Principals, Ressourcen-ACLs, Capabilities und wie sich die Ebenen zusammensetzen), siehe die Seite Access Control.
Architektur
┌──────────────────┐ ┌──────────────────┐ ┌──────────────┐
│ Admin Panel │ ───────▶│ LibreChat API │ ───────▶│ MongoDB │
│ (Bun + Vite) │ HTTPS │ /api/admin/* │ │ (shared DB) │
└──────────────────┘ └──────────────────┘ └──────────────┘
│ │
│ OAuth/OIDC/SAML redirect │ Verifies admin access
└─────────────────────────────┘Das Admin-Panel läuft als separater Dienst; es teilt sich keinen Prozess mit LibreChat. Admin-Funktionen werden auf der LibreChat-Seite über die access:admin-Systemberechtigung oder die SystemRoles.ADMIN-Rolle verifiziert, sodass das Panel sich selbst keine Privilegien gewähren kann, die es nicht haben sollte.
Die von LibreChat bereitgestellte Admin-API-Oberfläche ist:
| Mount | Zweck |
|---|---|
POST /api/admin/login /oauth/* | Admin-spezifische Authentifizierungs-endpoints (lokal + SSO) |
GET /api/admin/verify | Validiert die Admin-Sitzung |
/api/admin/users | Benutzerauflistung und -suche |
/api/admin/groups | Gruppen-CRUD + Mitgliederverwaltung |
/api/admin/roles | Benutzerdefinierte Rollen-CRUD + Berechtigungsbearbeitung + Mitgliederverwaltung |
/api/admin/grants | System-Berechtigungszuweisungen (zuweisen/widerrufen/auflisten) |
/api/admin/config | Basis- + prinzipalbasierte Konfigurationsüberschreibungen |
Erste Schritte
Voraussetzungen
- Eine laufende LibreChat-Instanz auf v0.8.5 oder höher (Admin-APIs sind in früheren Versionen nicht verfügbar)
- Netzwerkzugriff vom admin-panel Container/Host auf die LibreChat API
- Ein Admin-Konto auf LibreChat: entweder der zuerst registrierte Benutzer (Auto-Admin), ein Benutzer mit
role: 'ADMIN', der in Mongo festgelegt wurde, oder ein Principal, dem dieaccess:admin-Berechtigung erteilt wurde.
Gebündelt mit LibreChat (empfohlen)
Wenn Sie LibreChat mit der offiziellen docker-compose.yml oder deploy-compose.yml ausführen, wird das Admin-Panel als Dienst mitgeliefert und startet automatisch zusammen mit LibreChat -- es ist keine separate Bereitstellung erforderlich.
| Compose-Datei | Admin-Panel-URL | Bereitstellungsart |
|---|---|---|
docker-compose.yml (Standard) | http://localhost:3000 | Über einen Host-Port veröffentlicht (ADMIN_PANEL_PORT, Standard 3000) |
deploy-compose.yml | http://admin.localhost | Über den mitgelieferten nginx-Reverse-Proxy auf einer Subdomain geroutet |
Legen Sie das Session-Secret des Panels in der .env von LibreChat fest, bevor Sie den Stack starten; die compose-Dateien übergeben es als SESSION_SECRET des Panels:
# Min 32 characters. Generate with: openssl rand -hex 32
ADMIN_PANEL_SESSION_SECRET=replace-with-a-32-char-random-string
# Optional: host port for the default docker-compose
# ADMIN_PANEL_PORT=3000
# Optional: set true when the panel is served over HTTPS
# ADMIN_PANEL_SESSION_COOKIE_SECURE=falseDie Compose-Dateien verknüpfen den Rest automatisch: API_SERVER_URL verweist auf den api-Dienst, VITE_API_BASE_URL folgt DOMAIN_CLIENT für browserseitige OAuth-Weiterleitungen, und ADMIN_PANEL_URL ist so eingestellt, dass LibreChat Administratoren nach dem SSO zum Panel zurückleitet. Um dies zu deaktivieren, entfernen Sie den admin-panel-Dienst oder schützen Sie ihn durch einen Compose profiles-Eintrag.
admin.localhost auf einer echten Domain
Moderne Browser lösen *.localhost (einschließlich admin.localhost) zu 127.0.0.1 auf, sodass die deploy-compose-URL ohne Änderungen an der hosts-Datei funktioniert. Für eine echte Domain leiten Sie einen DNS-Eintrag auf den Host, aktualisieren den admin.localhost server_name in client/nginx.conf und setzen ADMIN_PANEL_URL entsprechend.
Standalone (separate deployment)
Um das Admin-Panel separat zu hosten – und auf eine anderweitig laufende LibreChat-Instanz zu verweisen –, verwenden Sie das veröffentlichte Image von GHCR:
# 1. Create an env file
cp .env.example .env
# 2. Edit .env and set at minimum:
# SESSION_SECRET=<random string, min 32 characters>
# VITE_API_BASE_URL=http://host.docker.internal:3080
# 3. Start it
docker compose up -d # http://localhost:3000
docker compose down # stopEigenständiges docker run:
docker run -p 3000:3000 \
--add-host=host.docker.internal:host-gateway \
-e SESSION_SECRET=replace-with-32-char-random-string \
-e VITE_API_BASE_URL=http://host.docker.internal:3080 \
ghcr.io/clickhouse/librechat-admin-panel:latestDocker-Netzwerk
Innerhalb eines Containers bezieht sich localhost auf den Container selbst, nicht auf Ihren Host. Wenn LibreChat auf demselben Host ausgeführt wird, verweisen Sie VITE_API_BASE_URL auf http://host.docker.internal:3080 (Linux: fügen Sie --add-host=host.docker.internal:host-gateway hinzu). Verwenden Sie in der Produktion den öffentlichen/internen DNS-Namen Ihrer LibreChat-API.
Lokal für die Entwicklung ausführen
git clone https://github.com/ClickHouse/librechat-admin-panel.git
cd librechat-admin-panel
cp .env.example .env # then edit
bun install
bun dev # http://localhost:3000Umgebungsvariablen
| Variable | Required | Default | Description |
|---|---|---|---|
SESSION_SECRET | Ja in Produktion | Hardcodierter Dev-Fallback bei Ausführung von bun dev; kein Standardwert im Docker-Image | Sitzungsverschlüsselungsschlüssel. Muss mindestens 32 Zeichen lang sein. |
VITE_API_BASE_URL | Ja in Docker | http://localhost:3080 (nur lokale Entwicklung) | Browserseitige URL des LibreChat API-Servers, verwendet für OAuth-Weiterleitungen. |
API_SERVER_URL | Nein | Greift auf VITE_API_BASE_URL zurück | Serverseitige URL für LibreChat API-Aufrufe. Nützlich, wenn der Admin-Panel-Server LibreChat über eine andere URL erreicht als der Browser (z. B. interner Kubernetes-Dienst vs. öffentlicher Hostname). |
PORT | Nein | 3000 | Port, auf dem das Admin-Panel lauscht. |
ADMIN_PANEL_SESSION_SECRET | Ja in Produktion | Greift auf CREDS_KEY in gebündelten LibreChat Docker-Stacks zurück | LibreChat-seitige Variable, die dem SESSION_SECRET des Admin-Panels für den gebündelten Admin-Panel-Dienst zugeordnet ist. Generieren Sie für die Produktion einen eindeutigen Wert mit mindestens 32 Zeichen. |
ADMIN_PANEL_PORT | Nein | 3000 | Host-Port, der vom gebündelten Admin-Panel-Dienst in der Standard-docker-compose.yml freigegeben wird. |
ADMIN_SSO_ONLY | Nein | false | Blendet das E-Mail/Passwort-Formular aus und erzwingt den SSO-only-Login. |
ADMIN_SESSION_IDLE_TIMEOUT_MS | Nein | 1800000 (30 Min.) | Inaktivitäts-Timeout für Sitzungen in Millisekunden. |
SESSION_COOKIE_SECURE | Nein | true in Produktion | Legt fest, ob das Sitzungs-Cookie HTTPS erfordert. |
ADMIN_PANEL_METRICS_SECRET | Nein | nicht gesetzt | Bearer-Token, das zum Abrufen des /metrics Prometheus-Endpunkts erforderlich ist. Der Endpunkt gibt 401 zurück, wenn er nicht gesetzt oder falsch ist. |
In den gebündelten Docker-Stacks von LibreChat läuft das Admin-Panel als admin-panel-Dienst. Die standardmäßige docker-compose.yml macht es über ADMIN_PANEL_PORT verfügbar; deploy-compose.yml leitet es über nginx unter http://admin.localhost weiter und setzt ADMIN_PANEL_URL für den API-Dienst.
LibreChat Redirect-URL
Wenn das Admin-Panel unter einer separaten URL von LibreChat gehostet wird, setzen Sie ADMIN_PANEL_URL in der LibreChat API-Umgebung. Verwenden Sie die externe Basis-URL des Admin-Panels, einschließlich eines eventuellen Pfad-Präfixes, und lassen Sie den abschließenden Schrägstrich weg:
ADMIN_PANEL_URL=https://admin.example.com/adminFür Helm-Deployments setzen Sie librechat.adminPanelUrl in Ihrer values-Datei. Das Chart rendert dies als ADMIN_PANEL_URL für den Admin-OAuth-Flow von LibreChat:
librechat:
adminPanelUrl: https://admin.example.com/adminFür OpenID SSO registrieren Sie ${DOMAIN_SERVER}/api/admin/oauth/openid/callback bei Ihrem Identitätsanbieter.
Cache-Steuerung
Diese spiegeln die Cache-Umgebungsvariablen von LibreChat wider. ADMIN_PANEL_*-Varianten haben Vorrang und greifen auf die gemeinsam genutzten LibreChat-Äquivalente zurück, wenn sie nicht gesetzt sind.
| Variable | Zweck |
|---|---|
STATIC_CACHE_MAX_AGE / ADMIN_PANEL_STATIC_CACHE_MAX_AGE | Browser max-age in Sekunden für gehashte Assets in /assets/ (Standard 172800 = 2 Tage). |
STATIC_CACHE_S_MAX_AGE / ADMIN_PANEL_STATIC_CACHE_S_MAX_AGE | CDN s-maxage in Sekunden (Standard 86400 = 1 Tag). |
INDEX_CACHE_CONTROL / ADMIN_PANEL_INDEX_CACHE_CONTROL | Cache-Control-Header für die HTML-Index-Antwort. |
INDEX_PRAGMA / ADMIN_PANEL_INDEX_PRAGMA | Pragma-Header für die HTML-Index-Antwort. |
INDEX_EXPIRES / ADMIN_PANEL_INDEX_EXPIRES | Expires-Header für die HTML-Index-Antwort. |
Authentifizierung
Das Admin-Panel verwendet den Authentifizierungs-Stack von LibreChat wieder und verfügt über keine eigene Benutzerdatenbank. Es werden zwei Anmeldepfade unterstützt:
- Lokale Konten: Benutzername/Passwort für jeden LibreChat-Benutzer, dessen Konto die Admin-Zugriffsprüfung besteht.
- Single sign-on: OpenID Connect, SAML und die Social-OAuth-Anbieter, die bereits auf Ihrer LibreChat-Instanz konfiguriert sind. Setzen Sie
ADMIN_SSO_ONLY=true, um das Passwort-Formular vollständig auszublenden.
Der Administratorzugriff wird von LibreChat für jede Anfrage serverseitig überprüft. Das Konto muss entweder:
- Haben Sie
role: 'ADMIN'in MongoDB, oder - Sie müssen über die
access:adminSystemberechtigung verfügen (die einem anderen Principal über das Admin-Panel selbst zugewiesen wurde; siehe System Grants).
Sitzungen sind cookie-basiert, mit SESSION_SECRET verschlüsselt und laufen bei Inaktivität gemäß ADMIN_SESSION_IDLE_TIMEOUT_MS ab.
Konfigurationsverwaltung
Das Panel rendert die LibreChat-Konfiguration als dynamisches Formular, das durch das Konfigurationsschema gesteuert wird. Dies hat zwei nützliche Eigenschaften:
- Vorwärtskompatibel: Wenn LibreChat ein neues Konfigurationsfeld einführt, übernimmt das Panel dieses automatisch aus dem Schema. Ein Upgrade oder eine erneute Bereitstellung des Admin-Panels ist nicht erforderlich.
- Layered overrides: Die Basiskonfiguration (aus
librechat.yaml) kann durch prinzipalspezifische Overrides überschrieben werden, die auf eine Rolle oder Gruppe beschränkt sind. Wenn sich ein Benutzer anmeldet, werden die Overrides in der Prioritätsreihenfolge aufgelöst und mit der Basis zusammengeführt, um die effektive Konfiguration zu erstellen, die der Benutzer sieht.
Dies ist die Oberfläche hinter dem DB-gestützten Konfigurations-Override-System pro Principal von LibreChat. Typische Anwendungsfälle:
- Geben Sie einer "Research"-Gruppe ein höheres
recursionLimitund zusätzliche endpoints - Lassen Sie eine "FinanceAdmins"-Rolle MCP-Server verwalten, während normale Benutzer diese nur verwenden können
- Beschränken Sie strengere
interface-Berechtigungen auf externe Auftragnehmergruppen
Verwandt
- Access Control: das Berechtigungsmodell, auf dem das Admin-Panel basiert
- Interface Configuration: die Feature-Flags, die das Panel bearbeitet
- Authentication: Benutzerauthentifizierung in LibreChat
- v0.8.5 Changelog: Grundlagen der Admin-API
- GitHub: ClickHouse/librechat-admin-panel: Quelle, Issues, Releases
Wie finden Sie diese Anleitung?
Zugriffskontrolle
Das granulare Autorisierungssystem von LibreChat – steuern Sie, wer Agents, Prompts, MCP-Server und andere Ressourcen auf Benutzer-, Gruppen-, Rollen- und Instanzebene verwenden, teilen, bearbeiten und verwalten darf.
Passwort zurücksetzen
Diese Funktion ermöglicht die passwortbasierte E-Mail-Zurücksetzung für Ihren LibreChat-Server.