Zmienne środowiskowe
Kompleksowy przewodnik konfiguracji środowiska aplikacji za pomocą pliku `.env`. Ten dokument jest Twoim głównym źródłem wiedzy na temat zrozumienia i dostosowywania zmiennych środowiskowych, które kształtują zachowanie aplikacji w różnych kontekstach.
Witamy w kompleksowym przewodniku dotyczącym konfiguracji środowiska aplikacji za pomocą pliku .env. Niniejszy dokument stanowi kompletne źródło wiedzy na temat zrozumienia i dostosowywania zmiennych środowiskowych, które będą kształtować zachowanie Twojej aplikacji w różnych kontekstach.
Podczas gdy ustawienia domyślne stanowią solidną podstawę dla standardowej instalacji docker, zagłębienie się w ten przewodnik pozwoli odkryć pełny potencjał LibreChat. Ten przewodnik umożliwia dostosowanie LibreChat do Twoich precyzyjnych potrzeb. Dowiedz się, jak zarządzać dostępnością modeli językowych, integrować logowanie przez media społecznościowe, zarządzać systemem automatycznej moderacji i wiele więcej. Chodzi o to, aby dać Ci kontrolę nad precyzyjnym dostrojeniem LibreChat w celu zapewnienia optymalnego doświadczenia użytkownika.
Przypomnienie: Proszę zrestartować LibreChat, aby zmiany w konfiguracji weszły w życie
Alternatywnie możesz utworzyć nowy plik o nazwie docker-compose.override.yml w tym samym katalogu, w którym znajduje się główny plik docker-compose.yml dla LibreChat, gdzie możesz ustawić swoje zmienne .env w sekcji environment lub zmodyfikować domyślną konfigurację dostarczoną przez główny plik docker-compose.yml, bez konieczności bezpośredniej edycji lub powielania całego pliku.
Więcej informacji znajdziesz tutaj:
-
Nasz szybki przewodnik:
-
Oficjalna dokumentacja Docker:
-
Możesz również zobaczyć przykład pliku zastępczego (override file) dla LibreChat w swoim folderze LibreChat oraz na GitHubie:
Konfiguracja serwera
Port
- Serwer nasłuchuje na określonym porcie.
- Zmienna środowiskowa
PORTustawia port, na którym nasłuchuje serwer. Domyślnie jest ona ustawiona na3080.
| Key | Type | Description | Example |
|---|---|---|---|
| HOST | string | Określa hosta. | HOST=localhost |
| PORT | number | Określa port. | PORT=3080 |
Trust proxy
Użyj adresu, który znajduje się w odległości co najwyżej n przeskoków od aplikacji Express.
req.socket.remoteAddress to pierwszy przeskok, a pozostałe są wyszukiwane w nagłówku X-Forwarded-For od prawej do lewej.
Wartość 0 oznacza, że pierwszym niezaufanym adresem będzie req.socket.remoteAddress, tzn. brak jest odwrotnego proxy (reverse proxy).
Domyślna wartość zmiennej środowiskowej TRUST_PROXY jest ustawiona na 1.
Więcej informacji na ten temat można znaleźć w Express.js - trust proxy.
| Key | Type | Description | Example |
|---|---|---|---|
| TRUST_PROXY | number | Określa liczbę przeskoków. | TRUST_PROXY=1 |
Konfiguracja poświadczeń
Aby bezpiecznie przechowywać poświadczenia, potrzebujesz stałego klucza i IV. Możesz je ustawić tutaj dla środowisk prod i dev.
| Key | Type | Description | Example |
|---|---|---|---|
| CREDS_KEY | string | 32-bajtowy klucz (64 znaki w formacie szesnastkowym) do bezpiecznego przechowywania danych uwierzytelniających. Wymagany przy uruchomieniu aplikacji. | CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0 |
| CREDS_IV | string | 16-bajtowy IV (32 znaki w formacie szesnastkowym) do bezpiecznego przechowywania danych uwierzytelniających. Wymagany przy uruchamianiu aplikacji. | CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb |
Ostrzeżenie
Ostrzeżenie: Jeśli nie ustawisz CREDS_KEY oraz CREDS_IV, aplikacja ulegnie awarii podczas uruchamiania. - Możesz użyć tego Generatora kluczy, aby wygenerować je szybko.
Obsługa plików statycznych
| Key | Type | Description | Example |
|---|---|---|---|
| STATIC_CACHE_MAX_AGE | string | Cache-Control max-age w sekundach | STATIC_CACHE_MAX_AGE=172800 |
| STATIC_CACHE_S_MAX_AGE | string | Cache-Control s-maxage w sekundach dla współdzielonych pamięci podręcznych (CDN i proxy) | STATIC_CACHE_S_MAX_AGE="86400" |
| DISABLE_COMPRESSION | boolean | Wyłącza kompresję dla plików statycznych. | DISABLE_COMPRESSION=false |
| ENABLE_IMAGE_OUTPUT_GZIP_SCAN | boolean | Umożliwia serwowanie wersji gzipped przesłanych obrazów, jeśli znajdują się one w tym samym folderze. | ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true |
| ENABLE_STATIC_ASSET_BROTLI | boolean | Umożliwia serwowanie wstępnie skompresowanych wersji Brotli statycznych zasobów aplikacji, gdy są dostępne. | ENABLE_STATIC_ASSET_BROTLI=true |
Zachowanie:
Ustawia nagłówki Cache-Control dla plików statycznych. Te konfiguracje są uruchamiane tylko wtedy, gdy NODE_ENV jest ustawione na production.
- Odkomentuj
STATIC_CACHE_MAX_AGE, aby zmienić lokalnymax-agedla plików statycznych. Domyślnie wartość ta jest ustawiona na 2 dni (172800 sekund). - Odkomentuj
STATIC_CACHE_S_MAX_AGE, aby ustawićs-maxagedla współdzielonych pamięci podręcznych (sieci CDN i serwerów proxy). Domyślnie wartość ta jest ustawiona na 1 dzień (86400 sekund). - Odkomentuj
DISABLE_COMPRESSION, aby wyłączyć kompresję dla plików statycznych. Domyślnie kompresja jest włączona. - Odkomentuj
ENABLE_IMAGE_OUTPUT_GZIP_SCAN, aby włączyć skanowanie i serwowanie skompresowanych wersji obrazów (gzip), jeśli zostały one wcześniej skompresowane w tym samym folderze, pod tą samą nazwą i z rozszerzeniem .gz. Domyślnie skanowanie gzip dla przesłanych obrazów jest wyłączone. - Odkomentuj
ENABLE_STATIC_ASSET_BROTLI, aby serwować wstępnie skompresowane wersje.brstatycznych zasobów aplikacji, jeśli istnieją. Po włączeniu, Brotli jest preferowane przed gzip dla statycznych plików serwowanych przez API.
Ostrzeżenie
- Dotyczy to tylko plików statycznych serwowanych przez serwer API i nie ma zastosowania do Firebase, NGINX ani żadnych innych konfiguracji.
Kontrola pamięci podręcznej pliku Index HTML
| Key | Type | Description | Example |
|---|---|---|---|
| INDEX_CACHE_CONTROL | string | Nagłówek Cache-Control dla index.html | INDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate |
| INDEX_PRAGMA | string | Nagłówek Pragma dla index.html | INDEX_PRAGMA=no-cache |
| INDEX_EXPIRES | string | Nagłówek Expires dla index.html | INDEX_EXPIRES=0 |
Zachowanie:
Steruje nagłówkami buforowania specjalnie dla odpowiedzi index.html. Domyślnie ustawienia te zapobiegają buforowaniu, aby zapewnić użytkownikom zawsze najnowszą wersję aplikacji.
Uwaga
W przeciwieństwie do zasobów statycznych, które są buforowane w celu poprawy wydajności, nagłówki pamięci podręcznej pliku index.html są konfigurowane oddzielnie, aby zapewnić użytkownikom zawsze najnowszą powłokę aplikacji.
Baza danych MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_URI | string | Określa URI MongoDB. | MONGO_URI=mongodb://127.0.0.1:27017/LibreChat |
Zmień to na swój URI MongoDB, jeśli jest inny. Powinieneś dodać LibreChat lub własny APP_TITLE jako nazwę bazy danych w URI.
Jeśli korzystasz z bazy danych online, format URI to mongodb+srv://<username>:<password>@<host>/<database>?<options>. Twój MONGO_URI powinien wyglądać następująco:
mongodb+srv://username:[email protected]/LibreChat?retryWrites=true(retryWritesto jedyna opcja, której potrzebujesz podczas korzystania z bazy danych online.)
Konfiguracja puli połączeń MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_MAX_POOL_SIZE | number | Maksymalna liczba połączeń w puli połączeń. | # MONGO_MAX_POOL_SIZE= |
| MONGO_MIN_POOL_SIZE | number | Minimalna liczba połączeń w puli połączeń. | # MONGO_MIN_POOL_SIZE= |
| MONGO_MAX_CONNECTING | number | Maksymalna liczba połączeń, które mogą być jednocześnie w trakcie nawiązywania przez pulę połączeń. | # MONGO_MAX_CONNECTING= |
| MONGO_MAX_IDLE_TIME_MS | number | Maksymalna liczba milisekund, przez jaką połączenie może pozostawać bezczynne w puli, zanim zostanie usunięte i zamknięte. | # MONGO_MAX_IDLE_TIME_MS= |
| MONGO_WAIT_QUEUE_TIMEOUT_MS | number | Maksymalny czas w milisekundach, przez jaki wątek może oczekiwać na udostępnienie połączenia. | # MONGO_WAIT_QUEUE_TIMEOUT_MS= |
Konfiguracja schematu MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_AUTO_INDEX | boolean | Ustaw na false, aby wyłączyć automatyczne tworzenie indeksów dla wszystkich modeli powiązanych z tym połączeniem. W przypadku pominięcia, używane jest domyślne zachowanie Mongoose. | # MONGO_AUTO_INDEX= |
| MONGO_AUTO_CREATE | boolean | Ustaw na false, aby wyłączyć automatyczne wywoływanie przez Mongoose metody createCollection() dla każdego modelu utworzonego w tym połączeniu. W przypadku pominięcia, używane jest domyślne zachowanie Mongoose. | # MONGO_AUTO_CREATE= |
Alternatywnie możesz użyć documentDb, który emuluje mongoDb, ale:
- nie obsługuje
retryWrites- użyjretryWrites=false - wymaga połączenia TLS, dlatego należy użyć parametrów
tls=true, aby włączyć TLS, oraztlsCAFile=/path-to-ca/bundle.pem, aby wskazać plik pakietu CA dostarczony przez AWS
URI dla documentDb będzie wyglądać następująco:
mongodb+srv://username:password@domain/dbname?retryWrites=false&tls=true&tlsCAFile=/path-to-ca/bundle.pem
Zobacz także:
- MongoDB Atlas zawiera instrukcje dotyczące tworzenia bazy danych online MongoDB Atlas (przydatne w przypadku korzystania bez Docker)
- MongoDB Community Server z instrukcjami, jak utworzyć lokalną bazę danych MongoDB (bez użycia Docker)
- Uwierzytelnianie MongoDB Aby włączyć jawne uwierzytelnianie dla MongoDB w Docker.
- Zarządzaj swoją bazą danych za pomocą Mongo Express, aby bezpiecznie uzyskiwać dostęp do swojej bazy danych MongoDB w Docker
Domeny aplikacji
Aby skonfigurować LibreChat do użytku lokalnego lub wdrożenia w domenie niestandardowej, ustaw następujące zmienne środowiskowe:
| Key | Type | Description | Example |
|---|---|---|---|
| DOMAIN_CLIENT | string | Określa domenę po stronie klienta. | DOMAIN_CLIENT=http://localhost:3080 |
| DOMAIN_SERVER | string | Określa domenę po stronie serwera. | DOMAIN_SERVER=http://localhost:3080 |
| ADMIN_PANEL_URL | string | Bazowy adres URL zewnętrznego panelu administratora używany do przekierowań OAuth/SSO administratora, gdy panel administratora jest hostowany oddzielnie. Nie dodawaj ukośnika na końcu. | ADMIN_PANEL_URL=https://admin.example.com/admin |
| ADMIN_PANEL_SESSION_SECRET | string | Wymagany klucz szyfrowania sesji dla dołączonego panelu administratora (min. 32 znaki). Usługi admin-panel w docker-compose oraz deploy-compose odczytują go jako SESSION_SECRET. Wygeneruj go za pomocą `openssl rand -hex 32` przed uruchomieniem stosu. | ADMIN_PANEL_SESSION_SECRET=<your-32-char-random-string> |
| ADMIN_PANEL_PORT | number | Port hosta dla dołączonego panelu administracyjnego w domyślnym docker-compose. W deploy-compose panel jest udostępniany pod adresem http://admin.localhost za pośrednictwem nginx. | ADMIN_PANEL_PORT=3000 |
Podczas wdrażania LibreChat w domenie niestandardowej, zastąp http://localhost:3080 swoim wdrożonym adresem URL.
- np.
https://librechat.example.com.
Zapobieganie indeksowaniu przez publiczne wyszukiwarki
Domyślnie Twoja witryna nie będzie indeksowana przez publiczne wyszukiwarki (np. Google, Bing, …). Oznacza to, że ludzie nie będą mogli znaleźć Twojej witryny za pośrednictwem tych wyszukiwarek. Jeśli chcesz, aby Twoja witryna była bardziej widoczna i łatwiejsza do znalezienia, możesz zmienić poniższe ustawienie na false
| Key | Type | Description | Example |
|---|---|---|---|
| NO_INDEX | boolean | Zapobiega indeksowaniu Twojej witryny przez publiczne wyszukiwarki. | NO_INDEX=true |
❗Uwaga: Nie ma gwarancji, że ta metoda zadziała w przypadku wszystkich wyszukiwarek, a niektóre z nich mogą nadal indeksować Twoją witrynę lub stronę internetową w innych celach, takich jak buforowanie lub archiwizacja. W związku z tym nie należy polegać wyłącznie na tej metodzie w celu ochrony poufnych lub wrażliwych informacji w swojej witrynie lub na stronie internetowej.
Logowanie
LibreChat posiada wbudowany centralny system logowania, zobacz Logging System, aby uzyskać więcej informacji.
Pliki dziennika
- Rejestrowanie debugowania jest domyślnie włączone i ma kluczowe znaczenie dla programowania.
- Aby zgłosić problemy, odtwórz błąd i prześlij logi z
./api/logs/debug-%DATE%.logpod adresem: LibreChat GitHub Issues - Dzienniki błędów są przechowywane w tej samej lokalizacji.
Zmienne środowiskowe
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | Utrzymuj aktywne logi debugowania. | DEBUG_LOGGING=true |
| DEBUG_CONSOLE | boolean | Włącz szczegółowe logi konsoli/stdout w tym samym formacie, co logi debugowania w pliku. | DEBUG_CONSOLE=false |
| LOG_TO_FILE | boolean | Ustaw na false, aby wyłączyć transporty Winston oparte na plikach, zachowując jednocześnie dostępność logowania w konsoli. | LOG_TO_FILE=true |
| CONSOLE_JSON | boolean | Włącz szczegółowe logi JSON w konsoli/stdout, odpowiednie dla wdrożeń w chmurze, takich jak GCP/AWS. | CONSOLE_JSON=false |
| CONSOLE_JSON_STRING_LENGTH | number | Skonfiguruj rozmiar ucięcia dla wartości ciągów znaków w logach konsoli/stdout w formacie JSON. Domyślnie: 255. | # CONSOLE_JSON_STRING_LENGTH=255 |
| LIBRECHAT_LOG_DIR | string | Niestandardowy katalog dla plików dziennika. Domyślnie /app/logs (Docker) lub api/logs (lokalny programista). | # LIBRECHAT_LOG_DIR=/custom/log/path |
| MEM_DIAG | boolean | Włącz diagnostykę pamięci — rejestruje migawki sterty/RSS co 60 sekund. Automatycznie włączana podczas uruchamiania z flagą --inspect. | # MEM_DIAG=true |
| AGENT_DEBUG_LOGGING | boolean | Włącza szczegółowe logowanie debugowania w kontrolerze agenta (liczba tokenów, diagnostyka przycinania kontekstu). | # AGENT_DEBUG_LOGGING=true |
Uwaga:
DEBUG_LOGGINGmoże być używane zDEBUG_CONSOLElubCONSOLE_JSON, ale nie z oboma jednocześnie.DEBUG_CONSOLEorazCONSOLE_JSONwzajemnie się wykluczają.CONSOLE_JSON: W przypadku obsługi logów konsoli we wdrożeniach chmurowych (takich jak GCP lub AWS), włączenie tej opcji spowoduje zrzucanie logów ze znacznikiem czasu UTC i formatowanie ich jako JSON.- Zobacz: feat: Add CONSOLE_JSON
Uwaga: DEBUG_CONSOLE nie jest zalecane, ponieważ dane wyjściowe mogą być dość szczegółowe, dlatego jest domyślnie wyłączone.
Uprawnienia
UID i GID to numery przypisane przez system Linux każdemu użytkownikowi i grupie w systemie. Jeśli występują problemy z uprawnieniami, ustaw tutaj UID i GID użytkownika uruchamiającego polecenie Docker Compose. Aplikacje w kontenerze będą działać z tymi UID/GID.
| Key | Type | Description | Example |
|---|---|---|---|
| UID | number | Identyfikator użytkownika. | # UID=1000 |
| GID | number | Identyfikator grupy. | # GID=1000 |
Śledzenie OpenTelemetry
LibreChat może emitować ślady OpenTelemetry backendu w celu zapewnienia widoczności ogólnego API, HTTP, MongoDB, Mongoose, Redis oraz żądań wychodzących. Spany na poziomie poleceń Redis są opcjonalne, dzięki czemu domyślne ślady pozostają na wysokim poziomie. Użyj Langfuse do obserwowalności promptów/modeli specyficznych dla GenAI.
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | Włącz śledzenie OpenTelemetry dla backendu. Śledzenie pozostaje wyłączone, gdy OTEL_SDK_DISABLED=true. | # OTEL_TRACING_ENABLED=false |
| OTEL_SERVICE_NAME | string | Nazwa usługi raportowana do OpenTelemetry. Domyślnie: librechat. | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | Wersja usługi raportowana do OpenTelemetry. Domyślnie przyjmuje wersję pakietu, jeśli nie ustawiono inaczej. | # OTEL_SERVICE_VERSION= |
| OTEL_EXPORTER_OTLP_ENDPOINT | string | Podstawowy endpoint eksportera OTLP. | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | Specyficzny dla śledzenia endpoint OTLP. Nadpisuje bazowy endpoint dla śladów, gdy jest ustawiony. | # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT= |
| OTEL_EXPORTER_OTLP_HEADERS | string | Nagłówki eksportera OTLP oddzielone przecinkami, takie jak metadane autoryzacji. | # OTEL_EXPORTER_OTLP_HEADERS= |
| OTEL_TRACES_EXPORTER | string | Wybór eksportera śledzenia. | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | Próbnik śledzenia OpenTelemetry. Domyślny przykład: parentbased_always_on. | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | Poziom logowania OpenTelemetry SDK. | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | Wyłącz SDK OpenTelemetry, nawet jeśli śledzenie jest włączone. | # OTEL_SDK_DISABLED=false |
| OTEL_IOREDIS_TRACING_ENABLED | boolean | Włącz zakresy na poziomie poleceń Redis. Domyślnie wyłączone, aby zachować wysoki poziom śledzenia backendu. | # OTEL_IOREDIS_TRACING_ENABLED=false |
Real User Monitoring (Przeglądarka)
LibreChat może publikować telemetrię Real User Monitoring (RUM) przeglądarki do kolektorów OTLP kompatybilnych z HyperDX. RUM jest domyślnie wyłączony.
| Key | Type | Description | Example |
|---|---|---|---|
| RUM_ENABLED | boolean | Włącz monitorowanie rzeczywistych użytkowników (RUM) w przeglądarce. Domyślnie: false. | # RUM_ENABLED=false |
| RUM_PROVIDER | string | Dostawca Browser RUM. Obecnie obsługuje `hyperdx`. | # RUM_PROVIDER=hyperdx |
| RUM_URL | string | Publiczny adres URL kolektora używany przez tryb public-token. | # RUM_URL=http://localhost:4318 |
| RUM_SERVICE_NAME | string | Nazwa usługi zgłaszana przez SDK przeglądarki. Domyślnie: librechat-web. | # RUM_SERVICE_NAME=librechat-web |
| RUM_ENVIRONMENT | string | Etykieta środowiska zgłaszana za pomocą telemetrii przeglądarki. | # RUM_ENVIRONMENT=development |
| RUM_AUTH_MODE | string | Tryb uwierzytelniania dla telemetrii przeglądarki. Użyj `publicToken` lub `proxy`. | # RUM_AUTH_MODE=publicToken |
| RUM_PUBLIC_TOKEN | string | Publiczny token przeglądarki dla trybu public-token. Traktuj go jako publiczny i ogranicz pobieranie danych w kolektorze. | # RUM_PUBLIC_TOKEN= |
| RUM_PROXY_TARGET_URL | string | Podstawowy adres URL kolektora używany w trybie uwierzytelnionego proxy. Wymagany, gdy `RUM_AUTH_MODE=proxy`. | # RUM_PROXY_TARGET_URL=http://otel-collector:4318 |
| RUM_PROXY_TIMEOUT_MS | number | Limit czasu żądania proxy w milisekundach. Domyślnie: 10000. | # RUM_PROXY_TIMEOUT_MS=10000 |
| RUM_TRACE_PROPAGATION_TARGETS | string | Rozdzielona przecinkami lista własnych źródeł HTTPS lub adresów URL, które powinny otrzymywać nagłówki traceparent. | # RUM_TRACE_PROPAGATION_TARGETS=https://api.example.com |
| RUM_DISABLE_REPLAY | boolean | Wyłącz odtwarzanie sesji przeglądarki. Domyślnie: true. | # RUM_DISABLE_REPLAY=true |
| RUM_CONSOLE_CAPTURE | boolean | Przechwytuj logi konsoli przeglądarki. Może gromadzić wrażliwe prompty, odpowiedzi lub ładunki (payloads). | # RUM_CONSOLE_CAPTURE=false |
| RUM_ADVANCED_NETWORK_CAPTURE | boolean | Przechwytuj szczegółowe ładunki sieciowe. Może gromadzić wrażliwe prompty, odpowiedzi lub ładunki. | # RUM_ADVANCED_NETWORK_CAPTURE=false |
| RUM_SAMPLE_RATE | number | Współczynnik próbkowania telemetrii przeglądarki od 0 do 1. Domyślnie: 1. | # RUM_SAMPLE_RATE=1 |
W trybie publicToken przeglądarka wysyła telemetrię bezpośrednio do RUM_URL za pomocą RUM_PUBLIC_TOKEN. W trybie proxy przeglądarka wysyła telemetrię przez LibreChat; backend weryfikuje sesję użytkownika, usuwa nagłówki uwierzytelniające aplikacji i przekazuje telemetrię do RUM_PROXY_TARGET_URL. Nieprawidłowe lub wygasłe sesje są odrzucane z odpowiedzią 204, dzięki czemu błędy telemetrii przeglądarki nie powodują wyświetlania standardowych błędów uwierzytelniania API. Wyniki proxy są zliczane w rum_proxy_requests_total z etykietami endpoint oraz result w punkcie końcowym /metrics API LibreChat.
Ścieżka konfiguracji - librechat.yaml
Określ alternatywną lokalizację pliku konfiguracyjnego LibreChat.
Możesz podać ścieżkę bezwzględną, ścieżkę względną lub URL. Nazwa pliku w ścieżce jest dowolna i nie musi brzmieć librechat.yaml; każdy poprawny plik konfiguracyjny będzie działał.
Uwaga: Jeśli wolisz, aby LibreChat szukał pliku konfiguracyjnego w katalogu głównym (co jest zachowaniem domyślnym), po prostu pozostaw tę opcję zakomentowaną.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_PATH | string | Alternatywna lokalizacja pliku konfiguracyjnego LibreChat. | # CONFIG_PATH=https://raw.githubusercontent.com/danny-avila/LibreChat/main/librechat.example.yaml |
Umiejętności wdrażania
Deployment Skills są wczytywane w trybie tylko do odczytu podczas uruchamiania z systemu plików i udostępniane użytkownikom, którzy mają włączoną funkcję Skills.
| Key | Type | Description | Example |
|---|---|---|---|
| DEPLOYMENT_SKILLS_DIR | string | Katalog zawierający umiejętności (Skills) dostarczone przez wdrożenie. Domyślnie `./skill` w katalogu głównym projektu. | # DEPLOYMENT_SKILLS_DIR=./skill |
Zrestartuj LibreChat po zmianie tego katalogu lub jakichkolwiek plików wewnątrz niego. Umiejętności (Skills) dostarczone przez wdrożenie mają pierwszeństwo przed utrwalonymi Umiejętnościami o tej samej nazwie.
Walidacja konfiguracji
Domyślnie LibreChat zakończy działanie z błędem (kod wyjścia 1), jeśli plik konfiguracyjny librechat.yaml zawiera błędy walidacji. To zachowanie typu „fail-fast” pomaga wczesne wykrywanie problemów z konfiguracją w potokach wdrażania i zapobiega uruchomieniu z niezamierzonymi ustawieniami domyślnymi.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_BYPASS_VALIDATION | boolean | Gdy ustawiono na `true`, serwer zarejestruje ostrzeżenie i będzie kontynuował uruchamianie z domyślną konfiguracją, nawet jeśli `librechat.yaml` zawiera błędy walidacji. Zachowuje to starsze zachowanie. | # CONFIG_BYPASS_VALIDATION=true |
Ostrzeżenie
Używanie CONFIG_BYPASS_VALIDATION=true nie jest zalecane w środowiskach produkcyjnych. Jest to rozwiązanie przeznaczone jako tymczasowe obejście podczas debugowania problemów z konfiguracją. Zawsze naprawiaj błędy walidacji w swoim pliku konfiguracyjnym.
Obsługa nieprzechwyconych wyjątków
Domyślnie LibreChat zakończy proces w przypadku wystąpienia nieprzechwyconego wyjątku, co jest standardowym zachowaniem Node.js. Możesz to zmienić, aby aplikacja działała dalej po wystąpieniu nieprzechwyconych wyjątków.
| Key | Type | Description | Example |
|---|---|---|---|
| CONTINUE_ON_UNCAUGHT_EXCEPTION | boolean | Gdy ustawiono na `true`, aplikacja będzie kontynuować działanie po napotkaniu nieobsłużonych wyjątków, zamiast kończyć proces. | # CONTINUE_ON_UNCAUGHT_EXCEPTION=false |
Ostrzeżenie
Niezalecane w środowisku produkcyjnym, chyba że jest to konieczne. Nieprzechwycone wyjątki mogą doprowadzić aplikację do nieprzewidywalnego stanu.
Endpoints
W tej sekcji możesz skonfigurować punkty końcowe (endpoints) i wybór modeli, ich klucze API, a także ustawienia proxy i reverse proxy dla punktów końcowych, które to obsługują.
Konfiguracja ogólna
Odkomentuj ENDPOINTS, aby dostosować dostępne endpointy w LibreChat.
| Key | Type | Description | Example |
|---|---|---|---|
| ENDPOINTS | string | Rozdzielona przecinkami lista dostępnych endpoint. | # ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom |
| PROXY | string | Wychodzący serwer proxy dla obsługiwanych klientów po stronie serwera. Dotyczy zarówno celów HTTP, jak i HTTPS. | PROXY= |
| HTTP_PROXY | string | Rezerwowy serwer proxy HTTP używany przez wspieranych klientów po stronie serwera, gdy zmienna PROXY nie jest ustawiona. | # HTTP_PROXY= |
| HTTPS_PROXY | string | Rezerwowy serwer proxy HTTPS używany przez wspierane klienty po stronie serwera, gdy zmienna PROXY nie jest ustawiona. | # HTTPS_PROXY= |
| NO_PROXY | string | Rozdzielona przecinkami lista hostów, domen lub zakresów IP, które obsługiwane klienty po stronie serwera powinny pomijać. Obsługiwany jest również wariant pisany małymi literami no_proxy. | # NO_PROXY= |
| TITLE_CONVO | boolean | Włącz tytułowanie dla wszystkich endpoint. | TITLE_CONVO=true |
Znane endpointy - librechat.yaml
- zobacz także: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| ANYSCALE_API_KEY | string | Klucz API dla Anyscale. | # ANYSCALE_API_KEY= |
| APIPIE_API_KEY | string | Klucz API dla Apipie. | # APIPIE_API_KEY= |
| COHERE_API_KEY | string | Klucz API dla Cohere. | # COHERE_API_KEY= |
| FIREWORKS_API_KEY | string | Klucz API dla Fireworks. | # FIREWORKS_API_KEY= |
| GROQ_API_KEY | string | Klucz API dla Groq. | # GROQ_API_KEY= |
| MISTRAL_API_KEY | string | Klucz API dla Mistral. | # MISTRAL_API_KEY= |
| OPENROUTER_KEY | string | Klucz API dla OpenRouter. | # OPENROUTER_KEY= |
| PERPLEXITY_API_KEY | string | Klucz API dla Perplexity. | # PERPLEXITY_API_KEY= |
| SHUTTLEAI_API_KEY | string | Klucz API dla ShuttleAI. | # SHUTTLEAI_API_KEY= |
| TOGETHERAI_API_KEY | string | Klucz API dla TogetherAI. | # TOGETHERAI_API_KEY= |
| DEEPSEEK_API_KEY | string | Klucz API dla Deepseek API | # DEEPSEEK_API_KEY= |
Wyszukiwanie w sieci
Funkcja wyszukiwania w sieci umożliwia korzystanie z możliwości przeszukiwania internetu w ramach LibreChat.
Ważne: Dokładne nazwy zmiennych środowiskowych przedstawione poniżej są domyślnymi odniesieniami i można je dostosować za pomocą pliku konfiguracyjnego librechat.yaml, aby używać dowolnych preferowanych nazw zmiennych.
Aby uzyskać szczegółowe opcje konfiguracji i dostosowywania, zobacz: Web Search Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| SERPER_API_KEY | string | Klucz API dla dostawcy wyszukiwania Serper. Pobierz swój klucz z https://serper.dev/api-keys | # SERPER_API_KEY= |
| TAVILY_API_KEY | string | Klucz API dla dostawcy wyszukiwania i scrapingu Tavily. Uzyskaj swój klucz na stronie https://app.tavily.com/home | # TAVILY_API_KEY= |
| TAVILY_SEARCH_URL | string | Niestandardowy adres URL API wyszukiwania Tavily (opcjonalnie). Wymagany tylko w przypadku niestandardowych lub pośredniczących punktów końcowych wyszukiwania zgodnych z Tavily. | # TAVILY_SEARCH_URL= |
| TAVILY_EXTRACT_URL | string | Niestandardowy adres URL API Tavily Extract (opcjonalnie). Wymagany tylko w przypadku niestandardowych lub pośredniczących punktów końcowych (endpoint) zgodnych z Tavily. | # TAVILY_EXTRACT_URL= |
| FIRECRAWL_API_KEY | string | Klucz API dla usługi scrapingu Firecrawl. Pobierz swój klucz ze strony https://docs.firecrawl.dev/introduction#api-key | # FIRECRAWL_API_KEY= |
| FIRECRAWL_API_URL | string | Niestandardowy adres URL API Firecrawl (opcjonalnie). Wymagany tylko w przypadku niestandardowych instancji Firecrawl. | # FIRECRAWL_API_URL= |
| FIRECRAWL_VERSION | string | Wersja Firecrawl API (v0 lub v1). | # FIRECRAWL_VERSION=v1 |
| JINA_API_KEY | string | Klucz API dla usługi Jina reranker. Pobierz swój klucz z https://jina.ai/api-dashboard/ | # JINA_API_KEY= |
| JINA_API_URL | string | Niestandardowy adres URL API Jina (opcjonalnie). Wymagany tylko w przypadku niestandardowych instancji Jina. | # JINA_API_URL= |
| COHERE_API_KEY | string | Klucz API dla usługi reranker Cohere. Uzyskaj swój klucz na stronie https://dashboard.cohere.com/welcome/login | # COHERE_API_KEY= |
Uwaga: Te nazwy zmiennych można dostosować w pliku konfiguracyjnym librechat.yaml. Na przykład, możesz użyć CUSTOM_SERPER_KEY zamiast SERPER_API_KEY, konfigurując to w ustawieniach wyszukiwania internetowego. Szczegółowe informacje na temat dostosowywania nazw zmiennych znajdują się w dokumentacji Web Search Configuration.
Anthropic
zobacz: Anthropic Endpoint
- Możesz poprosić o klucz dostępu pod adresem https://platform.claude.com/
- Pozostaw
ANTHROPIC_API_KEY=puste, aby wyłączyć ten endpoint - Ustaw
ANTHROPIC_API_KEY=na "user_provided", aby umożliwić użytkownikom podanie własnego klucza API z poziomu WebUI - Jeśli masz dostęp do reverse proxy dla
Anthropic, możesz je ustawić za pomocąANTHROPIC_REVERSE_PROXY=.- pozostaw puste lub zakomentuj, aby użyć domyślnego adresu bazowego (base url)
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_API_KEY | string | Klucz API Anthropic lub "user_provided", aby umożliwić użytkownikom podanie własnego klucza API. | Defaults to an empty string. |
| ANTHROPIC_MODELS | string | Rozdzielona przecinkami lista modeli Anthropic do użycia. | # ANTHROPIC_MODELS=claude-fable-5,claude-opus-4-8,claude-opus-4-7,claude-sonnet-4-6,claude-opus-4-6,claude-opus-4-20250514,claude-3-7-sonnet-20250219,claude-3-5-sonnet-20241022,claude-3-5-haiku-20241022 |
| ANTHROPIC_REVERSE_PROXY | string | Odwrotne proxy dla Anthropic. | # ANTHROPIC_REVERSE_PROXY= |
| ANTHROPIC_TITLE_MODEL | string | PRZESTARZAŁE: Model używany do nadawania tytułów w Anthropic. | # ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307 |
ANTHROPIC_TITLE_MODELjest teraz przestarzały i zostanie usunięty w przyszłych wersjach. Zamiast tego użyj ustawienia punktu końcowegotitleModelw konfiguracjilibrechat.yaml.
Uwaga: Musi być kompatybilne z Anthropic endpoint. Ponadto modele Claude 2 i Claude 3 najlepiej sprawdzają się w tym zadaniu, przy czym modele
claude-3-haikusą najtańsze.
Claude Fable 5 znajduje się na domyślnej liście modeli Anthropic. Modele klasy Fable/Mythos wykorzystują nowoczesne zachowanie Anthropic w LibreChat: 1 mln tokenów kontekstu, obsługę adaptacyjnego myślenia (adaptive thinking), obsługę buforowania promptów (prompt caching) oraz obsługę thinkingDisplay dla podsumowanych lub pominiętych wyników rozumowania.
Anthropic przez Vertex AI
Możesz również korzystać z modeli Anthropic Claude za pośrednictwem Google Cloud Vertex AI. Szczegółowe opcje konfiguracji YAML znajdziesz tutaj: Konfiguracja Anthropic Vertex AI
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_USE_VERTEX | boolean | Ustaw na true, aby używać modeli Anthropic przez Google Vertex AI zamiast bezpośredniego API. | ANTHROPIC_USE_VERTEX=true |
| ANTHROPIC_VERTEX_REGION | string | Region Google Cloud dla Vertex AI. Domyślnie: us-east5. | ANTHROPIC_VERTEX_REGION=us-east5 |
Uwaga: Podczas korzystania z Vertex AI należy również skonfigurować
GOOGLE_SERVICE_KEY_FILE(zobacz Konfiguracja Google) przy użyciu konta serwisowego, które posiada rolęVertex AI User.
AWS Bedrock
Zobacz: Konfiguracja AWS Bedrock
| Key | Type | Description | Example |
|---|---|---|---|
| BEDROCK_AWS_DEFAULT_REGION | string | Dla Bedrock należy podać domyślny region AWS. | BEDROCK_AWS_DEFAULT_REGION=us-east-1 |
| BEDROCK_AWS_ACCESS_KEY_ID | string | Identyfikator klucza dostępu AWS dla Bedrock. Opcjonalny w przypadku korzystania z domyślnego łańcucha poświadczeń AWS. | # BEDROCK_AWS_ACCESS_KEY_ID=your_access_key_id |
| BEDROCK_AWS_SECRET_ACCESS_KEY | string | AWS secret access key dla Bedrock. Opcjonalne w przypadku korzystania z domyślnego łańcucha poświadczeń AWS. | # BEDROCK_AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| BEDROCK_AWS_SESSION_TOKEN | string | Token sesji AWS dla tymczasowych poświadczeń. Opcjonalny. | # BEDROCK_AWS_SESSION_TOKEN=your_session_token |
| BEDROCK_AWS_PROFILE | string | Nazwa profilu w udostępnionej konfiguracji AWS dla Bedrock. Opcjonalna, jeśli używany jest domyślny łańcuch poświadczeń AWS. | # BEDROCK_AWS_PROFILE=your-profile-name |
| BEDROCK_AWS_BEARER_TOKEN | string | Klucz API Amazon Bedrock dla autoryzacji bearer lub user_provided, aby umożliwić użytkownikom wprowadzanie własnego klucza API Bedrock w interfejsie użytkownika. | # BEDROCK_AWS_BEARER_TOKEN=your_bedrock_api_key |
| BEDROCK_AWS_MODELS | string | Rozdzielona przecinkami lista identyfikatorów modeli Bedrock. Jeśli zostanie pominięta, uwzględnione zostaną wszystkie znane obsługiwane modele. | # BEDROCK_AWS_MODELS=anthropic.claude-fable-5,anthropic.claude-opus-4-8,anthropic.claude-opus-4-7,anthropic.claude-sonnet-4-6,meta.llama3-1-8b-instruct-v1:0 |
Uwaga: Możesz pominąć klucze dostępu, aby użyć domyślnego łańcucha poświadczeń AWS (zmienne środowiskowe, poświadczenia SSO, współdzielone pliki poświadczeń lub usługa metadanych instancji EC2/ECS). Zobacz AWS Bedrock Setup, aby uzyskać więcej szczegółów.
Modele klasy Claude Fable/Mythos w Bedrock są dostępne wyłącznie poprzez profile wnioskowania (inference-profile). Użyj identyfikatora profilu, takiego jak us.anthropic.claude-fable-5, i włącz wymagane ustawienie udostępniania danych Anthropic w konsoli Bedrock lub poprzez Data Retention API przed ich wywołaniem.
BingAI
Bing, używany również dla Sydney, jailbreak oraz Bing Image Creator
| Key | Type | Description | Example |
|---|---|---|---|
| BINGAI_TOKEN | string | Token dostępu Bing. Pozostaw puste, aby wyłączyć. Można ustawić na "user_provided", aby umożliwić użytkownikom podanie własnego tokena z poziomu WebUI. | BINGAI_TOKEN=user_provided |
| BINGAI_HOST | string | URL hosta Bing. Pozostaw zakomentowane, aby użyć domyślnego serwera. | # BINGAI_HOST=https://cn.bing.com |
Uwaga: Zaleca się pozostawienie wartości "user_provided" i podanie tokena z poziomu WebUI.
Postępuj zgodnie z tymi instrukcjami, aby skonfigurować Google Endpoint
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_KEY | string | Klucz API Google. Ustaw na "user_provided", aby umożliwić użytkownikom podawanie własnego klucza API z poziomu WebUI. | GOOGLE_KEY=user_provided |
| GOOGLE_SERVICE_KEY_FILE | string | Ścieżka do pliku klucza JSON konta serwisowego Google, adres URL, z którego można go pobrać, lub ciąg znaków JSON. Używane do uwierzytelniania Vertex AI (np. funkcje OCR). | GOOGLE_SERVICE_KEY_FILE=/path/to/auth.json |
| GOOGLE_REVERSE_PROXY | string | URL odwrotnego proxy Google. | GOOGLE_REVERSE_PROXY= |
| GOOGLE_AUTH_HEADER | boolean | Użyj nagłówka Authorization zamiast X-goog-api-key. Niektóre reverse proxy tego wymagają. | # GOOGLE_AUTH_HEADER=true |
| GOOGLE_MODELS | string | Dostępne modele Gemini API Google, oddzielone przecinkami. | GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash,gemini-2.0-flash-lite |
| GOOGLE_MODELS | string | Dostępne modele Vertex AI Google, oddzielone przecinkami. | GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash-001,gemini-2.0-flash-lite-001 |
| GOOGLE_TITLE_MODEL | string | PRZESTARZAŁE: Model używany do nadawania tytułów w Google. | GOOGLE_TITLE_MODEL=gemini-pro |
| GOOGLE_LOC | string | Określa lokalizację Google Cloud do przetwarzania żądań API | GOOGLE_LOC=us-central1 |
| GOOGLE_CLOUD_LOCATION | string | Alternatywny region dla generowania obrazów przez Gemini (np. global). | # GOOGLE_CLOUD_LOCATION=global |
| GOOGLE_EXCLUDE_SAFETY_SETTINGS | string | Całkowicie pomiń ustawienia bezpieczeństwa zawarte domyślnie, co spowoduje użycie ustawień domyślnych dostawcy | GOOGLE_EXCLUDE_SAFETY_SETTINGS=true |
| GOOGLE_SAFETY_SEXUALLY_EXPLICIT | string | Ustawienie bezpieczeństwa dla treści o charakterze seksualnym. Dostępne opcje to BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY oraz OFF. | GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_HATE_SPEECH | string | Ustawienie bezpieczeństwa dla treści zawierających mowę nienawiści. Dostępne opcje to BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY oraz OFF. | GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_HARASSMENT | string | Ustawienie bezpieczeństwa dla treści związanych z nękaniem. Dostępne opcje to BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY oraz OFF. | GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_DANGEROUS_CONTENT | string | Ustawienie bezpieczeństwa dla niebezpiecznych treści. Dostępne opcje to BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY oraz OFF. | GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_CIVIC_INTEGRITY | string | Ustawienie bezpieczeństwa dla treści dotyczących integralności obywatelskiej. Dostępne opcje to BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY oraz OFF. | # GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH |
Dostosuj dostępne modele, oddzielając je przecinkami, bez spacji. Pierwszy z nich będzie domyślny. Pozostaw puste lub zakomentuj, aby użyć ustawień wewnętrznych.
GOOGLE_TITLE_MODELjest teraz przestarzałe i zostanie usunięte w przyszłych wersjach. Zamiast tego użyj ustawienia punktu końcowegotitleModelEndpoint Setting w konfiguracjilibrechat.yaml.
Uwaga: W przypadku zmiennych GOOGLE_SAFETY dla Vertex AI, domyślnie nie masz dostępu do ustawienia BLOCK_NONE. Aby użyć tego ograniczonego ustawienia HarmBlockThreshold, musisz wykonać jedną z poniższych czynności:
- (a) Uzyskaj dostęp poprzez listę dozwolonych (allowlist) za pośrednictwem swojego zespołu konta Google
- (b) Zmień typ swojego konta na rozliczenie fakturowane miesięcznie, postępując zgodnie z tą instrukcją: https://cloud.google.com/billing/docs/how-to/invoiced-billing
Generowanie obrazów przez Gemini
Generowanie obrazów Gemini to narzędzie dla Agentów, które obsługuje zarówno Gemini API, jak i Vertex AI. Zobacz: Gemini Image Generation
| Key | Type | Description | Example |
|---|---|---|---|
| GEMINI_API_KEY | string | Dedykowany klucz API Gemini do generowania obrazów. Jeśli nie zostanie ustawiony, użyty zostanie GOOGLE_KEY. | # GEMINI_API_KEY=your_gemini_api_key |
| GEMINI_IMAGE_MODEL | string | Model Gemini do generowania obrazów. Domyślnie: gemini-2.5-flash-image. | # GEMINI_IMAGE_MODEL=gemini-2.5-flash-image |
Uwaga: Gdy nie skonfigurowano klucza API, narzędzie automatycznie przełącza się na Vertex AI, korzystając z konta serwisowego z
GOOGLE_SERVICE_KEY_FILE. Konto serwisowe musi posiadać rolęVertex AI User.
OpenAI
Zobacz: Konfiguracja OpenAI
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_API_KEY | string | Twój klucz API OpenAI. Pozostaw puste, aby wyłączyć ten endpoint lub ustaw na "user_provided", aby umożliwić użytkownikom podanie własnego klucza API z poziomu WebUI. | OPENAI_API_KEY=user_provided |
| OPENAI_MODELS | string | Dostosuj dostępne modele, oddzielone przecinkami, bez spacji. Pierwszy z nich będzie domyślny. Pozostaw zakomentowane, aby użyć ustawień wewnętrznych. | # OPENAI_MODELS=gpt-5,gpt-5-codex,gpt-5-mini,gpt-5-nano,o3-pro,o3,o4-mini,gpt-4.1,gpt-4.1-mini,gpt-4.1-nano,o3-mini,o1-pro,o1,gpt-4o,gpt-4o-mini |
| DEBUG_OPENAI | boolean | Włącz tryb debugowania dla endpoint OpenAI. | DEBUG_OPENAI=false |
| OPENAI_SUMMARIZE | boolean | Włącz podsumowywanie wiadomości. Domyślnie False | # OPENAI_SUMMARIZE=true |
| OPENAI_SUMMARY_MODEL | string | Model używany do podsumowań OpenAI. | # OPENAI_SUMMARY_MODEL=gpt-3.5-turbo |
| OPENAI_FORCE_PROMPT | boolean | Wymuś wywołanie API z ładunkiem prompt zamiast ładunku messages. | # OPENAI_FORCE_PROMPT=false |
| OPENAI_ORGANIZATION | string | Określ, której organizacji użyć dla każdego żądania API do OpenAI. Opcjonalne | # OPENAI_ORGANIZATION= |
| OPENAI_REVERSE_PROXY | string | PRZESTARZAŁE: Ustawienia odwrotnego proxy dla OpenAI. | # OPENAI_REVERSE_PROXY= |
| OPENAI_TITLE_MODEL | string | PRZESTARZAŁE: Model używany do nadawania tytułów OpenAI. | # OPENAI_TITLE_MODEL=gpt-3.5-turbo |
OPENAI_TITLE_MODELjest teraz przestarzały i zostanie usunięty w przyszłych wersjach. Zamiast tego użyj ustawienia punktu końcowegotitleModelEndpoint Setting w konfiguracjilibrechat.yaml.OPENAI_REVERSE_PROXYjest teraz przestarzałe i zostanie usunięte w przyszłych wersjach. Zamiast tego użyj niestandardowego endpoint.
Asystenci
Zobacz: Konfiguracja Assistants
| Key | Type | Description | Example |
|---|---|---|---|
| ASSISTANTS_API_KEY | string | Twój klucz API OpenAI dla Assistants API. Pozostaw puste, aby wyłączyć ten endpoint, lub ustaw na "user_provided", aby umożliwić użytkownikom podanie własnego klucza API z poziomu WebUI. | ASSISTANTS_API_KEY=user_provided |
| ASSISTANTS_MODELS | string | Dostosuj dostępne modele, oddzielone przecinkami, bez spacji. Pierwszy z nich będzie domyślny. Pozostaw puste, aby użyć ustawień wewnętrznych. | # ASSISTANTS_MODELS=gpt-3.5-turbo-0125,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-16k,gpt-3.5-turbo,gpt-4,gpt-4-0314,gpt-4-32k-0314,gpt-4-0613,gpt-3.5-turbo-0613,gpt-3.5-turbo-1106,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview |
| ASSISTANTS_BASE_URL | string | Alternatywny bazowy adres URL dla Assistants API. | # ASSISTANTS_BASE_URL= |
Uwaga: Możesz dostosować dostępne modele, oddzielając je przecinkami, bez spacji. Pierwszy z nich będzie domyślny. Pozostaw to pole puste lub zakomentowane, aby użyć ustawień wewnętrznych.
Tavily
Uzyskaj swój klucz API tutaj: https://tavily.com/#api
Zmienne środowiskowe:
| Key | Type | Description | Example |
|---|---|---|---|
| TAVILY_API_KEY | string | Klucz API Tavily. | TAVILY_API_KEY= |
Traversaal
Opis: Narzędzie wyszukiwania wzbogacone o LLM.
Pobierz klucz API tutaj: https://api.traversaal.ai/dashboard
Zmienne środowiskowe:
| Key | Type | Description | Example |
|---|---|---|---|
| TRAVERSAAL_API_KEY | string | Klucz API Traversaal. | TRAVERSAAL_API_KEY= |
WolframAlpha
Szczegółowe instrukcje znajdziesz tutaj: Wolfram Alpha
Zmienne środowiskowe:
| Key | Type | Description | Example |
|---|---|---|---|
| WOLFRAM_APP_ID | string | Identyfikator aplikacji Wolfram Alpha. | WOLFRAM_APP_ID= |
Zapier
Opis: - Potrzebujesz konta w serwisie Zapier. Pobierz swój klucz API stąd: Zapier
- Utwórz dozwolone akcje - Postępuj zgodnie z krokiem 3 w tym przewodniku wprowadzającym od Zapier
Uwaga: Zapier bywa kapryśny w przypadku niektórych akcji. Pisanie szkiców wiadomości e-mail jest prawdopodobnie najlepszym sposobem jego wykorzystania.
Zmienne środowiskowe:
| Key | Type | Description | Example |
|---|---|---|---|
| ZAPIER_NLA_API_KEY | string | Klucz API Zapier NLA. | ZAPIER_NLA_API_KEY= |
OpenWeather
Szczegółowe instrukcje znajdziesz tutaj: OpenWeather
| Key | Type | Description | Example |
|---|---|---|---|
| OPENWEATHER_API_KEY | string | Klucz API OpenWeather dla One Call API 3.0. | OPENWEATHER_API_KEY= |
Code Interpreter
API Code Interpreter zapewnia bezpieczne środowisko do wykonywania kodu i zarządzania plikami. Zobacz: Code Interpreter API
| Key | Type | Description | Example |
|---|---|---|---|
| LIBRECHAT_CODE_API_KEY | string | Klucz API dla usługi Code Interpreter. Po ustawieniu globalnym zapewnia dostęp wszystkim użytkownikom. | LIBRECHAT_CODE_API_KEY=your-api-key |
| LIBRECHAT_CODE_BASEURL | string | Niestandardowy bazowy adres URL dla API Code Interpreter (tylko plany Enterprise). | # LIBRECHAT_CODE_BASEURL=https://your-custom-domain.com |
Artefakty
Artifacts wykorzystują bibliotekę CodeSandbox do bezpiecznego renderowania kodu HTML/JS. Domyślnie używana jest publiczna sieć CDN hostowana przez CodeSandbox.
Na szczęście dla osób z wymaganiami dotyczącymi sieci wewnętrznej, można samodzielnie hostować bundler, który kompiluje kod frontendowy, i określić niestandardowy adres URL bundlera dla Sandpack.
Aby uzyskać więcej informacji, w tym gotowe obrazy kontenerów do samodzielnego hostowania z usuniętymi żądaniami metryk, zobacz: https://github.com/LibreChat-AI/codesandbox-client
| Key | Type | Description | Example |
|---|---|---|---|
| SANDPACK_BUNDLER_URL | string | Określa niestandardowy adres URL bundlera dla Sandpack, używany przez Artifacts | SANDPACK_BUNDLER_URL=your-bundler-url |
Wyszukiwanie (Meilisearch)
Włącza wyszukiwanie w wiadomościach i konwersacjach:
| Key | Type | Description | Example |
|---|---|---|---|
| SEARCH | boolean | Włącza wyszukiwanie w wiadomościach i konwersacjach. | SEARCH=true |
Uwaga: Jeśli nie używasz Docker, wymaga to instalacji darmowego, samodzielnie hostowanego Meilisearch lub płatnego planu zdalnego.
Aby wyłączyć zanonimizowaną analitykę telemetryczną dla MeiliSearch w celu zapewnienia pełnej prywatności, ustaw na true:
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_ANALYTICS | boolean | Wyłącza anonimowe analityki telemetryczne dla MeiliSearch. | MEILI_NO_ANALYTICS=true |
Aby serwer API mógł połączyć się z serwerem wyszukiwania. Zastąp '0.0.0.0' wartością 'meilisearch', jeśli uruchamiasz MeiliSearch za pomocą docker-compose.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_HOST | string | Połączenie serwera API z serwerem wyszukiwania. | MEILI_HOST=http://0.0.0.0:7700 |
Ten klucz główny musi mieć co najmniej 16 bajtów i składać się z prawidłowych znaków UTF-8. MeiliSearch zgłosi błąd i odmówi uruchomienia, jeśli klucz główny nie zostanie podany lub jeśli będzie miał mniej niż 16 bajtów. MeiliSearch zasugeruje bezpieczny, automatycznie wygenerowany klucz główny. Jest to gotowy, bezpieczny klucz dla docker-compose, który można zastąpić własnym.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_MASTER_KEY | string | Główny klucz dla MeiliSearch. | MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt |
Aby zapobiec próbom synchronizacji indeksowania bazy danych z Meilisearch przez LibreChat, możesz ustawić poniższą zmienną środowiskową na true. Jest to przydatne w klastrze węzłów lub konfiguracji wielowęzłowej, gdzie tylko jedna instancja powinna odpowiadać za indeksowanie.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_SYNC | string | Przełącznik wyłączający synchronizację indeksu Meilisearch | MEILI_NO_SYNC=true |
RAG API
Skonfiguruj Retrieval-Augmented Generation (RAG) do indeksowania dokumentów i odpowiedzi uwzględniających kontekst. Zobacz: RAG API Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | URL usługi RAG API. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | Klucz API OpenAI dla osadzeń RAG. Nadpisuje OPENAI_API_KEY dla RAG. | # RAG_OPENAI_API_KEY=sk-your-openai-api-key |
| RAG_OPENAI_BASEURL | string | Niestandardowy bazowy adres URL OpenAI dla osadzeń RAG. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | Pobierz cały kontekst pliku zamiast 4 najlepszych wyników. Domyślnie: false. | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Dostawca Embeddings: openai, azure, huggingface, huggingfacetei lub ollama. Domyślnie: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Model embeddingów do użycia. Wartość domyślna zależy od dostawcy. | # EMBEDDINGS_MODEL=text-embedding-3-small |
Uwaga: Podczas korzystania z domyślnej konfiguracji Docker, plik
.envjest współdzielony między LibreChat a RAG API. Pełne opcje konfiguracji znajdują się w dokumentacji RAG API.
Mowa na tekst (Speech to Text) i tekst na mowę (Text to Speech)
Skonfiguruj usługi zamiany mowy na tekst (STT) oraz tekstu na mowę (TTS). Zobacz: Ustawienia mowy
| Key | Type | Description | Example |
|---|---|---|---|
| STT_API_KEY | string | Klucz API dla usługi zamiany mowy na tekst (np. OpenAI Whisper). | # STT_API_KEY= |
| TTS_API_KEY | string | Klucz API dla usługi zamiany tekstu na mowę (np. OpenAI TTS). | # TTS_API_KEY= |
Uwaga: STT i TTS są konfigurowane głównie poprzez sekcję
speech:w plikulibrechat.yaml. Te zmienne środowiskowe są przywoływane w tej konfiguracji. Zobacz Ustawienia mowy, aby uzyskać pełne opcje konfiguracji YAML.
Udostępnione linki
Skonfiguruj funkcjonalność udostępnionych linków do konwersacji.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_SHARED_LINKS | boolean | Włącz lub wyłącz udostępnione linki do konwersacji. Domyślnie: true. | ALLOW_SHARED_LINKS=true |
| ALLOW_SHARED_LINKS_PUBLIC | boolean | Zezwalaj na publiczny dostęp do udostępnionych linków bez uwierzytelniania. Domyślnie: false. | ALLOW_SHARED_LINKS_PUBLIC=false |
| SHARED_LINKS_SNAPSHOT_FILES | boolean | Pliki migawek, do których odwołuje się udostępniony czat, aby widzowie mogli je wyświetlić lub pobrać za pomocą udostępnionego linku. Nadpisuje interface.sharedLinks.snapshotFiles, gdy jest ustawione. | SHARED_LINKS_SNAPSHOT_FILES=true |
ALLOW_SHARED_LINKS to główny przełącznik funkcji. Uprawnienia ról kontrolują teraz, kto może tworzyć udostępnione linki, udostępniać je uwierzytelnionym użytkownikom lub czynić je widocznymi dla wszystkich; zobacz interface.sharedLinks. ALLOW_SHARED_LINKS_PUBLIC kontroluje jedynie to, czy publicznie udostępnione linki mogą być przeglądane bez uwierzytelniania. SHARED_LINKS_SNAPSHOT_FILES to globalne nadpisanie dla migawek plików w udostępnionych linkach, które po ustawieniu na false może wyłączyć obsługę migawek dla każdego linku.
System użytkownika
Ta sekcja zawiera konfigurację dla:
- Automated Moderation
- Saldo/Zużycie tokenów
- Rejestracja i logowanie przez media społecznościowe
- Resetowanie hasła przez e-mail
Moderacja
Zautomatyzowany system moderacji wykorzystuje mechanizm punktacji do śledzenia naruszeń użytkowników. Gdy użytkownicy wykonują działania takie jak nadmierna liczba logowań, rejestracji lub wysyłanie wiadomości, gromadzą punkty naruszeń. Po osiągnięciu określonego progu użytkownik oraz jego adres IP są tymczasowo blokowani. System ten zapewnia bezpieczeństwo platformy poprzez monitorowanie i karanie gwałtownych lub podejrzanych aktywności.
zobacz: Automated Moderation
Podstawowe ustawienia moderacji
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | Czy włączyć moderację OpenAI w endpointach **OpenAI** oraz **Plugins**. | OPENAI_MODERATION=false |
| OPENAI_MODERATION_API_KEY | string | Twój klucz API OpenAI. | OPENAI_MODERATION_API_KEY= |
| OPENAI_MODERATION_REVERSE_PROXY | string | Uwaga: Domyślnie zakomentowane, nie działa ze wszystkimi reverse proxys. | # OPENAI_MODERATION_REVERSE_PROXY= |
Ustawienia banowania
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | Czy włączyć możliwość banowania użytkowników za naruszenia (nadal będą oni rejestrowani). | BAN_VIOLATIONS=true |
| BAN_DURATION | integer | Czas trwania blokady użytkownika i powiązanego adresu IP (w milisekundach). | BAN_DURATION=1000 * 60 * 60 * 2 |
| BAN_INTERVAL | integer | Użytkownik będzie blokowany za każdym razem, gdy jego wynik osiągnie/przekroczy próg interwału. | BAN_INTERVAL=20 |
Ograniczanie częstotliwości logowania i rejestracji
Zapobiega atakom typu brute force oraz rejestracji spamu poprzez ograniczanie liczby prób logowania i rejestracji nowych kont.
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | integer | Maksymalna liczba logowań dozwolona na adres IP w ramach LOGIN_WINDOW. | LOGIN_MAX=7 |
| LOGIN_WINDOW | integer | W minutach określa przedział czasowy dla LOGIN_MAX logowań. | LOGIN_WINDOW=5 |
| REGISTER_MAX | integer | Maksymalna liczba rejestracji dozwolona na adres IP w ramach REGISTER_WINDOW. | REGISTER_MAX=5 |
| REGISTER_WINDOW | integer | W minutach określa przedział czasowy dla rejestracji REGISTER_MAX. | REGISTER_WINDOW=60 |
Wynik dla każdego naruszenia
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | Wynik dla naruszeń logowania. | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | Wynik za naruszenia rejestracji. | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | Wynik dla naruszeń współbieżnych. | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | Wynik dla naruszeń wiadomości. | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | Wynik dla naruszeń spoza przeglądarki. | NON_BROWSER_VIOLATION_SCORE=20 |
| ILLEGAL_MODEL_REQ_SCORE | integer | Wynik dla niedozwolonych żądań modelu. | ILLEGAL_MODEL_REQ_SCORE=5 |
| IMPORT_VIOLATION_SCORE | integer | Wynik dla naruszeń importu konwersacji. | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | Wynik dla naruszeń rozwidlenia konwersacji. | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | Wynik dla naruszeń zamiany tekstu na mowę (text-to-speech). | TTS_VIOLATION_SCORE=0 |
| STT_VIOLATION_SCORE | integer | Wynik dla naruszeń zamiany mowy na tekst. | STT_VIOLATION_SCORE=0 |
| FILE_UPLOAD_VIOLATION_SCORE | integer | Wynik dla naruszeń przesyłania plików. | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | Wynik dla naruszeń resetowania hasła. | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | Wynik dla naruszeń weryfikacji adresu e-mail. | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | Wynik dla naruszeń wywołań narzędzi. | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | Wynik dla naruszeń dostępu do konwersacji. | CONVO_ACCESS_VIOLATION_SCORE=0 |
Uwaga: Dostęp spoza przeglądarki oraz nielegalne żądania modeli są prawie zawsze szkodliwe, ponieważ oznaczają, że podmiot zewnętrzny próbuje uzyskać dostęp do serwera za pomocą zautomatyzowanego skryptu.
Ograniczanie częstotliwości wiadomości (na użytkownika i IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | Czy ograniczyć liczbę wiadomości, które użytkownik może wysłać w ramach jednego żądania. | LIMIT_CONCURRENT_MESSAGES=true |
| CONCURRENT_MESSAGE_MAX | integer | Maksymalna liczba wiadomości, które użytkownik może wysłać w ramach jednego żądania. | CONCURRENT_MESSAGE_MAX=2 |
Limitery
Uwaga: Możesz korzystać z obu ograniczników, ale domyślnie ograniczenie odbywa się tylko według IP.
Ogranicznik IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | Czy ograniczyć liczbę wiadomości, które dany adres IP może wysłać w ramach `MESSAGE_IP_WINDOW`. | LIMIT_MESSAGE_IP=true |
| MESSAGE_IP_MAX | integer | Maksymalna liczba wiadomości, które adres IP może wysłać w ramach `MESSAGE_IP_WINDOW`. | MESSAGE_IP_MAX=40 |
| MESSAGE_IP_WINDOW | integer | W minutach, określa przedział czasowy dla `MESSAGE_IP_MAX` wiadomości. | MESSAGE_IP_WINDOW=1 |
Ogranicznik użytkowników:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | Czy ograniczyć liczbę wiadomości, które użytkownik może wysłać w ramach `MESSAGE_USER_WINDOW`. | LIMIT_MESSAGE_USER=false |
| MESSAGE_USER_MAX | integer | Maksymalna liczba wiadomości, które użytkownik może wysłać w ramach `MESSAGE_USER_WINDOW`. | MESSAGE_USER_MAX=40 |
| MESSAGE_USER_WINDOW | integer | W minutach określa przedział czasowy dla wiadomości `MESSAGE_USER_MAX`. | MESSAGE_USER_WINDOW=1 |
Limitowanie częstotliwości importu konwersacji
Ogranicza częstotliwość importowania konwersacji przez użytkowników, aby zapobiec nadużyciom.
Uwaga: Możesz korzystać z obu ograniczników, ale domyślnie ograniczenie odbywa się tylko według IP.
Ogranicznik IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | Czy ograniczyć liczbę importów konwersacji, które adres IP może wykonać w ramach `IMPORT_IP_WINDOW`. | LIMIT_IMPORT_IP=true |
| IMPORT_IP_MAX | integer | Maksymalna liczba importów konwersacji, które adres IP może wykonać w ramach `IMPORT_IP_WINDOW`. | IMPORT_IP_MAX=100 |
| IMPORT_IP_WINDOW | integer | W minutach określa przedział czasowy dla importów `IMPORT_IP_MAX`. | IMPORT_IP_WINDOW=1 |
Ogranicznik użytkowników:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | Czy ograniczyć liczbę importów konwersacji, które użytkownik może wykonać w ramach `IMPORT_USER_WINDOW`. | LIMIT_IMPORT_USER=false |
| IMPORT_USER_MAX | integer | Maksymalna liczba importów konwersacji, które użytkownik może wykonać w ramach `IMPORT_USER_WINDOW`. | IMPORT_USER_MAX=50 |
| IMPORT_USER_WINDOW | integer | W minutach określa przedział czasowy dla importów `IMPORT_USER_MAX`. | IMPORT_USER_WINDOW=1 |
Ograniczanie częstotliwości forkowania konwersacji
Ogranicza częstotliwość, z jaką użytkownicy mogą forkować konwersacje, aby zapobiec nadużyciom.
Uwaga: Możesz korzystać z obu ograniczników, ale domyślnie ograniczenie odbywa się tylko według IP.
Ogranicznik IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | Czy ograniczyć liczbę rozgałęzień konwersacji, które adres IP może utworzyć w ramach `FORK_IP_WINDOW`. | LIMIT_FORK_IP=true |
| FORK_IP_MAX | integer | Maksymalna liczba rozgałęzień konwersacji, które adres IP może utworzyć w ramach `FORK_IP_WINDOW`. | FORK_IP_MAX=30 |
| FORK_IP_WINDOW | integer | W minutach określa przedział czasowy dla `FORK_IP_MAX` forków. | FORK_IP_WINDOW=1 |
Ogranicznik użytkowników:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | Czy ograniczyć liczbę rozgałęzień konwersacji, które użytkownik może utworzyć w ramach `FORK_USER_WINDOW`. | LIMIT_FORK_USER=false |
| FORK_USER_MAX | integer | Maksymalna liczba rozgałęzień konwersacji, które użytkownik może utworzyć w ramach `FORK_USER_WINDOW`. | FORK_USER_MAX=7 |
| FORK_USER_WINDOW | integer | W minutach, określa przedział czasowy dla forków `FORK_USER_MAX`. | FORK_USER_WINDOW=1 |
Limitowanie szybkości przesyłania plików
Ogranicza częstotliwość przesyłania plików przez użytkowników w celu zapobiegania nadużyciom.
Uwaga: Można je również skonfigurować za pomocą
librechat.yamlw sekcjirateLimits.fileUploads.
Ogranicznik IP:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_IP_MAX | integer | Maksymalna liczba przesłanych plików na adres IP w ramach `FILE_UPLOAD_IP_WINDOW`. Domyślnie: 100. | # FILE_UPLOAD_IP_MAX=100 |
| FILE_UPLOAD_IP_WINDOW | integer | W minutach, określa przedział czasowy dla `FILE_UPLOAD_IP_MAX`. Domyślnie: 15. | # FILE_UPLOAD_IP_WINDOW=15 |
Ogranicznik użytkowników:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_USER_MAX | integer | Maksymalna liczba przesłanych plików na użytkownika w ramach `FILE_UPLOAD_USER_WINDOW`. Domyślnie: 50. | # FILE_UPLOAD_USER_MAX=50 |
| FILE_UPLOAD_USER_WINDOW | integer | W minutach, określa przedział czasowy dla `FILE_UPLOAD_USER_MAX`. Domyślnie: 15. | # FILE_UPLOAD_USER_WINDOW=15 |
Limitowanie szybkości TTS (Text-to-Speech)
Ogranicza częstotliwość korzystania z funkcji Text-to-Speech przez użytkowników, aby zapobiegać nadużyciom.
Uwaga: Można je również skonfigurować za pomocą
librechat.yamlw sekcjirateLimits.tts.
Ogranicznik IP:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_IP_MAX | integer | Maksymalna liczba żądań TTS na adres IP w ramach `TTS_IP_WINDOW`. Domyślnie: 100. | # TTS_IP_MAX=100 |
| TTS_IP_WINDOW | integer | W minutach, określa przedział czasowy dla `TTS_IP_MAX`. Domyślnie: 1. | # TTS_IP_WINDOW=1 |
Ogranicznik użytkowników:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_USER_MAX | integer | Maksymalna liczba żądań TTS na użytkownika w ramach `TTS_USER_WINDOW`. Domyślnie: 50. | # TTS_USER_MAX=50 |
| TTS_USER_WINDOW | integer | W minutach, określa przedział czasowy dla `TTS_USER_MAX`. Domyślnie: 1. | # TTS_USER_WINDOW=1 |
Limitowanie szybkości STT (Speech-to-Text)
Ogranicza częstotliwość korzystania przez użytkowników z funkcji zamiany mowy na tekst (Speech-to-Text), aby zapobiegać nadużyciom.
Uwaga: Można je również skonfigurować za pomocą
librechat.yamlw sekcjirateLimits.stt.
Ogranicznik IP:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_IP_MAX | integer | Maksymalna liczba żądań STT na adres IP w ramach `STT_IP_WINDOW`. Domyślnie: 100. | # STT_IP_MAX=100 |
| STT_IP_WINDOW | integer | W minutach, określa przedział czasowy dla `STT_IP_MAX`. Domyślnie: 1. | # STT_IP_WINDOW=1 |
Ogranicznik użytkowników:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_USER_MAX | integer | Maksymalna liczba żądań STT na użytkownika w ramach `STT_USER_WINDOW`. Domyślnie: 50. | # STT_USER_MAX=50 |
| STT_USER_WINDOW | integer | W minutach, określa przedział czasowy dla `STT_USER_MAX`. Domyślnie: 1. | # STT_USER_WINDOW=1 |
Saldo
Poniższa funkcja umożliwia zarządzanie saldami użytkowników w ramach endpoint systemu. Masz możliwość ręcznego dodawania sald lub możesz zdecydować się na wdrożenie systemu, który automatycznie gromadzi salda dla użytkowników. Jeśli w konfiguracji zdefiniowano określone saldo początkowe, tokeny zostaną automatycznie dopisane do salda użytkownika w momencie jego rejestracji.
zobacz: Użycie tokenów
| Key | Type | Description | Example |
|---|---|---|---|
| CHECK_BALANCE | boolean | Włącz salda kredytów tokenów dla endpointów OpenAI/Plugins. | CHECK_BALANCE=false |
| START_BALANCE | integer | Jeśli wartość jest ustawiona, tokeny zostaną dopisane do salda użytkownika po rejestracji. | START_BALANCE=20000 |
Zarządzanie saldami
- Uruchom
npm run add-balance, aby ręcznie dodać środki.- Możesz również określić adres e-mail oraz kwotę kredytów tokenów do dodania, np.:
npm run add-balance [email protected] 1000
- Możesz również określić adres e-mail oraz kwotę kredytów tokenów do dodania, np.:
- Uruchom
npm run set-balance, aby ręcznie ustawić salda, podobnie jak w przypadkuadd-balance. - Uruchom
npm run list-balances, aby wyświetlić saldo każdego użytkownika.
Uwaga: 1000 kredytów = 0,001 USD (1 mil USD)
Rejestracja i logowanie
zobacz: System uwierzytelniania
Wyjaśnienie pliku konfiguracyjnego
Wszystkie ustawienia uwierzytelniania w tej sekcji powinny być skonfigurowane w pliku .env, a nie w pliku librechat.yaml lub docker-compose.override.yml. Plik docker-compose.override.yml służy wyłącznie do montowania wolumenów i ustawiania zmiennych środowiskowych dla Docker, podczas gdy plik librechat.yaml jest używany do niestandardowych endpoint i innych ustawień aplikacji.
- Ustawienia ogólne:
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Włącz lub wyłącz TYLKO logowanie przez e-mail. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Włącz lub wyłącz rejestrację nowych użytkowników przez Email. | ALLOW_REGISTRATION=true |
| ALLOW_SOCIAL_LOGIN | boolean | Zezwalaj użytkownikom na łączenie się z LibreChat za pomocą różnych sieci społecznościowych. | ALLOW_SOCIAL_LOGIN=false |
| ALLOW_SOCIAL_REGISTRATION | boolean | Włącz lub wyłącz rejestrację nowych użytkowników przy użyciu różnych sieci społecznościowych. | ALLOW_SOCIAL_REGISTRATION=false |
| ALLOW_PASSWORD_RESET | boolean | Włącz lub wyłącz możliwość samodzielnego resetowania hasła przez użytkowników | ALLOW_PASSWORD_RESET=false |
| ALLOW_ACCOUNT_DELETION | boolean | Włącz lub wyłącz możliwość samodzielnego usuwania konta przez użytkowników. Domyślnie włączone, jeśli pominięto lub zakomentowano. | ALLOW_ACCOUNT_DELETION=true |
| ALLOW_UNVERIFIED_EMAIL_LOGIN | boolean | Ustaw na true, aby umożliwić użytkownikom logowanie bez weryfikacji adresu e-mail. Jeśli ustawiono na false, użytkownicy będą musieli zweryfikować swój adres e-mail przed zalogowaniem. | ALLOW_UNVERIFIED_EMAIL_LOGIN=true |
| MIN_PASSWORD_LENGTH | number | Minimalna długość hasła dla uwierzytelniania użytkownika. W przypadku korzystania z uwierzytelniania LDAP, możesz ustawić tę wartość na 1, aby pominąć lokalną walidację hasła, ponieważ serwery LDAP obsługują własne polityki haseł. | MIN_PASSWORD_LENGTH=8 |
Szybka wskazówka: Nawet przy wyłączonej rejestracji, dodawaj użytkowników bezpośrednio do bazy danych za pomocą
npm run create-user.
Szybka wskazówka: Przy wyłączonej rejestracji możesz usunąć użytkownika za pomocą
npm run delete-user [email protected].
- Ustawienia sesji i tokenów odświeżania:
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Czas wygaśnięcia sesji. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (milliseconds) | Czas wygaśnięcia tokena odświeżania. | REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7 |
| SESSION_COOKIE_SECURE | boolean | Zastępuje atrybut Secure dla plików cookie sesji/uwierzytelniania. Pozostaw puste, aby użyć domyślnej heurystyki NODE_ENV/DOMAIN_SERVER. | # SESSION_COOKIE_SECURE=false |
-
Więcej informacji: Refresh Token
-
Ustawienia JWT:
Powinieneś użyć nowych, bezpiecznych wartości. Podane przykłady to 32-bajtowe klucze (64 znaki w formacie szesnastkowym). Użyj tego replit, aby szybko wygenerować kilka: Klucze JWT
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Klucz tajny JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (hex) | Klucz tajny odświeżania JWT. | JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418 |
Logowanie przez media społecznościowe
Więcej szczegółów: OAuth2-OIDC
Uwierzytelnianie Apple
Więcej informacji: Apple Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| APPLE_CLIENT_ID | string | Twój identyfikator Apple Services ID (np. com.yourdomain.librechat.services). | APPLE_CLIENT_ID=com.yourdomain.librechat.services |
| APPLE_TEAM_ID | string | Twój identyfikator zespołu Apple Developer (Team ID). | APPLE_TEAM_ID=YOUR_TEAM_ID |
| APPLE_KEY_ID | string | Twój Apple Key ID z pobranego klucza. | APPLE_KEY_ID=YOUR_KEY_ID |
| APPLE_PRIVATE_KEY_PATH | string | Bezwzględna ścieżka do pobranego pliku .p8. | APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8 |
| APPLE_CALLBACK_URL | string | Adres URL wywołania zwrotnego (callback URL) dla uwierzytelniania Apple. | APPLE_CALLBACK_URL=/oauth/apple/callback |
Uwierzytelnianie Discord
Więcej informacji: Discord
| Key | Type | Description | Example |
|---|---|---|---|
| DISCORD_CLIENT_ID | string | Twój identyfikator klienta Discord. | DISCORD_CLIENT_ID= |
| DISCORD_CLIENT_SECRET | string | Twój client secret Discord. | DISCORD_CLIENT_SECRET= |
| DISCORD_CALLBACK_URL | string | Adres URL wywołania zwrotnego (callback) dla uwierzytelniania Discord. | DISCORD_CALLBACK_URL=/oauth/discord/callback |
Uwierzytelnianie przez Facebook
Aby uzyskać więcej informacji: Uwierzytelnianie przez Facebook
| Key | Type | Description | Example |
|---|---|---|---|
| FACEBOOK_CLIENT_ID | string | Twój identyfikator klienta Facebook. | FACEBOOK_CLIENT_ID= |
| FACEBOOK_CLIENT_SECRET | string | Twój klucz tajny klienta Facebook. | FACEBOOK_CLIENT_SECRET= |
| FACEBOOK_CALLBACK_URL | string | Adres URL wywołania zwrotnego (callback URL) dla uwierzytelniania przez Facebook. | FACEBOOK_CALLBACK_URL=/oauth/facebook/callback |
Uwierzytelnianie GitHub
Więcej informacji: Uwierzytelnianie GitHub
| Key | Type | Description | Example |
|---|---|---|---|
| GITHUB_CLIENT_ID | string | Twój identyfikator klienta GitHub. | GITHUB_CLIENT_ID= |
| GITHUB_CLIENT_SECRET | string | Twój klucz tajny klienta GitHub. | GITHUB_CLIENT_SECRET= |
| GITHUB_CALLBACK_URL | string | Adres URL wywołania zwrotnego (callback URL) dla uwierzytelniania GitHub. | GITHUB_CALLBACK_URL=/oauth/github/callback |
| GITHUB_ENTERPRISE_BASE_URL | string | Opcjonalnie: Podstawowy adres URL dla Twojej instancji GitHub Enterprise. | GITHUB_ENTERPRISE_BASE_URL= |
| GITHUB_ENTERPRISE_USER_AGENT | string | Opcjonalne: User agent dla żądań GitHub Enterprise. | GITHUB_ENTERPRISE_USER_AGENT= |
Uwierzytelnianie Google
Więcej informacji: Google Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_CLIENT_ID | string | Twój identyfikator klienta Google. | GOOGLE_CLIENT_ID= |
| GOOGLE_CLIENT_SECRET | string | Twój Google client secret. | GOOGLE_CLIENT_SECRET= |
| GOOGLE_CALLBACK_URL | string | Adres URL wywołania zwrotnego (callback URL) dla uwierzytelniania Google. | GOOGLE_CALLBACK_URL=/oauth/google/callback |
OpenID Connect
Więcej informacji:
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_CLIENT_ID | string | Twój identyfikator klienta OpenID. | OPENID_CLIENT_ID= |
| OPENID_CLIENT_SECRET | string | Twój klucz tajny klienta OpenID. | OPENID_CLIENT_SECRET= |
| OPENID_ISSUER | string | URL wystawcy OpenID. | OPENID_ISSUER= |
| OPENID_SESSION_SECRET | string | Klucz tajny dla przechowywania sesji OpenID. | OPENID_SESSION_SECRET= |
| OPENID_SCOPE | string | Zakres OpenID. | OPENID_SCOPE="openid profile email" |
| OPENID_CALLBACK_URL | string | Adres URL wywołania zwrotnego (callback) dla uwierzytelniania OpenID. | OPENID_CALLBACK_URL=/oauth/openid/callback |
| OPENID_AUDIENCE | string | Wartość audience dla żądań walidacji i autoryzacji OpenID JWT. W przypadku walidacji JWT akceptowane są wartości rozdzielane przecinkami; żądania autoryzacji używają pierwszej niepustej wartości. Wymagane dla Auth0 w przypadku użycia OPENID_REUSE_TOKENS=true w celu otrzymywania tokenów dostępu JWT zamiast tokenów nieprzejrzystych. | OPENID_AUDIENCE=https://api.librechat.com |
| OPENID_REQUIRED_ROLE | string | Wymagana rola(-e) do walidacji. Obsługuje pojedynczą rolę lub wiele ról oddzielonych przecinkami. Gdy określono wiele ról, użytkownik musi posiadać DOWOLNĄ z określonych ról (logika LUB). | OPENID_REQUIRED_ROLE=admin or OPENID_REQUIRED_ROLE=role1,role2,admin |
| OPENID_REQUIRED_ROLE_TOKEN_KIND | string | Rodzaj tokena dla wymaganej walidacji roli. | OPENID_REQUIRED_ROLE_TOKEN_KIND= |
| OPENID_REQUIRED_ROLE_PARAMETER_PATH | string | Ścieżka parametru dla walidacji wymaganej roli. | OPENID_REQUIRED_ROLE_PARAMETER_PATH= |
| OPENID_ADMIN_ROLE | string | Rola, jaką użytkownik powinien posiadać, aby być administratorem w LibreChat. | OPENID_ADMIN_ROLE= |
| OPENID_ADMIN_ROLE_TOKEN_KIND | string | Źródło informacji do weryfikacji roli administratora. Możliwe wartości to: access, id lub userinfo. | OPENID_ADMIN_ROLE_TOKEN_KIND= |
| OPENID_ADMIN_ROLE_PARAMETER_PATH | string | Ścieżka parametru dla walidacji wymaganej roli. | OPENID_ADMIN_ROLE_PARAMETER_PATH= |
| OPENID_ROLE_SYNC_ENABLED | boolean | Włącz ogólną synchronizację ról OpenID dla ról niebędących administratorami. Rola ADMIN nie może być przypisana przez synchronizację ról; użyj OPENID_ADMIN_ROLE do nadania uprawnień administratora. | OPENID_ROLE_SYNC_ENABLED=false |
| OPENID_ROLE_SYNC_API_ENABLED | boolean | Włącz pomocników synchronizacji ról opartych na API. Wymaga OPENID_ROLE_SYNC_ENABLED=true. | OPENID_ROLE_SYNC_API_ENABLED=false |
| OPENID_ROLE_SYNC_SOURCE | string | Źródło tokena dla oświadczenia roli (role claim). Musi być jedną z wartości: access, id, userinfo. Domyślnie: id. | OPENID_ROLE_SYNC_SOURCE=id |
| OPENID_ROLE_SYNC_CLAIM | string | Ścieżka claim zawierająca role lub grupy dostawcy. Wymagane, gdy synchronizacja ról jest włączona. | OPENID_ROLE_SYNC_CLAIM= |
| OPENID_ROLE_SYNC_ROLE_PRIORITY | string | Rozdzielona przecinkami lista ról LibreChat uporządkowana od najważniejszej do najmniej ważnej. Przypisywana jest pierwsza pasująca rola. | OPENID_ROLE_SYNC_ROLE_PRIORITY=Support,User |
| OPENID_ROLE_SYNC_FALLBACK_ROLE | string | Rola LibreChat przypisywana, gdy nie pasuje żadna rola o wyższym priorytecie. Jeśli skonfigurowano, ten mechanizm zastępczy jest nadrzędny. | OPENID_ROLE_SYNC_FALLBACK_ROLE=USER |
| OPENID_BUTTON_LABEL | string | Etykieta przycisku logowania OpenID. | OPENID_BUTTON_LABEL= |
| OPENID_IMAGE_URL | string | URL obrazu przycisku logowania OpenID. | OPENID_IMAGE_URL= |
| OPENID_USE_END_SESSION_ENDPOINT | string | Czy używać punktu końcowego zakończenia sesji wystawcy jako przekierowania po wylogowaniu | OPENID_USE_END_SESSION_ENDPOINT=TRUE |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Maksymalna długość adresu URL wylogowania przed użyciem logout_hint zamiast id_token_hint. Domyślnie: 2000. | # OPENID_MAX_LOGOUT_URL_LENGTH=2000 |
| OPENID_AUTO_REDIRECT | boolean | Czy automatycznie przekierowywać do dostawcy OpenID. | OPENID_AUTO_REDIRECT=true |
| OPENID_USE_PKCE | boolean | Użyj PKCE (Proof Key for Code Exchange) do uwierzytelniania OpenID. W przypadku klientów publicznych bez klucza tajnego klienta (client secret), pozostaw OPENID_CLIENT_SECRET puste i ustaw tę wartość na true. | # OPENID_USE_PKCE=true |
| OPENID_POST_LOGOUT_REDIRECT_URI | string | URI przekierowania po wylogowaniu przez OpenID. Domyślnie ${DOMAIN_CLIENT}/login. | # OPENID_POST_LOGOUT_REDIRECT_URI= |
| OPENID_CLOCK_TOLERANCE | number | Tolerancja zegara w sekundach dla walidacji tokenów. Domyślnie: 300. | # OPENID_CLOCK_TOLERANCE=300 |
| OPENID_GENERATE_NONCE | boolean | Wymuś na kliencie OpenID wygenerowanie parametru nonce. Wymagane przez niektórych dostawców tożsamości, takich jak AWS Cognito (szczególnie w przypadku federacji) oraz Authentik. | OPENID_GENERATE_NONCE=true |
| DEBUG_OPENID_REQUESTS | boolean | Włącz szczegółowe logowanie nagłówków żądań OpenID. Gdy opcja jest wyłączona (domyślnie), na poziomie debugowania logowane są tylko adresy URL żądań. Gdy jest włączona, logowane są również nagłówki żądań (z zamaskowanymi danymi wrażliwymi) w celu głębszego debugowania problemów z uwierzytelnianiem. | DEBUG_OPENID_REQUESTS=false |
| OPENID_USERNAME_CLAIM | string | Właściwość informacji o użytkowniku z dostawcy OpenID, która ma być przechowywana jako nazwa użytkownika. | OPENID_USERNAME_CLAIM= |
| OPENID_NAME_CLAIM | string | Właściwość informacji o użytkowniku z dostawcy OpenID, która ma być przechowywana jako nazwa wyświetlana użytkownika. | OPENID_NAME_CLAIM= |
| OPENID_EMAIL_CLAIM | string | Oświadczenie o informacjach użytkownika używane jako adres e-mail/identyfikator do dopasowywania użytkowników (np. "upn" dla Entra ID). Jeśli nie zostanie ustawione, domyślnie przyjmuje: email → preferred_username → upn. | OPENID_EMAIL_CLAIM= |
Synchronizacja ról OpenID
OPENID_ROLE_SYNC_CLAIM jest wymagane, gdy synchronizacja ról jest włączona.
OPENID_ROLE_SYNC_API_ENABLED=true wymaga również OPENID_ROLE_SYNC_ENABLED=true. Ogólna synchronizacja
ról nie może przypisać ADMIN; użyj OPENID_ADMIN_ROLE do nadania uprawnień administratora.
Ponowne wykorzystanie tokena OpenID Connect
LibreChat obsługuje ponowne wykorzystywanie tokenów dostępu i odświeżania wydanych przez Twojego dostawcę OpenID Connect (takiego jak Azure Entra ID lub Auth0) w celu zarządzania stanem uwierzytelniania użytkownika. Gdy ta funkcja jest aktywna, token odświeżania przekazywany użytkownikowi jako plik cookie jest wydawany przez Twojego dostawcę OpenID, a nie przez LibreChat.
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_REUSE_TOKENS | boolean | Włącz ponowne wykorzystanie tokenów dostawcy OpenID do zarządzania sesją. | OPENID_REUSE_TOKENS=false |
| OPENID_SCOPE | string | Rozdzielona spacjami lista zakresów OpenID. Musi zawierać offline_access w celu ponownego użycia tokena. | OPENID_SCOPE=api://librechat/.default openid profile email offline_access |
| OPENID_AUDIENCE | string | Wartość audience dla żądań walidacji i autoryzacji OpenID JWT. Wartości rozdzielone przecinkami są akceptowane dla walidacji JWT; żądania autoryzacji używają pierwszej niepustej wartości. Wymagane dla Auth0, gdy OPENID_REUSE_TOKENS=true. Zobacz uwagę w głównej sekcji OpenID powyżej. | OPENID_AUDIENCE=https://api.librechat.com |
| OPENID_REUSE_MAX_SESSION_AGE_MS | number | Maksymalny czas, przez jaki ponownie używany token sesji OpenID jest serwowany, zanim LibreChat wymusi odświeżenie przez IdP. Domyślnie: 900000 ms / 15 minut. | OPENID_REUSE_MAX_SESSION_AGE_MS=900000 |
| OPENID_JWKS_URL_CACHE_ENABLED | boolean | Włącz buforowanie wyników weryfikacji klucza podpisu. | OPENID_JWKS_URL_CACHE_ENABLED=true |
| OPENID_JWKS_URL_CACHE_TIME | number | Czas trwania pamięci podręcznej w milisekundach (domyślnie: 600000 ms / 10 minut). | OPENID_JWKS_URL_CACHE_TIME=600000 |
| OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED | boolean | Włącz przepływ on-behalf-of dla informacji o użytkowniku. | OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true |
| OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE | string | Zakres informacji o użytkowniku w przepływie on-behalf-of. | OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read |
| OPENID_USE_END_SESSION_ENDPOINT | boolean | Włącz użycie endpointu zakończenia sesji do wylogowania. | OPENID_USE_END_SESSION_ENDPOINT=true |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Maksymalna długość adresu URL wylogowania w znakach przed przełączeniem na logout_hint. Przydatne, aby zapobiec błędom URI too long, gdy id_token_hint przekracza limity serwera. Domyślnie: 2000. | OPENID_MAX_LOGOUT_URL_LENGTH=2000 |
OPENID_REUSE_MAX_SESSION_AGE_MS akceptuje wyrażenia arytmetyczne, podobnie jak SESSION_EXPIRY. Zwiększ tę wartość w kierunku czasu życia tokena dostępu IdP, gdy Twój dostawca unieważnia poprzedni token dostępu przy odświeżaniu, aby odbiorcy końcowi, tacy jak serwery MCP, mogli dokończyć korzystanie z nadal ważnego tokena bearer.
Uwaga
Aby uzyskać szczegółowe kroki konfiguracji i wymagania wstępne, zobacz Re-use OpenID Tokens for Login Session.
Integracja z Microsoft Graph API / Entra ID
Podczas korzystania z Azure Entra ID (dawniej Azure AD) jako dostawcy OpenID, możesz włączyć dodatkowe funkcje Microsoft Graph API w celu uzyskania rozszerzonych możliwości wyszukiwania osób i grup w ramach systemu uprawnień i udostępniania.
| Key | Type | Description | Example |
|---|---|---|---|
| USE_ENTRA_ID_FOR_PEOPLE_SEARCH | boolean | Włącz integrację wyszukiwania osób w Entra ID w systemie uprawnień/udostępniania. Po włączeniu, selektor osób będzie przeszukiwał zarówno lokalną bazę danych, jak i Entra ID. | USE_ENTRA_ID_FOR_PEOPLE_SEARCH=false |
| ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS | boolean | Po włączeniu tej opcji właściciele grup Entra ID będą traktowani jako członkowie grupy. | ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=false |
| OPENID_GRAPH_SCOPES | string | Zakresy Microsoft Graph API wymagane do wyszukiwania osób/grup. Domyślne zakresy zapewniają dostęp do profili użytkowników i członkostwa w grupach. | OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All |
Ważne wymagania wstępne
- Musisz mieć skonfigurowane Azure Entra ID jako dostawcę OpenID - ponowne użycie tokenów OpenID MUSI być włączone (
OPENID_REUSE_TOKENS=true) - ta funkcja nie będzie bez tego działać - Twoja rejestracja aplikacji Azure musi posiadać odpowiednie uprawnienia Microsoft Graph API - w przypadku funkcji wyszukiwania grup, dla niektórych zakresów Graph API może być wymagana zgoda administratora
Integracja z SharePoint
LibreChat obsługuje bezpośrednią integrację z SharePoint Online oraz OneDrive for Business, umożliwiając użytkownikom wybieranie i załączanie plików z bibliotek SharePoint bezpośrednio wewnątrz konwersacji. Ta funkcja dla przedsiębiorstw wykorzystuje istniejące uwierzytelnianie Azure Entra ID.
| Key | Type | Description | Example |
|---|---|---|---|
| ENABLE_SHAREPOINT_FILEPICKER | boolean | Włącz selektor plików SharePoint w panelach czatu i agenta. Po włączeniu dodaje opcję „Z SharePoint” w menu załączników plików. | ENABLE_SHAREPOINT_FILEPICKER=true |
| SHAREPOINT_BASE_URL | string | Podstawowy adres URL dzierżawy SharePoint. Wymagany, gdy integracja z SharePoint jest włączona. | SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com |
| SHAREPOINT_PICKER_SHAREPOINT_SCOPE | string | Zakres OAuth specyficzny dla SharePoint dla selektora plików. Używany do uwierzytelniania podczas otwierania interfejsu selektora plików SharePoint. | SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read |
| SHAREPOINT_PICKER_GRAPH_SCOPE | string | Zakres Microsoft Graph API dla pobierania plików. Używany do pobierania plików z SharePoint po ich wybraniu. | SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All |
Kluczowe wymagania
Wszystkie poniższe elementy muszą zostać skonfigurowane, aby integracja z SharePoint działała:
- Uwierzytelnianie Azure Entra ID musi być w pełni skonfigurowane
OPENID_REUSE_TOKENS=truejest wymagane (używa przepływu tokenów on-behalf-of)OPENID_SCOPEmusi zawierać zakres API Twojej aplikacji LibreChat, na przykładapi://<client-id>/access_as_userOPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=truejest wymagane podczas korzystania z tego zakresu app-audience z Azure Entra ID- Twoja rejestracja aplikacji Azure musi posiadać uprawnienia SharePoint i Graph API
- Twoja rejestracja aplikacji Azure musi udostępniać zakres API LibreChat używany w
OPENID_SCOPE - Wszystkie cztery zmienne środowiskowe SharePoint muszą zostać ustawione
- HTTPS jest wymagane w środowiskach produkcyjnych
Możliwości funkcji
Po włączeniu użytkownicy mogą:
- Uzyskiwać dostęp do plików z bibliotek dokumentów SharePoint oraz OneDrive for Business
- Wybierać wiele plików jednocześnie (domyślnie maks.: 10 plików)
- Widzieć postęp pobierania w czasie rzeczywistym
- Pliki są pobierane i dołączane do konwersacji tak samo, jak zwykłe przesłane pliki.
Szczegółowe instrukcje konfiguracji SharePoint znajdują się w: SharePoint Integration Guide
SAML
Więcej informacji:
Wzajemne wykluczenie OpenID i SAML
Jeśli OpenID jest włączone, uwierzytelnianie SAML zostanie automatycznie wyłączone.
Tylko jedna metoda uwierzytelniania może być aktywna w danym momencie.
| Key | Type | Description | Example |
|---|---|---|---|
| SAML_ENTRY_POINT | string | Adres URL punktu wejściowego dostawcy tożsamości (IdP) SAML. | SAML_ENTRY_POINT= |
| SAML_ISSUER | string | Identyfikator jednostki (entity ID) dostawcy usług (SP) SAML. | SAML_ISSUER= |
| SAML_CERT | string | Certyfikat podpisywania SAML, dostarczony jako ścieżka do pliku lub jednowierszowy ciąg PEM. | SAML_CERT= |
| SAML_CALLBACK_URL | string | Adres URL wywołania zwrotnego (callback URL) dla uwierzytelniania SAML. | SAML_CALLBACK_URL=/oauth/saml/callback |
| SAML_SESSION_SECRET | string | Klucz tajny dla przechowywania sesji SAML. | SAML_SESSION_SECRET= |
| SAML_EMAIL_CLAIM | string | <Optional>: Atrybut w asercji SAML zawierający adres e-mail użytkownika. (domyślnie: email) | SAML_EMAIL_CLAIM= |
| SAML_USERNAME_CLAIM | string | <Optional>: Atrybut w asercji SAML zawierający nazwę użytkownika. (domyślnie: username) | SAML_USERNAME_CLAIM= |
| SAML_GIVEN_NAME_CLAIM | string | <Optional>: Atrybut w asercji SAML zawierający imię. (domyślnie: given_name) | SAML_GIVEN_NAME_CLAIM= |
| SAML_FAMILY_NAME_CLAIM | string | <Optional>: Atrybut w asercji SAML zawierający nazwisko. (domyślnie: family_name) | SAML_FAMILY_NAME_CLAIM= |
| SAML_PICTURE_CLAIM | string | <Optional>: Atrybut w asercji SAML zawierający adres URL zdjęcia profilowego. (domyślnie: picture) | SAML_PICTURE_CLAIM= |
| SAML_NAME_CLAIM | string | <Optional>: Atrybut w asercji SAML zawierający pełne imię i nazwisko. | SAML_NAME_CLAIM= |
| SAML_BUTTON_LABEL | string | <Optional>: Etykieta przycisku logowania SAML. | SAML_BUTTON_LABEL= |
| SAML_IMAGE_URL | string | <Optional>: URL obrazu przycisku logowania SAML. | SAML_IMAGE_URL= |
| SAML_USE_AUTHN_RESPONSE_SIGNED | boolean | <Optional>: Jeśli "true", podpisuje całą odpowiedź SAML. W przeciwnym razie podpisywana jest tylko asercja (domyślnie). | SAML_USE_AUTHN_RESPONSE_SIGNED= |
Uwierzytelnianie LDAP/AD
Więcej informacji: Uwierzytelnianie LDAP/AD
| Key | Type | Description | Example |
|---|---|---|---|
| LDAP_URL | string | URL serwera LDAP. | LDAP_URL=ldap://localhost:389 |
| LDAP_BIND_DN | string | DN powiązania | LDAP_BIND_DN=cn=root |
| LDAP_BIND_CREDENTIALS | string | Hasło dla bindDN | LDAP_BIND_CREDENTIALS=password |
| LDAP_USER_SEARCH_BASE | string | Baza wyszukiwania użytkowników LDAP | LDAP_USER_SEARCH_BASE=o=users,o=example.com |
| LDAP_SEARCH_FILTER | string | Filtr wyszukiwania LDAP | LDAP_SEARCH_FILTER=mail={{username}} |
| LDAP_CA_CERT_PATH | string | Ścieżka do certyfikatu CA. | LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt |
| LDAP_TLS_REJECT_UNAUTHORIZED | string | Weryfikacja TLS LDAP | LDAP_TLS_REJECT_UNAUTHORIZED=true |
| LDAP_STARTTLS | string | Włącz LDAP StartTLS, aby uaktualnić połączenie do TLS. Ustaw na true, aby włączyć tę funkcję. | LDAP_STARTTLS=true |
| LDAP_LOGIN_USES_USERNAME | boolean | Użyj nazwy użytkownika zamiast adresu e-mail do logowania przez LDAP. | # LDAP_LOGIN_USES_USERNAME=true |
| LDAP_ID | string | Atrybut LDAP dla unikalnego identyfikatora użytkownika. Domyślnie: uid lub sAMAccountName, mail. | # LDAP_ID=uid |
| LDAP_USERNAME | string | Atrybut LDAP dla nazwy użytkownika. Domyślnie: givenName lub mail. | # LDAP_USERNAME=givenName |
| LDAP_EMAIL | string | Atrybut LDAP dla adresu e-mail. Domyślnie: mail. | # LDAP_EMAIL=userPrincipalName |
| LDAP_FULL_NAME | string | Atrybut(y) LDAP dla pełnego imienia i nazwiska. Mogą być oddzielone przecinkami. Domyślnie: givenName + surname. | # LDAP_FULL_NAME=givenName,surname |
Resetowanie hasła
E-mail jest używany do weryfikacji konta oraz resetowania hasła. LibreChat obsługuje zarówno API Mailgun, jak i tradycyjne usługi SMTP. Zobacz: Konfiguracja e-mail
Ważna uwaga: Musisz skonfigurować Mailgun (zalecane dla serwerów blokujących SMTP) lub SMTP, aby poczta e-mail działała.
Ostrzeżenie: Nieustawienie poprawnych wartości dla Mailgun lub SMTP spowoduje, że LibreChat będzie używać niezabezpieczonego resetowania hasła!
Konfiguracja Mailgun (zalecane)
Mailgun jest szczególnie przydatny w przypadku wdrożeń na serwerach, które blokują porty SMTP. Gdy ustawione są zarówno MAILGUN_API_KEY, jak i MAILGUN_DOMAIN, LibreChat będzie używać Mailgun zamiast SMTP.
| Key | Type | Description | Example |
|---|---|---|---|
| MAILGUN_API_KEY | string | Twój klucz API Mailgun (wymagany dla Mailgun). | MAILGUN_API_KEY= |
| MAILGUN_DOMAIN | string | Twoja domena Mailgun (wymagana dla Mailgun). | MAILGUN_DOMAIN=mg.yourdomain.com |
| MAILGUN_HOST | string | Niestandardowy host API Mailgun (opcjonalnie). Użyj https://api.eu.mailgun.net dla regionu UE. | MAILGUN_HOST=https://api.mailgun.net |
| EMAIL_FROM | string | Adres e-mail nadawcy. Wymagane. | [email protected] |
| EMAIL_FROM_NAME | string | Nazwa nadawcy (domyślnie APP_TITLE, jeśli nie ustawiono). | EMAIL_FROM_NAME= |
Konfiguracja SMTP
Jeśli Mailgun nie jest skonfigurowany, LibreChat powróci do ustawień SMTP.
Ostrzeżenie: Jeśli używasz
EMAIL_SERVICE, NIE ustawiaj rozszerzonych parametrów połączenia: HOST, PORT, ENCRYPTION, ENCRYPTION_HOSTNAME, ALLOW_SELFSIGNED.
Zobacz: nodemailer well-known-services
| Key | Type | Description | Example |
|---|---|---|---|
| EMAIL_SERVICE | string | Usługa e-mail (np. Gmail, Outlook). | EMAIL_SERVICE= |
| EMAIL_HOST | string | Host serwera poczty. | EMAIL_HOST= |
| EMAIL_PORT | number | Port serwera poczty. | EMAIL_PORT=25 |
| EMAIL_ENCRYPTION | string | Metoda szyfrowania (starttls, tls, itp.). | EMAIL_ENCRYPTION= |
| EMAIL_ENCRYPTION_HOSTNAME | string | Nazwa hosta dla szyfrowania. | EMAIL_ENCRYPTION_HOSTNAME= |
| EMAIL_ALLOW_SELFSIGNED | boolean | Zezwalaj na certyfikaty z podpisem własnym. | EMAIL_ALLOW_SELFSIGNED= |
| EMAIL_USERNAME | string | Nazwa użytkownika do uwierzytelniania. | EMAIL_USERNAME= |
| EMAIL_PASSWORD | string | Hasło do uwierzytelniania. | EMAIL_PASSWORD= |
| EMAIL_FROM_NAME | string | Nazwa nadawcy | EMAIL_FROM_NAME= |
| EMAIL_FROM | string | Adres e-mail nadawcy. Wymagane. | [email protected] |
Firebase CDN
Zobacz: Konfiguracja Firebase CDN
Ważne
- Jeśli używasz Firebase jako strategii przechowywania plików, ustaw
fileStrategylubfileStrategiesnafirebasew swoim pliku konfiguracyjnymlibrechat.yaml. Aby uzyskać więcej informacji na temat konfigurowania plikulibrechat.yaml, zapoznaj się z Przewodnikiem konfiguracji YAML: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| FIREBASE_API_KEY | string | Klucz API dla Twojego projektu Firebase. | FIREBASE_API_KEY= |
| FIREBASE_AUTH_DOMAIN | string | Domena Firebase Auth dla Twojego projektu. | FIREBASE_AUTH_DOMAIN= |
| FIREBASE_PROJECT_ID | string | ID Twojego projektu Firebase. | FIREBASE_PROJECT_ID= |
| FIREBASE_STORAGE_BUCKET | string | Zasobnik Firebase Storage dla Twojego projektu. | FIREBASE_STORAGE_BUCKET= |
| FIREBASE_MESSAGING_SENDER_ID | string | Identyfikator nadawcy Firebase Cloud Messaging. | FIREBASE_MESSAGING_SENDER_ID= |
| FIREBASE_APP_ID | string | Identyfikator aplikacji Firebase dla Twojego projektu. | FIREBASE_APP_ID= |
Amazon S3 i CloudFront
Zobacz: Konfiguracja Amazon S3 oraz CloudFront z S3
Ważne
Jeśli używasz S3 jako strategii przechowywania plików, ustaw fileStrategy lub fileStrategies w swoim pliku konfiguracyjnym librechat.yaml. Jeśli korzystasz z CloudFront, S3 jest nadal wymagane jako źródło przechowywania (storage origin).
| Key | Type | Description | Example |
|---|---|---|---|
| AWS_ACCESS_KEY_ID | string | Twój identyfikator klucza dostępu użytkownika IAM. Opcjonalny w przypadku korzystania z IRSA. | AWS_ACCESS_KEY_ID=your_access_key_id |
| AWS_SECRET_ACCESS_KEY | string | Twój klucz tajny dostępu użytkownika IAM. Opcjonalny w przypadku korzystania z IRSA. | AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| AWS_REGION | string | Region AWS, w którym znajduje się Twój bucket S3. | AWS_REGION=us-east-1 |
| AWS_BUCKET_NAME | string | Nazwa zasobnika S3 do przechowywania plików. | AWS_BUCKET_NAME=your_bucket_name |
| AWS_ENDPOINT_URL | string | Niestandardowy adres URL endpointu AWS (opcjonalnie). Dla usług kompatybilnych z S3. Uwzględnij schemat adresu URL, np. https://a7g8.da.idrivee2-32.com. | # AWS_ENDPOINT_URL=https://your_endpoint_url |
| AWS_FORCE_PATH_STYLE | boolean | Ustaw na true dla dostawców kompatybilnych z S3, którzy wymagają adresów URL w stylu ścieżki (np. MinIO, Hetzner, Backblaze B2). Nie jest wymagane dla AWS S3. Domyślnie: false. | # AWS_FORCE_PATH_STYLE=false |
| CLOUDFRONT_KEY_PAIR_ID | string | Identyfikator pary kluczy publicznych CloudFront. Wymagany dla podpisanych plików cookie oraz podpisanych adresów URL pobierania CloudFront. | # CLOUDFRONT_KEY_PAIR_ID=K1234567890ABC |
| CLOUDFRONT_PRIVATE_KEY | string | Klucz prywatny PEM dla CloudFront. Wymagany dla podpisanych plików cookie oraz podpisanych adresów URL pobierania CloudFront. Zachowaj znaki nowej linii PEM podczas wstrzykiwania tego sekretu. | # CLOUDFRONT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----" |
Uwaga: W przypadku wdrożeń Kubernetes (np. na EKS), zamiast podawania jawnych poświadczeń można użyć IRSA (IAM Roles for Service Accounts). W takim przypadku wymagane są tylko
AWS_REGIONorazAWS_BUCKET_NAME.
Azure Blob Storage CDN
Zobacz: Konfiguracja Azure Blob Storage CDN
Ważne
Jeśli używasz Azure Blob Storage jako strategii przechowywania plików, ustaw fileStrategy lub fileStrategies na azure_blob w pliku konfiguracyjnym librechat.yaml.
| Key | Type | Description | Example |
|---|---|---|---|
| AZURE_STORAGE_CONNECTION_STRING | string | Ciąg połączenia Azure Blob Storage. Użyj tego LUB AZURE_STORAGE_ACCOUNT_NAME dla Managed Identity. | AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=... |
| AZURE_STORAGE_ACCOUNT_NAME | string | Nazwa konta Azure Storage. Użyj do uwierzytelniania za pomocą Managed Identity (nie ustawiaj ciągu połączenia). | # AZURE_STORAGE_ACCOUNT_NAME=yourAccountName |
| AZURE_STORAGE_PUBLIC_ACCESS | boolean | Włącz publiczny dostęp do obiektów blob. Domyślnie: false. | AZURE_STORAGE_PUBLIC_ACCESS=false |
| AZURE_CONTAINER_NAME | string | Nazwa kontenera dla przechowywania plików. Domyślnie: files. | AZURE_CONTAINER_NAME=files |
Uwaga: Użyj albo
AZURE_STORAGE_CONNECTION_STRING(Opcja A), alboAZURE_STORAGE_ACCOUNT_NAMEz Managed Identity (Opcja B), nie obu jednocześnie.
UI
Przycisk pomocy i FAQ
| Key | Type | Description | Example |
|---|---|---|---|
| HELP_AND_FAQ_URL | string | URL pomocy i FAQ. Jeśli puste lub zakomentowane, przycisk jest włączony. Aby wyłączyć przycisk pomocy i FAQ, ustaw na "/". | HELP_AND_FAQ_URL=https://librechat.ai |
Zachowanie:
Ustawia nagłówki Cache-Control dla plików statycznych. Te konfiguracje są uruchamiane tylko wtedy, gdy NODE_ENV jest ustawione na production.
Prawidłowe ustawienie nagłówków pamięci podręcznej (cache) ma kluczowe znaczenie dla optymalizacji wydajności i efektywności Twojej aplikacji internetowej. Kontrolując czas, przez jaki przeglądarki i sieci CDN przechowują kopie plików statycznych, możesz znacząco zmniejszyć obciążenie serwera, skrócić czas ładowania stron oraz poprawić ogólne wrażenia użytkownika.
- Odkomentuj
STATIC_CACHE_MAX_AGE, aby zmienićmax-agedla plików statycznych. Domyślnie wartość ta jest ustawiona na 4 tygodnie. - Odkomentuj
STATIC_CACHE_S_MAX_AGE, aby zmienićs-maxagedla plików statycznych. Domyślnie wartość ta jest ustawiona na 1 tydzień.- Dotyczy to shared cache, która jest używana przez sieci CDN i serwery proxy.
Tytuł aplikacji i stopka
| Key | Type | Description | Example |
|---|---|---|---|
| APP_TITLE | string | Tytuł aplikacji | APP_TITLE=LibreChat |
| CUSTOM_FOOTER | string | Niestandardowa stopka. | # CUSTOM_FOOTER="My custom footer" |
| TEMP_CHAT_RETENTION_HOURS | number | **Przestarzałe:** Użyj `interface.temporaryChatRetention` w pliku librechat.yaml. Liczba godzin przechowywania tymczasowych czatów. Domyślnie: 720 (30 dni). | # TEMP_CHAT_RETENTION_HOURS=168 |
Zachowanie:
- Odkomentuj
CUSTOM_FOOTER, aby dodać własną stopkę. - Odkomentuj i pozostaw
CUSTOM_FOOTERpustym, aby usunąć stopkę. - You can now add one or more links in the CUSTOM_FOOTER value using the following format:
[Anchor text](URL). Each link should be delineated with a pipe (|).
Przykład Markdown:
CUSTOM_FOOTER=[Link 1](http://example1.com) | [Link 2](http://example2.com)
Czapka urodzinowa
| Key | Type | Description | Example |
|---|---|---|---|
| SHOW_BIRTHDAY_ICON | boolean | Pokaż ikonę czapki urodzinowej. | # SHOW_BIRTHDAY_ICON=true |
Zachowanie:
- Ikona czapki urodzinowej pojawi się automatycznie 11 lutego (w urodziny LibreChat).
- Ustaw
SHOW_BIRTHDAY_ICONnafalse, aby wyłączyć ikonę urodzinową. - Ustaw
SHOW_BIRTHDAY_ICONnatrue, aby włączyć czapkę urodzinową na stałe.
Analityka
Google Tag Manager
LibreChat obsługuje Google Tag Manager do celów analitycznych. Aby włączyć tę funkcję w LibreChat, będziesz potrzebować identyfikatora Google Tag Manager. Postępuj zgodnie z tym przewodnikiem, aby wygenerować identyfikator Google Tag Manager i skonfigurować Google Analytics. Następnie ustaw zmienną środowiskową ANALYTICS_GTM_ID na swój identyfikator Google Tag Manager.
Uwaga: Jeśli ANALYTICS_GTM_ID nie zostanie ustawione, Google Tag Manager nie będzie włączony. Jeśli zostanie ustawione nieprawidłowo, zobaczysz nieudane żądania do gtm.js
| Key | Type | Description | Example |
|---|---|---|---|
| ANALYTICS_GTM_ID | string | Identyfikator Google Tag Manager. | ANALYTICS_GTM_ID= |
Import konwersacji
Skonfiguruj limity dla importów plików konwersacji, aby zapobiec problemom z pamięcią.
| Key | Type | Description | Example |
|---|---|---|---|
| CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES | number | Maksymalny rozmiar pliku w bajtach dla importów konwersacji. Domyślnie: 0 (brak wymuszonego limitu). Przykład: 262144000 (250 MiB). | # CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES=262144000 |
Podgląd plików w tekście
Kontroluj, jak duże mogą być wygenerowane pliki, zanim LibreChat pominie ekstrakcję podglądu inline i pozostawi je wyłącznie do pobrania.
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_PREVIEW_MAX_EXTRACT_BYTES | number | Maksymalny rozmiar pliku źródłowego w bajtach dla podglądów inline artefaktów wykonywania kodu. Domyślnie: 2097152 (2 MiB). Renderowane podglądy HTML są nadal ograniczone oddzielnie, więc bardzo rozbudowane pliki mogą pominąć podgląd nawet poniżej tej wartości. | # FILE_PREVIEW_MAX_EXTRACT_BYTES=2097152 |
MCP (Model Context Protocol)
Skonfiguruj ustawienia Model Context Protocol w celu usprawnienia zarządzania serwerem i obsługi OAuth.
Konfiguracja serwera MCP
| Key | Type | Description | Example |
|---|---|---|---|
| MCP_OAUTH_ON_AUTH_ERROR | boolean | Traktuj odpowiedzi 401/403 jako wymóg OAuth, gdy nie znaleziono metadanych OAuth. | MCP_OAUTH_ON_AUTH_ERROR=true |
| MCP_OAUTH_DETECTION_TIMEOUT | number | Limit czasu dla żądań wykrywania OAuth w milisekundach. | MCP_OAUTH_DETECTION_TIMEOUT=5000 |
| MCP_OAUTH_HANDLING_TIMEOUT | number | Czas oczekiwania LibreChat na zakończenie procesu MCP OAuth przez użytkownika przed przekroczeniem limitu czasu. Domyślnie: 600000 ms (10 minut). | MCP_OAUTH_HANDLING_TIMEOUT=600000 |
| MCP_OAUTH_FLOW_TTL | number | Jak długo przechowywany jest stan przepływu MCP OAuth. LibreChat ogranicza tę wartość powyżej MCP_OAUTH_HANDLING_TIMEOUT, aby wywołania zwrotne bliskie terminu końcowego mogły zostać ukończone. Domyślnie: 900000 ms (15 minut). | MCP_OAUTH_FLOW_TTL=900000 |
| MCP_CONNECTION_CHECK_TTL | number | Buforuj sprawdzanie stanu połączenia przez tę liczbę milisekund, aby uniknąć kosztownej weryfikacji. | MCP_CONNECTION_CHECK_TTL=30000 |
| MCP_TOOLS_LIST_MAX_PAGES | number | Maksymalna liczba narzędzi/stron listy do zażądania, gdy serwer MCP stosuje paginację listy narzędzi (paginacja kursorem). Ogranicza pętlę paginacji, aby nieprawidłowo działający serwer nie mógł zablokować wykrywania narzędzi. Wartość ograniczona do minimum 1. Domyślnie: 50. | MCP_TOOLS_LIST_MAX_PAGES=50 |
| MCP_SKIP_CODE_CHALLENGE_CHECK | boolean | Pomiń walidację metody wyzwania kodu (code challenge). Po ustawieniu na true, wymusza S256 code challenge, nawet jeśli nie jest on reklamowany w .well-known/openid-configuration | MCP_SKIP_CODE_CHALLENGE_CHECK=false |
| MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES | number | Maksymalna liczba bajtów dozwolona w niebędącej typu GET, przesyłanej strumieniowo odpowiedzi HTTP MCP przed jej odrzuceniem. Ustaw na 0, aby wyłączyć. Domyślnie: 16777216 (16 MiB). | # MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES=16777216 |
| MCP_STREAMABLE_HTTP_MAX_LINE_BYTES | number | Maksymalna liczba bajtów dozwolona w jednej linii SSE dla strumieniowych odpowiedzi HTTP MCP innych niż GET. Ustaw na 0, aby wyłączyć. Domyślnie: 5242880 (5 MiB). | # MCP_STREAMABLE_HTTP_MAX_LINE_BYTES=5242880 |
Inne
Redis
Redis zapewnia znaczący wzrost wydajności i umożliwia skalowanie poziome dla LibreChat.
Uwaga: Obsługa Redis jest eksperymentalna i podczas jej używania możesz napotkać pewne problemy.
Ważne: Jeśli używasz Redis, po zmianie jakichkolwiek ustawień LibreChat należy wyczyścić pamięć podręczną (cache).
Aby uzyskać szczegółową konfigurację i przykłady, zobacz: Przewodnik konfiguracji Redis
| Key | Type | Description | Example |
|---|---|---|---|
| USE_REDIS | boolean | Włącz Redis do buforowania i przechowywania sesji. Gdy ustawione na true, należy podać REDIS_URI. | USE_REDIS=true |
| USE_REDIS_STREAMS | boolean | Włącz Redis dla wznawialnych strumieni LLM. Domyślnie przyjmuje wartość USE_REDIS, jeśli nie ustawiono inaczej. Ustaw na false, aby użyć pamięci operacyjnej do obsługi strumieni. | # USE_REDIS_STREAMS=true |
| REDIS_URI | string | URI połączenia Redis. Dla pojedynczej instancji: `redis://host:port`. Dla klastra: adresy URI oddzielone przecinkami. | REDIS_URI=redis://127.0.0.1:6379 |
| USE_REDIS_CLUSTER | boolean | Włącz tryb klastra Redis podczas korzystania z pojedynczego URI | # USE_REDIS_CLUSTER="true" |
| REDIS_CLUSTER_SAFE_DELETE | boolean | Usuwaj klucze pamięci podręcznej Redis pojedynczo, aby uniknąć błędów CROSSSLOT w zarządzanych usługach Redis z pojedynczym punktem końcowym, które wewnętrznie partycjonują klucze. | # REDIS_CLUSTER_SAFE_DELETE=true |
| REDIS_USERNAME | string | Nazwa użytkownika Redis do uwierzytelniania. Nadpisuje nazwę użytkownika w URI, jeśli podano obie wartości. | # REDIS_USERNAME=your_redis_username |
| REDIS_PASSWORD | string | Hasło Redis do uwierzytelniania. Nadpisuje hasło w URI, jeśli podano oba. | # REDIS_PASSWORD=your_redis_password |
| REDIS_CA | string | Ścieżka do certyfikatu CA dla weryfikacji TLS podczas korzystania z protokołu rediss://. | # REDIS_CA=/path/to/ca-cert.pem |
| REDIS_KEY_PREFIX | string | Statyczny prefiks dla wszystkich kluczy Redis zapobiegający zanieczyszczeniu między wdrożeniami. | # REDIS_KEY_PREFIX=librechat-prod-v2 |
| REDIS_KEY_PREFIX_VAR | string | Nazwa zmiennej środowiskowej zawierająca dynamiczny prefiks (np. K_REVISION dla Cloud Run). Nie można używać z REDIS_KEY_PREFIX. | # REDIS_KEY_PREFIX_VAR=K_REVISION |
| REDIS_MAX_LISTENERS | number | Maksymalna liczba odbiorców zdarzeń na klienta Redis. Zapobiega wyciekom pamięci. Domyślnie: 40. | # REDIS_MAX_LISTENERS=40 |
| REDIS_PING_INTERVAL | number | Interwał ping w sekundach w celu utrzymania połączeń. Domyślnie: 0 (wyłączone). Ustaw tylko w przypadku występowania przekroczeń limitu czasu. | # REDIS_PING_INTERVAL=300 |
| FORCED_IN_MEMORY_CACHE_NAMESPACES | string | Klucze pamięci podręcznej oddzielone przecinkami, aby wymusić przechowywanie w pamięci RAM, nawet gdy Redis jest włączony. | # FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES |
| REDIS_USE_ALTERNATIVE_DNS_LOOKUP | boolean | Włącz alternatywne dnsLookup dla połączeń TLS z AWS Elasticache. Wymagane dla klastrów Elasticache z TLS. | # REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true |
Uwagi:
- Gdy
USE_REDIS=true, musisz podaćREDIS_URI, w przeciwnym razie aplikacja zgłosi błąd. - W przypadku trybu Redis Cluster należy podać wiele identyfikatorów URI:
redis://node1:7001,redis://node2:7002,redis://node3:7003(tryb klastra jest wykrywany automatycznie). - W przypadku zarządzanych usług Redis z pojedynczym punktem końcowym, które wewnętrznie dzielą klucze na partycje (sharding), należy zachować
USE_REDIS_CLUSTER=falsei ustawićREDIS_CLUSTER_SAFE_DELETE=true, jeśli czyszczenie pamięci podręcznej kończy się błędamiCROSSSLOT. - Użyj protokołu
rediss://dla połączeń TLS i ustawREDIS_CA, jeśli Twój urząd certyfikacji (CA) nie jest publicznie zaufany. REDIS_KEY_PREFIX_VARorazREDIS_KEY_PREFIXwzajemnie się wykluczają.- AWS Elasticache z TLS: Elasticache może wymagać użycia alternatywnego dnsLookup dla połączeń TLS. Ustaw
REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true, jeśli używasz Elasticache z TLS. Zobacz dokumentację ioredis, aby uzyskać więcej szczegółów.
Wybór lidera
Skonfiguruj rozproszony wybór lidera dla wdrożeń wieloinstancyjnych za pomocą Redis. Wybór lidera zapewnia, że tylko jedna instancja wykonuje określone operacje, takie jak zaplanowane zadania.
| Key | Type | Description | Example |
|---|---|---|---|
| LEADER_LEASE_DURATION | number | Czas trwania w sekundach, przez jaki dzierżawa lidera jest ważna przed wygaśnięciem. Domyślnie: 25. | LEADER_LEASE_DURATION=25 |
| LEADER_RENEW_INTERVAL | number | Interwał w sekundach, z jakim lider odnawia swoją dzierżawę. Domyślnie: 10. | LEADER_RENEW_INTERVAL=10 |
| LEADER_RENEW_ATTEMPTS | number | Maksymalna liczba prób ponowienia w przypadku niepowodzenia odnowienia dzierżawy. Domyślnie: 3. | LEADER_RENEW_ATTEMPTS=3 |
| LEADER_RENEW_RETRY_DELAY | number | Opóźnienie w sekundach między próbami ponowienia przy odnawianiu dzierżawy. Domyślnie: 0.5. | LEADER_RENEW_RETRY_DELAY=0.5 |
Uwagi:
- Wybór lidera (leader election) wymaga włączonego Redis (
USE_REDIS=true). - Te ustawienia są istotne tylko w przypadku wdrożeń wieloinstancyjnych.
- Dzierżawa lidera musi zostać odnowiona przed wygaśnięciem, aby utrzymać przywództwo.
- Jeśli odnowienie dzierżawy nie powiedzie się po maksymalnej liczbie prób, instancja zrzeknie się przywództwa.
Jaka jest ta instrukcja?