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

Panel administratora

Samodzielny interfejs webowy do zarządzania użytkownikami, grupami, rolami, nadpisaniami konfiguracji i uprawnieniami systemowymi w LibreChat – bez ręcznej edycji pliku librechat.yaml.

Panel administratora LibreChat

Panel Administratora LibreChat to samodzielny interfejs zarządzania oparty na przeglądarce dla LibreChat. Łączy się on z tą samą bazą danych co LibreChat i zapewnia graficzny interfejs użytkownika (GUI) dla zadań administracyjnych, które obsługują szczegółową kontrolę dostępu: administrację użytkownikami i grupami, zarządzanie rolami, nadpisywanie konfiguracji przypisane do ról lub grup oraz przyznawanie uprawnień na poziomie systemu.

Status: Podgląd

Panel administratora jest już dostępny do testów i stanowi nadchodzący interfejs zarządzania, który bazuje na API administratora wprowadzonych w LibreChat v0.8.5. Kod źródłowy, zgłoszenia problemów oraz wydania znajdują się pod adresem github.com/ClickHouse/librechat-admin-panel.

Co to robi

Panel administratora jest lekkim klientem: wszystkie dane znajdują się w bazie danych LibreChat, a każde działanie przechodzi przez wersjonowane punkty końcowe /api/admin/* na serwerze API LibreChat. Zapewnia on administratorom jedno miejsce do:

  • Zarządzaj konfiguracją: przeglądaj i edytuj każde ustawienie LibreChat za pomocą dynamicznego formularza opartego na schemacie. Nowe pola dodane do schematu konfiguracji pojawiają się automatycznie, bez konieczności wydawania nowej wersji panelu administratora.
  • Zastosuj nadpisania dla poszczególnych podmiotów (per-principal): ogranicz nadpisania konfiguracji do określonych ról lub grup, korzystając z kaskady opartej na priorytetach, która określa ostateczną wartość rozwiązywaną dla każdego użytkownika w momencie logowania.
  • Zarządzanie użytkownikami: wyświetlanie listy, wyszukiwanie i przeglądanie każdego konta w instancji.
  • Zarządzaj grupami: twórz i usuwaj grupy, dodawaj/usuwaj członków oraz używaj grup jako głównych podmiotów w ACL i nadpisaniach.
  • Zarządzaj rolami: twórz własne role wykraczające poza wbudowane USER / ADMIN, edytuj ich macierz uprawnień do funkcji i przypisuj użytkowników do ról.
  • Przyznawanie uprawnień systemowych: delegowanie możliwości administracyjnych (np. manage:users, read:usage, manage:mcpservers) konkretnym użytkownikom, grupom lub rolom bez nadawania im pełnych uprawnień administratora.
  • Authenticate: zaloguj się za pomocą lokalnego konta administratora LibreChat lub poprzez OpenID SSO / SAML / wspieranych dostawców OAuth, jeśli są oni włączeni w instancji LibreChat.

Aby uzyskać informacje na temat podstawowego modelu uprawnień (podmioty, listy kontroli dostępu do zasobów, możliwości oraz sposób tworzenia warstw), zobacz stronę Access Control.

Architektura

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

Panel administratora działa jako oddzielna usługa; nie współdzieli procesu z LibreChat. Uprawnienia administratora są weryfikowane po stronie LibreChat za pomocą uprawnienia systemowego access:admin lub roli SystemRoles.ADMIN, dzięki czemu panel nie może samodzielnie przyznać sobie uprawnień, których nie powinien posiadać.

Powierzchnia API administratora udostępniana przez LibreChat to:

MountCel
POST /api/admin/login   /oauth/*Punkty końcowe uwierzytelniania administratora (lokalne + SSO)
GET /api/admin/verifyWeryfikuje sesję administratora
/api/admin/usersLista użytkowników i wyszukiwanie
/api/admin/groupsCRUD grup + zarządzanie członkami
/api/admin/rolesCRUD ról niestandardowych + edycja uprawnień + zarządzanie członkami
/api/admin/grantsNadawanie uprawnień systemowych (przypisywanie/cofanie/lista)
/api/admin/configPodstawowa konfiguracja + nadpisywanie konfiguracji dla poszczególnych podmiotów

Wprowadzenie

Wymagania wstępne

  • Działająca instancja LibreChat w wersji v0.8.5 lub nowszej (API administracyjne nie są dostępne we wcześniejszych wersjach)
  • Dostęp sieciowy z kontenera/hosta admin-panel do API LibreChat
  • Konto administratora w LibreChat: albo pierwszy zarejestrowany użytkownik (auto-admin), użytkownik z ustawionym role: 'ADMIN' w Mongo, albo podmiot, któremu przyznano uprawnienie access:admin

Jeśli uruchamiasz LibreChat przy użyciu oficjalnego pliku docker-compose.yml lub deploy-compose.yml, panel administratora jest dostarczany jako usługa i uruchamia się automatycznie wraz z LibreChat -- nie jest wymagane oddzielne wdrażanie.

Plik ComposeURL panelu administratoraSposób serwowania
docker-compose.yml (domyślny)http://localhost:3000Opublikowany na porcie hosta (ADMIN_PANEL_PORT, domyślnie 3000)
deploy-compose.ymlhttp://admin.localhostPrzekierowany przez dołączone odwrotne proxy nginx na subdomenie

Set the panel's session secret in LibreChat's .env before starting the stack; the compose files pass it through as the panel's SESSION_SECRET:

# 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

Pliki compose automatycznie konfigurują resztę: API_SERVER_URL wskazuje na usługę api, VITE_API_BASE_URL podąża za DOMAIN_CLIENT w przypadku przekierowań OAuth w przeglądarce, a ADMIN_PANEL_URL jest ustawiony tak, aby LibreChat po SSO przekierowywał administratorów z powrotem do panelu. Aby zrezygnować, usuń usługę admin-panel lub zabezpiecz ją za pomocą wpisu profiles w Compose.

admin.localhost w prawdziwej domenie

Nowoczesne przeglądarki rozwiązują *.localhost (w tym admin.localhost) na 127.0.0.1, więc adres URL deploy-compose działa bez konieczności modyfikacji pliku hosts. W przypadku prawdziwej domeny należy skierować rekord DNS na hosta, zaktualizować server_name dla admin.localhost w client/nginx.conf oraz ustawić ADMIN_PANEL_URL tak, aby był z nim zgodny.

Standalone (osobne wdrożenie)

Aby hostować panel administratora samodzielnie — wskazując na instancję LibreChat działającą w innym miejscu — użyj opublikowanego obrazu z 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

Samodzielne 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

Sieci Docker

Wewnątrz kontenera localhost odnosi się do samego kontenera, a nie do hosta. Gdy LibreChat działa na tym samym hoście, skieruj VITE_API_BASE_URL na http://host.docker.internal:3080 (Linux: dodaj --add-host=host.docker.internal:host-gateway). W środowisku produkcyjnym użyj publicznej/wewnętrznej nazwy DNS swojego API LibreChat.

Uruchamianie lokalnie w celach programistycznych

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

Zmienne środowiskowe

ZmiennaWymaganaDomyślnieOpis
SESSION_SECRETTak w produkcjiZakodowany na sztywno zamiennik deweloperski przy uruchomieniu bun dev; brak wartości domyślnej w obrazie DockerKlucz szyfrowania sesji. Musi mieć co najmniej 32 znaki.
VITE_API_BASE_URLTak w Dockerhttp://localhost:3080 (tylko lokalny dev)Adres URL serwera API LibreChat widoczny dla przeglądarki, używany do przekierowań OAuth.
API_SERVER_URLNiePrzyjmuje wartość VITE_API_BASE_URLAdres URL po stronie serwera dla wywołań API LibreChat. Przydatne, gdy serwer panelu administratora łączy się z LibreChat pod innym adresem URL niż przeglądarka (np. wewnętrzna usługa Kubernetes vs. publiczna nazwa hosta).
PORTNie3000Port, na którym nasłuchuje panel administratora.
ADMIN_PANEL_SESSION_SECRETTak w produkcjiPrzyjmuje wartość CREDS_KEY w dołączonych stosach Docker LibreChatZmienna po stronie LibreChat mapowana na SESSION_SECRET panelu administratora dla dołączonej usługi panelu. Wygeneruj unikalną wartość o długości co najmniej 32 znaków dla środowiska produkcyjnego.
ADMIN_PANEL_PORTNie3000Port hosta udostępniany przez dołączoną usługę panelu administratora w domyślnym docker-compose.yml.
ADMIN_SSO_ONLYNiefalseUkrywa formularz logowania e-mail/hasło, wymuszając logowanie wyłącznie przez SSO.
ADMIN_SESSION_IDLE_TIMEOUT_MSNie1800000 (30 min)Limit czasu bezczynności sesji w milisekundach.
SESSION_COOKIE_SECURENietrue w produkcjiCzy plik cookie sesji wymaga połączenia HTTPS.
ADMIN_PANEL_METRICS_SECRETNienieustawioneToken Bearer wymagany do pobierania danych z punktu końcowego /metrics Prometheus. Punkt końcowy zwraca 401, jeśli token nie jest ustawiony lub jest nieprawidłowy.

W dołączonych stosach Docker dla LibreChat, panel administratora działa jako usługa admin-panel. Domyślny plik docker-compose.yml udostępnia go na porcie ADMIN_PANEL_PORT; deploy-compose.yml kieruje go przez nginx pod adresem http://admin.localhost i ustawia ADMIN_PANEL_URL dla usługi API.

Adres URL przekierowania LibreChat

Gdy panel administratora jest hostowany pod innym adresem URL niż LibreChat, ustaw ADMIN_PANEL_URL w środowisku API LibreChat. Użyj zewnętrznego podstawowego adresu URL panelu administratora, włącznie z dowolnym prefiksem ścieżki, i pomiń końcowy ukośnik:

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

W przypadku wdrożeń Helm, ustaw librechat.adminPanelUrl w swoim pliku values. Wykres renderuje go jako ADMIN_PANEL_URL dla przepływu OAuth administratora LibreChat:

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

W przypadku OpenID SSO, zarejestruj ${DOMAIN_SERVER}/api/admin/oauth/openid/callback u swojego dostawcy tożsamości.

Kontrola pamięci podręcznej

Te zmienne odzwierciedlają zmienne środowiskowe pamięci podręcznej LibreChat. Warianty ADMIN_PANEL_* mają pierwszeństwo, a w przypadku ich braku stosowane są współdzielone odpowiedniki LibreChat.

ZmiennaCel
STATIC_CACHE_MAX_AGE / ADMIN_PANEL_STATIC_CACHE_MAX_AGEmax-age przeglądarki w sekundach dla haszowanych zasobów w /assets/ (domyślnie 172800 = 2 dni).
STATIC_CACHE_S_MAX_AGE / ADMIN_PANEL_STATIC_CACHE_S_MAX_AGEs-maxage CDN w sekundach (domyślnie 86400 = 1 dzień).
INDEX_CACHE_CONTROL / ADMIN_PANEL_INDEX_CACHE_CONTROLNagłówek Cache-Control dla odpowiedzi HTML indeksu.
INDEX_PRAGMA / ADMIN_PANEL_INDEX_PRAGMANagłówek Pragma dla odpowiedzi HTML indeksu.
INDEX_EXPIRES / ADMIN_PANEL_INDEX_EXPIRESNagłówek Expires dla odpowiedzi HTML indeksu.

Uwierzytelnianie

Panel administratora wykorzystuje ponownie stos uwierzytelniania LibreChat i nie posiada własnej bazy danych użytkowników. Obsługiwane są dwie ścieżki logowania:

  • Konta lokalne: nazwa użytkownika/hasło dla każdego użytkownika LibreChat, którego konto przejdzie weryfikację dostępu administratora.
  • Logowanie jednokrotne (SSO): OpenID Connect, SAML oraz dostawcy społecznościowi OAuth już skonfigurowani w Twojej instancji LibreChat. Ustaw ADMIN_SSO_ONLY=true, aby całkowicie ukryć formularz logowania hasłem.

Dostęp administratora jest weryfikowany po stronie serwera przez LibreChat dla każdego żądania. Konto musi spełniać jeden z poniższych warunków:

  1. Mieć role: 'ADMIN' w MongoDB, lub
  2. Posiadać uprawnienie systemowe access:admin (przypisane innemu podmiotowi za pośrednictwem panelu administratora; zobacz System Grants).

Sesje są oparte na plikach cookie, szyfrowane za pomocą SESSION_SECRET i wygasają po czasie bezczynności określonym w ADMIN_SESSION_IDLE_TIMEOUT_MS.

Zarządzanie konfiguracją

Panel renderuje konfigurację LibreChat jako dynamiczny formularz sterowany schematem konfiguracji. Ma to dwie przydatne właściwości:

  • Zgodność z przyszłymi wersjami: gdy LibreChat wprowadza nowe pole konfiguracyjne, panel automatycznie pobiera je ze schematu. Nie jest wymagana aktualizacja panelu administratora ani ponowne wdrażanie.
  • Warstwowe nadpisania: konfiguracja podstawowa (z librechat.yaml) może być przesłonięta przez nadpisania dla poszczególnych podmiotów, przypisane do roli lub grupy. Gdy użytkownik się loguje, nadpisania są rozstrzygane w kolejności priorytetów i scalane z konfiguracją podstawową, tworząc efektywną konfigurację widoczną dla danego użytkownika.

To jest interfejs stojący za opartym na bazie danych systemem nadpisywania konfiguracji dla poszczególnych podmiotów w LibreChat. Typowe przypadki użycia:

  • Nadaj grupie "Research" wyższy recursionLimit oraz dodatkowe endpointy
  • Pozwól roli "FinanceAdmins" zarządzać serwerami MCP, podczas gdy zwykli użytkownicy mogą ich tylko używać
  • Ogranicz bardziej rygorystyczne uprawnienia interface do grup zewnętrznych wykonawców

Jaka jest ta instrukcja?