Variabili d'ambiente
Guida completa per configurare l'ambiente della tua applicazione con il file `.env`. Questo documento è la tua risorsa unica per comprendere e personalizzare le variabili d'ambiente che determineranno il comportamento della tua applicazione in diversi contesti.
Benvenuti nella guida completa per la configurazione dell'ambiente della vostra applicazione tramite il file .env. Questo documento è la vostra risorsa unica per comprendere e personalizzare le variabili d'ambiente che determineranno il comportamento della vostra applicazione in diversi contesti.
Mentre le impostazioni predefinite forniscono una solida base per un'installazione docker standard, approfondire questa guida svelerà il pieno potenziale di LibreChat. Questa guida ti permette di adattare LibreChat alle tue esigenze specifiche. Scopri come regolare la disponibilità dei modelli linguistici, integrare i social login, gestire il sistema di moderazione automatica e molto altro. Si tratta di darti il controllo per ottimizzare LibreChat per un'esperienza utente ideale.
Promemoria: Riavviare LibreChat affinché le modifiche alla configurazione abbiano effetto
In alternativa, puoi creare un nuovo file chiamato docker-compose.override.yml nella stessa directory del tuo file docker-compose.yml principale per LibreChat, dove puoi impostare le tue variabili .env come necessario sotto environment, oppure modificare la configurazione predefinita fornita dal docker-compose.yml principale, senza la necessità di modificare direttamente o duplicare l'intero file.
Per maggiori informazioni, consulta:
-
La nostra guida rapida:
-
La documentazione ufficiale Docker:
-
Puoi anche visualizzare un esempio di file di override per LibreChat nella tua cartella LibreChat e su GitHub:
Configurazione del Server
Porta
- Il server è in ascolto su una porta specifica.
- La variabile d'ambiente
PORTimposta la porta su cui il server rimane in ascolto. Per impostazione predefinita, è impostata su3080.
| Key | Type | Description | Example |
|---|---|---|---|
| HOST | string | Specifica l'host. | HOST=localhost |
| PORT | number | Specifica la porta. | PORT=3080 |
Trust proxy
Utilizza l'indirizzo che si trova al massimo a n salti di distanza dall'applicazione Express.
req.socket.remoteAddress è il primo salto, mentre i restanti vengono cercati nell'intestazione X-Forwarded-For da destra a sinistra.
Un valore pari a 0 significa che il primo indirizzo non attendibile sarebbe req.socket.remoteAddress, ovvero non è presente alcun reverse proxy.
Il valore predefinito della variabile d'ambiente TRUST_PROXY è impostato su 1.
Fare riferimento a Express.js - trust proxy per ulteriori informazioni a riguardo.
| Key | Type | Description | Example |
|---|---|---|---|
| TRUST_PROXY | number | Specifica il numero di hop. | TRUST_PROXY=1 |
Configurazione delle credenziali
Per archiviare le credenziali in modo sicuro, è necessaria una chiave fissa e un IV. Puoi impostarli qui per gli ambienti di produzione e sviluppo.
| Key | Type | Description | Example |
|---|---|---|---|
| CREDS_KEY | string | Chiave a 32 byte (64 caratteri in esadecimale) per l'archiviazione sicura delle credenziali. Richiesta per l'avvio dell'app. | CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0 |
| CREDS_IV | string | IV a 16 byte (32 caratteri in esadecimale) per l'archiviazione sicura delle credenziali. Richiesto per l'avvio dell'app. | CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb |
Attenzione
Avviso: Se non imposti CREDS_KEY e CREDS_IV, l'app si arresterà in modo anomalo all'avvio. - Puoi utilizzare questo Generatore di chiavi per generarli rapidamente.
Gestione dei file statici
| Key | Type | Description | Example |
|---|---|---|---|
| STATIC_CACHE_MAX_AGE | string | Cache-Control max-age in secondi | STATIC_CACHE_MAX_AGE=172800 |
| STATIC_CACHE_S_MAX_AGE | string | Cache-Control s-maxage in secondi per cache condivise (CDN e proxy) | STATIC_CACHE_S_MAX_AGE="86400" |
| DISABLE_COMPRESSION | boolean | Disabilita la compressione per i file statici. | DISABLE_COMPRESSION=false |
| ENABLE_IMAGE_OUTPUT_GZIP_SCAN | boolean | Abilita la distribuzione di versioni gzipped delle immagini caricate se presenti nella stessa cartella. | ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true |
| ENABLE_STATIC_ASSET_BROTLI | boolean | Abilita la distribuzione di versioni Brotli precompresse degli asset statici dell'app quando disponibili. | ENABLE_STATIC_ASSET_BROTLI=true |
Comportamento:
Imposta le intestazioni Cache-Control per i file statici. Queste configurazioni si attivano solo quando NODE_ENV è impostato su production.
- Decommenta
STATIC_CACHE_MAX_AGEper modificare ilmax-agelocale per i file statici. Per impostazione predefinita, questo è impostato su 2 giorni (172800 secondi). - Decommenta
STATIC_CACHE_S_MAX_AGEper impostares-maxageper le cache condivise (CDN e proxy). Per impostazione predefinita, questo valore è impostato su 1 giorno (86400 secondi). - Decommenta
DISABLE_COMPRESSIONper disabilitare la compressione per i file statici. Per impostazione predefinita, la compressione è abilitata. - Decommenta
ENABLE_IMAGE_OUTPUT_GZIP_SCANper abilitare la scansione e la distribuzione della versione compressa in gzip delle immagini, se sono state pre-compresse nella stessa cartella, con lo stesso nome e un'estensione .gz. Per impostazione predefinita, la scansione gzip per le immagini caricate è disabilitata. - Decommenta
ENABLE_STATIC_ASSET_BROTLIper servire versioni.brpre-compresse degli asset statici dell'app quando presenti. Quando abilitato, Brotli è preferito rispetto a gzip per i file statici serviti dall'API.
Attenzione
- Ciò riguarda solo i file statici serviti dal server API e non è applicabile a Firebase, NGINX o qualsiasi altra configurazione.
Controllo della cache dell'HTML dell'indice
| Key | Type | Description | Example |
|---|---|---|---|
| INDEX_CACHE_CONTROL | string | Intestazione Cache-Control per index.html | INDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate |
| INDEX_PRAGMA | string | Intestazione Pragma per index.html | INDEX_PRAGMA=no-cache |
| INDEX_EXPIRES | string | Intestazione Expires per index.html | INDEX_EXPIRES=0 |
Comportamento:
Controlla le intestazioni di caching specificamente per la risposta index.html. Per impostazione predefinita, queste impostazioni impediscono il caching per garantire che gli utenti ottengano sempre l'ultima versione dell'applicazione.
Nota
A differenza delle risorse statiche che vengono memorizzate nella cache per migliorare le prestazioni, le intestazioni della cache del file index.html sono configurate separatamente per garantire che gli utenti ricevano sempre la shell dell'applicazione più recente.
Database MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_URI | string | Specifica l'URI di MongoDB. | MONGO_URI=mongodb://127.0.0.1:27017/LibreChat |
Cambia questo con il tuo URI MongoDB se diverso. Dovresti aggiungere LibreChat o il tuo APP_TITLE come nome del database nell'URI.
Se stai utilizzando un database online, il formato URI è mongodb+srv://<username>:<password>@<host>/<database>?<options>. Il tuo MONGO_URI dovrebbe apparire così:
mongodb+srv://username:[email protected]/LibreChat?retryWrites=true(retryWritesè l'unica opzione necessaria quando si utilizza il database online.)
Configurazione del pool di connessione MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_MAX_POOL_SIZE | number | Il numero massimo di connessioni nel pool di connessioni. | # MONGO_MAX_POOL_SIZE= |
| MONGO_MIN_POOL_SIZE | number | Il numero minimo di connessioni nel pool di connessioni. | # MONGO_MIN_POOL_SIZE= |
| MONGO_MAX_CONNECTING | number | Il numero massimo di connessioni che possono essere in fase di stabilimento simultaneamente dal pool di connessioni. | # MONGO_MAX_CONNECTING= |
| MONGO_MAX_IDLE_TIME_MS | number | Il numero massimo di millisecondi in cui una connessione può rimanere inattiva nel pool prima di essere rimossa e chiusa. | # MONGO_MAX_IDLE_TIME_MS= |
| MONGO_WAIT_QUEUE_TIMEOUT_MS | number | Il tempo massimo in millisecondi che un thread può attendere affinché una connessione diventi disponibile. | # MONGO_WAIT_QUEUE_TIMEOUT_MS= |
Configurazione dello Schema MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_AUTO_INDEX | boolean | Impostare su false per disabilitare la creazione automatica dell'indice per tutti i modelli associati a questa connessione. Se omesso, utilizza il comportamento predefinito di Mongoose. | # MONGO_AUTO_INDEX= |
| MONGO_AUTO_CREATE | boolean | Impostare su false per disabilitare la chiamata automatica di createCollection() da parte di Mongoose su ogni modello creato in questa connessione. Se omesso, utilizza il comportamento predefinito di Mongoose. | # MONGO_AUTO_CREATE= |
In alternativa, puoi utilizzare documentDb che emula mongoDb, ma esso:
- non supporta
retryWrites- usaretryWrites=false - richiede una connessione TLS, pertanto utilizzare i parametri
tls=trueper abilitare TLS etlsCAFile=/path-to-ca/bundle.pemper puntare al file del bundle CA fornito da AWS
L'URI per documentDb sarà simile a:
mongodb+srv://username:password@domain/dbname?retryWrites=false&tls=true&tlsCAFile=/path-to-ca/bundle.pem
Vedi anche:
- MongoDB Atlas per le istruzioni su come creare un database MongoDB Atlas online (utile per l'utilizzo senza Docker)
- MongoDB Community Server per le istruzioni su come creare un database MongoDB locale (senza Docker)
- Autenticazione MongoDB Per abilitare l'autenticazione esplicita per MongoDB in Docker.
- Gestisci il tuo database con Mongo Express per accedere in modo sicuro al tuo database MongoDB su Docker
Domini di applicazione
Per configurare LibreChat per l'uso locale o per il deployment su un dominio personalizzato, imposta le seguenti variabili d'ambiente:
| Key | Type | Description | Example |
|---|---|---|---|
| DOMAIN_CLIENT | string | Specifica il dominio lato client. | DOMAIN_CLIENT=http://localhost:3080 |
| DOMAIN_SERVER | string | Specifica il dominio lato server. | DOMAIN_SERVER=http://localhost:3080 |
| ADMIN_PANEL_URL | string | URL di base del pannello di amministrazione esterno utilizzato per i reindirizzamenti OAuth/SSO dell'amministratore quando il pannello di amministrazione è ospitato separatamente. Non includere una barra finale. | ADMIN_PANEL_URL=https://admin.example.com/admin |
| ADMIN_PANEL_SESSION_SECRET | string | Chiave di crittografia di sessione richiesta per il pannello di amministrazione incluso (minimo 32 caratteri). I servizi admin-panel in docker-compose e deploy-compose la leggono come SESSION_SECRET. Generala con `openssl rand -hex 32` prima di avviare lo stack. | ADMIN_PANEL_SESSION_SECRET=<your-32-char-random-string> |
| ADMIN_PANEL_PORT | number | Porta host per il pannello di amministrazione incluso nel docker-compose predefinito. In deploy-compose, il pannello viene servito tramite nginx all'indirizzo http://admin.localhost. | ADMIN_PANEL_PORT=3000 |
Quando distribuisci LibreChat su un dominio personalizzato, sostituisci http://localhost:3080 con il tuo URL distribuito.
- ad es.
https://librechat.example.com.
Impedire ai motori di ricerca pubblici l'indicizzazione
Per impostazione predefinita, il tuo sito web non verrà indicizzato dai motori di ricerca pubblici (ad esempio Google, Bing, …). Ciò significa che le persone non saranno in grado di trovare il tuo sito web tramite questi motori di ricerca. Se desideri rendere il tuo sito web più visibile e ricercabile, puoi modificare la seguente impostazione in false
| Key | Type | Description | Example |
|---|---|---|---|
| NO_INDEX | boolean | Impedisce ai motori di ricerca pubblici di indicizzare il tuo sito web. | NO_INDEX=true |
❗Nota: Non è garantito che questo metodo funzioni per tutti i motori di ricerca e alcuni motori di ricerca potrebbero comunque indicizzare il tuo sito web o la tua pagina web per altri scopi, come la memorizzazione nella cache o l'archiviazione. Pertanto, non dovresti fare affidamento esclusivamente su questo metodo per proteggere informazioni sensibili o riservate sul tuo sito web o sulla tua pagina web.
Logging
LibreChat dispone di un sistema di logging centrale integrato; consulta Logging System per maggiori informazioni.
File di log
- Il debug logging è abilitato per impostazione predefinita ed è fondamentale per lo sviluppo.
- Per segnalare problemi, riproduci l'errore e invia i log da
./api/logs/debug-%DATE%.logsu: LibreChat GitHub Issues - I log di errore sono archiviati nella stessa posizione.
Variabili d'ambiente
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | Mantieni attivi i log di debug. | DEBUG_LOGGING=true |
| DEBUG_CONSOLE | boolean | Abilita i log dettagliati della console/stdout nello stesso formato dei log di debug dei file. | DEBUG_CONSOLE=false |
| LOG_TO_FILE | boolean | Impostare su false per disabilitare i transport Winston basati su file mantenendo disponibile la registrazione su console. | LOG_TO_FILE=true |
| CONSOLE_JSON | boolean | Abilita log dettagliati in formato JSON su console/stdout adatti a distribuzioni cloud come GCP/AWS. | CONSOLE_JSON=false |
| CONSOLE_JSON_STRING_LENGTH | number | Configura la dimensione di troncamento per i valori stringa nei log della console/stdout JSON. Predefinito: 255. | # CONSOLE_JSON_STRING_LENGTH=255 |
| LIBRECHAT_LOG_DIR | string | Directory personalizzata per i file di log. L'impostazione predefinita è /app/logs (Docker) o api/logs (sviluppo locale). | # LIBRECHAT_LOG_DIR=/custom/log/path |
| MEM_DIAG | boolean | Abilita la diagnostica della memoria — registra snapshot di heap/RSS ogni 60 secondi. Abilitato automaticamente quando eseguito con --inspect. | # MEM_DIAG=true |
| AGENT_DEBUG_LOGGING | boolean | Abilita il logging di debug dettagliato nell'agent controller (conteggio dei token, diagnostica di potatura del contesto). | # AGENT_DEBUG_LOGGING=true |
Nota:
DEBUG_LOGGINGpuò essere utilizzato conDEBUG_CONSOLEoCONSOLE_JSON, ma non con entrambi.DEBUG_CONSOLEeCONSOLE_JSONsi escludono a vicenda.CONSOLE_JSON: Quando si gestiscono i log della console in distribuzioni cloud (come GCP o AWS), l'abilitazione di questa opzione scaricherà i log con un timestamp UTC e li formatterà come JSON.- Vedi: feat: Add CONSOLE_JSON
Nota: DEBUG_CONSOLE non è raccomandato, poiché gli output possono essere piuttosto prolissi, ed è quindi disabilitato per impostazione predefinita.
Autorizzazione
UID e GID sono numeri assegnati da Linux a ogni utente e gruppo sul sistema. Se riscontri problemi di autorizzazione, imposta qui l'UID e il GID dell'utente che esegue il comando Docker Compose. Le applicazioni nel container verranno eseguite con questi UID/GID.
| Key | Type | Description | Example |
|---|---|---|---|
| UID | number | L'ID utente. | # UID=1000 |
| GID | number | L'ID del gruppo. | # GID=1000 |
Tracciamento OpenTelemetry
LibreChat può emettere tracce OpenTelemetry del backend per la visibilità generale di API, HTTP, MongoDB, Mongoose, Redis e richieste in uscita. Gli span a livello di comando Redis sono opzionali, in modo che le tracce predefinite rimangano ad alto livello. Utilizza Langfuse per l'osservabilità di prompt/modelli specifica per la GenAI.
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | Abilita il tracing OpenTelemetry del backend. Il tracing rimane disabilitato quando OTEL_SDK_DISABLED=true. | # OTEL_TRACING_ENABLED=false |
| OTEL_SERVICE_NAME | string | Nome del servizio segnalato a OpenTelemetry. Predefinito: librechat. | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | Versione del servizio riportata a OpenTelemetry. Se non impostata, viene utilizzata la versione del pacchetto come predefinita. | # OTEL_SERVICE_VERSION= |
| OTEL_EXPORTER_OTLP_ENDPOINT | string | Endpoint dell'exporter OTLP di base. | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | endpoint OTLP specifico per le tracce. Sovrascrive l'endpoint di base per le tracce quando impostato. | # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT= |
| OTEL_EXPORTER_OTLP_HEADERS | string | Intestazioni dell'esportatore OTLP separate da virgole, come i metadati di autorizzazione. | # OTEL_EXPORTER_OTLP_HEADERS= |
| OTEL_TRACES_EXPORTER | string | Selezione dell'esportatore di tracce. | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | Campionatore di tracce OpenTelemetry. Esempio predefinito: parentbased_always_on. | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | Livello di log dell'OpenTelemetry SDK. | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | Disabilita l'SDK OpenTelemetry anche se il tracing è abilitato. | # OTEL_SDK_DISABLED=false |
| OTEL_IOREDIS_TRACING_ENABLED | boolean | Abilita gli span a livello di comando Redis. Disabilitato per impostazione predefinita per mantenere le tracce del backend ad alto livello. | # OTEL_IOREDIS_TRACING_ENABLED=false |
Real User Monitoring (Browser)
LibreChat può pubblicare la telemetria Real User Monitoring (RUM) del browser verso collector OTLP compatibili con HyperDX. RUM è disabilitato per impostazione predefinita.
| Key | Type | Description | Example |
|---|---|---|---|
| RUM_ENABLED | boolean | Abilita il Real User Monitoring del browser. Predefinito: false. | # RUM_ENABLED=false |
| RUM_PROVIDER | string | Provider RUM del browser. Attualmente supporta `hyperdx`. | # RUM_PROVIDER=hyperdx |
| RUM_URL | string | URL del collector pubblico utilizzato dalla modalità public-token. | # RUM_URL=http://localhost:4318 |
| RUM_SERVICE_NAME | string | Nome del servizio riportato dall'SDK del browser. Predefinito: librechat-web. | # RUM_SERVICE_NAME=librechat-web |
| RUM_ENVIRONMENT | string | Etichetta dell'ambiente riportata con la telemetria del browser. | # RUM_ENVIRONMENT=development |
| RUM_AUTH_MODE | string | Modalità di autenticazione per la telemetria del browser. Utilizzare `publicToken` o `proxy`. | # RUM_AUTH_MODE=publicToken |
| RUM_PUBLIC_TOKEN | string | Token del browser pubblico per la modalità public-token. Trattalo come pubblico e limita l'acquisizione presso il collector. | # RUM_PUBLIC_TOKEN= |
| RUM_PROXY_TARGET_URL | string | URL di base del collector utilizzato dalla modalità proxy autenticata. Obbligatorio quando `RUM_AUTH_MODE=proxy`. | # RUM_PROXY_TARGET_URL=http://otel-collector:4318 |
| RUM_PROXY_TIMEOUT_MS | number | Timeout della richiesta proxy in millisecondi. Predefinito: 10000. | # RUM_PROXY_TIMEOUT_MS=10000 |
| RUM_TRACE_PROPAGATION_TARGETS | string | Origini HTTPS o URL proprietari separati da virgole che dovrebbero ricevere le intestazioni traceparent. | # RUM_TRACE_PROPAGATION_TARGETS=https://api.example.com |
| RUM_DISABLE_REPLAY | boolean | Disabilita la riproduzione della sessione del browser. Predefinito: true. | # RUM_DISABLE_REPLAY=true |
| RUM_CONSOLE_CAPTURE | boolean | Acquisisci i log della console del browser. Potrebbe raccogliere prompt, risposte o payload sensibili. | # RUM_CONSOLE_CAPTURE=false |
| RUM_ADVANCED_NETWORK_CAPTURE | boolean | Cattura payload di rete dettagliati. Potrebbe raccogliere prompt, risposte o payload sensibili. | # RUM_ADVANCED_NETWORK_CAPTURE=false |
| RUM_SAMPLE_RATE | number | Frequenza di campionamento della telemetria del browser da 0 a 1. Predefinito: 1. | # RUM_SAMPLE_RATE=1 |
Nella modalità publicToken, il browser invia la telemetria direttamente a RUM_URL con RUM_PUBLIC_TOKEN. Nella modalità proxy, il browser invia la telemetria tramite LibreChat; il backend convalida la sessione utente, rimuove le intestazioni di autenticazione dell'app e inoltra la telemetria a RUM_PROXY_TARGET_URL. Le sessioni non valide o scadute vengono scartate con una risposta 204, in modo che gli errori di telemetria del browser non mostrino i normali errori di autenticazione dell'API. I risultati del proxy vengono conteggiati in rum_proxy_requests_total con le etichette endpoint e result sull'endpoint /metrics dell'API di LibreChat.
Percorso di configurazione - librechat.yaml
Specifica una posizione alternativa per il file di configurazione di LibreChat.
Puoi specificare un percorso assoluto, un percorso relativo o un URL. Il nome del file nel percorso è flessibile e non deve necessariamente essere librechat.yaml; qualsiasi file di configurazione valido funzionerà.
Nota: Se preferisci che LibreChat cerchi il file di configurazione nella directory principale (che è il comportamento predefinito), lascia semplicemente questa opzione commentata.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_PATH | string | Una posizione alternativa per il file di configurazione di LibreChat. | # CONFIG_PATH=https://raw.githubusercontent.com/danny-avila/LibreChat/main/librechat.example.yaml |
Competenze di Deployment
Le Deployment Skills vengono caricate in sola lettura all'avvio dal filesystem ed esposte agli utenti che hanno la funzionalità Skills abilitata.
| Key | Type | Description | Example |
|---|---|---|---|
| DEPLOYMENT_SKILLS_DIR | string | Directory contenente le Skills fornite dal deployment. L'impostazione predefinita è `./skill` nella root del progetto. | # DEPLOYMENT_SKILLS_DIR=./skill |
Riavvia LibreChat dopo aver modificato questa directory o qualsiasi file al suo interno. Le Skills fornite dal deployment hanno la precedenza sulle Skills persistenti con lo stesso nome.
Convalida della configurazione
Per impostazione predefinita, LibreChat terminerà con un errore (codice di uscita 1) se il file di configurazione librechat.yaml contiene errori di convalida. Questo comportamento di "fail-fast" aiuta a rilevare tempestivamente i problemi di configurazione nelle pipeline di distribuzione e impedisce l'esecuzione con impostazioni predefinite non intenzionali.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_BYPASS_VALIDATION | boolean | Se impostato su `true`, il server registrerà un avviso e continuerà l'avvio con la configurazione predefinita anche se `librechat.yaml` presenta errori di convalida. Questo preserva il comportamento legacy. | # CONFIG_BYPASS_VALIDATION=true |
Attenzione
L'utilizzo di CONFIG_BYPASS_VALIDATION=true non è raccomandato per gli ambienti di produzione. È inteso come una soluzione temporanea durante il debug di problemi di configurazione. Risolvi sempre gli errori di convalida nel tuo file di configurazione.
Gestione delle Eccezioni Non Gestite
Per impostazione predefinita, LibreChat terminerà il processo quando si verifica un'eccezione non gestita, che è il comportamento standard di Node.js. È possibile ignorare questo comportamento per mantenere l'app in esecuzione dopo le eccezioni non gestite.
| Key | Type | Description | Example |
|---|---|---|---|
| CONTINUE_ON_UNCAUGHT_EXCEPTION | boolean | Quando impostato su `true`, l'app continuerà a funzionare dopo aver riscontrato eccezioni non gestite invece di terminare il processo. | # CONTINUE_ON_UNCAUGHT_EXCEPTION=false |
Attenzione
Non raccomandato per la produzione a meno che non sia necessario. Le eccezioni non gestite potrebbero lasciare l'applicazione in uno stato imprevedibile.
Endpoint
In questa sezione, puoi configurare gli endpoint e la selezione dei modelli, le relative API key, e le impostazioni di proxy e reverse proxy per gli endpoint che lo supportano.
Configurazione generale
Decommenta ENDPOINTS per personalizzare gli endpoint disponibili in LibreChat.
| Key | Type | Description | Example |
|---|---|---|---|
| ENDPOINTS | string | Elenco separato da virgole degli endpoint disponibili. | # ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom |
| PROXY | string | Proxy in uscita per i client lato server supportati. Si applica a destinazioni sia HTTP che HTTPS. | PROXY= |
| HTTP_PROXY | string | Fallback del proxy HTTP utilizzato dai client lato server supportati quando PROXY non è impostato. | # HTTP_PROXY= |
| HTTPS_PROXY | string | Fallback del proxy HTTPS utilizzato dai client lato server supportati quando PROXY non è impostato. | # HTTPS_PROXY= |
| NO_PROXY | string | Host, domini o intervalli IP separati da virgole che i client lato server supportati devono ignorare. Viene rispettata anche la variante minuscola no_proxy. | # NO_PROXY= |
| TITLE_CONVO | boolean | Abilita la titolazione per tutti gli endpoint. | TITLE_CONVO=true |
Endpoint noti - librechat.yaml
- vedi anche: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| ANYSCALE_API_KEY | string | Chiave API per Anyscale. | # ANYSCALE_API_KEY= |
| APIPIE_API_KEY | string | Chiave API per Apipie. | # APIPIE_API_KEY= |
| COHERE_API_KEY | string | Chiave API per Cohere. | # COHERE_API_KEY= |
| FIREWORKS_API_KEY | string | Chiave API per Fireworks. | # FIREWORKS_API_KEY= |
| GROQ_API_KEY | string | Chiave API per Groq. | # GROQ_API_KEY= |
| MISTRAL_API_KEY | string | Chiave API per Mistral. | # MISTRAL_API_KEY= |
| OPENROUTER_KEY | string | Chiave API per OpenRouter. | # OPENROUTER_KEY= |
| PERPLEXITY_API_KEY | string | Chiave API per Perplexity. | # PERPLEXITY_API_KEY= |
| SHUTTLEAI_API_KEY | string | Chiave API per ShuttleAI. | # SHUTTLEAI_API_KEY= |
| TOGETHERAI_API_KEY | string | Chiave API per TogetherAI. | # TOGETHERAI_API_KEY= |
| DEEPSEEK_API_KEY | string | Chiave API per Deepseek API | # DEEPSEEK_API_KEY= |
Ricerca Web
La funzionalità di ricerca web abilita le capacità di ricerca su internet all'interno di LibreChat.
Importante: I nomi esatti delle variabili d'ambiente mostrati di seguito sono riferimenti predefiniti e possono essere personalizzati tramite il file di configurazione librechat.yaml per utilizzare qualsiasi nome di variabile si preferisca.
Per opzioni dettagliate di configurazione e personalizzazione, consulta: Configurazione Ricerca Web
| Key | Type | Description | Example |
|---|---|---|---|
| SERPER_API_KEY | string | Chiave API per il provider di ricerca Serper. Ottieni la tua chiave da https://serper.dev/api-keys | # SERPER_API_KEY= |
| TAVILY_API_KEY | string | Chiave API per il provider di ricerca e scraper Tavily. Ottieni la tua chiave da https://app.tavily.com/home | # TAVILY_API_KEY= |
| TAVILY_SEARCH_URL | string | URL personalizzato dell'API di ricerca Tavily (opzionale). Necessario solo per endpoint di ricerca personalizzati o proxy compatibili con Tavily. | # TAVILY_SEARCH_URL= |
| TAVILY_EXTRACT_URL | string | URL API di estrazione Tavily personalizzato (opzionale). Necessario solo per endpoint di estrazione personalizzati o proxy compatibili con Tavily. | # TAVILY_EXTRACT_URL= |
| FIRECRAWL_API_KEY | string | Chiave API per il servizio di scraping Firecrawl. Ottieni la tua chiave da https://docs.firecrawl.dev/introduction#api-key | # FIRECRAWL_API_KEY= |
| FIRECRAWL_API_URL | string | URL API Firecrawl personalizzato (opzionale). Necessario solo per istanze Firecrawl personalizzate. | # FIRECRAWL_API_URL= |
| FIRECRAWL_VERSION | string | Versione API di Firecrawl (v0 o v1). | # FIRECRAWL_VERSION=v1 |
| JINA_API_KEY | string | Chiave API per il servizio di reranking Jina. Ottieni la tua chiave da https://jina.ai/api-dashboard/ | # JINA_API_KEY= |
| JINA_API_URL | string | URL API Jina personalizzato (opzionale). Necessario solo per istanze Jina personalizzate. | # JINA_API_URL= |
| COHERE_API_KEY | string | Chiave API per il servizio di reranking di Cohere. Ottieni la tua chiave da https://dashboard.cohere.com/welcome/login | # COHERE_API_KEY= |
Nota: Questi nomi di variabile possono essere personalizzati nel file di configurazione librechat.yaml. Ad esempio, potresti usare CUSTOM_SERPER_KEY invece di SERPER_API_KEY configurandolo nelle impostazioni di ricerca web. Consulta la documentazione Web Search Configuration per i dettagli sulla personalizzazione dei nomi delle variabili.
Anthropic
vedi: Anthropic Endpoint
- Puoi richiedere una chiave di accesso da https://platform.claude.com/
- Lascia
ANTHROPIC_API_KEY=vuoto per disabilitare questo endpoint - Imposta
ANTHROPIC_API_KEY=su "user_provided" per consentire agli utenti di fornire la propria chiave API dall'interfaccia WebUI - Se hai accesso a un reverse proxy per
Anthropic, puoi impostarlo conANTHROPIC_REVERSE_PROXY=- lasciare vuoto o commentare per utilizzare l'URL di base predefinito
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_API_KEY | string | Chiave API Anthropic o "user_provided" per consentire agli utenti di fornire la propria chiave API. | Defaults to an empty string. |
| ANTHROPIC_MODELS | string | Elenco separato da virgole dei modelli Anthropic da utilizzare. | # ANTHROPIC_MODELS=claude-fable-5,claude-opus-4-8,claude-opus-4-7,claude-sonnet-4-6,claude-opus-4-6,claude-opus-4-20250514,claude-3-7-sonnet-20250219,claude-3-5-sonnet-20241022,claude-3-5-haiku-20241022 |
| ANTHROPIC_REVERSE_PROXY | string | Proxy inverso per Anthropic. | # ANTHROPIC_REVERSE_PROXY= |
| ANTHROPIC_TITLE_MODEL | string | DEPRECATO: Modello da utilizzare per la titolazione con Anthropic. | # ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307 |
ANTHROPIC_TITLE_MODELè ora deprecato e verrà rimosso nelle versioni future. Utilizza invece l'impostazione dell'endpointtitleModelall'interno della configurazionelibrechat.yaml.
Nota: Deve essere compatibile con l'endpoint Anthropic. Inoltre, i modelli Claude 2 e Claude 3 offrono le prestazioni migliori per questa attività, con i modelli
claude-3-haikuche risultano i più economici.
Claude Fable 5 è incluso nell'elenco predefinito dei modelli Anthropic. I modelli di classe Fable/Mythos utilizzano il comportamento moderno di Anthropic in LibreChat: 1M di contesto, supporto per l'adaptive thinking, supporto per il prompt caching e gestione di thinkingDisplay per l'output di ragionamento riassunto o omesso.
Anthropic tramite Vertex AI
Puoi anche utilizzare i modelli Anthropic Claude tramite Google Cloud Vertex AI. Per le opzioni di configurazione YAML dettagliate, consulta: Configurazione di Anthropic Vertex AI
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_USE_VERTEX | boolean | Impostare su true per utilizzare i modelli Anthropic tramite Google Vertex AI invece dell'API diretta. | ANTHROPIC_USE_VERTEX=true |
| ANTHROPIC_VERTEX_REGION | string | La regione Google Cloud per Vertex AI. Predefinito: us-east5. | ANTHROPIC_VERTEX_REGION=us-east5 |
Nota: Quando si utilizza Vertex AI, è necessario configurare anche
GOOGLE_SERVICE_KEY_FILE(vedere Configurazione Google) con un account di servizio che disponga del ruoloVertex AI User.
AWS Bedrock
Vedi: Configurazione AWS Bedrock
| Key | Type | Description | Example |
|---|---|---|---|
| BEDROCK_AWS_DEFAULT_REGION | string | È necessario fornire una regione AWS predefinita per Bedrock. | BEDROCK_AWS_DEFAULT_REGION=us-east-1 |
| BEDROCK_AWS_ACCESS_KEY_ID | string | ID della chiave di accesso AWS per Bedrock. Facoltativo se si utilizza la catena di credenziali AWS predefinita. | # BEDROCK_AWS_ACCESS_KEY_ID=your_access_key_id |
| BEDROCK_AWS_SECRET_ACCESS_KEY | string | AWS secret access key per Bedrock. Opzionale se si utilizza la catena di credenziali AWS predefinita. | # BEDROCK_AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| BEDROCK_AWS_SESSION_TOKEN | string | Token di sessione AWS per credenziali temporanee. Opzionale. | # BEDROCK_AWS_SESSION_TOKEN=your_session_token |
| BEDROCK_AWS_PROFILE | string | Nome del profilo di configurazione condiviso AWS per Bedrock. Facoltativo se si utilizza la catena di credenziali AWS predefinita. | # BEDROCK_AWS_PROFILE=your-profile-name |
| BEDROCK_AWS_BEARER_TOKEN | string | Chiave API di Amazon Bedrock per l'autenticazione bearer, oppure user_provided per consentire agli utenti di inserire la propria chiave API Bedrock nell'interfaccia utente. | # BEDROCK_AWS_BEARER_TOKEN=your_bedrock_api_key |
| BEDROCK_AWS_MODELS | string | Elenco separato da virgole degli ID dei modelli Bedrock. Se omesso, vengono inclusi tutti i modelli supportati noti. | # 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 |
Nota: Puoi omettere le chiavi di accesso per utilizzare la catena di credenziali AWS predefinita (variabili d'ambiente, credenziali SSO, file di credenziali condivisi o il servizio di metadati dell'istanza EC2/ECS). Vedi AWS Bedrock Setup per maggiori dettagli.
I modelli Claude Fable/Mythos su Bedrock sono esclusivamente basati su inference-profile. Utilizza un ID profilo come us.anthropic.claude-fable-5 e abilita l'impostazione di condivisione dati Anthropic richiesta nella console Bedrock o tramite la Data Retention API prima di invocarli.
BingAI
Bing, utilizzato anche per Sydney, jailbreak e Bing Image Creator
| Key | Type | Description | Example |
|---|---|---|---|
| BINGAI_TOKEN | string | Token di accesso Bing. Lasciare vuoto per disabilitare. Può essere impostato su "user_provided" per consentire agli utenti di fornire il proprio token dalla WebUI. | BINGAI_TOKEN=user_provided |
| BINGAI_HOST | string | URL host di Bing. Lasciare commentato per utilizzare il server predefinito. | # BINGAI_HOST=https://cn.bing.com |
Nota: Si consiglia di lasciarlo come "user_provided" e di fornire il token dalla WebUI.
Segui queste istruzioni per configurare il Google Endpoint
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_KEY | string | Chiave API di Google. Impostare su "user_provided" per consentire agli utenti di fornire la propria chiave API dalla WebUI. | GOOGLE_KEY=user_provided |
| GOOGLE_SERVICE_KEY_FILE | string | Percorso del file della chiave JSON dell'account di servizio Google, URL da cui recuperarlo o JSON stringificato. Utilizzato per l'autenticazione Vertex AI (ad esempio, funzionalità OCR). | GOOGLE_SERVICE_KEY_FILE=/path/to/auth.json |
| GOOGLE_REVERSE_PROXY | string | URL del reverse proxy di Google. | GOOGLE_REVERSE_PROXY= |
| GOOGLE_AUTH_HEADER | boolean | Utilizza l'intestazione Authorization invece di X-goog-api-key. Alcuni reverse proxy lo richiedono. | # GOOGLE_AUTH_HEADER=true |
| GOOGLE_MODELS | string | Modelli Google Gemini API disponibili, separati da virgole. | GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash,gemini-2.0-flash-lite |
| GOOGLE_MODELS | string | Modelli Vertex AI Google disponibili, separati da virgole. | GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash-001,gemini-2.0-flash-lite-001 |
| GOOGLE_TITLE_MODEL | string | DEPRECATED: Il modello utilizzato per la titolazione con Google. | GOOGLE_TITLE_MODEL=gemini-pro |
| GOOGLE_LOC | string | Specifica la posizione di Google Cloud per l'elaborazione delle richieste API | GOOGLE_LOC=us-central1 |
| GOOGLE_CLOUD_LOCATION | string | Regione alternativa per la generazione di immagini Gemini (ad esempio, global). | # GOOGLE_CLOUD_LOCATION=global |
| GOOGLE_EXCLUDE_SAFETY_SETTINGS | string | Ometti completamente le impostazioni di sicurezza incluse per impostazione predefinita, che utilizzeranno i valori predefiniti del provider | GOOGLE_EXCLUDE_SAFETY_SETTINGS=true |
| GOOGLE_SAFETY_SEXUALLY_EXPLICIT | string | Impostazione di sicurezza per contenuti sessualmente espliciti. Le opzioni sono BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY e OFF. | GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_HATE_SPEECH | string | Impostazione di sicurezza per i contenuti che incitano all'odio. Le opzioni sono BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY e OFF. | GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_HARASSMENT | string | Impostazione di sicurezza per i contenuti molesti. Le opzioni sono BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY e OFF. | GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_DANGEROUS_CONTENT | string | Impostazione di sicurezza per contenuti pericolosi. Le opzioni sono BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY e OFF. | GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_CIVIC_INTEGRITY | string | Impostazione di sicurezza per i contenuti sull'integrità civica. Le opzioni sono BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY e OFF. | # GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH |
Personalizza i modelli disponibili, separati da virgole, senza spazi. Il primo sarà quello predefinito. Lascia vuoto o commentato per utilizzare le impostazioni interne.
GOOGLE_TITLE_MODELè ora deprecato e verrà rimosso nelle versioni future. Utilizza invece l'impostazione dell'endpointtitleModelall'interno della configurazionelibrechat.yaml.
Nota: Per le variabili GOOGLE_SAFETY di Vertex AI, non hai accesso all'impostazione BLOCK_NONE per impostazione predefinita. Per utilizzare questa impostazione limitata di HarmBlockThreshold, dovrai:
- (a) Ottieni l'accesso tramite una allowlist attraverso il tuo team account Google
- (b) Passa il tuo tipo di account alla fatturazione mensile seguendo queste istruzioni: https://cloud.google.com/billing/docs/how-to/invoiced-billing
Generazione di immagini con Gemini
Gemini Image Generation è uno strumento per gli Agent che supporta sia l'API Gemini che Vertex AI. Vedi: Gemini Image Generation
| Key | Type | Description | Example |
|---|---|---|---|
| GEMINI_API_KEY | string | Chiave API Gemini dedicata per la generazione di immagini. Utilizza GOOGLE_KEY come fallback se non impostata. | # GEMINI_API_KEY=your_gemini_api_key |
| GEMINI_IMAGE_MODEL | string | Modello Gemini per la generazione di immagini. Predefinito: gemini-2.5-flash-image. | # GEMINI_IMAGE_MODEL=gemini-2.5-flash-image |
Nota: Quando non è configurata alcuna API key, lo strumento ricorre automaticamente a Vertex AI utilizzando l'account di servizio da
GOOGLE_SERVICE_KEY_FILE. L'account di servizio deve disporre del ruoloVertex AI User.
OpenAI
Vedi: Configurazione OpenAI
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_API_KEY | string | La tua chiave API OpenAI. Lascia vuoto per disabilitare questo endpoint o imposta su "user_provided" per consentire agli utenti di fornire la propria chiave API dalla WebUI. | OPENAI_API_KEY=user_provided |
| OPENAI_MODELS | string | Personalizza i modelli disponibili, separati da virgole, senza spazi. Il primo sarà quello predefinito. Lascia commentato per utilizzare le impostazioni interne. | # OPENAI_MODELS=gpt-5,gpt-5-codex,gpt-5-mini,gpt-5-nano,o3-pro,o3,o4-mini,gpt-4.1,gpt-4.1-mini,gpt-4.1-nano,o3-mini,o1-pro,o1,gpt-4o,gpt-4o-mini |
| DEBUG_OPENAI | boolean | Abilita la modalità debug per l'endpoint OpenAI. | DEBUG_OPENAI=false |
| OPENAI_SUMMARIZE | boolean | Abilita la riassunzione dei messaggi. Falso per impostazione predefinita | # OPENAI_SUMMARIZE=true |
| OPENAI_SUMMARY_MODEL | string | Il modello utilizzato per la sintesi di OpenAI. | # OPENAI_SUMMARY_MODEL=gpt-3.5-turbo |
| OPENAI_FORCE_PROMPT | boolean | Forza la chiamata dell'API con un payload di prompt invece di un payload di messaggi. | # OPENAI_FORCE_PROMPT=false |
| OPENAI_ORGANIZATION | string | Specifica quale organizzazione utilizzare per ogni richiesta API a OpenAI. Opzionale | # OPENAI_ORGANIZATION= |
| OPENAI_REVERSE_PROXY | string | DEPRECATED: Impostazioni del reverse proxy per OpenAI. | # OPENAI_REVERSE_PROXY= |
| OPENAI_TITLE_MODEL | string | DEPRECATO: Il modello utilizzato per la titolazione OpenAI. | # OPENAI_TITLE_MODEL=gpt-3.5-turbo |
OPENAI_TITLE_MODELè ora deprecato e verrà rimosso nelle versioni future. Utilizza invece l'impostazione dell'endpointtitleModelnel file di configurazionelibrechat.yaml.OPENAI_REVERSE_PROXYè ora deprecato e verrà rimosso nelle versioni future. Utilizza invece un custom endpoint.
Assistants
Vedi: Assistants Setup
| Key | Type | Description | Example |
|---|---|---|---|
| ASSISTANTS_API_KEY | string | La tua chiave API OpenAI per l'Assistants API. Lascia vuoto per disabilitare questo endpoint o imposta su "user_provided" per consentire agli utenti di fornire la propria chiave API dalla WebUI. | ASSISTANTS_API_KEY=user_provided |
| ASSISTANTS_MODELS | string | Personalizza i modelli disponibili, separati da virgole, senza spazi. Il primo sarà quello predefinito. Lascia vuoto per utilizzare le impostazioni interne. | # ASSISTANTS_MODELS=gpt-3.5-turbo-0125,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-16k,gpt-3.5-turbo,gpt-4,gpt-4-0314,gpt-4-32k-0314,gpt-4-0613,gpt-3.5-turbo-0613,gpt-3.5-turbo-1106,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview |
| ASSISTANTS_BASE_URL | string | URL di base alternativo per l'Assistants API. | # ASSISTANTS_BASE_URL= |
Nota: Puoi personalizzare i modelli disponibili, separati da virgole, senza spazi. Il primo sarà quello predefinito. Lascialo vuoto o commentato per utilizzare le impostazioni interne.
Tavily
Ottieni la tua chiave API qui: https://tavily.com/#api
Variabili d'ambiente:
| Key | Type | Description | Example |
|---|---|---|---|
| TAVILY_API_KEY | string | Chiave API Tavily. | TAVILY_API_KEY= |
Traversaal
Descrizione: Strumento di ricerca potenziato da LLM.
Ottieni la API key qui: https://api.traversaal.ai/dashboard
Variabili d'ambiente:
| Key | Type | Description | Example |
|---|---|---|---|
| TRAVERSAAL_API_KEY | string | Chiave API di Traversaal. | TRAVERSAAL_API_KEY= |
WolframAlpha
Vedi le istruzioni dettagliate qui: Wolfram Alpha
Variabili d'ambiente:
| Key | Type | Description | Example |
|---|---|---|---|
| WOLFRAM_APP_ID | string | App ID di Wolfram Alpha | WOLFRAM_APP_ID= |
Zapier
Descrizione: - È necessario un account Zapier. Ottieni la tua chiave API da qui: Zapier
- Crea azioni consentite - Segui il passaggio 3 in questa guida introduttiva di Zapier
Nota: Zapier è noto per essere complicato con alcune azioni. La stesura di bozze di email è probabilmente il suo utilizzo migliore.
Variabili d'ambiente:
| Key | Type | Description | Example |
|---|---|---|---|
| ZAPIER_NLA_API_KEY | string | Chiave API Zapier NLA. | ZAPIER_NLA_API_KEY= |
OpenWeather
Vedi le istruzioni dettagliate qui: OpenWeather
| Key | Type | Description | Example |
|---|---|---|---|
| OPENWEATHER_API_KEY | string | Chiave API di OpenWeather per la One Call API 3.0. | OPENWEATHER_API_KEY= |
Code Interpreter
L'API Code Interpreter fornisce un ambiente sicuro per l'esecuzione di codice e la gestione dei file. Vedi: Code Interpreter API
| Key | Type | Description | Example |
|---|---|---|---|
| LIBRECHAT_CODE_API_KEY | string | Chiave API per il servizio Code Interpreter. Quando impostata globalmente, fornisce l'accesso a tutti gli utenti. | LIBRECHAT_CODE_API_KEY=your-api-key |
| LIBRECHAT_CODE_BASEURL | string | URL di base personalizzato per l'API di Code Interpreter (solo piani Enterprise). | # LIBRECHAT_CODE_BASEURL=https://your-custom-domain.com |
Artifacts
Gli Artifacts sfruttano la libreria CodeSandbox per il rendering sicuro di codice HTML/JS. Per impostazione predefinita, viene utilizzato il CDN pubblico ospitato da CodeSandbox.
Fortunatamente, per coloro che hanno requisiti di rete interna, è possibile ospitare autonomamente il bundler che compila il codice frontend e specificare un URL del bundler personalizzato per Sandpack.
Per ulteriori informazioni, incluse le immagini container predefinite per l'hosting autonomo con le richieste di metriche rimosse, consultare: https://github.com/LibreChat-AI/codesandbox-client
| Key | Type | Description | Example |
|---|---|---|---|
| SANDPACK_BUNDLER_URL | string | Specifica un URL di bundler personalizzato per Sandpack, utilizzato da Artifacts | SANDPACK_BUNDLER_URL=your-bundler-url |
Ricerca (Meilisearch)
Abilita la ricerca nei messaggi e nelle conversazioni:
| Key | Type | Description | Example |
|---|---|---|---|
| SEARCH | boolean | Abilita la ricerca nei messaggi e nelle conversazioni. | SEARCH=true |
Nota: Se non stai utilizzando Docker, è richiesta l'installazione di Meilisearch, disponibile gratuitamente in modalità self-hosted o tramite un piano remoto a pagamento.
Per disabilitare l'analisi telemetrica anonimizzata per MeiliSearch per una privacy assoluta, impostare su true:
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_ANALYTICS | boolean | Disabilita l'analisi telemetrica anonimizzata per MeiliSearch. | MEILI_NO_ANALYTICS=true |
Affinché il server API possa connettersi al server di ricerca. Sostituisci '0.0.0.0' con 'meilisearch' se utilizzi MeiliSearch con docker-compose.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_HOST | string | La connessione del server API al server di ricerca. | MEILI_HOST=http://0.0.0.0:7700 |
Questa master key deve essere di almeno 16 byte, composta da caratteri UTF-8 validi. MeiliSearch genererà un errore e si rifiuterà di avviarsi se non viene fornita alcuna master key o se è inferiore a 16 byte. MeiliSearch suggerirà una master key sicura autogenerata. Questa è una chiave sicura già pronta per docker-compose, puoi sostituirla con la tua.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_MASTER_KEY | string | La chiave master per MeiliSearch. | MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt |
Per impedire a LibreChat di tentare una sincronizzazione dell'indicizzazione del database con Meilisearch, è possibile impostare la seguente variabile d'ambiente su true. Questo è utile in un cluster di nodi, o in una configurazione multi-nodo, dove solo un'istanza dovrebbe essere responsabile dell'indicizzazione.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_SYNC | string | Interruttore per disabilitare la sincronizzazione dell'indice Meilisearch | MEILI_NO_SYNC=true |
RAG API
Configura la Retrieval-Augmented Generation per l'indicizzazione dei documenti e le risposte basate sul contesto. Vedi: RAG API Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | URL del servizio API RAG. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | Chiave API OpenAI per gli embedding RAG. Sovrascrive OPENAI_API_KEY per RAG. | # RAG_OPENAI_API_KEY=sk-your-openai-api-key |
| RAG_OPENAI_BASEURL | string | URL di base OpenAI personalizzato per gli embedding RAG. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | Recupera l'intero contesto del file invece dei primi 4 risultati. Predefinito: false. | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Provider di Embeddings: openai, azure, huggingface, huggingfacetei, o ollama. Predefinito: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Modello di embeddings da utilizzare. Il valore predefinito dipende dal provider. | # EMBEDDINGS_MODEL=text-embedding-3-small |
Nota: Quando si utilizza la configurazione Docker predefinita, il file
.envè condiviso tra LibreChat e la RAG API. Per le opzioni di configurazione complete, consultare la documentazione della RAG API.
Speech to Text & Text to Speech
Configura i servizi di Speech-to-Text (STT) e Text-to-Speech (TTS). Vedi: Impostazioni vocali
| Key | Type | Description | Example |
|---|---|---|---|
| STT_API_KEY | string | Chiave API per il servizio Speech-to-Text (ad es. OpenAI Whisper). | # STT_API_KEY= |
| TTS_API_KEY | string | Chiave API per il servizio Text-to-Speech (ad es. OpenAI TTS). | # TTS_API_KEY= |
Nota: STT e TTS sono configurati principalmente attraverso la sezione
speech:inlibrechat.yaml. Queste variabili d'ambiente sono referenziate in tale configurazione. Consulta Speech Settings per le opzioni di configurazione YAML complete.
Link condivisi
Configura la funzionalità dei link di conversazione condivisi.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_SHARED_LINKS | boolean | Abilita o disabilita i link di conversazione condivisi. Predefinito: true. | ALLOW_SHARED_LINKS=true |
| ALLOW_SHARED_LINKS_PUBLIC | boolean | Consenti ai link condivisi di essere accessibili pubblicamente senza autenticazione. Predefinito: false. | ALLOW_SHARED_LINKS_PUBLIC=false |
| SHARED_LINKS_SNAPSHOT_FILES | boolean | File di snapshot referenziati da una chat condivisa in modo che i visualizzatori possano visualizzarli in anteprima o scaricarli tramite il link condiviso. Sovrascrive interface.sharedLinks.snapshotFiles quando impostato. | SHARED_LINKS_SNAPSHOT_FILES=true |
ALLOW_SHARED_LINKS è l'interruttore a livello di funzionalità. I permessi dei ruoli ora controllano chi può creare link condivisi, condividerli con utenti autenticati o renderli visibili a tutti; vedi interface.sharedLinks. ALLOW_SHARED_LINKS_PUBLIC controlla solo se i link condivisi pubblicamente possono essere visualizzati senza autenticazione. SHARED_LINKS_SNAPSHOT_FILES è un override globale per le istantanee dei file nei link condivisi e può disabilitare la visualizzazione delle istantanee per ogni link quando impostato su false.
Sistema Utente
Questa sezione contiene la configurazione per:
- Moderazione automatizzata
- Saldo/Utilizzo Token
- Registrazione e Login Social
- Reimpostazione password email
Moderazione
Il sistema di moderazione automatizzata utilizza un meccanismo di punteggio per tracciare le violazioni degli utenti. Man mano che gli utenti compiono azioni come accessi, registrazioni o invio di messaggi eccessivi, accumulano punteggi di violazione. Al raggiungimento di una soglia prestabilita, l'utente e il suo IP vengono temporaneamente bannati. Questo sistema garantisce la sicurezza della piattaforma monitorando e penalizzando le attività rapide o sospette.
vedi: Automated Moderation
Impostazioni di moderazione di base
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | Se abilitare o meno la moderazione di OpenAI sugli endpoint **OpenAI** e **Plugins**. | OPENAI_MODERATION=false |
| OPENAI_MODERATION_API_KEY | string | La tua chiave API OpenAI. | OPENAI_MODERATION_API_KEY= |
| OPENAI_MODERATION_REVERSE_PROXY | string | Nota: commentato per impostazione predefinita, non funziona con tutti i reverse proxy. | # OPENAI_MODERATION_REVERSE_PROXY= |
Impostazioni di ban
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | Se abilitare o meno il ban degli utenti per violazioni (saranno comunque registrati). | BAN_VIOLATIONS=true |
| BAN_DURATION | integer | Per quanto tempo l'utente e l'IP associato vengono bannati (in millisecondi). | BAN_DURATION=1000 * 60 * 60 * 2 |
| BAN_INTERVAL | integer | L'utente verrà bannato ogni volta che il suo punteggio raggiunge/supera la soglia dell'intervallo. | BAN_INTERVAL=20 |
Limitazione della frequenza di accesso e registrazione
Previene attacchi brute force e registrazioni spam limitando i tentativi di accesso e le registrazioni di nuovi account.
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | integer | Il numero massimo di accessi consentiti per IP per LOGIN_WINDOW. | LOGIN_MAX=7 |
| LOGIN_WINDOW | integer | In minuti, determina l'intervallo di tempo per LOGIN_MAX accessi. | LOGIN_WINDOW=5 |
| REGISTER_MAX | integer | Il numero massimo di registrazioni consentite per IP per REGISTER_WINDOW. | REGISTER_MAX=5 |
| REGISTER_WINDOW | integer | In minuti, determina la finestra temporale per REGISTER_MAX registrazioni. | REGISTER_WINDOW=60 |
Punteggio per ogni violazione
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | Punteggio per le violazioni di accesso. | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | Punteggio per le violazioni di registrazione. | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | Punte | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | Punteggio per le violazioni dei messaggi. | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | Punteggio per violazioni non relative al browser. | NON_BROWSER_VIOLATION_SCORE=20 |
| ILLEGAL_MODEL_REQ_SCORE | integer | Punteggio per richieste di modelli non consentite. | ILLEGAL_MODEL_REQ_SCORE=5 |
| IMPORT_VIOLATION_SCORE | integer | Punteggio per le violazioni nell'importazione delle conversazioni. | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | Punteggio per le violazioni di fork della conversazione. | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | Punteggio per le violazioni da testo a voce. | TTS_VIOLATION_SCORE=0 |
| STT_VIOLATION_SCORE | integer | Punteggio per le violazioni da sintesi vocale (speech-to-text). | STT_VIOLATION_SCORE=0 |
| FILE_UPLOAD_VIOLATION_SCORE | integer | Punteggio per le violazioni del caricamento file. | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | Punteggio per le violazioni del ripristino password. | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | Punteggio per le violazioni della verifica email. | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | Punteggio per le violazioni delle chiamate a strumenti. | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | Punteggio per le violazioni di accesso alla conversazione. | CONVO_ACCESS_VIOLATION_SCORE=0 |
Nota: L'accesso non tramite browser e le richieste di modelli illegali sono quasi sempre nefaste, poiché indicano che una terza parte sta tentando di accedere al server tramite uno script automatizzato.
Limitazione della frequenza dei messaggi (per utente e IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | Se limitare la quantità di messaggi che un utente può inviare per richiesta. | LIMIT_CONCURRENT_MESSAGES=true |
| CONCURRENT_MESSAGE_MAX | integer | Il numero massimo di messaggi che un utente può inviare per richiesta. | CONCURRENT_MESSAGE_MAX=2 |
Limitatori
Nota: È possibile utilizzare entrambi i limitatori, ma l'impostazione predefinita è limitare solo per IP.
Limitatore IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | Se limitare la quantità di messaggi che un IP può inviare per `MESSAGE_IP_WINDOW`. | LIMIT_MESSAGE_IP=true |
| MESSAGE_IP_MAX | integer | Il numero massimo di messaggi che un IP può inviare per `MESSAGE_IP_WINDOW`. | MESSAGE_IP_MAX=40 |
| MESSAGE_IP_WINDOW | integer | In minuti, determina la finestra temporale per `MESSAGE_IP_MAX` messaggi. | MESSAGE_IP_WINDOW=1 |
Limitatore Utente:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | Se limitare il numero di messaggi che un utente può inviare per `MESSAGE_USER_WINDOW`. | LIMIT_MESSAGE_USER=false |
| MESSAGE_USER_MAX | integer | Il numero massimo di messaggi che un utente può inviare per `MESSAGE_USER_WINDOW`. | MESSAGE_USER_MAX=40 |
| MESSAGE_USER_WINDOW | integer | In minuti, determina la finestra temporale per `MESSAGE_USER_MAX` messaggi. | MESSAGE_USER_WINDOW=1 |
Limitazione della frequenza di importazione delle conversazioni
Limita la frequenza con cui gli utenti possono importare conversazioni per prevenire abusi.
Nota: È possibile utilizzare entrambi i limitatori, ma l'impostazione predefinita è limitare solo per IP.
Limitatore IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | Se limitare il numero di importazioni di conversazioni che un IP può eseguire per `IMPORT_IP_WINDOW`. | LIMIT_IMPORT_IP=true |
| IMPORT_IP_MAX | integer | Il numero massimo di importazioni di conversazioni che un IP può eseguire per `IMPORT_IP_WINDOW`. | IMPORT_IP_MAX=100 |
| IMPORT_IP_WINDOW | integer | In minuti, determina la finestra temporale per le importazioni di `IMPORT_IP_MAX`. | IMPORT_IP_WINDOW=1 |
Limitatore Utente:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | Se limitare la quantità di importazioni di conversazioni che un utente può eseguire per `IMPORT_USER_WINDOW`. | LIMIT_IMPORT_USER=false |
| IMPORT_USER_MAX | integer | Il numero massimo di importazioni di conversazioni che un utente può eseguire per `IMPORT_USER_WINDOW`. | IMPORT_USER_MAX=50 |
| IMPORT_USER_WINDOW | integer | In minuti, determina la finestra temporale per le importazioni `IMPORT_USER_MAX`. | IMPORT_USER_WINDOW=1 |
Limitazione della frequenza di forking delle conversazioni
Limita la frequenza con cui gli utenti possono effettuare il fork delle conversazioni per prevenire abusi.
Nota: È possibile utilizzare entrambi i limitatori, ma l'impostazione predefinita è limitare solo per IP.
Limitatore IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | Se limitare il numero di fork di conversazione che un IP può creare per `FORK_IP_WINDOW`. | LIMIT_FORK_IP=true |
| FORK_IP_MAX | integer | Il numero massimo di fork di conversazione che un IP può creare per `FORK_IP_WINDOW`. | FORK_IP_MAX=30 |
| FORK_IP_WINDOW | integer | In minuti, determina la finestra temporale per i fork di `FORK_IP_MAX`. | FORK_IP_WINDOW=1 |
Limitatore Utente:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | Indica se limitare il numero di fork di conversazione che un utente può creare per `FORK_USER_WINDOW`. | LIMIT_FORK_USER=false |
| FORK_USER_MAX | integer | Il numero massimo di diramazioni di conversazione che un utente può creare per `FORK_USER_WINDOW`. | FORK_USER_MAX=7 |
| FORK_USER_WINDOW | integer | In minuti, determina la finestra temporale per i fork di `FORK_USER_MAX`. | FORK_USER_WINDOW=1 |
Limitazione della frequenza di caricamento dei file
Limita la frequenza con cui gli utenti possono caricare file per prevenire abusi.
Nota: queste possono essere configurate anche tramite
librechat.yamlnella sezionerateLimits.fileUploads.
Limitatore IP:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_IP_MAX | integer | Numero massimo di caricamenti di file per IP per `FILE_UPLOAD_IP_WINDOW`. Predefinito: 100. | # FILE_UPLOAD_IP_MAX=100 |
| FILE_UPLOAD_IP_WINDOW | integer | In minuti, determina l'intervallo di tempo per `FILE_UPLOAD_IP_MAX`. Predefinito: 15. | # FILE_UPLOAD_IP_WINDOW=15 |
Limitatore Utente:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_USER_MAX | integer | Numero massimo di caricamenti file per utente per `FILE_UPLOAD_USER_WINDOW`. Predefinito: 50. | # FILE_UPLOAD_USER_MAX=50 |
| FILE_UPLOAD_USER_WINDOW | integer | In minuti, determina l'intervallo di tempo per `FILE_UPLOAD_USER_MAX`. Predefinito: 15. | # FILE_UPLOAD_USER_WINDOW=15 |
Limite di velocità (rate limiting) per TTS (Text-to-Speech)
Limita la frequenza con cui gli utenti possono utilizzare la sintesi vocale (Text-to-Speech) per prevenire abusi.
Nota: Queste possono anche essere configurate tramite
librechat.yamlnella sezionerateLimits.tts.
Limitatore IP:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_IP_MAX | integer | Numero massimo di richieste TTS per IP per `TTS_IP_WINDOW`. Predefinito: 100. | # TTS_IP_MAX=100 |
| TTS_IP_WINDOW | integer | In minuti, determina l'intervallo di tempo per `TTS_IP_MAX`. Predefinito: 1. | # TTS_IP_WINDOW=1 |
Limitatore Utente:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_USER_MAX | integer | Numero massimo di richieste TTS per utente per `TTS_USER_WINDOW`. Predefinito: 50. | # TTS_USER_MAX=50 |
| TTS_USER_WINDOW | integer | In minuti, determina l'intervallo di tempo per `TTS_USER_MAX`. Predefinito: 1. | # TTS_USER_WINDOW=1 |
Limitazione della frequenza STT (Speech-to-Text)
Limita la frequenza con cui gli utenti possono utilizzare Speech-to-Text per prevenire abusi.
Nota: queste possono anche essere configurate tramite
librechat.yamlnella sezionerateLimits.stt.
Limitatore IP:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_IP_MAX | integer | Numero massimo di richieste STT per IP per `STT_IP_WINDOW`. Predefinito: 100. | # STT_IP_MAX=100 |
| STT_IP_WINDOW | integer | In minuti, determina la finestra temporale per `STT_IP_MAX`. Predefinito: 1. | # STT_IP_WINDOW=1 |
Limitatore Utente:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_USER_MAX | integer | Numero massimo di richieste STT per utente per `STT_USER_WINDOW`. Predefinito: 50. | # STT_USER_MAX=50 |
| STT_USER_WINDOW | integer | In minuti, determina l'intervallo di tempo per `STT_USER_MAX`. Predefinito: 1. | # STT_USER_WINDOW=1 |
Saldo
La seguente funzionalità consente la gestione dei saldi utente all'interno degli endpoint del sistema. Hai l'opzione di aggiungere saldi manualmente, oppure puoi scegliere di implementare un sistema che accumuli automaticamente i saldi per gli utenti. Se nella configurazione viene definito uno specifico saldo iniziale, i token verranno accreditati automaticamente sul saldo dell'utente al momento della registrazione.
vedi: Utilizzo dei Token
| Key | Type | Description | Example |
|---|---|---|---|
| CHECK_BALANCE | boolean | Abilita i saldi dei crediti token per gli endpoint OpenAI/Plugins. | CHECK_BALANCE=false |
| START_BALANCE | integer | Se il valore è impostato, i token verranno accreditati sul saldo dell'utente dopo la registrazione. | START_BALANCE=20000 |
Gestione dei saldi
- Esegui
npm run add-balanceper aggiungere manualmente i saldi.- Puoi anche specificare l'email e l'importo dei crediti token da aggiungere, ad esempio:
npm run add-balance [email protected] 1000
- Puoi anche specificare l'email e l'importo dei crediti token da aggiungere, ad esempio:
- Esegui
npm run set-balanceper impostare manualmente i saldi, in modo simile aadd-balance. - Esegui
npm run list-balancesper elencare il saldo di ogni utente.
Nota: 1000 crediti = $0.001 (1 mill USD)
Registrazione e Login
vedi: Authentication System
Chiarimento sul file di configurazione
Tutte le impostazioni di autenticazione in questa sezione devono essere configurate nel file .env, non nel file librechat.yaml o docker-compose.override.yml. Il file docker-compose.override.yml viene utilizzato solo per montare volumi e impostare variabili d'ambiente per Docker, mentre il file librechat.yaml viene utilizzato per gli endpoint personalizzati e altre impostazioni dell'applicazione.
- Impostazioni generali:
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Abilita o disabilita SOLO l'accesso tramite email. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Abilita o disabilita la registrazione via email per i nuovi utenti. | ALLOW_REGISTRATION=true |
| ALLOW_SOCIAL_LOGIN | boolean | Consenti agli utenti di connettersi a LibreChat tramite vari social network. | ALLOW_SOCIAL_LOGIN=false |
| ALLOW_SOCIAL_REGISTRATION | boolean | Abilita o disabilita la registrazione di nuovi utenti tramite vari social network. | ALLOW_SOCIAL_REGISTRATION=false |
| ALLOW_PASSWORD_RESET | boolean | Abilita o disabilita la possibilità per gli utenti di reimpostare la propria password autonomamente | ALLOW_PASSWORD_RESET=false |
| ALLOW_ACCOUNT_DELETION | boolean | Abilita o disabilita la possibilità per gli utenti di eliminare autonomamente il proprio account. Abilitato per impostazione predefinita se omesso o commentato. | ALLOW_ACCOUNT_DELETION=true |
| ALLOW_UNVERIFIED_EMAIL_LOGIN | boolean | Impostare su true per consentire agli utenti di accedere senza verificare il proprio indirizzo email. Se impostato su false, agli utenti verrà richiesto di verificare la propria email prima di poter accedere. | ALLOW_UNVERIFIED_EMAIL_LOGIN=true |
| MIN_PASSWORD_LENGTH | number | Lunghezza minima della password per l'autenticazione utente. Quando si utilizza l'autenticazione LDAP, potrebbe essere necessario impostarla su 1 per ignorare la convalida della password locale, poiché i server LDAP gestiscono le proprie policy relative alle password. | MIN_PASSWORD_LENGTH=8 |
Suggerimento rapido: Anche con la registrazione disabilitata, aggiungi gli utenti direttamente al database utilizzando
npm run create-user.
Suggerimento rapido: Con la registrazione disabilitata, puoi eliminare un utente con
npm run delete-user [email protected].
- Impostazioni della sessione e del token di aggiornamento:
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Tempo di scadenza della sessione. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (milliseconds) | Tempo di scadenza del token di aggiornamento. | REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7 |
| SESSION_COOKIE_SECURE | boolean | Sovrascrive l'attributo Secure per i cookie di sessione/autenticazione. Lasciare non impostato per utilizzare l'euristica predefinita di NODE_ENV/DOMAIN_SERVER. | # SESSION_COOKIE_SECURE=false |
-
Per maggiori informazioni: Refresh Token
-
Impostazioni JWT:
Dovresti utilizzare nuovi valori sicuri. Gli esempi forniti sono chiavi a 32 byte (64 caratteri in esadecimale). Utilizza questo replit per generarne rapidamente alcuni: JWT Keys
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Chiave segreta JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (hex) | Chiave segreta per il refresh dei JWT. | JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418 |
Social Logins
Per maggiori dettagli: OAuth2-OIDC
Autenticazione Apple
Per maggiori informazioni: Apple Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| APPLE_CLIENT_ID | string | Il tuo Apple Services ID (es. com.yourdomain.librechat.services). | APPLE_CLIENT_ID=com.yourdomain.librechat.services |
| APPLE_TEAM_ID | string | Il tuo Apple Developer Team ID. | APPLE_TEAM_ID=YOUR_TEAM_ID |
| APPLE_KEY_ID | string | Il tuo Apple Key ID dalla chiave scaricata. | APPLE_KEY_ID=YOUR_KEY_ID |
| APPLE_PRIVATE_KEY_PATH | string | Percorso assoluto del file .p8 scaricato. | APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8 |
| APPLE_CALLBACK_URL | string | L'URL di callback per l'autenticazione Apple. | APPLE_CALLBACK_URL=/oauth/apple/callback |
Autenticazione Discord
Per maggiori informazioni: Discord
| Key | Type | Description | Example |
|---|---|---|---|
| DISCORD_CLIENT_ID | string | Il tuo client ID di Discord. | DISCORD_CLIENT_ID= |
| DISCORD_CLIENT_SECRET | string | Il tuo client secret di Discord. | DISCORD_CLIENT_SECRET= |
| DISCORD_CALLBACK_URL | string | L'URL di callback per l'autenticazione Discord. | DISCORD_CALLBACK_URL=/oauth/discord/callback |
Autenticazione Facebook
Per maggiori informazioni: Autenticazione Facebook
| Key | Type | Description | Example |
|---|---|---|---|
| FACEBOOK_CLIENT_ID | string | Il tuo client ID di Facebook. | FACEBOOK_CLIENT_ID= |
| FACEBOOK_CLIENT_SECRET | string | Il tuo client secret di Facebook. | FACEBOOK_CLIENT_SECRET= |
| FACEBOOK_CALLBACK_URL | string | L'URL di callback per l'autenticazione Facebook. | FACEBOOK_CALLBACK_URL=/oauth/facebook/callback |
Autenticazione GitHub
Per maggiori informazioni: GitHub Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| GITHUB_CLIENT_ID | string | Il tuo client ID di GitHub. | GITHUB_CLIENT_ID= |
| GITHUB_CLIENT_SECRET | string | Il tuo client secret di GitHub. | GITHUB_CLIENT_SECRET= |
| GITHUB_CALLBACK_URL | string | L'URL di callback per l'autenticazione GitHub. | GITHUB_CALLBACK_URL=/oauth/github/callback |
| GITHUB_ENTERPRISE_BASE_URL | string | Opzionale: L'URL di base per la tua istanza GitHub Enterprise. | GITHUB_ENTERPRISE_BASE_URL= |
| GITHUB_ENTERPRISE_USER_AGENT | string | Opzionale: Lo user agent per le richieste a GitHub Enterprise. | GITHUB_ENTERPRISE_USER_AGENT= |
Autenticazione Google
Per maggiori informazioni: Google Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_CLIENT_ID | string | Il tuo Google client ID. | GOOGLE_CLIENT_ID= |
| GOOGLE_CLIENT_SECRET | string | Il tuo client secret di Google. | GOOGLE_CLIENT_SECRET= |
| GOOGLE_CALLBACK_URL | string | L'URL di callback per l'autenticazione Google. | GOOGLE_CALLBACK_URL=/oauth/google/callback |
OpenID Connect
Per ulteriori informazioni:
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_CLIENT_ID | string | Il tuo client ID OpenID. | OPENID_CLIENT_ID= |
| OPENID_CLIENT_SECRET | string | Il tuo client secret OpenID. | OPENID_CLIENT_SECRET= |
| OPENID_ISSUER | string | L'URL dell'issuer OpenID. | OPENID_ISSUER= |
| OPENID_SESSION_SECRET | string | Il segreto per l'archiviazione della sessione OpenID. | OPENID_SESSION_SECRET= |
| OPENID_SCOPE | string | Lo scope OpenID. | OPENID_SCOPE="openid profile email" |
| OPENID_CALLBACK_URL | string | L'URL di callback per l'autenticazione OpenID. | OPENID_CALLBACK_URL=/oauth/openid/callback |
| OPENID_AUDIENCE | string | Valore audience per la validazione JWT OpenID e le richieste di autorizzazione. Sono accettati valori separati da virgola per la validazione JWT; le richieste di autorizzazione utilizzano il primo valore non vuoto. Obbligatorio per Auth0 quando si utilizza OPENID_REUSE_TOKENS=true per ricevere token di accesso JWT invece di token opachi. | OPENID_AUDIENCE=https://api.librechat.com |
| OPENID_REQUIRED_ROLE | string | Il ruolo o i ruoli richiesti per la convalida. Supporta un singolo ruolo o più ruoli separati da virgola. Quando vengono specificati più ruoli, l'utente deve possedere UNO QUALSIASI dei ruoli specificati (logica OR). | OPENID_REQUIRED_ROLE=admin or OPENID_REQUIRED_ROLE=role1,role2,admin |
| OPENID_REQUIRED_ROLE_TOKEN_KIND | string | Il tipo di token per la convalida del ruolo richiesto. | OPENID_REQUIRED_ROLE_TOKEN_KIND= |
| OPENID_REQUIRED_ROLE_PARAMETER_PATH | string | Il percorso del parametro per la convalida del ruolo richiesto. | OPENID_REQUIRED_ROLE_PARAMETER_PATH= |
| OPENID_ADMIN_ROLE | string | Il ruolo che l'utente deve avere per essere un amministratore in LibreChat. | OPENID_ADMIN_ROLE= |
| OPENID_ADMIN_ROLE_TOKEN_KIND | string | La fonte delle informazioni per la verifica del ruolo di amministratore. I valori possibili sono: access, id o userinfo. | OPENID_ADMIN_ROLE_TOKEN_KIND= |
| OPENID_ADMIN_ROLE_PARAMETER_PATH | string | Il percorso del parametro per la convalida del ruolo richiesto. | OPENID_ADMIN_ROLE_PARAMETER_PATH= |
| OPENID_ROLE_SYNC_ENABLED | boolean | Abilita la sincronizzazione dei ruoli OpenID generici per i ruoli non amministrativi. ADMIN non può essere assegnato tramite sincronizzazione dei ruoli; utilizza OPENID_ADMIN_ROLE per l'elevazione a amministratore. | OPENID_ROLE_SYNC_ENABLED=false |
| OPENID_ROLE_SYNC_API_ENABLED | boolean | Abilita gli helper di sincronizzazione dei ruoli basati su API. Richiede OPENID_ROLE_SYNC_ENABLED=true. | OPENID_ROLE_SYNC_API_ENABLED=false |
| OPENID_ROLE_SYNC_SOURCE | string | Sorgente del token per il claim del ruolo. Deve essere uno tra: access, id, userinfo. Predefinito: id. | OPENID_ROLE_SYNC_SOURCE=id |
| OPENID_ROLE_SYNC_CLAIM | string | Percorso del claim che contiene i ruoli o i gruppi del provider. Obbligatorio quando la sincronizzazione dei ruoli è abilitata. | OPENID_ROLE_SYNC_CLAIM= |
| OPENID_ROLE_SYNC_ROLE_PRIORITY | string | Ruoli LibreChat separati da virgola ordinati dal più importante al meno importante. Viene assegnato il primo ruolo corrispondente. | OPENID_ROLE_SYNC_ROLE_PRIORITY=Support,User |
| OPENID_ROLE_SYNC_FALLBACK_ROLE | string | Ruolo LibreChat assegnato quando nessun ruolo prioritario corrisponde. Il fallback è autorevole quando configurato. | OPENID_ROLE_SYNC_FALLBACK_ROLE=USER |
| OPENID_BUTTON_LABEL | string | L'etichetta per il pulsante di accesso OpenID. | OPENID_BUTTON_LABEL= |
| OPENID_IMAGE_URL | string | L'URL dell'immagine del pulsante di accesso OpenID. | OPENID_IMAGE_URL= |
| OPENID_USE_END_SESSION_ENDPOINT | string | Se utilizzare l'Issuer End Session Endpoint come reindirizzamento di logout | OPENID_USE_END_SESSION_ENDPOINT=TRUE |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Lunghezza massima dell'URL di logout prima di utilizzare logout_hint invece di id_token_hint. Predefinito: 2000. | # OPENID_MAX_LOGOUT_URL_LENGTH=2000 |
| OPENID_AUTO_REDIRECT | boolean | Se reindirizzare automaticamente al provider OpenID. | OPENID_AUTO_REDIRECT=true |
| OPENID_USE_PKCE | boolean | Utilizza PKCE (Proof Key for Code Exchange) per l'autenticazione OpenID. Per i client pubblici privi di un client secret, lascia vuoto OPENID_CLIENT_SECRET e imposta questo valore su true. | # OPENID_USE_PKCE=true |
| OPENID_POST_LOGOUT_REDIRECT_URI | string | URI di reindirizzamento dopo il logout OpenID. Il valore predefinito è ${DOMAIN_CLIENT}/login. | # OPENID_POST_LOGOUT_REDIRECT_URI= |
| OPENID_CLOCK_TOLERANCE | number | Tolleranza dell'orologio in secondi per la convalida dei token. Predefinito: 300. | # OPENID_CLOCK_TOLERANCE=300 |
| OPENID_GENERATE_NONCE | boolean | Forza il client OpenID a generare un parametro nonce. Richiesto da alcuni identity provider come AWS Cognito (specialmente con la federazione) e Authentik. | OPENID_GENERATE_NONCE=true |
| DEBUG_OPENID_REQUESTS | boolean | Abilita la registrazione dettagliata degli header delle richieste OpenID. Quando disabilitata (impostazione predefinita), vengono registrati solo gli URL delle richieste a livello di debug. Quando abilitata, vengono registrati anche gli header delle richieste (con i dati sensibili mascherati) per un debug più approfondito dei problemi di autenticazione. | DEBUG_OPENID_REQUESTS=false |
| OPENID_USERNAME_CLAIM | string | La proprietà user info dal provider OpenID da memorizzare come nome utente dell'utente. | OPENID_USERNAME_CLAIM= |
| OPENID_NAME_CLAIM | string | La proprietà user info dal provider OpenID da memorizzare come nome visualizzato dell'utente. | OPENID_NAME_CLAIM= |
| OPENID_EMAIL_CLAIM | string | Il claim delle informazioni utente da utilizzare come email/identificativo per la corrispondenza utente (ad es. "upn" per Entra ID). Quando non impostato, il valore predefinito è: email → preferred_username → upn. | OPENID_EMAIL_CLAIM= |
Sincronizzazione dei ruoli OpenID
OPENID_ROLE_SYNC_CLAIM è richiesto quando la sincronizzazione dei ruoli è abilitata.
OPENID_ROLE_SYNC_API_ENABLED=true richiede anche OPENID_ROLE_SYNC_ENABLED=true. La sincronizzazione generica dei ruoli non può assegnare ADMIN; utilizza OPENID_ADMIN_ROLE per l'elevazione a amministratore.
Riutilizzo del token OpenID Connect
LibreChat supporta il riutilizzo dei token di accesso e di aggiornamento (refresh token) emessi dal tuo provider OpenID Connect (come Azure Entra ID o Auth0) per gestire lo stato di autenticazione dell'utente. Quando questa funzionalità è attiva, il refresh token passato all'utente come cookie viene emesso dal tuo provider OpenID anziché da LibreChat.
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_REUSE_TOKENS | boolean | Abilita il riutilizzo dei token del provider OpenID per la gestione della sessione. | OPENID_REUSE_TOKENS=false |
| OPENID_SCOPE | string | Elenco di scope OpenID separati da spazi. Deve includere offline_access per il riutilizzo del token. | OPENID_SCOPE=api://librechat/.default openid profile email offline_access |
| OPENID_AUDIENCE | string | Valore audience per le richieste di autorizzazione e validazione JWT OpenID. Sono accettati valori separati da virgola per la validazione JWT; le richieste di autorizzazione utilizzano il primo valore non vuoto. Obbligatorio per Auth0 quando OPENID_REUSE_TOKENS=true. Vedi la nota nella sezione principale OpenID qui sopra. | OPENID_AUDIENCE=https://api.librechat.com |
| OPENID_REUSE_MAX_SESSION_AGE_MS | number | Età massima in cui un token di sessione OpenID riutilizzato viene servito prima che LibreChat forzi un aggiornamento dell'IdP. Predefinito: 900000 ms / 15 minuti. | OPENID_REUSE_MAX_SESSION_AGE_MS=900000 |
| OPENID_JWKS_URL_CACHE_ENABLED | boolean | Abilita la memorizzazione nella cache dei risultati della verifica della chiave di firma. | OPENID_JWKS_URL_CACHE_ENABLED=true |
| OPENID_JWKS_URL_CACHE_TIME | number | Durata della cache in millisecondi (predefinito: 600000 ms / 10 minuti). | OPENID_JWKS_URL_CACHE_TIME=600000 |
| OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED | boolean | Abilita il flusso on-behalf-of per le informazioni utente. | OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true |
| OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE | string | Ambito per le informazioni utente nel flusso on-behalf-of. | OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read |
| OPENID_USE_END_SESSION_ENDPOINT | boolean | Abilita l'uso dell'endpoint end session per il logout. | OPENID_USE_END_SESSION_ENDPOINT=true |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Lunghezza massima dell'URL di logout in caratteri prima di passare a logout_hint. Utile per prevenire errori di URI troppo lungo quando id_token_hint supera i limiti del server. Predefinito: 2000. | OPENID_MAX_LOGOUT_URL_LENGTH=2000 |
OPENID_REUSE_MAX_SESSION_AGE_MS accetta espressioni aritmetiche come SESSION_EXPIRY. Aumentalo verso la durata del token di accesso dell'IdP quando il tuo provider revoca il precedente token di accesso al momento del refresh, in modo che i consumer a valle, come i server MCP, possano terminare l'utilizzo di un bearer token ancora valido.
Nota
Per i passaggi di configurazione dettagliati e i prerequisiti, consulta Re-use OpenID Tokens for Login Session.
Integrazione Microsoft Graph API / Entra ID
Quando si utilizza Azure Entra ID (precedentemente Azure AD) come provider OpenID, è possibile abilitare funzionalità aggiuntive di Microsoft Graph API per migliorare le capacità di ricerca di persone e gruppi all'interno del sistema di permessi e condivisione.
| Key | Type | Description | Example |
|---|---|---|---|
| USE_ENTRA_ID_FOR_PEOPLE_SEARCH | boolean | Abilita l'integrazione della ricerca persone di Entra ID nel sistema di permessi/condivisione. Quando abilitato, il selettore di persone cercherà sia nel database locale che in Entra ID. | USE_ENTRA_ID_FOR_PEOPLE_SEARCH=false |
| ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS | boolean | Quando abilitato, i proprietari del gruppo Entra ID saranno considerati come membri del gruppo. | ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=false |
| OPENID_GRAPH_SCOPES | string | Ambiti Microsoft Graph API necessari per la ricerca di persone/gruppi. Gli ambiti predefiniti forniscono l'accesso ai profili utente e alle appartenenze ai gruppi. | OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All |
Prerequisiti importanti
- È necessario che Azure Entra ID sia configurato come provider OpenID - il riutilizzo dei token OpenID DEVE essere abilitato (
OPENID_REUSE_TOKENS=true) - questa funzionalità non funzionerà senza di esso - La registrazione dell'app Azure deve disporre delle autorizzazioni appropriate per Microsoft Graph API - Per la funzionalità di ricerca dei gruppi, potrebbe essere richiesto il consenso dell'amministratore per determinati ambiti (scope) di Graph API
Integrazione SharePoint
LibreChat supporta l'integrazione diretta con SharePoint Online e OneDrive for Business, consentendo agli utenti di selezionare e allegare file dalle proprie raccolte SharePoint direttamente all'interno delle conversazioni. Questa funzionalità enterprise sfrutta l'autenticazione Azure Entra ID esistente.
| Key | Type | Description | Example |
|---|---|---|---|
| ENABLE_SHAREPOINT_FILEPICKER | boolean | Abilita il selettore di file SharePoint nei pannelli della chat e degli agenti. Quando abilitato, aggiunge l'opzione "Da SharePoint" nel menu degli allegati. | ENABLE_SHAREPOINT_FILEPICKER=true |
| SHAREPOINT_BASE_URL | string | URL di base del tenant SharePoint. Obbligatorio quando l'integrazione SharePoint è abilitata. | SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com |
| SHAREPOINT_PICKER_SHAREPOINT_SCOPE | string | Ambito OAuth specifico di SharePoint per il selettore file. Utilizzato per l'autenticazione durante l'apertura dell'interfaccia del selettore file di SharePoint. | SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read |
| SHAREPOINT_PICKER_GRAPH_SCOPE | string | Ambito Microsoft Graph API per il download di file. Utilizzato per scaricare file da SharePoint dopo la selezione. | SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All |
Requisiti critici
Tutti i seguenti elementi devono essere configurati affinché l'integrazione con SharePoint funzioni:
- L'autenticazione Azure Entra ID deve essere completamente configurata
OPENID_REUSE_TOKENS=trueè obbligatorio (utilizza il flusso di token on-behalf-of)OPENID_SCOPEdeve includere lo scope dell'API della tua app LibreChat, ad esempioapi://<client-id>/access_as_userOPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=trueè richiesto quando si utilizza quello scope app-audience con Azure Entra ID- La tua registrazione dell'app Azure deve disporre delle autorizzazioni SharePoint e Graph API
- La tua registrazione dell'app Azure deve esporre lo scope dell'API di LibreChat utilizzato in
OPENID_SCOPE - Tutte e quattro le variabili d'ambiente SharePoint devono essere impostate
- HTTPS è richiesto negli ambienti di produzione
Funzionalità delle caratteristiche
Quando abilitato, gli utenti possono:
- Accedere ai file dalle raccolte documenti di SharePoint e da OneDrive for Business
- Selezionare più file contemporaneamente (massimo predefinito: 10 file)
- Visualizzare l'avanzamento del download in tempo reale
- I file vengono scaricati e allegati alla conversazione come normali caricamenti
Per istruzioni dettagliate sulla configurazione di SharePoint, consultare: SharePoint Integration Guide
SAML
Per ulteriori informazioni:
Esclusione reciproca di OpenID e SAML
Se OpenID è abilitato, l'autenticazione SAML verrà disabilitata automaticamente.
È possibile attivare solo un metodo di autenticazione alla volta.
| Key | Type | Description | Example |
|---|---|---|---|
| SAML_ENTRY_POINT | string | L'URL del punto di ingresso del provider di identità (IdP) SAML. | SAML_ENTRY_POINT= |
| SAML_ISSUER | string | L'entity ID del service provider (SP) SAML. | SAML_ISSUER= |
| SAML_CERT | string | Il certificato di firma SAML, fornito come percorso del file o stringa PEM su una riga. | SAML_CERT= |
| SAML_CALLBACK_URL | string | L'URL di callback per l'autenticazione SAML. | SAML_CALLBACK_URL=/oauth/saml/callback |
| SAML_SESSION_SECRET | string | Il segreto per l'archiviazione della sessione SAML. | SAML_SESSION_SECRET= |
| SAML_EMAIL_CLAIM | string | <Optional>: L'attributo nell'asserzione SAML contenente l'email dell'utente. (predefinito: email) | SAML_EMAIL_CLAIM= |
| SAML_USERNAME_CLAIM | string | <Optional>: L'attributo nell'asserzione SAML contenente il nome utente. (predefinito: username) | SAML_USERNAME_CLAIM= |
| SAML_GIVEN_NAME_CLAIM | string | <Optional>: L'attributo nell'asserzione SAML contenente il nome di battesimo. (predefinito: given_name) | SAML_GIVEN_NAME_CLAIM= |
| SAML_FAMILY_NAME_CLAIM | string | <Optional>: L'attributo nell'asserzione SAML contenente il cognome. (predefinito: family_name) | SAML_FAMILY_NAME_CLAIM= |
| SAML_PICTURE_CLAIM | string | <Optional>: L'attributo nell'asserzione SAML contenente l'URL dell'immagine del profilo. (predefinito: picture) | SAML_PICTURE_CLAIM= |
| SAML_NAME_CLAIM | string | <Optional>: L'attributo nell'asserzione SAML contenente il nome completo. | SAML_NAME_CLAIM= |
| SAML_BUTTON_LABEL | string | <Optional>: L'etichetta per il pulsante di accesso SAML. | SAML_BUTTON_LABEL= |
| SAML_IMAGE_URL | string | <Optional>: L'URL dell'immagine del pulsante di accesso SAML. | SAML_IMAGE_URL= |
| SAML_USE_AUTHN_RESPONSE_SIGNED | boolean | <Optional>: Se "true", firma l'intera SAML Response. Altrimenti, viene firmata solo l'Assertion (impostazione predefinita). | SAML_USE_AUTHN_RESPONSE_SIGNED= |
Autenticazione LDAP/AD
Per maggiori informazioni: Autenticazione LDAP/AD
| Key | Type | Description | Example |
|---|---|---|---|
| LDAP_URL | string | URL del server LDAP. | LDAP_URL=ldap://localhost:389 |
| LDAP_BIND_DN | string | DN di associazione | LDAP_BIND_DN=cn=root |
| LDAP_BIND_CREDENTIALS | string | Password per bindDN | LDAP_BIND_CREDENTIALS=password |
| LDAP_USER_SEARCH_BASE | string | Base di ricerca utenti LDAP | LDAP_USER_SEARCH_BASE=o=users,o=example.com |
| LDAP_SEARCH_FILTER | string | Filtro di ricerca LDAP | LDAP_SEARCH_FILTER=mail={{username}} |
| LDAP_CA_CERT_PATH | string | Percorso del certificato CA. | LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt |
| LDAP_TLS_REJECT_UNAUTHORIZED | string | Verifica TLS LDAP | LDAP_TLS_REJECT_UNAUTHORIZED=true |
| LDAP_STARTTLS | string | Abilita LDAP StartTLS per aggiornare la connessione a TLS. Impostare su true per abilitare questa funzionalità. | LDAP_STARTTLS=true |
| LDAP_LOGIN_USES_USERNAME | boolean | Usa il nome utente invece dell'email per l'accesso LDAP. | # LDAP_LOGIN_USES_USERNAME=true |
| LDAP_ID | string | Attributo LDAP per l'ID utente univoco. Predefinito: uid o sAMAccountName, mail. | # LDAP_ID=uid |
| LDAP_USERNAME | string | Attributo LDAP per il nome utente. Predefinito: givenName o mail. | # LDAP_USERNAME=givenName |
| LDAP_EMAIL | string | Attributo LDAP per l'email. Predefinito: mail. | # LDAP_EMAIL=userPrincipalName |
| LDAP_FULL_NAME | string | Attributo/i LDAP per il nome completo. Possono essere separati da virgola. Predefinito: givenName + surname. | # LDAP_FULL_NAME=givenName,surname |
Reimpostazione password
L'email viene utilizzata per la verifica dell'account e il ripristino della password. LibreChat supporta sia l'API di Mailgun che i servizi SMTP tradizionali. Vedi: Configurazione email
Nota importante: È necessario configurare Mailgun (consigliato per i server che bloccano SMTP) o SMTP affinché l'email funzioni.
Attenzione: La mancata impostazione di valori validi per Mailgun o SMTP comporterà l'utilizzo da parte di LibreChat della procedura di reimpostazione della password non protetta!
Configurazione di Mailgun (Consigliata)
Mailgun è particolarmente utile per le distribuzioni su server che bloccano le porte SMTP. Quando sia MAILGUN_API_KEY che MAILGUN_DOMAIN sono impostati, LibreChat utilizzerà Mailgun invece di SMTP.
| Key | Type | Description | Example |
|---|---|---|---|
| MAILGUN_API_KEY | string | La tua chiave API Mailgun (richiesta per Mailgun). | MAILGUN_API_KEY= |
| MAILGUN_DOMAIN | string | Il tuo dominio Mailgun (richiesto per Mailgun). | MAILGUN_DOMAIN=mg.yourdomain.com |
| MAILGUN_HOST | string | Host API Mailgun personalizzato (opzionale). Utilizzare https://api.eu.mailgun.net per la regione UE. | MAILGUN_HOST=https://api.mailgun.net |
| EMAIL_FROM | string | Indirizzo email del mittente. Obbligatorio. | [email protected] |
| EMAIL_FROM_NAME | string | Nome del mittente (predefinito su APP_TITLE se non impostato). | EMAIL_FROM_NAME= |
Configurazione SMTP
Se Mailgun non è configurato, LibreChat utilizzerà le impostazioni SMTP come fallback.
Attenzione: Se si utilizza
EMAIL_SERVICE, NON impostare i parametri di connessione estesi: HOST, PORT, ENCRYPTION, ENCRYPTION_HOSTNAME, ALLOW_SELFSIGNED.
Vedi: nodemailer well-known-services
| Key | Type | Description | Example |
|---|---|---|---|
| EMAIL_SERVICE | string | Servizio email (es. Gmail, Outlook). | EMAIL_SERVICE= |
| EMAIL_HOST | string | Host del server di posta. | EMAIL_HOST= |
| EMAIL_PORT | number | Porta del server di posta. | EMAIL_PORT=25 |
| EMAIL_ENCRYPTION | string | Metodo di crittografia (starttls, tls, ecc.). | EMAIL_ENCRYPTION= |
| EMAIL_ENCRYPTION_HOSTNAME | string | Hostname per la crittografia. | EMAIL_ENCRYPTION_HOSTNAME= |
| EMAIL_ALLOW_SELFSIGNED | boolean | Consenti certificati autofirmati. | EMAIL_ALLOW_SELFSIGNED= |
| EMAIL_USERNAME | string | Nome utente per l'autenticazione. | EMAIL_USERNAME= |
| EMAIL_PASSWORD | string | Password per l'autenticazione. | EMAIL_PASSWORD= |
| EMAIL_FROM_NAME | string | Nome del mittente | EMAIL_FROM_NAME= |
| EMAIL_FROM | string | Indirizzo email del mittente. Obbligatorio. | [email protected] |
Firebase CDN
Vedi: Configurazione Firebase CDN
Importante
- Se stai utilizzando Firebase come strategia di archiviazione dei file, imposta
fileStrategyofileStrategiessufirebasenel tuo file di configurazionelibrechat.yaml. Per ulteriori informazioni sulla configurazione del filelibrechat.yaml, consulta la Guida alla configurazione YAML: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| FIREBASE_API_KEY | string | La chiave API per il tuo progetto Firebase. | FIREBASE_API_KEY= |
| FIREBASE_AUTH_DOMAIN | string | Il dominio Firebase Auth per il tuo progetto. | FIREBASE_AUTH_DOMAIN= |
| FIREBASE_PROJECT_ID | string | L'ID del tuo progetto Firebase. | FIREBASE_PROJECT_ID= |
| FIREBASE_STORAGE_BUCKET | string | Il bucket Firebase Storage per il tuo progetto. | FIREBASE_STORAGE_BUCKET= |
| FIREBASE_MESSAGING_SENDER_ID | string | L'ID mittente di Firebase Cloud Messaging. | FIREBASE_MESSAGING_SENDER_ID= |
| FIREBASE_APP_ID | string | L'App ID di Firebase per il tuo progetto. | FIREBASE_APP_ID= |
Amazon S3 e CloudFront
Vedi: Configurazione Amazon S3 e CloudFront con S3
Importante
Se stai utilizzando S3 come strategia di archiviazione dei file, imposta fileStrategy o fileStrategies nel tuo file di configurazione librechat.yaml. Se utilizzi CloudFront, S3 è comunque richiesto come origine di archiviazione.
| Key | Type | Description | Example |
|---|---|---|---|
| AWS_ACCESS_KEY_ID | string | Il tuo ID chiave di accesso utente IAM. Facoltativo se si utilizza IRSA. | AWS_ACCESS_KEY_ID=your_access_key_id |
| AWS_SECRET_ACCESS_KEY | string | La tua secret access key dell'utente IAM. Facoltativa se si utilizza IRSA. | AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| AWS_REGION | string | La regione AWS in cui si trova il tuo bucket S3. | AWS_REGION=us-east-1 |
| AWS_BUCKET_NAME | string | Il nome del bucket S3 per l'archiviazione dei file. | AWS_BUCKET_NAME=your_bucket_name |
| AWS_ENDPOINT_URL | string | URL endpoint AWS personalizzato (opzionale). Per servizi compatibili con S3. Includere lo schema URL, come https://a7g8.da.idrivee2-32.com. | # AWS_ENDPOINT_URL=https://your_endpoint_url |
| AWS_FORCE_PATH_STYLE | boolean | Impostare su true per i provider compatibili con S3 che richiedono URL in stile percorso (ad esempio MinIO, Hetzner, Backblaze B2). Non necessario per AWS S3. Predefinito: false. | # AWS_FORCE_PATH_STYLE=false |
| CLOUDFRONT_KEY_PAIR_ID | string | ID della coppia di chiavi pubblica CloudFront. Obbligatorio per i cookie firmati e gli URL di download CloudFront firmati. | # CLOUDFRONT_KEY_PAIR_ID=K1234567890ABC |
| CLOUDFRONT_PRIVATE_KEY | string | Chiave privata PEM di CloudFront. Richiesta per i cookie firmati e gli URL di download firmati di CloudFront. Mantenere le nuove righe PEM durante l'inserimento di questo segreto. | # CLOUDFRONT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----" |
Nota: Per le distribuzioni Kubernetes (ad esempio, su EKS), è possibile utilizzare IRSA (IAM Roles for Service Accounts) invece di fornire credenziali esplicite. In tal caso, sono richiesti solo
AWS_REGIONeAWS_BUCKET_NAME.
Azure Blob Storage CDN
Vedi: Configurazione CDN di Azure Blob Storage
Importante
Se stai utilizzando Azure Blob Storage come strategia di archiviazione dei file, imposta fileStrategy o fileStrategies su azure_blob nel tuo file di configurazione librechat.yaml.
| Key | Type | Description | Example |
|---|---|---|---|
| AZURE_STORAGE_CONNECTION_STRING | string | Stringa di connessione di Azure Blob Storage. Utilizzare questa OPPURE AZURE_STORAGE_ACCOUNT_NAME per Managed Identity. | AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=... |
| AZURE_STORAGE_ACCOUNT_NAME | string | Nome dell'account Azure Storage. Utilizzare per l'autenticazione tramite Managed Identity (non impostare la stringa di connessione). | # AZURE_STORAGE_ACCOUNT_NAME=yourAccountName |
| AZURE_STORAGE_PUBLIC_ACCESS | boolean | Abilita l'accesso pubblico per i blob. Predefinito: false. | AZURE_STORAGE_PUBLIC_ACCESS=false |
| AZURE_CONTAINER_NAME | string | Nome del container per l'archiviazione dei file. Predefinito: files. | AZURE_CONTAINER_NAME=files |
Nota: Utilizzare
AZURE_STORAGE_CONNECTION_STRING(Opzione A) oppureAZURE_STORAGE_ACCOUNT_NAMEcon Managed Identity (Opzione B), non entrambi.
UI
Pulsante Aiuto e FAQ
| Key | Type | Description | Example |
|---|---|---|---|
| HELP_AND_FAQ_URL | string | URL di Aiuto e FAQ. Se vuoto o commentato, il pulsante è abilitato. Per disabilitare il pulsante Aiuto e FAQ, impostare su "/". | HELP_AND_FAQ_URL=https://librechat.ai |
Comportamento:
Imposta le intestazioni Cache-Control per i file statici. Queste configurazioni si attivano solo quando NODE_ENV è impostato su production.
L'impostazione corretta degli header di cache è fondamentale per ottimizzare le prestazioni e l'efficienza della tua applicazione web. Controllando per quanto tempo i browser e le CDN memorizzano le copie dei tuoi file statici, puoi ridurre significativamente il carico del server, diminuire i tempi di caricamento delle pagine e migliorare l'esperienza utente complessiva.
- Decommenta
STATIC_CACHE_MAX_AGEper modificare ilmax-ageper i file statici. Per impostazione predefinita, questo è impostato su 4 settimane. - Decommenta
STATIC_CACHE_S_MAX_AGEper modificare il valores-maxageper i file statici. Per impostazione predefinita, questo è impostato su 1 settimana.- Questo è per la shared cache, che viene utilizzata da CDN e proxy.
Titolo dell'App e Piè di pagina
| Key | Type | Description | Example |
|---|---|---|---|
| APP_TITLE | string | Titolo dell'app. | APP_TITLE=LibreChat |
| CUSTOM_FOOTER | string | Piè di pagina personalizzato. | # CUSTOM_FOOTER="My custom footer" |
| TEMP_CHAT_RETENTION_HOURS | number | **Deprecato:** Utilizzare `interface.temporaryChatRetention` in librechat.yaml. Ore per conservare le chat temporanee. Predefinito: 720 (30 giorni). | # TEMP_CHAT_RETENTION_HOURS=168 |
Comportamento:
- Decommenta
CUSTOM_FOOTERper aggiungere un piè di pagina personalizzato. - Decommenta e lascia
CUSTOM_FOOTERvuoto per rimuovere il piè di pagina. - Ora puoi aggiungere uno o più link nel valore CUSTOM_FOOTER utilizzando il seguente formato:
[Anchor text](URL). Ogni link deve essere delimitato da una barra verticale (|).
Esempio Markdown:
CUSTOM_FOOTER=[Link 1](http://example1.com) | [Link 2](http://example2.com)
Cappellino di compleanno
| Key | Type | Description | Example |
|---|---|---|---|
| SHOW_BIRTHDAY_ICON | boolean | Mostra l'icona del cappellino di compleanno. | # SHOW_BIRTHDAY_ICON=true |
Comportamento:
- L'icona del cappellino di compleanno apparirà automaticamente l'11 febbraio (il compleanno di LibreChat).
- Imposta
SHOW_BIRTHDAY_ICONsufalseper disabilitare il cappellino di compleanno. - Imposta
SHOW_BIRTHDAY_ICONsutrueper abilitare il cappellino di compleanno tutto il tempo.
Analisi
Google Tag Manager
LibreChat supporta Google Tag Manager per l'analisi dei dati. Avrai bisogno di un ID Google Tag Manager per abilitarlo in LibreChat. Segui questa guida per generare un ID Google Tag Manager e configurare Google Analytics. Successivamente, imposta la variabile d'ambiente ANALYTICS_GTM_ID con il tuo ID Google Tag Manager.
Nota: Se ANALYTICS_GTM_ID non è impostato, Google Tag Manager non sarà abilitato. Se è impostato in modo errato, vedrai richieste fallite a gtm.js
| Key | Type | Description | Example |
|---|---|---|---|
| ANALYTICS_GTM_ID | string | ID di Google Tag Manager. | ANALYTICS_GTM_ID= |
Importazione conversazione
Configura i limiti per le importazioni di file nelle conversazioni per prevenire problemi di memoria.
| Key | Type | Description | Example |
|---|---|---|---|
| CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES | number | Dimensione massima del file in byte per le importazioni di conversazioni. Predefinito: 0 (nessun limite applicato). Esempio: 262144000 (250 MiB). | # CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES=262144000 |
Anteprime dei file in linea
Controlla quanto possono essere grandi i file generati prima che LibreChat ignori l'estrazione dell'anteprima in linea e li lasci disponibili solo per il download.
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_PREVIEW_MAX_EXTRACT_BYTES | number | Dimensione massima del file sorgente in byte per le anteprime inline degli artefatti di esecuzione del codice. Predefinito: 2097152 (2 MiB). Le anteprime HTML renderizzate sono comunque limitate separatamente, quindi i file molto ricchi potrebbero non essere visualizzati in anteprima anche se al di sotto di questo valore. | # FILE_PREVIEW_MAX_EXTRACT_BYTES=2097152 |
MCP (Model Context Protocol)
Configura le impostazioni del Model Context Protocol per una gestione avanzata del server e il supporto OAuth.
Configurazione del Server MCP
| Key | Type | Description | Example |
|---|---|---|---|
| MCP_OAUTH_ON_AUTH_ERROR | boolean | Tratta le risposte 401/403 come requisito OAuth quando non viene trovato alcun metadato oauth. | MCP_OAUTH_ON_AUTH_ERROR=true |
| MCP_OAUTH_DETECTION_TIMEOUT | number | Timeout per le richieste di rilevamento OAuth in millisecondi. | MCP_OAUTH_DETECTION_TIMEOUT=5000 |
| MCP_OAUTH_HANDLING_TIMEOUT | number | Quanto tempo LibreChat attende che un utente completi un flusso MCP OAuth prima del timeout. Predefinito: 600000 ms (10 minuti). | MCP_OAUTH_HANDLING_TIMEOUT=600000 |
| MCP_OAUTH_FLOW_TTL | number | Per quanto tempo viene conservato lo stato del flusso OAuth MCP. LibreChat lo imposta al di sopra di MCP_OAUTH_HANDLING_TIMEOUT in modo che i callback vicini alla scadenza possano comunque essere completati. Predefinito: 900000 ms (15 minuti). | MCP_OAUTH_FLOW_TTL=900000 |
| MCP_CONNECTION_CHECK_TTL | number | Controlli dello stato della connessione alla cache per questo numero di millisecondi per evitare costose verifiche. | MCP_CONNECTION_CHECK_TTL=30000 |
| MCP_TOOLS_LIST_MAX_PAGES | number | Numero massimo di strumenti/pagine di elenco da richiedere quando un server MCP impagina il proprio elenco di strumenti (paginazione tramite cursore). Limita il ciclo di paginazione in modo che un server malfunzionante non possa bloccare l'individuazione degli strumenti. Limitato a un minimo di 1. Predefinito: 50. | MCP_TOOLS_LIST_MAX_PAGES=50 |
| MCP_SKIP_CODE_CHALLENGE_CHECK | boolean | Salta la convalida del metodo di verifica del codice (code challenge). Se impostato su true, forza il code challenge S256 anche se non pubblicizzato in .well-known/openid-configuration | MCP_SKIP_CODE_CHALLENGE_CHECK=false |
| MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES | number | Byte massimi consentiti in una risposta HTTP MCP streamable non-GET prima di rifiutarla. Impostare a 0 per disabilitare. Predefinito: 16777216 (16 MiB). | # MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES=16777216 |
| MCP_STREAMABLE_HTTP_MAX_LINE_BYTES | number | Byte massimi consentiti in una singola riga SSE per risposte HTTP MCP streamabili non-GET. Impostare a 0 per disabilitare. Predefinito: 5242880 (5 MiB). | # MCP_STREAMABLE_HTTP_MAX_LINE_BYTES=5242880 |
Altro
Redis
Redis fornisce significativi miglioramenti delle prestazioni e abilita funzionalità di scalabilità orizzontale per LibreChat.
Nota: Il supporto a Redis è sperimentale e potresti riscontrare alcuni problemi durante il suo utilizzo.
Importante: Se utilizzi Redis, dovresti svuotare la cache dopo aver modificato qualsiasi impostazione di LibreChat.
Per una configurazione dettagliata ed esempi, consulta: Redis Configuration Guide
| Key | Type | Description | Example |
|---|---|---|---|
| USE_REDIS | boolean | Abilita Redis per la memorizzazione nella cache e delle sessioni. Quando è impostato su true, deve essere fornito REDIS_URI. | USE_REDIS=true |
| USE_REDIS_STREAMS | boolean | Abilita Redis per i flussi LLM riprendibili. Se non impostato, utilizza il valore predefinito di USE_REDIS. Imposta su false per utilizzare l'archiviazione in memoria per i flussi. | # USE_REDIS_STREAMS=true |
| REDIS_URI | string | URI di connessione Redis. Per istanza singola: `redis://host:port`. Per cluster: URI separati da virgola. | REDIS_URI=redis://127.0.0.1:6379 |
| USE_REDIS_CLUSTER | boolean | Abilita la modalità cluster di Redis quando si utilizza un singolo URI | # USE_REDIS_CLUSTER="true" |
| REDIS_CLUSTER_SAFE_DELETE | boolean | Elimina le chiavi della cache Redis singolarmente per evitare errori CROSSSLOT sui servizi Redis gestiti a endpoint singolo che suddividono le chiavi internamente. | # REDIS_CLUSTER_SAFE_DELETE=true |
| REDIS_USERNAME | string | Nome utente Redis per l'autenticazione. Sovrascrive il nome utente nell'URI se entrambi sono forniti. | # REDIS_USERNAME=your_redis_username |
| REDIS_PASSWORD | string | Password Redis per l'autenticazione. Sovrascrive la password nell'URI se entrambe sono fornite. | # REDIS_PASSWORD=your_redis_password |
| REDIS_CA | string | Percorso del certificato CA per la verifica TLS quando si utilizza il protocollo rediss://. | # REDIS_CA=/path/to/ca-cert.pem |
| REDIS_KEY_PREFIX | string | Prefisso statico per tutte le chiavi Redis per prevenire la contaminazione tra diverse distribuzioni. | # REDIS_KEY_PREFIX=librechat-prod-v2 |
| REDIS_KEY_PREFIX_VAR | string | Nome della variabile d'ambiente contenente il prefisso dinamico (es. K_REVISION per Cloud Run). Non può essere utilizzato con REDIS_KEY_PREFIX. | # REDIS_KEY_PREFIX_VAR=K_REVISION |
| REDIS_MAX_LISTENERS | number | Numero massimo di event listener per client Redis. Previene perdite di memoria. Predefinito: 40. | # REDIS_MAX_LISTENERS=40 |
| REDIS_PING_INTERVAL | number | Intervallo di ping in secondi per mantenere le connessioni. Predefinito: 0 (disabilitato). Impostare solo se si verificano timeout. | # REDIS_PING_INTERVAL=300 |
| FORCED_IN_MEMORY_CACHE_NAMESPACES | string | Chiavi di cache separate da virgole per forzare l'archiviazione in memoria anche quando Redis è abilitato. | # FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES |
| REDIS_USE_ALTERNATIVE_DNS_LOOKUP | boolean | Abilita dnsLookup alternativo per connessioni TLS con AWS Elasticache. Richiesto per cluster Elasticache con TLS. | # REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true |
Note:
- Quando
USE_REDIS=true, è necessario fornireREDIS_URIo l'applicazione genererà un errore. - Per la modalità Redis Cluster, fornisci più URI:
redis://node1:7001,redis://node2:7002,redis://node3:7003(la modalità cluster viene rilevata automaticamente). - Per i servizi Redis gestiti a endpoint singolo che suddividono le chiavi internamente (sharding), mantieni
USE_REDIS_CLUSTER=falsee impostaREDIS_CLUSTER_SAFE_DELETE=truese la pulizia della cache fallisce con erroriCROSSSLOT. - Usa il protocollo
rediss://per le connessioni TLS e impostaREDIS_CAse la tua CA non è pubblicamente attendibile. REDIS_KEY_PREFIX_VAReREDIS_KEY_PREFIXsi escludono a vicenda.- AWS Elasticache con TLS: Elasticache potrebbe richiedere l'utilizzo di un dnsLookup alternativo per le connessioni TLS. Imposta
REDIS_USE_ALTERNATIVE_DNS_LOOKUP=truese utilizzi Elasticache con TLS. Consulta la documentazione di ioredis per ulteriori dettagli.
Elezione del leader
Configura l'elezione del leader distribuito per distribuzioni multi-istanza con Redis. L'elezione del leader garantisce che solo un'istanza esegua determinate operazioni, come le attività pianificate.
| Key | Type | Description | Example |
|---|---|---|---|
| LEADER_LEASE_DURATION | number | Durata in secondi per cui il lease del leader è valido prima della scadenza. Predefinito: 25. | LEADER_LEASE_DURATION=25 |
| LEADER_RENEW_INTERVAL | number | Intervallo in secondi in cui il leader rinnova il proprio lease. Predefinito: 10. | LEADER_RENEW_INTERVAL=10 |
| LEADER_RENEW_ATTEMPTS | number | Numero massimo di tentativi di riprova quando il rinnovo del lease fallisce. Predefinito: 3. | LEADER_RENEW_ATTEMPTS=3 |
| LEADER_RENEW_RETRY_DELAY | number | Ritardo in secondi tra i tentativi di riprova durante il rinnovo del lease. Predefinito: 0.5. | LEADER_RENEW_RETRY_DELAY=0.5 |
Note:
- L'elezione del leader richiede che Redis sia abilitato (
USE_REDIS=true). - Queste impostazioni sono rilevanti solo per distribuzioni multi-istanza.
- Il leader lease deve essere rinnovato prima della scadenza per mantenere la leadership.
- Se il rinnovo del lease fallisce dopo il numero massimo di tentativi, l'istanza rinuncerà alla leadership.
Com’è questa guida?