Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Beheerderspaneel

Een standalone web-UI voor het beheren van LibreChat-gebruikers, groepen, rollen, configuratie-overrides en systeemtoelatingen - zonder handmatig librechat.yaml te bewerken.

LibreChat Admin Panel

Het LibreChat Admin Panel is een zelfstandige, browsergebaseerde beheerinterface voor LibreChat. Het maakt verbinding met dezelfde database als LibreChat zelf en biedt een GUI voor de administratieve taken die granulaire toegangscontrole mogelijk maken: gebruikers- en groepsbeheer, rollenbeheer, configuratie-overschrijvingen op basis van rollen of groepen, en het toekennen van systeemniveau-rechten.

Status: Voorbeeld

Het admin-paneel is nu beschikbaar om te testen en is de aankomende beheerinterface die voortbouwt op de admin-API's die zijn geïntroduceerd in LibreChat v0.8.5. Broncode, issues en releases zijn te vinden op github.com/ClickHouse/librechat-admin-panel.

Wat het doet

Het admin-paneel is een thin client: alle gegevens bevinden zich in de database van LibreChat en elke actie verloopt via de versiebeheerde /api/admin/* endpoints op de LibreChat API-server. Het biedt beheerders één centrale plek om:

  • Configuratie beheren: bekijk en bewerk elke LibreChat-instelling via een dynamisch, schema-gestuurd formulier. Nieuwe velden die aan het config-schema worden toegevoegd, verschijnen automatisch; er is geen release van het admin-paneel vereist.
  • Pas per-principal overrides toe: beperk configuratie-overrides tot specifieke rollen of groepen, met een op prioriteit gebaseerde cascade die de uiteindelijke opgeloste waarde bepaalt die elke gebruiker bij het inloggen ziet.
  • Gebruikers beheren: lijst, zoek en bekijk elk account op de instance.
  • Groepen beheren: groepen aanmaken en verwijderen, leden toevoegen/verwijderen en groepen gebruiken als eerstelijns-principals in ACL's en overrides.
  • Rollen beheren: maak aangepaste rollen aan naast de ingebouwde USER / ADMIN, bewerk hun functierechtenmatrix en wijs gebruikers toe aan rollen.
  • Issue system grants: delegeer beheerderscapaciteiten (bijv. manage:users, read:usage, manage:mcpservers) aan specifieke gebruikers, groepen of rollen zonder hen volledige beheerdersrechten te geven.
  • Authenticate: log in met een lokaal LibreChat admin-account, of via OpenID SSO / SAML / ondersteunde OAuth-providers wanneer deze zijn ingeschakeld op de LibreChat-instantie.

Voor het onderliggende permissiemodel (principals, resource ACL's, mogelijkheden en hoe de lagen zijn samengesteld), zie de Access Control pagina.

Architectuur

┌──────────────────┐         ┌──────────────────┐         ┌──────────────┐
│  Admin Panel     │ ───────▶│  LibreChat API   │ ───────▶│   MongoDB    │
│  (Bun + Vite)    │  HTTPS  │  /api/admin/*    │         │  (shared DB) │
└──────────────────┘         └──────────────────┘         └──────────────┘
       │                             │
       │ OAuth/OIDC/SAML redirect    │ Verifies admin access
       └─────────────────────────────┘

Het admin-paneel draait als een afzonderlijke service; het deelt geen proces met LibreChat. Admin-mogelijkheden worden aan de kant van LibreChat geverifieerd via de access:admin systeemtoewijzing of de SystemRoles.ADMIN rol, waardoor het paneel zichzelf geen privileges kan toekennen die het niet zou moeten hebben.

Het admin API-oppervlak dat door LibreChat wordt blootgesteld is:

MountDoel
POST /api/admin/login   /oauth/*Admin-specifieke authenticatie-endpoints (lokaal + SSO)
GET /api/admin/verifyValideert de admin-sessie
/api/admin/usersGebruikerslijst en zoeken
/api/admin/groupsGroep CRUD + beheer van leden
/api/admin/rolesAangepaste rol CRUD + rechten bewerken + beheer van leden
/api/admin/grantsSysteemcapaciteit-toekenningen (toewijzen/intrekken/lijst)
/api/admin/configBasis + per-principal configuratie-overschrijvingen

Aan de slag

Vereisten

  • Een draaiende LibreChat-instantie op v0.8.5 of later (admin-API's zijn niet beschikbaar in eerdere versies)
  • Netwerktoegang vanaf de admin-panel container/host naar de LibreChat API
  • Een admin-account op LibreChat: ofwel de eerst geregistreerde gebruiker (auto-admin), een gebruiker met role: 'ADMIN' ingesteld in Mongo, of een principal waaraan de access:admin capability is verleend.

Als je LibreChat uitvoert met de officiële docker-compose.yml of deploy-compose.yml, wordt het admin-paneel meegeleverd als een service en start het automatisch samen met LibreChat -- er is geen afzonderlijke implementatie nodig.

Compose-bestandAdmin-paneel URLHoe het wordt geserveerd
docker-compose.yml (standaard)http://localhost:3000Gepubliceerd op een host-poort (ADMIN_PANEL_PORT, standaard 3000)
deploy-compose.ymlhttp://admin.localhostGerouteerd via de meegeleverde nginx reverse proxy op een subdomein

Stel het session secret van het paneel in LibreChat's .env in voordat je de stack start; de compose-bestanden geven dit door als het SESSION_SECRET van het paneel:

# 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=false

De compose-bestanden koppelen de rest automatisch: API_SERVER_URL wijst naar de api-service, VITE_API_BASE_URL volgt DOMAIN_CLIENT voor browser-gerichte OAuth-omleidingen, en ADMIN_PANEL_URL is ingesteld zodat LibreChat beheerders na SSO terugstuurt naar het paneel. Om je af te melden, verwijder de admin-panel-service of beveilig deze achter een Compose profiles-item.

admin.localhost op een echt domein

Moderne browsers lossen *.localhost (inclusief admin.localhost) op naar 127.0.0.1, dus de deploy-compose URL werkt zonder wijzigingen aan het hosts-bestand. Voor een echt domein, verwijs een DNS-record naar de host, werk de admin.localhost server_name bij in client/nginx.conf en stel ADMIN_PANEL_URL in om overeen te komen.

Standalone (afzonderlijke implementatie)

Om het admin-paneel op zichzelf te hosten -- wijzend naar een LibreChat-instantie die elders draait -- gebruik de gepubliceerde image van 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    # stop

Standalone 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:latest

Docker-netwerken

Binnen een container verwijst localhost naar de container zelf, niet naar je host. Wanneer LibreChat op dezelfde host draait, wijs VITE_API_BASE_URL dan naar http://host.docker.internal:3080 (Linux: voeg --add-host=host.docker.internal:host-gateway toe). Gebruik in productie de publieke/interne DNS-naam van je LibreChat API.

Lokaal uitvoeren voor ontwikkeling

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:3000

Omgevingsvariabelen

VariabeleVereistStandaardBeschrijving
SESSION_SECRETJa in productieHardcoded dev fallback bij het draaien van bun dev; geen standaard in de Docker imageSessieversleutelingssleutel. Moet minimaal 32 tekens lang zijn.
VITE_API_BASE_URLJa in Dockerhttp://localhost:3080 (alleen lokale dev)URL van de LibreChat API-server voor de browser, gebruikt voor OAuth-omleidingen.
API_SERVER_URLNeeValt terug op VITE_API_BASE_URLServer-side URL voor LibreChat API-aanroepen. Handig wanneer de admin-panel server LibreChat bereikt via een andere URL dan de browser (bijv. interne Kubernetes-service vs. publieke hostnaam).
PORTNee3000Poort waarop het admin-paneel luistert.
ADMIN_PANEL_SESSION_SECRETJa in productieValt terug op CREDS_KEY in gebundelde LibreChat Docker-stacksLibreChat-side variabele gekoppeld aan de SESSION_SECRET van het admin-paneel voor de gebundelde admin-panel service. Genereer een unieke waarde van minimaal 32 tekens voor productie.
ADMIN_PANEL_PORTNee3000Hostpoort blootgesteld door de gebundelde admin-panel service in de standaard docker-compose.yml.
ADMIN_SSO_ONLYNeefalseVerberg het e-mail/wachtwoord-formulier, waardoor inloggen alleen via SSO mogelijk is.
ADMIN_SESSION_IDLE_TIMEOUT_MSNee1800000 (30 min)Sessie-inactiviteitstime-out in milliseconden.
SESSION_COOKIE_SECURENeetrue in productieOf het sessie-cookie HTTPS vereist.
ADMIN_PANEL_METRICS_SECRETNeeniet ingesteldBearer-token vereist om het /metrics Prometheus endpoint te scrapen. Het endpoint retourneert 401 wanneer dit niet is ingesteld of niet overeenkomt.

In de gebundelde Docker-stacks van LibreChat draait het admin-paneel als een admin-panel service. De standaard docker-compose.yml stelt deze bloot op ADMIN_PANEL_PORT; deploy-compose.yml routeert het via nginx op http://admin.localhost en stelt ADMIN_PANEL_URL in voor de API-service.

LibreChat Redirect URL

Wanneer het admin-paneel wordt gehost op een aparte URL van LibreChat, stel dan ADMIN_PANEL_URL in de LibreChat API-omgeving in. Gebruik de externe basis-URL van het admin-paneel, inclusief eventuele pad-prefix, en laat de afsluitende slash weg:

ADMIN_PANEL_URL=https://admin.example.com/admin

Voor Helm-implementaties stelt u librechat.adminPanelUrl in uw values-bestand in. De chart rendert dit als ADMIN_PANEL_URL voor de admin OAuth-flow van LibreChat:

librechat:
  adminPanelUrl: https://admin.example.com/admin

Voor OpenID SSO, registreer ${DOMAIN_SERVER}/api/admin/oauth/openid/callback bij uw identiteitsprovider.

Cache Controls

Deze spiegelen de cache-omgevingsvariabelen van LibreChat. ADMIN_PANEL_* varianten krijgen voorrang en vallen terug op de gedeelde LibreChat-equivalenten wanneer deze niet zijn ingesteld.

VariabeleDoel
STATIC_CACHE_MAX_AGE / ADMIN_PANEL_STATIC_CACHE_MAX_AGEBrowser max-age in seconden voor gehashte assets in /assets/ (standaard 172800 = 2 dagen).
STATIC_CACHE_S_MAX_AGE / ADMIN_PANEL_STATIC_CACHE_S_MAX_AGECDN s-maxage in seconden (standaard 86400 = 1 dag).
INDEX_CACHE_CONTROL / ADMIN_PANEL_INDEX_CACHE_CONTROLCache-Control header voor de HTML index-respons.
INDEX_PRAGMA / ADMIN_PANEL_INDEX_PRAGMAPragma header voor de HTML index-respons.
INDEX_EXPIRES / ADMIN_PANEL_INDEX_EXPIRESExpires header voor de HTML index-respons.

Authenticatie

Het admin-paneel hergebruikt de authenticatiestack van LibreChat en heeft geen eigen gebruikersdatabase. Er worden twee inlogpaden ondersteund:

  • Lokale accounts: gebruikersnaam/wachtwoord voor elke LibreChat-gebruiker wiens account de admin-toegangscontrole doorstaat.
  • Single sign-on: OpenID Connect, SAML en de sociale OAuth-providers die al zijn geconfigureerd op uw LibreChat-instantie. Stel ADMIN_SSO_ONLY=true in om het wachtwoordformulier volledig te verbergen.

Beheerdersrechten worden voor elk verzoek aan de serverzijde geverifieerd door LibreChat. Het account moet aan een van de volgende voorwaarden voldoen:

  1. Heb role: 'ADMIN' in MongoDB, of
  2. Beschik over de access:admin systeemtoekenning (toegewezen aan een andere principal via het beheerderspaneel zelf; zie System Grants).

Sessies zijn cookie-gebaseerd, versleuteld met SESSION_SECRET, en verlopen bij inactiviteit volgens ADMIN_SESSION_IDLE_TIMEOUT_MS.

Configuratiebeheer

Het paneel rendert de LibreChat config als een dynamisch formulier dat wordt aangestuurd door het config schema. Dit heeft twee nuttige eigenschappen:

  • Voorwaarts compatibel: wanneer LibreChat een nieuw configuratieveld uitbrengt, pikt het paneel dit automatisch op vanuit het schema. Er is geen upgrade of herimplementatie van het beheerderspaneel vereist.
  • Gelaagde overrides: de basisconfiguratie (van librechat.yaml) kan worden overschreven door per-principal overrides die zijn gekoppeld aan een rol of groep. Wanneer een gebruiker inlogt, worden overrides in volgorde van prioriteit opgelost en samengevoegd met de basis om de effectieve configuratie te produceren die de gebruiker ziet.

Dit is de interface achter het DB-backed per-principal configuration override system van LibreChat. Typische gebruiksscenario's:

  • Geef een "Research"-groep een hogere recursionLimit en extra endpoints
  • Laat een "FinanceAdmins" rol MCP-servers beheren, terwijl gewone gebruikers ze alleen kunnen gebruiken
  • Beperk strengere interface permissies tot externe-contractantgroepen

Hoe is deze gids?