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

Variables d'environnement

Guide complet pour configurer l'environnement de votre application avec le fichier `.env`. Ce document est votre ressource unique pour comprendre et personnaliser les variables d'environnement qui façonneront le comportement de votre application dans différents contextes.

Bienvenue dans le guide complet pour configurer l'environnement de votre application avec le fichier .env. Ce document est votre ressource unique pour comprendre et personnaliser les variables d'environnement qui façonneront le comportement de votre application dans différents contextes.

Bien que les paramètres par défaut fournissent une base solide pour une installation docker standard, l'exploration de ce guide révélera tout le potentiel de LibreChat. Ce guide vous permet d'adapter LibreChat à vos besoins précis. Découvrez comment ajuster la disponibilité des modèles de langage, intégrer les connexions sociales, gérer le système de modération automatique, et bien plus encore. Il s'agit de vous donner le contrôle pour affiner LibreChat afin d'obtenir une expérience utilisateur optimale.

Rappel : Veuillez redémarrer LibreChat pour que les modifications de configuration prennent effet

Alternativement, vous pouvez créer un nouveau fichier nommé docker-compose.override.yml dans le même répertoire que votre fichier docker-compose.yml principal pour LibreChat, où vous pouvez définir vos variables .env selon vos besoins sous environment, ou modifier la configuration par défaut fournie par le docker-compose.yml principal, sans avoir besoin de modifier directement ou de dupliquer le fichier entier.

Pour plus d'informations, consultez :


Configuration du serveur

Port

  • Le serveur écoute sur un port spécifique.
  • La variable d'environnement PORT définit le port sur lequel le serveur écoute. Par défaut, elle est réglée sur 3080.
KeyTypeDescriptionExample
HOSTstringSpécifie l'hôte.HOST=localhost
PORTnumberSpécifie le port.PORT=3080

Trust proxy

Utilisez l'adresse qui se trouve à au plus n sauts de l'application Express. req.socket.remoteAddress est le premier saut, et les autres sont recherchés dans l'en-tête X-Forwarded-For de droite à gauche. Une valeur de 0 signifie que la première adresse non approuvée serait req.socket.remoteAddress, c'est-à-dire qu'il n'y a pas de proxy inverse. La valeur par défaut de la variable d'environnement TRUST_PROXY est définie sur 1.

Consultez Express.js - trust proxy pour plus d'informations à ce sujet.

KeyTypeDescriptionExample
TRUST_PROXYnumberSpécifie le nombre de sauts.TRUST_PROXY=1

Configuration des identifiants

Pour stocker les identifiants de manière sécurisée, vous avez besoin d'une clé et d'un IV fixes. Vous pouvez les définir ici pour les environnements de production et de développement.

KeyTypeDescriptionExample
CREDS_KEYstringClé de 32 octets (64 caractères en hexadécimal) pour le stockage sécurisé des identifiants. Requis pour le démarrage de l'application.CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0
CREDS_IVstringIV de 16 octets (32 caractères en hexadécimal) pour le stockage sécurisé des identifiants. Requis pour le démarrage de l'application.CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb

Avertissement

Avertissement : Si vous ne définissez pas CREDS_KEY et CREDS_IV, l'application plantera au démarrage. - Vous pouvez utiliser ce générateur de clés pour les générer rapidement.

Gestion des fichiers statiques

KeyTypeDescriptionExample
STATIC_CACHE_MAX_AGEstringCache-Control max-age en secondesSTATIC_CACHE_MAX_AGE=172800
STATIC_CACHE_S_MAX_AGEstringCache-Control s-maxage en secondes pour les caches partagés (CDN et proxys)STATIC_CACHE_S_MAX_AGE="86400"
DISABLE_COMPRESSIONbooleanDésactive la compression pour les fichiers statiques.DISABLE_COMPRESSION=false
ENABLE_IMAGE_OUTPUT_GZIP_SCANbooleanActive la diffusion de versions gzippées des images téléchargées si elles sont présentes dans le même dossier.ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true
ENABLE_STATIC_ASSET_BROTLIbooleanPermet de servir des versions pré-compressées Brotli des ressources statiques de l'application lorsqu'elles sont disponibles.ENABLE_STATIC_ASSET_BROTLI=true

Comportement :

Définit les en-têtes Cache-Control pour les fichiers statiques. Ces configurations ne se déclenchent que lorsque NODE_ENV est défini sur production.

  • Décommentez STATIC_CACHE_MAX_AGE pour modifier le max-age local des fichiers statiques. Par défaut, il est réglé sur 2 jours (172800 secondes).
  • Décommentez STATIC_CACHE_S_MAX_AGE pour définir le s-maxage pour les caches partagés (CDN et proxys). Par défaut, cette valeur est fixée à 1 jour (86400 secondes).
  • Décommentez DISABLE_COMPRESSION pour désactiver la compression des fichiers statiques. Par défaut, la compression est activée.
  • Décommentez ENABLE_IMAGE_OUTPUT_GZIP_SCAN pour activer l'analyse et la diffusion de versions compressées (gzip) des images si elles ont été pré-compressées dans le même dossier, avec le même nom et une extension .gz. Par défaut, l'analyse gzip pour les images téléchargées est désactivée.
  • Décommentez ENABLE_STATIC_ASSET_BROTLI pour servir des versions précompressées .br des ressources statiques de l'application lorsqu'elles existent. Lorsqu'il est activé, Brotli est préféré à gzip pour les fichiers statiques servis par l'API.

Avertissement

  • Ceci affecte uniquement les fichiers statiques servis par le serveur API et ne s'applique pas à Firebase, NGINX, ou toute autre configuration.

Contrôle du cache HTML de l'index

KeyTypeDescriptionExample
INDEX_CACHE_CONTROLstringEn-tête Cache-Control pour index.htmlINDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate
INDEX_PRAGMAstringEn-tête Pragma pour index.htmlINDEX_PRAGMA=no-cache
INDEX_EXPIRESstringEn-tête Expires pour index.htmlINDEX_EXPIRES=0

Comportement :

Contrôle les en-têtes de mise en cache spécifiquement pour la réponse index.html. Par défaut, ces paramètres empêchent la mise en cache pour garantir que les utilisateurs obtiennent toujours la dernière version de l'application.

Note

Contrairement aux ressources statiques qui sont mises en cache pour des raisons de performance, les en-têtes de cache du fichier index.html sont configurés séparément afin de garantir que les utilisateurs obtiennent toujours le dernier shell de l'application.

Base de données MongoDB

KeyTypeDescriptionExample
MONGO_URIstringSpécifie l'URI MongoDB.MONGO_URI=mongodb://127.0.0.1:27017/LibreChat

Modifiez ceci pour votre URI MongoDB s'il est différent. Vous devriez ajouter LibreChat ou votre propre APP_TITLE comme nom de base de données dans l'URI.

Si vous utilisez une base de données en ligne, le format de l'URI est mongodb+srv://<username>:<password>@<host>/<database>?<options>. Votre MONGO_URI devrait ressembler à ceci :

  • mongodb+srv://username:[email protected]/LibreChat?retryWrites=true (retryWrites est la seule option dont vous avez besoin lors de l'utilisation de la base de données en ligne.)

Configuration du pool de connexions MongoDB

KeyTypeDescriptionExample
MONGO_MAX_POOL_SIZEnumberLe nombre maximal de connexions dans le pool de connexions.# MONGO_MAX_POOL_SIZE=
MONGO_MIN_POOL_SIZEnumberLe nombre minimum de connexions dans le pool de connexions.# MONGO_MIN_POOL_SIZE=
MONGO_MAX_CONNECTINGnumberLe nombre maximal de connexions pouvant être en cours d'établissement simultanément par le pool de connexions.# MONGO_MAX_CONNECTING=
MONGO_MAX_IDLE_TIME_MSnumberLe nombre maximal de millisecondes pendant lesquelles une connexion peut rester inactive dans le pool avant d'être supprimée et fermée.# MONGO_MAX_IDLE_TIME_MS=
MONGO_WAIT_QUEUE_TIMEOUT_MSnumberLe temps maximum en millisecondes pendant lequel un thread peut attendre qu'une connexion devienne disponible.# MONGO_WAIT_QUEUE_TIMEOUT_MS=

Configuration du schéma MongoDB

KeyTypeDescriptionExample
MONGO_AUTO_INDEXbooleanDéfinissez sur false pour désactiver la création automatique d'index pour tous les modèles associés à cette connexion. Lorsqu'il est omis, utilise le comportement par défaut de Mongoose.# MONGO_AUTO_INDEX=
MONGO_AUTO_CREATEbooleanDéfinir sur false pour désactiver l'appel automatique de createCollection() par Mongoose sur chaque modèle créé sur cette connexion. Lorsqu'il est omis, utilise le comportement par défaut de Mongoose.# MONGO_AUTO_CREATE=

Alternativement, vous pouvez utiliser documentDb qui émule mongoDb mais il :

  • ne prend pas en charge retryWrites - utilisez retryWrites=false
  • nécessite une connexion TLS, utilisez donc les paramètres tls=true pour activer TLS et tlsCAFile=/path-to-ca/bundle.pem pour pointer vers le fichier de bundle CA fourni par AWS

L'URI pour documentDb ressemblera à :

  • mongodb+srv://username:password@domain/dbname?retryWrites=false&tls=true&tlsCAFile=/path-to-ca/bundle.pem

Voir aussi :

Domaines d'application

Pour configurer LibreChat pour une utilisation locale ou un déploiement sur un domaine personnalisé, définissez les variables d'environnement suivantes :

KeyTypeDescriptionExample
DOMAIN_CLIENTstringSpécifie le domaine côté client.DOMAIN_CLIENT=http://localhost:3080
DOMAIN_SERVERstringSpécifie le domaine côté serveur.DOMAIN_SERVER=http://localhost:3080
ADMIN_PANEL_URLstringURL de base du panneau d'administration externe utilisé pour les redirections OAuth/SSO de l'administrateur lorsque le panneau d'administration est hébergé séparément. N'incluez pas de barre oblique finale.ADMIN_PANEL_URL=https://admin.example.com/admin
ADMIN_PANEL_SESSION_SECRETstringClé de chiffrement de session requise pour le panneau d'administration intégré (32 caractères minimum). Les services admin-panel de docker-compose et deploy-compose la lisent en tant que SESSION_SECRET. Générez-la avec `openssl rand -hex 32` avant de démarrer la stack.ADMIN_PANEL_SESSION_SECRET=<your-32-char-random-string>
ADMIN_PANEL_PORTnumberPort hôte pour le panneau d'administration intégré dans le docker-compose par défaut. Dans deploy-compose, le panneau est servi à l'adresse http://admin.localhost via nginx à la place.ADMIN_PANEL_PORT=3000

Lors du déploiement de LibreChat sur un domaine personnalisé, remplacez http://localhost:3080 par votre URL déployée.

  • par ex. https://librechat.example.com.

Empêcher l'indexation par les moteurs de recherche publics

Par défaut, votre site web ne sera pas indexé par les moteurs de recherche publics (par exemple Google, Bing, …). Cela signifie que les utilisateurs ne pourront pas trouver votre site web via ces moteurs de recherche. Si vous souhaitez rendre votre site web plus visible et accessible, vous pouvez modifier le paramètre suivant sur false

KeyTypeDescriptionExample
NO_INDEXbooleanEmpêche les moteurs de recherche publics d'indexer votre site web.NO_INDEX=true

Note : Cette méthode n'est pas garantie de fonctionner pour tous les moteurs de recherche, et certains moteurs de recherche peuvent toujours indexer votre site web ou votre page web à d'autres fins, telles que la mise en cache ou l'archivage. Par conséquent, vous ne devriez pas vous fier uniquement à cette méthode pour protéger des informations sensibles ou confidentielles sur votre site web ou votre page web.

Journalisation

LibreChat dispose d'un système de journalisation centralisé intégré, consultez Logging System pour plus d'informations.

Fichiers journaux

  • La journalisation de débogage est activée par défaut et est cruciale pour le développement.
  • Pour signaler des problèmes, reproduisez l'erreur et soumettez les journaux depuis ./api/logs/debug-%DATE%.log sur : LibreChat GitHub Issues
  • Les journaux d'erreurs sont stockés au même emplacement.

Variables d'environnement

KeyTypeDescriptionExample
DEBUG_LOGGINGbooleanGarder les journaux de débogage actifs.DEBUG_LOGGING=true
DEBUG_CONSOLEbooleanActiver les logs détaillés de la console/stdout dans le même format que les logs de débogage des fichiers.DEBUG_CONSOLE=false
LOG_TO_FILEbooleanDéfinir sur false pour désactiver les transports Winston basés sur des fichiers tout en conservant la journalisation console disponible.LOG_TO_FILE=true
CONSOLE_JSONbooleanActiver les journaux console/stdout JSON détaillés adaptés aux déploiements cloud comme GCP/AWS.CONSOLE_JSON=false
CONSOLE_JSON_STRING_LENGTHnumberConfigurez la taille de troncature pour les valeurs de chaîne dans les journaux de console/stdout JSON. Par défaut : 255.# CONSOLE_JSON_STRING_LENGTH=255
LIBRECHAT_LOG_DIRstringRépertoire personnalisé pour les fichiers journaux. La valeur par défaut est /app/logs (Docker) ou api/logs (développement local).# LIBRECHAT_LOG_DIR=/custom/log/path
MEM_DIAGbooleanActiver les diagnostics de mémoire — enregistre des instantanés du tas/RSS toutes les 60 secondes. Activé automatiquement lors de l'exécution avec --inspect.# MEM_DIAG=true
AGENT_DEBUG_LOGGINGbooleanActive la journalisation de débogage détaillée dans le contrôleur d'agent (nombre de jetons, diagnostics de réduction de contexte).# AGENT_DEBUG_LOGGING=true

Remarque :

  • DEBUG_LOGGING peut être utilisé avec DEBUG_CONSOLE ou CONSOLE_JSON, mais pas les deux en même temps.
  • DEBUG_CONSOLE et CONSOLE_JSON sont mutuellement exclusifs.
  • CONSOLE_JSON : Lors de la gestion des journaux de console dans les déploiements cloud (tels que GCP ou AWS), l'activation de cette option permettra de vider les journaux avec un horodatage UTC et de les formater au format JSON.

Remarque : DEBUG_CONSOLE n'est pas recommandé, car les sorties peuvent être assez verbeuses, et il est donc désactivé par défaut.

Autorisation

UID et GID sont des numéros attribués par Linux à chaque utilisateur et groupe sur le système. Si vous rencontrez des problèmes de permissions, définissez ici l'UID et le GID de l'utilisateur exécutant la commande Docker Compose. Les applications dans le conteneur s'exécuteront avec ces UID/GID.

KeyTypeDescriptionExample
UIDnumberL'ID utilisateur.# UID=1000
GIDnumberL'ID du groupe.# GID=1000

Traçage OpenTelemetry

LibreChat peut émettre des traces OpenTelemetry backend pour la visibilité générale de l'API, HTTP, MongoDB, Mongoose, Redis et des requêtes sortantes. Les spans au niveau des commandes Redis sont optionnels afin que les traces par défaut restent de haut niveau. Utilisez Langfuse pour l'observabilité des prompts/modèles spécifique à l'IA générative.

KeyTypeDescriptionExample
OTEL_TRACING_ENABLEDbooleanActiver le traçage OpenTelemetry du backend. Le traçage reste désactivé lorsque OTEL_SDK_DISABLED=true.# OTEL_TRACING_ENABLED=false
OTEL_SERVICE_NAMEstringNom du service rapporté à OpenTelemetry. Par défaut : librechat.# OTEL_SERVICE_NAME=librechat
OTEL_SERVICE_VERSIONstringVersion du service rapportée à OpenTelemetry. Utilise la version du package par défaut si non définie.# OTEL_SERVICE_VERSION=
OTEL_EXPORTER_OTLP_ENDPOINTstringPoint de terminaison de l'exportateur OTLP de base.# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTstringendpoint OTLP spécifique aux traces. Remplace l'endpoint de base pour les traces lorsqu'il est défini.# OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=
OTEL_EXPORTER_OTLP_HEADERSstringEn-têtes de l'exportateur OTLP séparés par des virgules, tels que les métadonnées d'autorisation.# OTEL_EXPORTER_OTLP_HEADERS=
OTEL_TRACES_EXPORTERstringSélection de l'exportateur de traces.# OTEL_TRACES_EXPORTER=otlp
OTEL_TRACES_SAMPLERstringÉchantillonneur de trace OpenTelemetry. Exemple par défaut : parentbased_always_on.# OTEL_TRACES_SAMPLER=parentbased_always_on
OTEL_LOG_LEVELstringNiveau de journalisation du SDK OpenTelemetry.# OTEL_LOG_LEVEL=INFO
OTEL_SDK_DISABLEDbooleanDésactiver le SDK OpenTelemetry même si le traçage est activé.# OTEL_SDK_DISABLED=false
OTEL_IOREDIS_TRACING_ENABLEDbooleanActiver les spans au niveau des commandes Redis. Désactivé par défaut pour maintenir les traces du backend à un haut niveau.# OTEL_IOREDIS_TRACING_ENABLED=false

Real User Monitoring (Navigateur)

LibreChat peut publier la télémétrie de surveillance des utilisateurs réels (RUM) du navigateur vers des collecteurs OTLP compatibles avec HyperDX. RUM est désactivé par défaut.

KeyTypeDescriptionExample
RUM_ENABLEDbooleanActiver le Real User Monitoring du navigateur. Par défaut : false.# RUM_ENABLED=false
RUM_PROVIDERstringFournisseur de RUM pour navigateur. Prend actuellement en charge `hyperdx`.# RUM_PROVIDER=hyperdx
RUM_URLstringURL du collecteur public utilisé par le mode public-token.# RUM_URL=http://localhost:4318
RUM_SERVICE_NAMEstringNom du service rapporté par le SDK du navigateur. Par défaut : librechat-web.# RUM_SERVICE_NAME=librechat-web
RUM_ENVIRONMENTstringÉtiquette d'environnement signalée avec la télémétrie du navigateur.# RUM_ENVIRONMENT=development
RUM_AUTH_MODEstringMode d'authentification pour la télémétrie du navigateur. Utilisez `publicToken` ou `proxy`.# RUM_AUTH_MODE=publicToken
RUM_PUBLIC_TOKENstringJeton de navigateur public pour le mode public-token. Considérez ceci comme public et restreignez l'ingestion au niveau du collecteur.# RUM_PUBLIC_TOKEN=
RUM_PROXY_TARGET_URLstringURL de base du collecteur utilisée par le mode proxy authentifié. Requis lorsque `RUM_AUTH_MODE=proxy`.# RUM_PROXY_TARGET_URL=http://otel-collector:4318
RUM_PROXY_TIMEOUT_MSnumberDélai d'expiration de la requête proxy en millisecondes. Par défaut : 10000.# RUM_PROXY_TIMEOUT_MS=10000
RUM_TRACE_PROPAGATION_TARGETSstringOrigines ou URLs HTTPS propriétaires séparées par des virgules qui doivent recevoir des en-têtes traceparent.# RUM_TRACE_PROPAGATION_TARGETS=https://api.example.com
RUM_DISABLE_REPLAYbooleanDésactiver la relecture de session du navigateur. Par défaut : true.# RUM_DISABLE_REPLAY=true
RUM_CONSOLE_CAPTUREbooleanCapturer les journaux de la console du navigateur. Peut collecter des prompts, des réponses ou des charges utiles sensibles.# RUM_CONSOLE_CAPTURE=false
RUM_ADVANCED_NETWORK_CAPTUREbooleanCapture les charges utiles réseau détaillées. Peut collecter des prompts, des réponses ou des charges utiles sensibles.# RUM_ADVANCED_NETWORK_CAPTURE=false
RUM_SAMPLE_RATEnumberTaux d'échantillonnage de la télémétrie du navigateur de 0 à 1. Par défaut : 1.# RUM_SAMPLE_RATE=1

En mode publicToken, le navigateur envoie la télémétrie directement à RUM_URL avec RUM_PUBLIC_TOKEN. En mode proxy, le navigateur envoie la télémétrie via LibreChat ; le backend valide la session utilisateur, supprime les en-têtes d'authentification de l'application et transfère la télémétrie à RUM_PROXY_TARGET_URL. Les sessions invalides ou expirées sont rejetées avec une réponse 204 afin que les échecs de télémétrie du navigateur ne fassent pas apparaître les erreurs d'authentification API habituelles. Les résultats du proxy sont comptabilisés dans rum_proxy_requests_total avec les étiquettes endpoint et result sur le point de terminaison /metrics de l'API LibreChat.

Chemin de configuration - librechat.yaml

Spécifiez un emplacement alternatif pour le fichier de configuration de LibreChat. Vous pouvez spécifier un chemin absolu, un chemin relatif ou une URL. Le nom de fichier dans le chemin est flexible et n'a pas besoin d'être librechat.yaml ; tout fichier de configuration valide fonctionnera.

Note : Si vous préférez que LibreChat recherche le fichier de configuration dans le répertoire racine (ce qui est le comportement par défaut), laissez simplement cette option commentée.

KeyTypeDescriptionExample
CONFIG_PATHstringUn emplacement alternatif pour le fichier de configuration de LibreChat.# CONFIG_PATH=https://raw.githubusercontent.com/danny-avila/LibreChat/main/librechat.example.yaml

Compétences de déploiement

Les Deployment Skills sont chargés en lecture seule au démarrage depuis le système de fichiers et exposés aux utilisateurs ayant la fonctionnalité Skills activée.

KeyTypeDescriptionExample
DEPLOYMENT_SKILLS_DIRstringRépertoire contenant les Skills fournis par le déploiement. Par défaut `./skill` à la racine du projet.# DEPLOYMENT_SKILLS_DIR=./skill

Redémarrez LibreChat après avoir modifié ce répertoire ou tout fichier qu'il contient. Les Skills fournis par le déploiement ont priorité sur les Skills persistants portant le même nom.

Validation de la configuration

Par défaut, LibreChat s'arrêtera avec une erreur (code de sortie 1) si le fichier de configuration librechat.yaml contient des erreurs de validation. Ce comportement d'échec rapide permet de détecter les problèmes de configuration dès le début des pipelines de déploiement et empêche l'exécution avec des paramètres par défaut non intentionnels.

KeyTypeDescriptionExample
CONFIG_BYPASS_VALIDATIONbooleanLorsqu'il est défini sur `true`, le serveur enregistrera un avertissement et poursuivra son démarrage avec la configuration par défaut même si `librechat.yaml` contient des erreurs de validation. Cela préserve le comportement hérité.# CONFIG_BYPASS_VALIDATION=true

Avertissement

L'utilisation de CONFIG_BYPASS_VALIDATION=true n'est pas recommandée pour les environnements de production. Elle est destinée à servir de solution temporaire lors du débogage de problèmes de configuration. Corrigez toujours les erreurs de validation dans votre fichier de configuration.

Gestion des exceptions non interceptées

Par défaut, LibreChat quittera le processus lorsqu'une exception non interceptée se produit, ce qui est le comportement standard de Node.js. Vous pouvez passer outre ce comportement pour maintenir l'application en cours d'exécution après des exceptions non interceptées.

KeyTypeDescriptionExample
CONTINUE_ON_UNCAUGHT_EXCEPTIONbooleanLorsqu'il est défini sur `true`, l'application continuera de s'exécuter après avoir rencontré des exceptions non interceptées au lieu de quitter le processus.# CONTINUE_ON_UNCAUGHT_EXCEPTION=false

Avertissement

Non recommandé pour la production sauf si nécessaire. Les exceptions non interceptées peuvent laisser l'application dans un état imprévisible.

Endpoints

Dans cette section, vous pouvez configurer les endpoints et la sélection des modèles, leurs clés API, ainsi que les paramètres de proxy et de reverse proxy pour les endpoints qui le prennent en charge.

Configuration générale

Décommentez ENDPOINTS pour personnaliser les endpoints disponibles dans LibreChat.

KeyTypeDescriptionExample
ENDPOINTSstringListe séparée par des virgules des endpoint disponibles.# ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom
PROXYstringProxy sortant pour les clients côté serveur pris en charge. S'applique aux cibles HTTP et HTTPS.PROXY=
HTTP_PROXYstringJoker de proxy HTTP utilisé par les clients côté serveur pris en charge lorsque PROXY n'est pas défini.# HTTP_PROXY=
HTTPS_PROXYstringJoker de proxy HTTPS utilisé par les clients côté serveur pris en charge lorsque PROXY n'est pas défini.# HTTPS_PROXY=
NO_PROXYstringHôtes, domaines ou plages IP séparés par des virgules que les clients côté serveur pris en charge doivent contourner. La variante en minuscules no_proxy est également prise en compte.# NO_PROXY=
TITLE_CONVObooleanActiver la génération de titres pour tous les endpoint.TITLE_CONVO=true

Points de terminaison connus - librechat.yaml

KeyTypeDescriptionExample
ANYSCALE_API_KEYstringClé API pour Anyscale.# ANYSCALE_API_KEY=
APIPIE_API_KEYstringClé API pour Apipie.# APIPIE_API_KEY=
COHERE_API_KEYstringClé API pour Cohere.# COHERE_API_KEY=
FIREWORKS_API_KEYstringClé API pour Fireworks.# FIREWORKS_API_KEY=
GROQ_API_KEYstringClé API pour Groq.# GROQ_API_KEY=
MISTRAL_API_KEYstringClé API pour Mistral.# MISTRAL_API_KEY=
OPENROUTER_KEYstringClé API pour OpenRouter.# OPENROUTER_KEY=
PERPLEXITY_API_KEYstringClé API pour Perplexity.# PERPLEXITY_API_KEY=
SHUTTLEAI_API_KEYstringClé API pour ShuttleAI.# SHUTTLEAI_API_KEY=
TOGETHERAI_API_KEYstringClé API pour TogetherAI.# TOGETHERAI_API_KEY=
DEEPSEEK_API_KEYstringClé API pour l'API Deepseek# DEEPSEEK_API_KEY=

La fonctionnalité de recherche web permet d'effectuer des recherches sur Internet au sein de LibreChat.

Important : Les noms exacts des variables d'environnement indiqués ci-dessous sont des références par défaut et peuvent être personnalisés via le fichier de configuration librechat.yaml pour utiliser les noms de variables de votre choix.

Pour des options de configuration et de personnalisation détaillées, consultez : Configuration de la recherche Web

KeyTypeDescriptionExample
SERPER_API_KEYstringClé API pour le fournisseur de recherche Serper. Obtenez votre clé sur https://serper.dev/api-keys# SERPER_API_KEY=
TAVILY_API_KEYstringClé API pour le fournisseur de recherche et de scraping Tavily. Obtenez votre clé sur https://app.tavily.com/home# TAVILY_API_KEY=
TAVILY_SEARCH_URLstringURL de l'API de recherche Tavily personnalisée (optionnel). Uniquement nécessaire pour les endpoints de recherche personnalisés ou proxy compatibles avec Tavily.# TAVILY_SEARCH_URL=
TAVILY_EXTRACT_URLstringURL de l'API d'extraction Tavily personnalisée (optionnel). Uniquement nécessaire pour les endpoints d'extraction personnalisés ou proxy compatibles avec Tavily.# TAVILY_EXTRACT_URL=
FIRECRAWL_API_KEYstringClé API pour le service de scraping Firecrawl. Obtenez votre clé sur https://docs.firecrawl.dev/introduction#api-key# FIRECRAWL_API_KEY=
FIRECRAWL_API_URLstringURL de l'API Firecrawl personnalisée (optionnel). Uniquement nécessaire pour les instances Firecrawl personnalisées.# FIRECRAWL_API_URL=
FIRECRAWL_VERSIONstringVersion de l'API Firecrawl (v0 ou v1).# FIRECRAWL_VERSION=v1
JINA_API_KEYstringClé API pour le service de reranking Jina. Obtenez votre clé sur https://jina.ai/api-dashboard/# JINA_API_KEY=
JINA_API_URLstringURL d'API Jina personnalisée (optionnel). Uniquement nécessaire pour les instances Jina personnalisées.# JINA_API_URL=
COHERE_API_KEYstringClé API pour le service de reranker Cohere. Obtenez votre clé sur https://dashboard.cohere.com/welcome/login# COHERE_API_KEY=

Note : Ces noms de variables peuvent être personnalisés dans votre fichier de configuration librechat.yaml. Par exemple, vous pourriez utiliser CUSTOM_SERPER_KEY au lieu de SERPER_API_KEY en le configurant dans les paramètres de recherche web. Consultez la documentation sur la Web Search Configuration pour plus de détails sur la personnalisation des noms de variables.

Anthropic

voir : Anthropic Endpoint

  • Vous pouvez demander une clé d'accès sur https://platform.claude.com/
  • Laissez ANTHROPIC_API_KEY= vide pour désactiver cet endpoint
  • Définissez ANTHROPIC_API_KEY= sur "user_provided" pour permettre aux utilisateurs de fournir leur propre clé API depuis l'interface Web.
  • Si vous avez accès à un reverse proxy pour Anthropic, vous pouvez le définir avec ANTHROPIC_REVERSE_PROXY=
    • laisser vide ou mettre en commentaire pour utiliser l'URL de base par défaut
KeyTypeDescriptionExample
ANTHROPIC_API_KEYstringClé API Anthropic ou "user_provided" pour permettre aux utilisateurs de fournir leur propre clé API.Defaults to an empty string.
ANTHROPIC_MODELSstringListe séparée par des virgules des modèles Anthropic à utiliser.# 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_PROXYstringProxy inverse pour Anthropic.# ANTHROPIC_REVERSE_PROXY=
ANTHROPIC_TITLE_MODELstringDÉPRÉCIÉ : Modèle à utiliser pour la génération de titres avec Anthropic.# ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307
  • ANTHROPIC_TITLE_MODEL est désormais obsolète et sera supprimé dans les prochaines versions. Utilisez plutôt le paramètre titleModel Endpoint Setting dans la configuration librechat.yaml.

Remarque : Doit être compatible avec l'Anthropic endpoint. De plus, les modèles Claude 2 et Claude 3 sont les plus performants pour cette tâche, les modèles claude-3-haiku étant les moins coûteux.

Claude Fable 5 est inclus dans la liste par défaut des modèles Anthropic. Les modèles de classe Fable/Mythos utilisent le comportement Anthropic moderne dans LibreChat : contexte de 1M, prise en charge de la réflexion adaptative (adaptive thinking), prise en charge de la mise en cache des prompts (prompt caching), et gestion de thinkingDisplay pour les sorties de raisonnement résumées ou omises.

Anthropic via Vertex AI

Vous pouvez également utiliser les modèles Anthropic Claude via Google Cloud Vertex AI. Pour des options de configuration YAML détaillées, consultez : Configuration Anthropic Vertex AI

KeyTypeDescriptionExample
ANTHROPIC_USE_VERTEXbooleanDéfinir sur true pour utiliser les modèles Anthropic via Google Vertex AI au lieu de l'API directe.ANTHROPIC_USE_VERTEX=true
ANTHROPIC_VERTEX_REGIONstringLa région Google Cloud pour Vertex AI. Par défaut : us-east5.ANTHROPIC_VERTEX_REGION=us-east5

Remarque : Lorsque vous utilisez Vertex AI, vous devez également configurer GOOGLE_SERVICE_KEY_FILE (voir Configuration Google) avec un compte de service disposant du rôle Vertex AI User.

AWS Bedrock

Voir : Configuration d'AWS Bedrock

KeyTypeDescriptionExample
BEDROCK_AWS_DEFAULT_REGIONstringUne région AWS par défaut doit être fournie pour Bedrock.BEDROCK_AWS_DEFAULT_REGION=us-east-1
BEDROCK_AWS_ACCESS_KEY_IDstringID de clé d'accès AWS pour Bedrock. Optionnel si vous utilisez la chaîne d'identification AWS par défaut.# BEDROCK_AWS_ACCESS_KEY_ID=your_access_key_id
BEDROCK_AWS_SECRET_ACCESS_KEYstringClé d'accès secrète AWS pour Bedrock. Optionnel si vous utilisez la chaîne d'identification AWS par défaut.# BEDROCK_AWS_SECRET_ACCESS_KEY=your_secret_access_key
BEDROCK_AWS_SESSION_TOKENstringJeton de session AWS pour les identifiants temporaires. Optionnel.# BEDROCK_AWS_SESSION_TOKEN=your_session_token
BEDROCK_AWS_PROFILEstringNom du profil de configuration partagé AWS pour Bedrock. Optionnel si vous utilisez la chaîne d'identifiants AWS par défaut.# BEDROCK_AWS_PROFILE=your-profile-name
BEDROCK_AWS_BEARER_TOKENstringClé API Amazon Bedrock pour l'authentification bearer, ou user_provided pour permettre aux utilisateurs de saisir leur propre clé API Bedrock dans l'interface utilisateur.# BEDROCK_AWS_BEARER_TOKEN=your_bedrock_api_key
BEDROCK_AWS_MODELSstringListe séparée par des virgules des IDs de modèles Bedrock. Si omis, tous les modèles pris en charge connus sont inclus.# 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

Note : Vous pouvez omettre les clés d'accès pour utiliser la chaîne d'identification AWS par défaut (variables d'environnement, identifiants SSO, fichiers d'identifiants partagés ou service de métadonnées d'instance EC2/ECS). Voir AWS Bedrock Setup pour plus de détails.

Les modèles de classe Claude Fable/Mythos sur Bedrock sont uniquement destinés aux profils d'inférence. Utilisez un ID de profil tel que us.anthropic.claude-fable-5 et activez le paramètre de partage de données Anthropic requis dans la console Bedrock ou via l'API Data Retention avant de les invoquer.

BingAI

Bing, également utilisé pour Sydney, le jailbreak et Bing Image Creator

KeyTypeDescriptionExample
BINGAI_TOKENstringJeton d'accès Bing. Laissez vide pour désactiver. Peut être défini sur "user_provided" pour permettre aux utilisateurs de fournir leur propre jeton depuis l'interface Web.BINGAI_TOKEN=user_provided
BINGAI_HOSTstringURL de l'hôte Bing. Laissez commenté pour utiliser le serveur par défaut.# BINGAI_HOST=https://cn.bing.com

Remarque : Il est recommandé de laisser la valeur sur "user_provided" et de fournir le jeton depuis l'interface Web.

Google

Suivez ces instructions pour configurer le Google Endpoint

KeyTypeDescriptionExample
GOOGLE_KEYstringClé API Google. Définissez sur "user_provided" pour permettre aux utilisateurs de fournir leur propre clé API depuis l'interface Web.GOOGLE_KEY=user_provided
GOOGLE_SERVICE_KEY_FILEstringChemin vers le fichier de clé JSON du compte de service Google, URL pour le récupérer, ou JSON sous forme de chaîne. Utilisé pour l'authentification Vertex AI (par ex. fonctionnalités OCR).GOOGLE_SERVICE_KEY_FILE=/path/to/auth.json
GOOGLE_REVERSE_PROXYstringURL du proxy inverse Google.GOOGLE_REVERSE_PROXY=
GOOGLE_AUTH_HEADERbooleanUtilisez l'en-tête Authorization au lieu de X-goog-api-key. Certains proxies inverses l'exigent.# GOOGLE_AUTH_HEADER=true
GOOGLE_MODELSstringModèles Google Gemini API disponibles, séparés par des virgules.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_MODELSstringModèles Vertex AI Google disponibles, séparés par des virgules.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_MODELstringDÉPRÉCIÉ : Le modèle utilisé pour la génération de titres avec Google.GOOGLE_TITLE_MODEL=gemini-pro
GOOGLE_LOCstringSpécifie l'emplacement Google Cloud pour le traitement des requêtes APIGOOGLE_LOC=us-central1
GOOGLE_CLOUD_LOCATIONstringRégion alternative pour la génération d'images Gemini (par ex. global).# GOOGLE_CLOUD_LOCATION=global
GOOGLE_EXCLUDE_SAFETY_SETTINGSstringOmettre complètement les paramètres de sécurité inclus par défaut, ce qui utilisera les paramètres par défaut du fournisseurGOOGLE_EXCLUDE_SAFETY_SETTINGS=true
GOOGLE_SAFETY_SEXUALLY_EXPLICITstringParamètre de sécurité pour le contenu sexuellement explicite. Les options sont BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY et OFF.GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_HATE_SPEECHstringParamètre de sécurité pour le contenu haineux. Les options sont BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY et OFF.GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_HARASSMENTstringParamètre de sécurité pour le contenu de harcèlement. Les options sont BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY et OFF.GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_DANGEROUS_CONTENTstringParamètre de sécurité pour le contenu dangereux. Les options sont BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY et OFF.GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_CIVIC_INTEGRITYstringParamètre de sécurité pour le contenu relatif à l'intégrité civique. Les options sont BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY et OFF.# GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH

Personnalisez les modèles disponibles, séparés par des virgules, sans espaces. Le premier sera celui par défaut. Laissez vide ou en commentaire pour utiliser les paramètres internes.

  • GOOGLE_TITLE_MODEL est désormais obsolète et sera supprimé dans les versions futures. Utilisez plutôt le paramètre d'endpoint titleModel dans la configuration librechat.yaml.

Note : Pour les variables GOOGLE_SAFETY de Vertex AI, vous n'avez pas accès au paramètre BLOCK_NONE par défaut. Pour utiliser ce paramètre restreint HarmBlockThreshold, vous devrez soit :

Génération d'images Gemini

La génération d'images Gemini est un outil pour les Agents qui prend en charge à la fois l'API Gemini et Vertex AI. Voir : Gemini Image Generation

KeyTypeDescriptionExample
GEMINI_API_KEYstringClé API Gemini dédiée pour la génération d'images. Utilise GOOGLE_KEY par défaut si elle n'est pas définie.# GEMINI_API_KEY=your_gemini_api_key
GEMINI_IMAGE_MODELstringModèle Gemini pour la génération d'images. Par défaut : gemini-2.5-flash-image.# GEMINI_IMAGE_MODEL=gemini-2.5-flash-image

Remarque : Lorsqu'aucune clé API n'est configurée, l'outil revient automatiquement à Vertex AI en utilisant le compte de service défini dans GOOGLE_SERVICE_KEY_FILE. Le compte de service doit disposer du rôle Vertex AI User.

OpenAI

Voir : Configuration OpenAI

KeyTypeDescriptionExample
OPENAI_API_KEYstringVotre clé API OpenAI. Laissez vide pour désactiver cet endpoint ou définissez sur "user_provided" pour permettre aux utilisateurs de fournir leur propre clé API depuis l'interface Web.OPENAI_API_KEY=user_provided
OPENAI_MODELSstringPersonnalisez les modèles disponibles, séparés par des virgules, sans espaces. Le premier sera celui par défaut. Laissez en commentaire pour utiliser les paramètres internes.# 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_OPENAIbooleanActiver le mode débogage pour l'endpoint OpenAI.DEBUG_OPENAI=false
OPENAI_SUMMARIZEbooleanActiver la synthèse des messages. Désactivé par défaut# OPENAI_SUMMARIZE=true
OPENAI_SUMMARY_MODELstringLe modèle utilisé pour la synthèse OpenAI.# OPENAI_SUMMARY_MODEL=gpt-3.5-turbo
OPENAI_FORCE_PROMPTbooleanForcer l'API à être appelée avec une charge utile de prompt au lieu d'une charge utile de messages.# OPENAI_FORCE_PROMPT=false
OPENAI_ORGANIZATIONstringSpécifiez l'organisation à utiliser pour chaque requête API vers OpenAI. Optionnel# OPENAI_ORGANIZATION=
OPENAI_REVERSE_PROXYstringDÉPRÉCIÉ : Paramètres de proxy inverse pour OpenAI.# OPENAI_REVERSE_PROXY=
OPENAI_TITLE_MODELstringDÉPRÉCIÉ : Le modèle utilisé pour la génération de titres OpenAI.# OPENAI_TITLE_MODEL=gpt-3.5-turbo
  • OPENAI_TITLE_MODEL est désormais obsolète et sera supprimé dans les versions futures. Utilisez plutôt le paramètre d'endpoint titleModel dans la configuration librechat.yaml.
  • OPENAI_REVERSE_PROXY est désormais obsolète et sera supprimé dans les prochaines versions. Utilisez plutôt un custom endpoint.

Assistants

Voir : Configuration des Assistants

KeyTypeDescriptionExample
ASSISTANTS_API_KEYstringVotre clé API OpenAI pour l'Assistants API. Laissez vide pour désactiver cet endpoint ou définissez sur "user_provided" pour permettre aux utilisateurs de fournir leur propre clé API depuis l'interface Web.ASSISTANTS_API_KEY=user_provided
ASSISTANTS_MODELSstringPersonnalisez les modèles disponibles, séparés par des virgules, sans espaces. Le premier sera celui par défaut. Laissez vide pour utiliser les paramètres internes.# 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_URLstringURL de base alternative pour l'API Assistants.# ASSISTANTS_BASE_URL=

Remarque : Vous pouvez personnaliser les modèles disponibles, séparés par des virgules, sans espaces. Le premier sera celui par défaut. Laissez vide ou en commentaire pour utiliser les paramètres internes.

Tavily

Obtenez votre clé API ici : https://tavily.com/#api

Variables d'environnement :

KeyTypeDescriptionExample
TAVILY_API_KEYstringClé API Tavily.TAVILY_API_KEY=

Traversaal

Description : Outil de recherche amélioré par LLM.

Obtenez votre clé API ici : https://api.traversaal.ai/dashboard

Variables d'environnement :

KeyTypeDescriptionExample
TRAVERSAAL_API_KEYstringClé API Traversaal.TRAVERSAAL_API_KEY=

WolframAlpha

Consultez les instructions détaillées ici : Wolfram Alpha

Variables d'environnement :

KeyTypeDescriptionExample
WOLFRAM_APP_IDstringID d'application Wolfram Alpha.WOLFRAM_APP_ID=

Zapier

Description : - Vous avez besoin d'un compte Zapier. Obtenez votre clé API ici : Zapier

  • Créer des actions autorisées - Suivez l'étape 3 de ce guide de démarrage de Zapier

Note : Zapier est connu pour être capricieux avec certaines actions. La rédaction de brouillons d'e-mails est probablement la meilleure utilisation que vous puissiez en faire.

Variables d'environnement :

KeyTypeDescriptionExample
ZAPIER_NLA_API_KEYstringClé API Zapier NLA.ZAPIER_NLA_API_KEY=

OpenWeather

Voir les instructions détaillées ici : OpenWeather

KeyTypeDescriptionExample
OPENWEATHER_API_KEYstringClé API OpenWeather pour l'API One Call 3.0.OPENWEATHER_API_KEY=

Code Interpreter

L'API Code Interpreter fournit un environnement sécurisé pour l'exécution de code et la gestion de fichiers. Voir : Code Interpreter API

KeyTypeDescriptionExample
LIBRECHAT_CODE_API_KEYstringClé API pour le service Code Interpreter. Lorsqu'elle est définie globalement, elle donne accès à tous les utilisateurs.LIBRECHAT_CODE_API_KEY=your-api-key
LIBRECHAT_CODE_BASEURLstringURL de base personnalisée pour l'API de l'interpréteur de code (plans Entreprise uniquement).# LIBRECHAT_CODE_BASEURL=https://your-custom-domain.com

Artifacts

Les Artifacts utilisent la bibliothèque CodeSandbox pour le rendu sécurisé de code HTML/JS. Par défaut, le CDN public hébergé par CodeSandbox est utilisé.

Heureusement, pour ceux qui ont des exigences de réseau interne, vous pouvez auto-héberger le bundler qui compile le code frontend et spécifier une URL de bundler personnalisée pour Sandpack.

Pour plus d'informations, y compris sur les images de conteneur pré-construites pour l'auto-hébergement avec les requêtes de métriques supprimées, consultez : https://github.com/LibreChat-AI/codesandbox-client

KeyTypeDescriptionExample
SANDPACK_BUNDLER_URLstringSpécifie une URL de bundler personnalisée pour Sandpack, utilisée par les ArtifactsSANDPACK_BUNDLER_URL=your-bundler-url

Recherche (Meilisearch)

Active la recherche dans les messages et les conversations :

KeyTypeDescriptionExample
SEARCHbooleanActive la recherche dans les messages et les conversations.SEARCH=true

Remarque : Si vous n'utilisez pas Docker, cela nécessite l'installation de Meilisearch en auto-hébergement gratuit ou d'un forfait distant payant.

Pour désactiver les analyses de télémétrie anonymisées pour MeiliSearch afin d'assurer une confidentialité absolue, définissez sur true :

KeyTypeDescriptionExample
MEILI_NO_ANALYTICSbooleanDésactive les analyses de télémétrie anonymisées pour MeiliSearch.MEILI_NO_ANALYTICS=true

Pour que le serveur API puisse se connecter au serveur de recherche. Remplacez '0.0.0.0' par 'meilisearch' si vous utilisez MeiliSearch avec docker-compose.

KeyTypeDescriptionExample
MEILI_HOSTstringLa connexion du serveur API au serveur de recherche.MEILI_HOST=http://0.0.0.0:7700

Cette clé maîtresse doit faire au moins 16 octets et être composée de caractères UTF-8 valides. MeiliSearch renverra une erreur et refusera de se lancer si aucune clé maîtresse n'est fournie ou si elle fait moins de 16 octets. MeiliSearch suggérera une clé maîtresse sécurisée générée automatiquement. Il s'agit d'une clé sécurisée prête à l'emploi pour docker-compose, vous pouvez la remplacer par la vôtre.

KeyTypeDescriptionExample
MEILI_MASTER_KEYstringLa clé maîtresse pour MeiliSearch.MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt

Pour empêcher LibreChat de tenter une synchronisation d'indexation de base de données avec Meilisearch, vous pouvez définir la variable d'environnement suivante sur true. Ceci est utile dans un cluster de nœuds ou une configuration multi-nœuds, où une seule instance doit être responsable de l'indexation.

KeyTypeDescriptionExample
MEILI_NO_SYNCstringBascule pour désactiver la synchronisation de l'index MeilisearchMEILI_NO_SYNC=true

API RAG

Configurez la génération augmentée par récupération (RAG) pour l'indexation de documents et les réponses tenant compte du contexte. Voir : Configuration de l'API RAG

KeyTypeDescriptionExample
RAG_API_URLstringURL du service API RAG.RAG_API_URL=http://host.docker.internal:8000
RAG_OPENAI_API_KEYstringClé API OpenAI pour les embeddings RAG. Remplace OPENAI_API_KEY pour le RAG.# RAG_OPENAI_API_KEY=sk-your-openai-api-key
RAG_OPENAI_BASEURLstringURL de base OpenAI personnalisée pour les embeddings RAG.# RAG_OPENAI_BASEURL=
RAG_USE_FULL_CONTEXTbooleanRécupérer le contexte complet du fichier au lieu des 4 meilleurs résultats. Par défaut : false.# RAG_USE_FULL_CONTEXT=true
EMBEDDINGS_PROVIDERstringFournisseur d'embeddings : openai, azure, huggingface, huggingfacetei, ou ollama. Par défaut : openai.# EMBEDDINGS_PROVIDER=openai
EMBEDDINGS_MODELstringModèle d'embeddings à utiliser. La valeur par défaut dépend du fournisseur.# EMBEDDINGS_MODEL=text-embedding-3-small

Note : Lors de l'utilisation de la configuration Docker par défaut, le fichier .env est partagé entre LibreChat et l'API RAG. Pour connaître toutes les options de configuration, consultez la documentation de l'API RAG.

Synthèse vocale et reconnaissance vocale

Configurez les services de synthèse vocale (TTS) et de reconnaissance vocale (STT). Voir : Paramètres vocaux

KeyTypeDescriptionExample
STT_API_KEYstringClé API pour le service de synthèse vocale (par ex. OpenAI Whisper).# STT_API_KEY=
TTS_API_KEYstringClé API pour le service de synthèse vocale (ex. : OpenAI TTS).# TTS_API_KEY=

Note : STT et TTS sont principalement configurés via la section speech: dans librechat.yaml. Ces variables d'environnement sont référencées dans cette configuration. Voir Speech Settings pour les options de configuration YAML complètes.

Configurez la fonctionnalité de liens de conversation partagés.

KeyTypeDescriptionExample
ALLOW_SHARED_LINKSbooleanActiver ou désactiver les liens de conversation partagés. Par défaut : true.ALLOW_SHARED_LINKS=true
ALLOW_SHARED_LINKS_PUBLICbooleanAutoriser l'accès public aux liens partagés sans authentification. Par défaut : false.ALLOW_SHARED_LINKS_PUBLIC=false
SHARED_LINKS_SNAPSHOT_FILESbooleanFichiers instantanés référencés par une discussion partagée afin que les spectateurs puissent les prévisualiser ou les télécharger via le lien partagé. Remplace interface.sharedLinks.snapshotFiles lorsqu'il est défini.SHARED_LINKS_SNAPSHOT_FILES=true

ALLOW_SHARED_LINKS est l'interrupteur global de la fonctionnalité. Les permissions de rôle contrôlent désormais qui peut créer des liens partagés, les partager avec des utilisateurs authentifiés, ou les rendre visibles par tous ; voir interface.sharedLinks. ALLOW_SHARED_LINKS_PUBLIC contrôle uniquement si les liens partagés publiquement peuvent être consultés sans authentification. SHARED_LINKS_SNAPSHOT_FILES est une option globale de remplacement pour les instantanés de fichiers des liens partagés et peut désactiver la diffusion d'instantanés pour chaque lien lorsqu'elle est définie sur false.

Système utilisateur

Cette section contient la configuration pour :

Modération

Le système de modération automatisé utilise un mécanisme de score pour suivre les violations des utilisateurs. Lorsque les utilisateurs effectuent des actions telles que des connexions, des inscriptions ou des envois de messages excessifs, ils accumulent des scores de violation. Une fois un seuil défini atteint, l'utilisateur et son adresse IP sont temporairement bannis. Ce système garantit la sécurité de la plateforme en surveillant et en pénalisant les activités rapides ou suspectes.

voir : Modération automatisée

Paramètres de modération de base

KeyTypeDescriptionExample
OPENAI_MODERATIONbooleanIndique s'il faut activer la modération OpenAI sur les endpoints **OpenAI** et **Plugins**.OPENAI_MODERATION=false
OPENAI_MODERATION_API_KEYstringVotre clé API OpenAI.OPENAI_MODERATION_API_KEY=
OPENAI_MODERATION_REVERSE_PROXYstringRemarque : Commenté par défaut, ceci ne fonctionne pas avec tous les reverse proxys.# OPENAI_MODERATION_REVERSE_PROXY=

Paramètres de bannissement

KeyTypeDescriptionExample
BAN_VIOLATIONSbooleanIndique si le bannissement des utilisateurs pour violations doit être activé ou non (ils seront toujours enregistrés).BAN_VIOLATIONS=true
BAN_DURATIONintegerDurée pendant laquelle l'utilisateur et l'adresse IP associée sont bannis (en millisecondes).BAN_DURATION=1000 * 60 * 60 * 2
BAN_INTERVALintegerL'utilisateur sera banni chaque fois que son score atteindra ou dépassera le seuil de l'intervalle.BAN_INTERVAL=20

Limitation du taux de connexion et d'inscription

Empêche les attaques par force brute et les inscriptions de spam en limitant les tentatives de connexion et les nouvelles inscriptions de comptes.

KeyTypeDescriptionExample
LOGIN_MAXintegerLe nombre maximal de connexions autorisées par IP par LOGIN_WINDOW.LOGIN_MAX=7
LOGIN_WINDOWintegerEn minutes, détermine la fenêtre de temps pour LOGIN_MAX connexions.LOGIN_WINDOW=5
REGISTER_MAXintegerLe nombre maximum d'inscriptions autorisées par IP par REGISTER_WINDOW.REGISTER_MAX=5
REGISTER_WINDOWintegerEn minutes, détermine la fenêtre temporelle pour REGISTER_MAX inscriptions.REGISTER_WINDOW=60

Score pour chaque violation

KeyTypeDescriptionExample
LOGIN_VIOLATION_SCOREintegerScore pour les violations de connexion.LOGIN_VIOLATION_SCORE=1
REGISTRATION_VIOLATION_SCOREintegerScore pour les violations d'inscription.REGISTRATION_VIOLATION_SCORE=1
CONCURRENT_VIOLATION_SCOREintegerScore pour les violations simultanées.CONCURRENT_VIOLATION_SCORE=1
MESSAGE_VIOLATION_SCOREintegerScore pour les violations de message.MESSAGE_VIOLATION_SCORE=1
NON_BROWSER_VIOLATION_SCOREintegerScore pour les violations hors navigateur.NON_BROWSER_VIOLATION_SCORE=20
ILLEGAL_MODEL_REQ_SCOREintegerScore pour les requêtes de modèle illégales.ILLEGAL_MODEL_REQ_SCORE=5
IMPORT_VIOLATION_SCOREintegerScore pour les violations d'importation de conversation.IMPORT_VIOLATION_SCORE=1
FORK_VIOLATION_SCOREintegerScore pour les violations de bifurcation de conversation.FORK_VIOLATION_SCORE=1
TTS_VIOLATION_SCOREintegerScore pour les violations de synthèse vocale.TTS_VIOLATION_SCORE=0
STT_VIOLATION_SCOREintegerScore pour les violations de conversion parole-texte.STT_VIOLATION_SCORE=0
FILE_UPLOAD_VIOLATION_SCOREintegerScore pour les violations de téléchargement de fichiers.FILE_UPLOAD_VIOLATION_SCORE=0
RESET_PASSWORD_VIOLATION_SCOREintegerScore pour les violations de réinitialisation de mot de passe.RESET_PASSWORD_VIOLATION_SCORE=0
VERIFY_EMAIL_VIOLATION_SCOREintegerScore pour les violations de vérification d'e-mail.VERIFY_EMAIL_VIOLATION_SCORE=0
TOOL_CALL_VIOLATION_SCOREintegerScore pour les violations d'appel d'outil.TOOL_CALL_VIOLATION_SCORE=0
CONVO_ACCESS_VIOLATION_SCOREintegerScore pour les violations d'accès aux conversations.CONVO_ACCESS_VIOLATION_SCORE=0

Remarque : L'accès hors navigateur et les requêtes de modèles illégales sont presque toujours malveillants, car cela signifie qu'un tiers tente d'accéder au serveur via un script automatisé.

Limitation du débit des messages (par utilisateur et par IP)

KeyTypeDescriptionExample
LIMIT_CONCURRENT_MESSAGESbooleanIndique s'il faut limiter le nombre de messages qu'un utilisateur peut envoyer par requête.LIMIT_CONCURRENT_MESSAGES=true
CONCURRENT_MESSAGE_MAXintegerLe nombre maximal de messages qu'un utilisateur peut envoyer par requête.CONCURRENT_MESSAGE_MAX=2

Limiteurs

Remarque : Vous pouvez utiliser les deux limiteurs, mais la valeur par défaut est de limiter uniquement par IP.

Limiteur d'IP :
KeyTypeDescriptionExample
LIMIT_MESSAGE_IPbooleanDétermine s'il faut limiter le nombre de messages qu'une IP peut envoyer par `MESSAGE_IP_WINDOW`.LIMIT_MESSAGE_IP=true
MESSAGE_IP_MAXintegerLe nombre maximal de messages qu'une IP peut envoyer par `MESSAGE_IP_WINDOW`.MESSAGE_IP_MAX=40
MESSAGE_IP_WINDOWintegerEn minutes, détermine la fenêtre temporelle pour `MESSAGE_IP_MAX` messages.MESSAGE_IP_WINDOW=1
Limiteur d'utilisateur :
KeyTypeDescriptionExample
LIMIT_MESSAGE_USERbooleanIndique s'il faut limiter le nombre de messages qu'un utilisateur peut envoyer par `MESSAGE_USER_WINDOW`.LIMIT_MESSAGE_USER=false
MESSAGE_USER_MAXintegerLe nombre maximal de messages qu'un utilisateur peut envoyer par `MESSAGE_USER_WINDOW`.MESSAGE_USER_MAX=40
MESSAGE_USER_WINDOWintegerEn minutes, détermine la fenêtre temporelle pour `MESSAGE_USER_MAX` messages.MESSAGE_USER_WINDOW=1

Limitation du taux d'importation des conversations

Limite la fréquence à laquelle les utilisateurs peuvent importer des conversations pour prévenir les abus.

Remarque : Vous pouvez utiliser les deux limiteurs, mais la valeur par défaut est de limiter uniquement par IP.

Limiteur d'IP :
KeyTypeDescriptionExample
LIMIT_IMPORT_IPbooleanIndique s'il faut limiter le nombre d'importations de conversations qu'une adresse IP peut effectuer par `IMPORT_IP_WINDOW`.LIMIT_IMPORT_IP=true
IMPORT_IP_MAXintegerLe nombre maximal d'importations de conversations qu'une adresse IP peut effectuer par `IMPORT_IP_WINDOW`.IMPORT_IP_MAX=100
IMPORT_IP_WINDOWintegerEn minutes, détermine la fenêtre temporelle pour les importations `IMPORT_IP_MAX`.IMPORT_IP_WINDOW=1
Limiteur d'utilisateur :
KeyTypeDescriptionExample
LIMIT_IMPORT_USERbooleanIndique s'il faut limiter le nombre d'importations de conversations qu'un utilisateur peut effectuer par `IMPORT_USER_WINDOW`.LIMIT_IMPORT_USER=false
IMPORT_USER_MAXintegerLe nombre maximal d'importations de conversations qu'un utilisateur peut effectuer par `IMPORT_USER_WINDOW`.IMPORT_USER_MAX=50
IMPORT_USER_WINDOWintegerEn minutes, détermine la fenêtre temporelle pour les importations `IMPORT_USER_MAX`.IMPORT_USER_WINDOW=1

Limitation du taux de forking de conversation

Limite la fréquence à laquelle les utilisateurs peuvent forker des conversations pour prévenir les abus.

Remarque : Vous pouvez utiliser les deux limiteurs, mais la valeur par défaut est de limiter uniquement par IP.

Limiteur d'IP :
KeyTypeDescriptionExample
LIMIT_FORK_IPbooleanDétermine s'il faut limiter le nombre de ramifications de conversation qu'une adresse IP peut créer par `FORK_IP_WINDOW`.LIMIT_FORK_IP=true
FORK_IP_MAXintegerLe nombre maximal de ramifications de conversation qu'une IP peut créer par `FORK_IP_WINDOW`.FORK_IP_MAX=30
FORK_IP_WINDOWintegerEn minutes, détermine la fenêtre temporelle pour les forks `FORK_IP_MAX`.FORK_IP_WINDOW=1
Limiteur d'utilisateur :
KeyTypeDescriptionExample
LIMIT_FORK_USERbooleanIndique s'il faut limiter le nombre de ramifications de conversation qu'un utilisateur peut créer par `FORK_USER_WINDOW`.LIMIT_FORK_USER=false
FORK_USER_MAXintegerLe nombre maximal de ramifications de conversation qu'un utilisateur peut créer par `FORK_USER_WINDOW`.FORK_USER_MAX=7
FORK_USER_WINDOWintegerEn minutes, détermine la fenêtre de temps pour les forks `FORK_USER_MAX`.FORK_USER_WINDOW=1

Limitation du taux de téléchargement de fichiers

Limite la fréquence à laquelle les utilisateurs peuvent télécharger des fichiers pour prévenir les abus.

Remarque : ceux-ci peuvent également être configurés via librechat.yaml dans la section rateLimits.fileUploads.

Limiteur d'IP :
KeyTypeDescriptionExample
FILE_UPLOAD_IP_MAXintegerNombre maximal de téléchargements de fichiers par IP par `FILE_UPLOAD_IP_WINDOW`. Par défaut : 100.# FILE_UPLOAD_IP_MAX=100
FILE_UPLOAD_IP_WINDOWintegerEn minutes, détermine la fenêtre de temps pour `FILE_UPLOAD_IP_MAX`. Par défaut : 15.# FILE_UPLOAD_IP_WINDOW=15
Limiteur d'utilisateur :
KeyTypeDescriptionExample
FILE_UPLOAD_USER_MAXintegerNombre maximal de téléchargements de fichiers par utilisateur par `FILE_UPLOAD_USER_WINDOW`. Par défaut : 50.# FILE_UPLOAD_USER_MAX=50
FILE_UPLOAD_USER_WINDOWintegerEn minutes, détermine la fenêtre de temps pour `FILE_UPLOAD_USER_MAX`. Par défaut : 15.# FILE_UPLOAD_USER_WINDOW=15

Limitation de débit TTS (Text-to-Speech)

Limite la fréquence à laquelle les utilisateurs peuvent utiliser la synthèse vocale (Text-to-Speech) pour prévenir les abus.

Remarque : Ceux-ci peuvent également être configurés via librechat.yaml dans la section rateLimits.tts.

Limiteur d'IP :
KeyTypeDescriptionExample
TTS_IP_MAXintegerNombre maximal de requêtes TTS par IP par `TTS_IP_WINDOW`. Par défaut : 100.# TTS_IP_MAX=100
TTS_IP_WINDOWintegerEn minutes, détermine la fenêtre de temps pour `TTS_IP_MAX`. Par défaut : 1.# TTS_IP_WINDOW=1
Limiteur d'utilisateur :
KeyTypeDescriptionExample
TTS_USER_MAXintegerNombre maximal de requêtes TTS par utilisateur par `TTS_USER_WINDOW`. Par défaut : 50.# TTS_USER_MAX=50
TTS_USER_WINDOWintegerEn minutes, détermine la fenêtre temporelle pour `TTS_USER_MAX`. Par défaut : 1.# TTS_USER_WINDOW=1

Limitation de débit STT (Speech-to-Text)

Limite la fréquence à laquelle les utilisateurs peuvent utiliser la fonction Speech-to-Text pour prévenir les abus.

Remarque : ceux-ci peuvent également être configurés via librechat.yaml dans la section rateLimits.stt.

Limiteur d'IP :
KeyTypeDescriptionExample
STT_IP_MAXintegerNombre maximal de requêtes STT par IP par `STT_IP_WINDOW`. Par défaut : 100.# STT_IP_MAX=100
STT_IP_WINDOWintegerEn minutes, détermine la fenêtre de temps pour `STT_IP_MAX`. Par défaut : 1.# STT_IP_WINDOW=1
Limiteur d'utilisateur :
KeyTypeDescriptionExample
STT_USER_MAXintegerNombre maximal de requêtes STT par utilisateur par `STT_USER_WINDOW`. Par défaut : 50.# STT_USER_MAX=50
STT_USER_WINDOWintegerEn minutes, détermine la fenêtre de temps pour `STT_USER_MAX`. Par défaut : 1.# STT_USER_WINDOW=1

Solde

La fonctionnalité suivante permet la gestion des soldes des utilisateurs au sein des endpoint du système. Vous avez la possibilité d'ajouter des soldes manuellement, ou vous pouvez choisir de mettre en œuvre un système qui accumule automatiquement les soldes pour les utilisateurs. Si un solde initial spécifique est défini dans la configuration, des jetons seront automatiquement crédités sur le solde de l'utilisateur lors de son inscription.

voir : Utilisation des jetons

KeyTypeDescriptionExample
CHECK_BALANCEbooleanActiver les soldes de crédits de jetons pour les endpoints OpenAI/Plugins.CHECK_BALANCE=false
START_BALANCEintegerSi la valeur est définie, des jetons seront crédités au solde de l'utilisateur après son inscription.START_BALANCE=20000

Gestion des soldes

  • Exécutez npm run add-balance pour ajouter manuellement des soldes.
    • Vous pouvez également spécifier l'e-mail et le montant de crédits de jetons à ajouter, par exemple : npm run add-balance [email protected] 1000
  • Exécutez npm run set-balance pour définir manuellement les soldes, de manière similaire à add-balance.
  • Exécutez npm run list-balances pour lister le solde de chaque utilisateur.

Note : 1000 crédits = 0,001 $ (1 mill USD)

Inscription et connexion

voir : Système d'authentification

Écran d'inscription utilisateurÉcran d'inscription utilisateur

Clarification du fichier de configuration

Tous les paramètres d'authentification de cette section doivent être configurés dans votre fichier .env, et non dans le fichier librechat.yaml ou docker-compose.override.yml. Le fichier docker-compose.override.yml est uniquement utilisé pour monter des volumes et définir des variables d'environnement pour Docker, tandis que le fichier librechat.yaml est utilisé pour les endpoints personnalisés et d'autres paramètres de l'application.

  • Paramètres généraux :
KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINbooleanActiver ou désactiver UNIQUEMENT la connexion par e-mail.ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONbooleanActiver ou désactiver l'inscription par e-mail des nouveaux utilisateurs.ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINbooleanPermettre aux utilisateurs de se connecter à LibreChat avec divers réseaux sociaux.ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONbooleanActiver ou désactiver l'inscription de nouveaux utilisateurs via divers réseaux sociaux.ALLOW_SOCIAL_REGISTRATION=false
ALLOW_PASSWORD_RESETbooleanActiver ou désactiver la possibilité pour les utilisateurs de réinitialiser leur mot de passe eux-mêmesALLOW_PASSWORD_RESET=false
ALLOW_ACCOUNT_DELETIONbooleanActivez ou désactivez la possibilité pour les utilisateurs de supprimer eux-mêmes leur compte. Activé par défaut si omis ou mis en commentaire.ALLOW_ACCOUNT_DELETION=true
ALLOW_UNVERIFIED_EMAIL_LOGINbooleanDéfinissez sur true pour permettre aux utilisateurs de se connecter sans vérifier leur adresse e-mail. Si défini sur false, les utilisateurs devront vérifier leur e-mail avant de pouvoir se connecter.ALLOW_UNVERIFIED_EMAIL_LOGIN=true
MIN_PASSWORD_LENGTHnumberLongueur minimale du mot de passe pour l'authentification des utilisateurs. Lors de l'utilisation de l'authentification LDAP, vous souhaiterez peut-être régler cette valeur sur 1 pour contourner la validation locale du mot de passe, car les serveurs LDAP gèrent leurs propres politiques de mot de passe.MIN_PASSWORD_LENGTH=8

Astuce rapide : Même avec l'inscription désactivée, ajoutez des utilisateurs directement dans la base de données en utilisant npm run create-user.

Astuce rapide : Avec l'inscription désactivée, vous pouvez supprimer un utilisateur avec npm run delete-user [email protected].

  • Paramètres de session et de jeton d'actualisation :
KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)Délai d'expiration de la session.SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (milliseconds)Délai d'expiration du jeton de rafraîchissement.REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7
SESSION_COOKIE_SECUREbooleanRemplace l'attribut Secure pour les cookies de session/authentification. Laissez vide pour utiliser l'heuristique par défaut de NODE_ENV/DOMAIN_SERVER.# SESSION_COOKIE_SECURE=false

Vous devez utiliser de nouvelles valeurs sécurisées. Les exemples fournis sont des clés de 32 octets (64 caractères en hexadécimal). Utilisez ce replit pour en générer rapidement : JWT Keys

KeyTypeDescriptionExample
JWT_SECRETstring (hex)Clé secrète JWT.JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (hex)Clé secrète de rafraîchissement JWT.JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418

Connexions sociales

Pour plus de détails : OAuth2-OIDC

Authentification Apple

Pour plus d'informations : Authentification Apple

KeyTypeDescriptionExample
APPLE_CLIENT_IDstringVotre identifiant de services Apple (par ex. com.yourdomain.librechat.services).APPLE_CLIENT_ID=com.yourdomain.librechat.services
APPLE_TEAM_IDstringVotre ID d'équipe Apple Developer.APPLE_TEAM_ID=YOUR_TEAM_ID
APPLE_KEY_IDstringVotre Apple Key ID provenant de la clé téléchargée.APPLE_KEY_ID=YOUR_KEY_ID
APPLE_PRIVATE_KEY_PATHstringChemin absolu vers votre fichier .p8 téléchargé.APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8
APPLE_CALLBACK_URLstringL'URL de rappel pour l'authentification Apple.APPLE_CALLBACK_URL=/oauth/apple/callback

Authentification Discord

Pour plus d'informations : Discord

KeyTypeDescriptionExample
DISCORD_CLIENT_IDstringVotre ID client Discord.DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRETstringVotre client secret Discord.DISCORD_CLIENT_SECRET=
DISCORD_CALLBACK_URLstringL'URL de rappel pour l'authentification Discord.DISCORD_CALLBACK_URL=/oauth/discord/callback

Authentification Facebook

Pour plus d'informations : Authentification Facebook

KeyTypeDescriptionExample
FACEBOOK_CLIENT_IDstringVotre identifiant client Facebook.FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRETstringVotre secret client Facebook.FACEBOOK_CLIENT_SECRET=
FACEBOOK_CALLBACK_URLstringL'URL de rappel pour l'authentification Facebook.FACEBOOK_CALLBACK_URL=/oauth/facebook/callback

Authentification GitHub

Pour plus d'informations : GitHub Authentication

KeyTypeDescriptionExample
GITHUB_CLIENT_IDstringVotre identifiant client GitHub.GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRETstringVotre client secret GitHub.GITHUB_CLIENT_SECRET=
GITHUB_CALLBACK_URLstringL'URL de rappel pour l'authentification GitHub.GITHUB_CALLBACK_URL=/oauth/github/callback
GITHUB_ENTERPRISE_BASE_URLstringOptionnel : L'URL de base pour votre instance GitHub Enterprise.GITHUB_ENTERPRISE_BASE_URL=
GITHUB_ENTERPRISE_USER_AGENTstringOptionnel : L'agent utilisateur pour les requêtes GitHub Enterprise.GITHUB_ENTERPRISE_USER_AGENT=

Authentification Google

Pour plus d'informations : Google Authentication

KeyTypeDescriptionExample
GOOGLE_CLIENT_IDstringVotre identifiant client Google.GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRETstringVotre client secret Google.GOOGLE_CLIENT_SECRET=
GOOGLE_CALLBACK_URLstringL'URL de rappel pour l'authentification Google.GOOGLE_CALLBACK_URL=/oauth/google/callback

OpenID Connect

Pour plus d'informations :

KeyTypeDescriptionExample
OPENID_CLIENT_IDstringVotre identifiant client OpenID.OPENID_CLIENT_ID=
OPENID_CLIENT_SECRETstringVotre secret client OpenID.OPENID_CLIENT_SECRET=
OPENID_ISSUERstringL'URL de l'émetteur OpenID.OPENID_ISSUER=
OPENID_SESSION_SECRETstringLe secret pour le stockage de session OpenID.OPENID_SESSION_SECRET=
OPENID_SCOPEstringLa portée OpenID.OPENID_SCOPE="openid profile email"
OPENID_CALLBACK_URLstringL'URL de rappel pour l'authentification OpenID.OPENID_CALLBACK_URL=/oauth/openid/callback
OPENID_AUDIENCEstringValeur de l'audience pour la validation JWT OpenID et les requêtes d'autorisation. Les valeurs séparées par des virgules sont acceptées pour la validation JWT ; les requêtes d'autorisation utilisent la première valeur non vide. Requis pour Auth0 lors de l'utilisation de OPENID_REUSE_TOKENS=true afin de recevoir des jetons d'accès JWT au lieu de jetons opaques.OPENID_AUDIENCE=https://api.librechat.com
OPENID_REQUIRED_ROLEstringLe(s) rôle(s) requis pour la validation. Prend en charge un rôle unique ou plusieurs rôles séparés par des virgules. Lorsque plusieurs rôles sont spécifiés, l'utilisateur doit posséder N'IMPORTE LEQUEL des rôles spécifiés (logique OU).OPENID_REQUIRED_ROLE=admin or OPENID_REQUIRED_ROLE=role1,role2,admin
OPENID_REQUIRED_ROLE_TOKEN_KINDstringLe type de jeton pour la validation du rôle requis.OPENID_REQUIRED_ROLE_TOKEN_KIND=
OPENID_REQUIRED_ROLE_PARAMETER_PATHstringLe chemin du paramètre pour la validation du rôle requis.OPENID_REQUIRED_ROLE_PARAMETER_PATH=
OPENID_ADMIN_ROLEstringLe rôle que l'utilisateur doit avoir pour être administrateur dans LibreChat.OPENID_ADMIN_ROLE=
OPENID_ADMIN_ROLE_TOKEN_KINDstringLa source d'information pour la vérification du rôle d'administrateur. Les valeurs possibles sont : access, id ou userinfo.OPENID_ADMIN_ROLE_TOKEN_KIND=
OPENID_ADMIN_ROLE_PARAMETER_PATHstringLe chemin du paramètre pour la validation du rôle requis.OPENID_ADMIN_ROLE_PARAMETER_PATH=
OPENID_ROLE_SYNC_ENABLEDbooleanActiver la synchronisation générique des rôles OpenID pour les rôles non-admin. ADMIN ne peut pas être attribué par la synchronisation des rôles ; utilisez OPENID_ADMIN_ROLE pour l'élévation des privilèges admin.OPENID_ROLE_SYNC_ENABLED=false
OPENID_ROLE_SYNC_API_ENABLEDbooleanActiver les assistants de synchronisation des rôles basés sur l'API. Nécessite OPENID_ROLE_SYNC_ENABLED=true.OPENID_ROLE_SYNC_API_ENABLED=false
OPENID_ROLE_SYNC_SOURCEstringSource de jeton pour la revendication de rôle. Doit être l'un des suivants : access, id, userinfo. Par défaut : id.OPENID_ROLE_SYNC_SOURCE=id
OPENID_ROLE_SYNC_CLAIMstringChemin de revendication qui contient les rôles ou groupes du fournisseur. Requis lorsque la synchronisation des rôles est activée.OPENID_ROLE_SYNC_CLAIM=
OPENID_ROLE_SYNC_ROLE_PRIORITYstringRôles LibreChat séparés par des virgules, classés du plus important au moins important. Le premier rôle correspondant est attribué.OPENID_ROLE_SYNC_ROLE_PRIORITY=Support,User
OPENID_ROLE_SYNC_FALLBACK_ROLEstringRôle LibreChat attribué lorsqu'aucun rôle prioritaire ne correspond. Le repli est prioritaire lorsqu'il est configuré.OPENID_ROLE_SYNC_FALLBACK_ROLE=USER
OPENID_BUTTON_LABELstringL'étiquette du bouton de connexion OpenID.OPENID_BUTTON_LABEL=
OPENID_IMAGE_URLstringL'URL de l'image du bouton de connexion OpenID.OPENID_IMAGE_URL=
OPENID_USE_END_SESSION_ENDPOINTstringIndique s'il faut utiliser l'Issuer End Session Endpoint comme redirection de déconnexionOPENID_USE_END_SESSION_ENDPOINT=TRUE
OPENID_MAX_LOGOUT_URL_LENGTHnumberLongueur maximale de l'URL de déconnexion avant d'utiliser logout_hint au lieu de id_token_hint. Par défaut : 2000.# OPENID_MAX_LOGOUT_URL_LENGTH=2000
OPENID_AUTO_REDIRECTbooleanIndique si la redirection vers le fournisseur OpenID doit être automatique.OPENID_AUTO_REDIRECT=true
OPENID_USE_PKCEbooleanUtilisez PKCE (Proof Key for Code Exchange) pour l'authentification OpenID. Pour les clients publics sans client secret, laissez OPENID_CLIENT_SECRET vide et réglez ceci sur true.# OPENID_USE_PKCE=true
OPENID_POST_LOGOUT_REDIRECT_URIstringURI de redirection après la déconnexion OpenID. Par défaut à ${DOMAIN_CLIENT}/login.# OPENID_POST_LOGOUT_REDIRECT_URI=
OPENID_CLOCK_TOLERANCEnumberTolérance d'horloge en secondes pour la validation des jetons. Par défaut : 300.# OPENID_CLOCK_TOLERANCE=300
OPENID_GENERATE_NONCEbooleanForce le client OpenID à générer un paramètre nonce. Requis par certains fournisseurs d'identité comme AWS Cognito (particulièrement avec la fédération) et Authentik.OPENID_GENERATE_NONCE=true
DEBUG_OPENID_REQUESTSbooleanActivez la journalisation détaillée des en-têtes de requête OpenID. Lorsqu'elle est désactivée (par défaut), seules les URL de requête sont journalisées au niveau debug. Lorsqu'elle est activée, les en-têtes de requête sont également journalisés (avec les données sensibles masquées) pour un débogage plus approfondi des problèmes d'authentification.DEBUG_OPENID_REQUESTS=false
OPENID_USERNAME_CLAIMstringLa propriété d'informations utilisateur du fournisseur OpenID à stocker comme nom d'utilisateur.OPENID_USERNAME_CLAIM=
OPENID_NAME_CLAIMstringLa propriété d'informations utilisateur du fournisseur OpenID à enregistrer comme nom d'affichage de l'utilisateur.OPENID_NAME_CLAIM=
OPENID_EMAIL_CLAIMstringLa revendication d'informations utilisateur à utiliser comme e-mail/identifiant pour la correspondance des utilisateurs (par ex. "upn" pour Entra ID). Lorsqu'elle n'est pas définie, les valeurs par défaut sont : email → preferred_username → upn.OPENID_EMAIL_CLAIM=

Synchronisation des rôles OpenID

OPENID_ROLE_SYNC_CLAIM est requis lorsque la synchronisation des rôles est activée. OPENID_ROLE_SYNC_API_ENABLED=true nécessite également OPENID_ROLE_SYNC_ENABLED=true. La synchronisation générique des rôles ne peut pas attribuer le rôle ADMIN ; utilisez OPENID_ADMIN_ROLE pour l'élévation des privilèges administrateur.

Réutilisation de jeton OpenID Connect

LibreChat prend en charge la réutilisation des jetons d'accès et de rafraîchissement émis par votre fournisseur OpenID Connect (comme Azure Entra ID ou Auth0) pour gérer l'état d'authentification des utilisateurs. Lorsque cette fonctionnalité est active, le jeton de rafraîchissement transmis à l'utilisateur sous forme de cookie est émis par votre fournisseur OpenID au lieu de LibreChat.

KeyTypeDescriptionExample
OPENID_REUSE_TOKENSbooleanActiver la réutilisation des jetons du fournisseur OpenID pour la gestion de session.OPENID_REUSE_TOKENS=false
OPENID_SCOPEstringListe des scopes OpenID séparés par des espaces. Doit inclure offline_access pour la réutilisation des jetons.OPENID_SCOPE=api://librechat/.default openid profile email offline_access
OPENID_AUDIENCEstringValeur d'audience pour les requêtes d'autorisation et de validation JWT OpenID. Les valeurs séparées par des virgules sont acceptées pour la validation JWT ; les requêtes d'autorisation utilisent la première valeur non vide. Requis pour Auth0 lorsque OPENID_REUSE_TOKENS=true. Voir la note dans la section OpenID principale ci-dessus.OPENID_AUDIENCE=https://api.librechat.com
OPENID_REUSE_MAX_SESSION_AGE_MSnumberÂge maximal pendant lequel un jeton de session OpenID réutilisé est servi avant que LibreChat ne force un rafraîchissement auprès de l'IdP. Par défaut : 900000 ms / 15 minutes.OPENID_REUSE_MAX_SESSION_AGE_MS=900000
OPENID_JWKS_URL_CACHE_ENABLEDbooleanActiver la mise en cache des résultats de vérification de la clé de signature.OPENID_JWKS_URL_CACHE_ENABLED=true
OPENID_JWKS_URL_CACHE_TIMEnumberDurée du cache en millisecondes (par défaut : 600000 ms / 10 minutes).OPENID_JWKS_URL_CACHE_TIME=600000
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIREDbooleanActiver le flux on-behalf-of pour les informations utilisateur.OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
OPENID_ON_BEHALF_FLOW_USERINFO_SCOPEstringPortée des informations utilisateur dans le flux on-behalf-of.OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read
OPENID_USE_END_SESSION_ENDPOINTbooleanActiver l'utilisation de l'endpoint de fin de session pour la déconnexion.OPENID_USE_END_SESSION_ENDPOINT=true
OPENID_MAX_LOGOUT_URL_LENGTHnumberLongueur maximale de l'URL de déconnexion en caractères avant de passer à logout_hint. Utile pour éviter les erreurs URI too long lorsque id_token_hint dépasse les limites du serveur. Par défaut : 2000.OPENID_MAX_LOGOUT_URL_LENGTH=2000

OPENID_REUSE_MAX_SESSION_AGE_MS accepte des expressions arithmétiques comme SESSION_EXPIRY. Augmentez cette valeur vers la durée de vie du jeton d'accès de l'IdP lorsque votre fournisseur révoque le jeton d'accès précédent lors du rafraîchissement, afin que les consommateurs en aval, tels que les serveurs MCP, puissent terminer l'utilisation d'un jeton porteur toujours valide.

Note

Pour des étapes de configuration détaillées et les prérequis, consultez Re-use OpenID Tokens for Login Session.

Intégration de l'API Microsoft Graph / Entra ID

Lorsque vous utilisez Azure Entra ID (anciennement Azure AD) comme fournisseur OpenID, vous pouvez activer des fonctionnalités supplémentaires de l'API Microsoft Graph pour améliorer les capacités de recherche de personnes et de groupes au sein du système d'autorisations et de partage.

KeyTypeDescriptionExample
USE_ENTRA_ID_FOR_PEOPLE_SEARCHbooleanActiver l'intégration de la recherche de personnes Entra ID dans le système de permissions/partage. Lorsqu'elle est activée, le sélecteur de personnes effectuera une recherche à la fois dans la base de données locale et dans Entra ID.USE_ENTRA_ID_FOR_PEOPLE_SEARCH=false
ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERSbooleanLorsqu'elle est activée, les propriétaires de groupes Entra ID seront considérés comme des membres du groupe.ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=false
OPENID_GRAPH_SCOPESstringÉtendues de l'API Microsoft Graph nécessaires pour la recherche de personnes/groupes. Les étendues par défaut permettent d'accéder aux profils utilisateur et aux appartenances aux groupes.OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All

Prérequis importants

  • Vous devez avoir Azure Entra ID configuré comme votre fournisseur OpenID - La réutilisation des jetons OpenID DOIT être activée (OPENID_REUSE_TOKENS=true) - cette fonctionnalité ne fonctionnera pas sans cela - Votre enregistrement d'application Azure doit disposer des autorisations Microsoft Graph API appropriées - Pour la fonctionnalité de recherche de groupe, le consentement de l'administrateur peut être requis pour certaines étendues (scopes) de l'API Graph.
Intégration SharePoint

LibreChat prend en charge l'intégration directe avec SharePoint Online et OneDrive for Business, permettant aux utilisateurs de sélectionner et de joindre des fichiers depuis leurs bibliothèques SharePoint directement au sein des conversations. Cette fonctionnalité d'entreprise s'appuie sur l'authentification Azure Entra ID existante.

KeyTypeDescriptionExample
ENABLE_SHAREPOINT_FILEPICKERbooleanActiver le sélecteur de fichiers SharePoint dans les panneaux de chat et d'agent. Lorsqu'il est activé, ajoute l'option "Depuis SharePoint" dans le menu des pièces jointes.ENABLE_SHAREPOINT_FILEPICKER=true
SHAREPOINT_BASE_URLstringURL de base du tenant SharePoint. Requis lorsque l'intégration SharePoint est activée.SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com
SHAREPOINT_PICKER_SHAREPOINT_SCOPEstringPortée OAuth spécifique à SharePoint pour le sélecteur de fichiers. Utilisée pour l'authentification lors de l'ouverture de l'interface du sélecteur de fichiers SharePoint.SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read
SHAREPOINT_PICKER_GRAPH_SCOPEstringPortée de l'API Microsoft Graph pour les téléchargements de fichiers. Utilisée pour télécharger des fichiers depuis SharePoint après sélection.SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All

Exigences critiques

Tout ce qui suit doit être configuré pour que l'intégration SharePoint fonctionne :

  • L'authentification Azure Entra ID doit être entièrement configurée
  • OPENID_REUSE_TOKENS=true est obligatoire (utilise le flux de jeton on-behalf-of)
  • OPENID_SCOPE doit inclure la portée de l'API de votre application LibreChat, par exemple api://<client-id>/access_as_user
  • OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true est requis lors de l'utilisation de cette portée app-audience avec Azure Entra ID
  • Votre inscription d'application Azure doit disposer des autorisations SharePoint et Graph API
  • Votre enregistrement d'application Azure doit exposer la portée de l'API LibreChat utilisée dans OPENID_SCOPE
  • Les quatre variables d'environnement SharePoint doivent être définies
  • HTTPS est requis dans les environnements de production

Fonctionnalités

Lorsqu'elle est activée, les utilisateurs peuvent :

  • Accéder aux fichiers depuis les bibliothèques de documents SharePoint et OneDrive for Business
  • Sélectionner plusieurs fichiers à la fois (maximum par défaut : 10 fichiers)
  • Voir la progression du téléchargement en temps réel
    • Les fichiers sont téléchargés et joints à la conversation comme des téléversements classiques.

Pour des instructions détaillées sur la configuration de SharePoint, consultez : Guide d'intégration SharePoint

SAML

Pour plus d'informations :

Exclusion mutuelle d'OpenID et de SAML

Si OpenID est activé, l'authentification SAML sera automatiquement désactivée.

Une seule méthode d'authentification peut être active à la fois.

KeyTypeDescriptionExample
SAML_ENTRY_POINTstringL'URL du point d'entrée du fournisseur d'identité (IdP) SAML.SAML_ENTRY_POINT=
SAML_ISSUERstringL'identifiant d'entité du fournisseur de services (SP) SAML.SAML_ISSUER=
SAML_CERTstringLe certificat de signature SAML, fourni sous forme de chemin de fichier ou de chaîne PEM sur une seule ligne.SAML_CERT=
SAML_CALLBACK_URLstringL'URL de rappel pour l'authentification SAML.SAML_CALLBACK_URL=/oauth/saml/callback
SAML_SESSION_SECRETstringLe secret pour le stockage de session SAML.SAML_SESSION_SECRET=
SAML_EMAIL_CLAIMstring<Optional> : L'attribut dans l'assertion SAML contenant l'e-mail de l'utilisateur. (par défaut : email)SAML_EMAIL_CLAIM=
SAML_USERNAME_CLAIMstring<Optional> : L'attribut dans l'assertion SAML contenant le nom d'utilisateur. (par défaut : username)SAML_USERNAME_CLAIM=
SAML_GIVEN_NAME_CLAIMstring<Optional> : L'attribut dans l'assertion SAML contenant le prénom. (par défaut : given_name)SAML_GIVEN_NAME_CLAIM=
SAML_FAMILY_NAME_CLAIMstring<Optional> : L'attribut dans l'assertion SAML contenant le nom de famille. (par défaut : family_name)SAML_FAMILY_NAME_CLAIM=
SAML_PICTURE_CLAIMstring<Optional> : L'attribut dans l'assertion SAML contenant l'URL de la photo de profil. (par défaut : picture)SAML_PICTURE_CLAIM=
SAML_NAME_CLAIMstring<Optional> : L'attribut dans l'assertion SAML contenant le nom complet.SAML_NAME_CLAIM=
SAML_BUTTON_LABELstring<Optional> : L'étiquette du bouton de connexion SAML.SAML_BUTTON_LABEL=
SAML_IMAGE_URLstring<Optional> : L'URL de l'image du bouton de connexion SAML.SAML_IMAGE_URL=
SAML_USE_AUTHN_RESPONSE_SIGNEDboolean<Optional> : Si "true", signe l'intégralité de la réponse SAML. Sinon, seule l'Assertion est signée (par défaut).SAML_USE_AUTHN_RESPONSE_SIGNED=

Authentification LDAP/AD

Pour plus d'informations : Authentification LDAP/AD

KeyTypeDescriptionExample
LDAP_URLstringURL du serveur LDAP.LDAP_URL=ldap://localhost:389
LDAP_BIND_DNstringDN de liaisonLDAP_BIND_DN=cn=root
LDAP_BIND_CREDENTIALSstringMot de passe pour bindDNLDAP_BIND_CREDENTIALS=password
LDAP_USER_SEARCH_BASEstringBase de recherche d'utilisateurs LDAPLDAP_USER_SEARCH_BASE=o=users,o=example.com
LDAP_SEARCH_FILTERstringFiltre de recherche LDAPLDAP_SEARCH_FILTER=mail={{username}}
LDAP_CA_CERT_PATHstringChemin du certificat CA.LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt
LDAP_TLS_REJECT_UNAUTHORIZEDstringVérification TLS LDAPLDAP_TLS_REJECT_UNAUTHORIZED=true
LDAP_STARTTLSstringActivez LDAP StartTLS pour mettre à niveau la connexion vers TLS. Définissez sur true pour activer cette fonctionnalité.LDAP_STARTTLS=true
LDAP_LOGIN_USES_USERNAMEbooleanUtiliser le nom d'utilisateur au lieu de l'adresse e-mail pour la connexion LDAP.# LDAP_LOGIN_USES_USERNAME=true
LDAP_IDstringAttribut LDAP pour l'identifiant utilisateur unique. Par défaut : uid ou sAMAccountName, mail.# LDAP_ID=uid
LDAP_USERNAMEstringAttribut LDAP pour le nom d'utilisateur. Par défaut : givenName ou mail.# LDAP_USERNAME=givenName
LDAP_EMAILstringAttribut LDAP pour l'e-mail. Par défaut : mail.# LDAP_EMAIL=userPrincipalName
LDAP_FULL_NAMEstringAttribut(s) LDAP pour le nom complet. Peut être séparé par des virgules. Par défaut : givenName + surname.# LDAP_FULL_NAME=givenName,surname

Réinitialisation du mot de passe

L'e-mail est utilisé pour la vérification de compte et la réinitialisation de mot de passe. LibreChat prend en charge à la fois l'API Mailgun et les services SMTP traditionnels. Voir : Configuration e-mail

Note importante : Vous devez configurer soit Mailgun (recommandé pour les serveurs qui bloquent le SMTP), soit le SMTP pour que les e-mails fonctionnent.

Attention : Si vous ne définissez pas de valeurs valides pour Mailgun ou SMTP, LibreChat utilisera la réinitialisation de mot de passe non sécurisée !

Mailgun est particulièrement utile pour les déploiements sur des serveurs qui bloquent les ports SMTP. Lorsque MAILGUN_API_KEY et MAILGUN_DOMAIN sont tous deux définis, LibreChat utilisera Mailgun au lieu du SMTP.

KeyTypeDescriptionExample
MAILGUN_API_KEYstringVotre clé API Mailgun (requise pour Mailgun).MAILGUN_API_KEY=
MAILGUN_DOMAINstringVotre domaine Mailgun (requis pour Mailgun).MAILGUN_DOMAIN=mg.yourdomain.com
MAILGUN_HOSTstringHôte API Mailgun personnalisé (optionnel). Utilisez https://api.eu.mailgun.net pour la région UE.MAILGUN_HOST=https://api.mailgun.net
EMAIL_FROMstringAdresse e-mail de l'expéditeur. Requis.[email protected]
EMAIL_FROM_NAMEstringNom de l'expéditeur (par défaut APP_TITLE s'il n'est pas défini).EMAIL_FROM_NAME=

Configuration SMTP

Si Mailgun n'est pas configuré, LibreChat utilisera les paramètres SMTP par défaut.

Avertissement : Si vous utilisez EMAIL_SERVICE, ne définissez PAS les paramètres de connexion étendus : HOST, PORT, ENCRYPTION, ENCRYPTION_HOSTNAME, ALLOW_SELFSIGNED.

Voir : nodemailer well-known-services

KeyTypeDescriptionExample
EMAIL_SERVICEstringService de messagerie (par ex. Gmail, Outlook).EMAIL_SERVICE=
EMAIL_HOSTstringHôte du serveur de messagerie.EMAIL_HOST=
EMAIL_PORTnumberPort du serveur de messagerie.EMAIL_PORT=25
EMAIL_ENCRYPTIONstringMéthode de chiffrement (starttls, tls, etc.).EMAIL_ENCRYPTION=
EMAIL_ENCRYPTION_HOSTNAMEstringNom d'hôte pour le chiffrement.EMAIL_ENCRYPTION_HOSTNAME=
EMAIL_ALLOW_SELFSIGNEDbooleanAutoriser les certificats auto-signés.EMAIL_ALLOW_SELFSIGNED=
EMAIL_USERNAMEstringNom d'utilisateur pour l'authentification.EMAIL_USERNAME=
EMAIL_PASSWORDstringMot de passe pour l'authentification.EMAIL_PASSWORD=
EMAIL_FROM_NAMEstringNom de l'expéditeurEMAIL_FROM_NAME=
EMAIL_FROMstringAdresse e-mail de l'expéditeur. Requis.[email protected]

CDN Firebase

Voir : Configuration du CDN Firebase

Important

  • Si vous utilisez Firebase comme stratégie de stockage de fichiers, définissez fileStrategy ou fileStrategies sur firebase dans votre fichier de configuration librechat.yaml. Pour plus d'informations sur la configuration du fichier librechat.yaml, veuillez consulter le Guide de configuration YAML : Custom Endpoints & Configuration
KeyTypeDescriptionExample
FIREBASE_API_KEYstringLa clé API pour votre projet Firebase.FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAINstringLe domaine Firebase Auth pour votre projet.FIREBASE_AUTH_DOMAIN=
FIREBASE_PROJECT_IDstringL'ID de votre projet Firebase.FIREBASE_PROJECT_ID=
FIREBASE_STORAGE_BUCKETstringLe bucket Firebase Storage pour votre projet.FIREBASE_STORAGE_BUCKET=
FIREBASE_MESSAGING_SENDER_IDstringL'ID d'expéditeur Firebase Cloud Messaging.FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_APP_IDstringL'ID d'application Firebase pour votre projet.FIREBASE_APP_ID=

Amazon S3 et CloudFront

Voir : Configuration Amazon S3 et CloudFront avec S3

Important

Si vous utilisez S3 comme stratégie de stockage de fichiers, définissez fileStrategy ou fileStrategies dans votre fichier de configuration librechat.yaml. Si vous utilisez CloudFront, S3 est toujours requis en tant qu'origine de stockage.

KeyTypeDescriptionExample
AWS_ACCESS_KEY_IDstringVotre ID de clé d'accès utilisateur IAM. Optionnel si vous utilisez IRSA.AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEYstringVotre clé d'accès secrète utilisateur IAM. Optionnel si vous utilisez IRSA.AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_REGIONstringLa région AWS où se trouve votre bucket S3.AWS_REGION=us-east-1
AWS_BUCKET_NAMEstringLe nom du bucket S3 pour le stockage de fichiers.AWS_BUCKET_NAME=your_bucket_name
AWS_ENDPOINT_URLstringURL de point de terminaison AWS personnalisé (optionnel). Pour les services compatibles S3. Incluez le schéma d'URL, tel que https://a7g8.da.idrivee2-32.com.# AWS_ENDPOINT_URL=https://your_endpoint_url
AWS_FORCE_PATH_STYLEbooleanDéfinir sur true pour les fournisseurs compatibles S3 qui nécessitent des URL de style chemin (par ex. MinIO, Hetzner, Backblaze B2). Non nécessaire pour AWS S3. Par défaut : false.# AWS_FORCE_PATH_STYLE=false
CLOUDFRONT_KEY_PAIR_IDstringID de paire de clés publiques CloudFront. Requis pour les cookies signés et les URL de téléchargement CloudFront signées.# CLOUDFRONT_KEY_PAIR_ID=K1234567890ABC
CLOUDFRONT_PRIVATE_KEYstringClé privée PEM CloudFront. Requise pour les cookies signés et les URL de téléchargement CloudFront signées. Préservez les sauts de ligne PEM lors de l'injection de ce secret.# CLOUDFRONT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"

Note : Pour les déploiements Kubernetes (par exemple sur EKS), vous pouvez utiliser IRSA (IAM Roles for Service Accounts) au lieu de fournir des identifiants explicites. Dans ce cas, seuls AWS_REGION et AWS_BUCKET_NAME sont requis.

Azure Blob Storage CDN

Voir : Configuration du CDN Azure Blob Storage

Important

Si vous utilisez Azure Blob Storage comme stratégie de stockage de fichiers, définissez fileStrategy ou fileStrategies sur azure_blob dans votre fichier de configuration librechat.yaml.

KeyTypeDescriptionExample
AZURE_STORAGE_CONNECTION_STRINGstringChaîne de connexion Azure Blob Storage. Utilisez ceci OU AZURE_STORAGE_ACCOUNT_NAME pour l'identité gérée (Managed Identity).AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...
AZURE_STORAGE_ACCOUNT_NAMEstringNom du compte de stockage Azure. À utiliser pour l'authentification par identité gérée (ne pas définir de chaîne de connexion).# AZURE_STORAGE_ACCOUNT_NAME=yourAccountName
AZURE_STORAGE_PUBLIC_ACCESSbooleanActiver l'accès public pour les blobs. Par défaut : false.AZURE_STORAGE_PUBLIC_ACCESS=false
AZURE_CONTAINER_NAMEstringNom du conteneur pour le stockage de fichiers. Par défaut : files.AZURE_CONTAINER_NAME=files

Remarque : Utilisez soit AZURE_STORAGE_CONNECTION_STRING (Option A), soit AZURE_STORAGE_ACCOUNT_NAME avec Managed Identity (Option B), mais pas les deux.

Interface utilisateur

Bouton d'aide et FAQ

KeyTypeDescriptionExample
HELP_AND_FAQ_URLstringURL d'aide et de FAQ. S'il est vide ou commenté, le bouton est activé. Pour désactiver le bouton d'aide et de FAQ, définissez-le sur "/".HELP_AND_FAQ_URL=https://librechat.ai

Comportement :

Définit les en-têtes Cache-Control pour les fichiers statiques. Ces configurations ne se déclenchent que lorsque NODE_ENV est défini sur production.

La configuration appropriée des en-têtes de cache est cruciale pour optimiser les performances et l'efficacité de votre application web. En contrôlant la durée pendant laquelle les navigateurs et les CDN stockent des copies de vos fichiers statiques, vous pouvez réduire considérablement la charge du serveur, diminuer les temps de chargement des pages et améliorer l'expérience utilisateur globale.

  • Décommentez STATIC_CACHE_MAX_AGE pour modifier le max-age des fichiers statiques. Par défaut, cette valeur est définie sur 4 semaines.
  • Décommentez STATIC_CACHE_S_MAX_AGE pour modifier le s-maxage des fichiers statiques. Par défaut, cette valeur est définie sur 1 semaine.
    • Ceci est destiné au shared cache, qui est utilisé par les CDN et les proxys.
KeyTypeDescriptionExample
APP_TITLEstringTitre de l'application.APP_TITLE=LibreChat
CUSTOM_FOOTERstringPied de page personnalisé.# CUSTOM_FOOTER="My custom footer"
TEMP_CHAT_RETENTION_HOURSnumber**Obsolète :** Utilisez plutôt `interface.temporaryChatRetention` dans librechat.yaml. Nombre d'heures de conservation des conversations temporaires. Par défaut : 720 (30 jours).# TEMP_CHAT_RETENTION_HOURS=168

Comportement :

  • Décommentez CUSTOM_FOOTER pour ajouter un pied de page personnalisé.
  • Décommentez et laissez CUSTOM_FOOTER vide pour supprimer le pied de page.
  • 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 (|).

Markdown example: CUSTOM_FOOTER=[Link 1](http://example1.com) | [Link 2](http://example2.com)

Chapeau d'anniversaire

KeyTypeDescriptionExample
SHOW_BIRTHDAY_ICONbooleanAfficher l'icône de chapeau d'anniversaire.# SHOW_BIRTHDAY_ICON=true

Comportement :

  • L'icône de chapeau d'anniversaire s'affichera automatiquement le 11 février (l'anniversaire de LibreChat).
  • Définissez SHOW_BIRTHDAY_ICON sur false pour désactiver le chapeau d'anniversaire.
  • Définissez SHOW_BIRTHDAY_ICON sur true pour activer le chapeau d'anniversaire en permanence.

Analytique

Google Tag Manager

LibreChat prend en charge Google Tag Manager pour l'analyse. Vous aurez besoin d'un identifiant Google Tag Manager pour l'activer dans LibreChat. Suivez ce guide pour générer un identifiant Google Tag Manager et configurer Google Analytics. Ensuite, définissez la variable d'environnement ANALYTICS_GTM_ID sur votre identifiant Google Tag Manager.

Note : Si ANALYTICS_GTM_ID n'est pas défini, Google Tag Manager ne sera pas activé. S'il est défini de manière incorrecte, vous verrez des requêtes échouées vers gtm.js.

KeyTypeDescriptionExample
ANALYTICS_GTM_IDstringID de Google Tag Manager.ANALYTICS_GTM_ID=

Importation de conversations

Configurez les limites pour les importations de fichiers de conversation afin d'éviter les problèmes de mémoire.

KeyTypeDescriptionExample
CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTESnumberTaille maximale de fichier en octets pour les importations de conversation. Par défaut : 0 (aucune limite appliquée). Exemple : 262144000 (250 Mio).# CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES=262144000

Aperçus de fichiers en ligne

Contrôlez la taille maximale des fichiers générés avant que LibreChat ne saute l'extraction de l'aperçu en ligne et ne les laisse disponibles uniquement en téléchargement.

KeyTypeDescriptionExample
FILE_PREVIEW_MAX_EXTRACT_BYTESnumberTaille maximale du fichier source en octets pour les aperçus en ligne des artefacts d'exécution de code. Par défaut : 2097152 (2 Mio). Les aperçus HTML rendus sont toujours limités séparément, donc les fichiers très riches peuvent ne pas être prévisualisés même en dessous de cette valeur.# FILE_PREVIEW_MAX_EXTRACT_BYTES=2097152

MCP (Model Context Protocol)

Configurez les paramètres du Model Context Protocol pour une gestion améliorée des serveurs et la prise en charge d'OAuth.

Configuration du serveur MCP

KeyTypeDescriptionExample
MCP_OAUTH_ON_AUTH_ERRORbooleanTraiter les réponses 401/403 comme une exigence OAuth lorsqu'aucune métadonnée OAuth n'est trouvée.MCP_OAUTH_ON_AUTH_ERROR=true
MCP_OAUTH_DETECTION_TIMEOUTnumberDélai d'expiration pour les requêtes de détection OAuth en millisecondes.MCP_OAUTH_DETECTION_TIMEOUT=5000
MCP_OAUTH_HANDLING_TIMEOUTnumberDurée pendant laquelle LibreChat attend qu'un utilisateur termine un flux OAuth MCP avant l'expiration du délai. Par défaut : 600000 ms (10 minutes).MCP_OAUTH_HANDLING_TIMEOUT=600000
MCP_OAUTH_FLOW_TTLnumberDurée de conservation de l'état du flux OAuth MCP. LibreChat définit cette valeur au-dessus de MCP_OAUTH_HANDLING_TIMEOUT afin que les rappels proches de la date limite puissent toujours aboutir. Par défaut : 900000 ms (15 minutes).MCP_OAUTH_FLOW_TTL=900000
MCP_CONNECTION_CHECK_TTLnumberMettre en cache les vérifications de l'état de la connexion pendant ce nombre de millisecondes pour éviter une vérification coûteuse.MCP_CONNECTION_CHECK_TTL=30000
MCP_TOOLS_LIST_MAX_PAGESnumberNombre maximal d'outils/pages de liste à demander lorsqu'un serveur MCP pagine sa liste d'outils (pagination par curseur). Limite la boucle de pagination afin qu'un serveur défaillant ne puisse pas bloquer la découverte des outils. Plafonné à un minimum de 1. Valeur par défaut : 50.MCP_TOOLS_LIST_MAX_PAGES=50
MCP_SKIP_CODE_CHALLENGE_CHECKbooleanIgnorer la validation de la méthode de défi de code. Lorsqu'il est défini sur true, force le défi de code S256 même s'il n'est pas annoncé dans .well-known/openid-configurationMCP_SKIP_CODE_CHALLENGE_CHECK=false
MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTESnumberNombre maximal d'octets autorisés dans une réponse HTTP MCP diffusable non-GET avant son rejet. Définissez sur 0 pour désactiver. Par défaut : 16777216 (16 Mio).# MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES=16777216
MCP_STREAMABLE_HTTP_MAX_LINE_BYTESnumberNombre maximal d'octets autorisés dans une ligne SSE pour les réponses HTTP MCP diffusables non-GET. Définir sur 0 pour désactiver. Par défaut : 5242880 (5 Mio).# MCP_STREAMABLE_HTTP_MAX_LINE_BYTES=5242880

Autre

Redis

Redis offre des améliorations de performance significatives et permet des capacités de mise à l'échelle horizontale pour LibreChat.

Note : Le support de Redis est expérimental et vous pourriez rencontrer quelques problèmes lors de son utilisation.

Important : Si vous utilisez Redis, vous devez vider le cache après avoir modifié les paramètres de LibreChat.

Pour une configuration détaillée et des exemples, consultez : Guide de configuration Redis

KeyTypeDescriptionExample
USE_REDISbooleanActivez Redis pour la mise en cache et le stockage de session. Lorsque cette option est définie sur true, REDIS_URI doit être fourni.USE_REDIS=true
USE_REDIS_STREAMSbooleanActivez Redis pour les flux LLM reprenables. Utilise la valeur USE_REDIS par défaut si non défini. Définissez sur false pour utiliser le stockage en mémoire pour les flux.# USE_REDIS_STREAMS=true
REDIS_URIstringURI de connexion Redis. Pour une instance unique : `redis://host:port`. Pour un cluster : URIs séparées par des virgules.REDIS_URI=redis://127.0.0.1:6379
USE_REDIS_CLUSTERbooleanActiver le mode cluster Redis lors de l'utilisation d'une URI unique# USE_REDIS_CLUSTER="true"
REDIS_CLUSTER_SAFE_DELETEbooleanSupprimez les clés de cache Redis individuellement pour éviter les erreurs CROSSSLOT sur les services Redis gérés à point de terminaison unique qui fragmentent les clés en interne.# REDIS_CLUSTER_SAFE_DELETE=true
REDIS_USERNAMEstringNom d'utilisateur Redis pour l'authentification. Remplace le nom d'utilisateur dans l'URI si les deux sont fournis.# REDIS_USERNAME=your_redis_username
REDIS_PASSWORDstringMot de passe Redis pour l'authentification. Remplace le mot de passe dans l'URI si les deux sont fournis.# REDIS_PASSWORD=your_redis_password
REDIS_CAstringChemin d'accès au certificat CA pour la vérification TLS lors de l'utilisation du protocole rediss://.# REDIS_CA=/path/to/ca-cert.pem
REDIS_KEY_PREFIXstringPréfixe statique pour toutes les clés Redis afin d'éviter la contamination entre les déploiements.# REDIS_KEY_PREFIX=librechat-prod-v2
REDIS_KEY_PREFIX_VARstringNom de la variable d'environnement contenant un préfixe dynamique (par exemple, K_REVISION pour Cloud Run). Ne peut pas être utilisé avec REDIS_KEY_PREFIX.# REDIS_KEY_PREFIX_VAR=K_REVISION
REDIS_MAX_LISTENERSnumberNombre maximal d'écouteurs d'événements par client Redis. Prévient les fuites de mémoire. Par défaut : 40.# REDIS_MAX_LISTENERS=40
REDIS_PING_INTERVALnumberIntervalle de ping en secondes pour maintenir les connexions. Par défaut : 0 (désactivé). À définir uniquement en cas de délais d'attente.# REDIS_PING_INTERVAL=300
FORCED_IN_MEMORY_CACHE_NAMESPACESstringClés de cache séparées par des virgules pour forcer le stockage en mémoire même lorsque Redis est activé.# FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES
REDIS_USE_ALTERNATIVE_DNS_LOOKUPbooleanActiver le dnsLookup alternatif pour les connexions TLS avec AWS Elasticache. Requis pour les clusters Elasticache avec TLS.# REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true

Notes :

  • Lorsque USE_REDIS=true, vous devez fournir REDIS_URI ou l'application générera une erreur.
  • Pour le mode Redis Cluster, fournissez plusieurs URI : redis://node1:7001,redis://node2:7002,redis://node3:7003 (le mode cluster est détecté automatiquement).
  • Pour les services Redis gérés à point de terminaison unique qui partitionnent les clés en interne, gardez USE_REDIS_CLUSTER=false et définissez REDIS_CLUSTER_SAFE_DELETE=true si les effacements de cache échouent avec des erreurs CROSSSLOT.
  • Utilisez le protocole rediss:// pour les connexions TLS et définissez REDIS_CA si votre autorité de certification (CA) n'est pas publiquement approuvée.
  • REDIS_KEY_PREFIX_VAR et REDIS_KEY_PREFIX sont mutuellement exclusifs.
  • AWS Elasticache avec TLS : Elasticache peut nécessiter l'utilisation d'un dnsLookup alternatif pour les connexions TLS. Définissez REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true si vous utilisez Elasticache avec TLS. Consultez la documentation ioredis pour plus de détails.

Élection du leader

Configurez l'élection de leader distribuée pour les déploiements multi-instances avec Redis. L'élection de leader garantit qu'une seule instance effectue certaines opérations, comme les tâches planifiées.

KeyTypeDescriptionExample
LEADER_LEASE_DURATIONnumberDurée en secondes pendant laquelle le bail du leader est valide avant expiration. Par défaut : 25.LEADER_LEASE_DURATION=25
LEADER_RENEW_INTERVALnumberIntervalle en secondes auquel le leader renouvelle son bail. Par défaut : 10.LEADER_RENEW_INTERVAL=10
LEADER_RENEW_ATTEMPTSnumberNombre maximal de tentatives de réessai en cas d'échec du renouvellement du bail. Par défaut : 3.LEADER_RENEW_ATTEMPTS=3
LEADER_RENEW_RETRY_DELAYnumberDélai en secondes entre les tentatives de nouvelle tentative lors du renouvellement du bail. Par défaut : 0.5.LEADER_RENEW_RETRY_DELAY=0.5

Notes :

  • L'élection du leader nécessite que Redis soit activé (USE_REDIS=true).
  • Ces paramètres ne sont pertinents que pour les déploiements multi-instances.
  • Le bail du leader doit être renouvelé avant son expiration pour maintenir le leadership.
  • Si le renouvellement du bail échoue après le nombre maximal de tentatives, l'instance abandonnera son rôle de leader.

Que pensez-vous de ce guide ?

Sur cette page

Configuration du serveurPortTrust proxyConfiguration des identifiantsGestion des fichiers statiquesContrôle du cache HTML de l'indexBase de données MongoDBConfiguration du pool de connexions MongoDBConfiguration du schéma MongoDBDomaines d'applicationEmpêcher l'indexation par les moteurs de recherche publicsJournalisationFichiers journauxVariables d'environnementAutorisationTraçage OpenTelemetryReal User Monitoring (Navigateur)Chemin de configuration - librechat.yamlCompétences de déploiementValidation de la configurationGestion des exceptions non interceptéesEndpointsConfiguration généralePoints de terminaison connus - librechat.yamlRecherche WebAnthropicAnthropic via Vertex AIAWS BedrockBingAIGoogleGénération d'images GeminiOpenAIAssistantsTavilyTraversaalWolframAlphaZapierOpenWeatherCode InterpreterArtifactsRecherche (Meilisearch)API RAGSynthèse vocale et reconnaissance vocaleLiens partagésSystème utilisateurModérationParamètres de modération de baseParamètres de bannissementLimitation du taux de connexion et d'inscriptionScore pour chaque violationLimitation du débit des messages (par utilisateur et par IP)LimiteursLimiteur d'IP :Limiteur d'utilisateur :Limitation du taux d'importation des conversationsLimiteur d'IP :Limiteur d'utilisateur :Limitation du taux de forking de conversationLimiteur d'IP :Limiteur d'utilisateur :Limitation du taux de téléchargement de fichiersLimiteur d'IP :Limiteur d'utilisateur :Limitation de débit TTS (Text-to-Speech)Limiteur d'IP :Limiteur d'utilisateur :Limitation de débit STT (Speech-to-Text)Limiteur d'IP :Limiteur d'utilisateur :SoldeGestion des soldesInscription et connexionConnexions socialesAuthentification AppleAuthentification DiscordAuthentification FacebookAuthentification GitHubAuthentification GoogleOpenID ConnectRéutilisation de jeton OpenID ConnectIntégration de l'API Microsoft Graph / Entra IDIntégration SharePointSAMLAuthentification LDAP/ADRéinitialisation du mot de passeConfiguration de Mailgun (Recommandé)Configuration SMTPCDN FirebaseAmazon S3 et CloudFrontAzure Blob Storage CDNInterface utilisateurBouton d'aide et FAQTitre de l'application et pied de pageChapeau d'anniversaireAnalytiqueGoogle Tag ManagerImportation de conversationsAperçus de fichiers en ligneMCP (Model Context Protocol)Configuration du serveur MCPAutreRedisÉlection du leader