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

Variáveis de Ambiente

Guia abrangente para configurar o ambiente da sua aplicação com o arquivo `.env`. Este documento é seu recurso central para entender e personalizar as variáveis de ambiente que moldarão o comportamento da sua aplicação em diferentes contextos.

Bem-vindo ao guia abrangente para configurar o ambiente da sua aplicação com o arquivo .env. Este documento é o seu recurso central para entender e personalizar as variáveis de ambiente que moldarão o comportamento da sua aplicação em diferentes contextos.

Embora as configurações padrão forneçam uma base sólida para uma instalação docker padrão, aprofundar-se neste guia revelará todo o potencial do LibreChat. Este guia capacita você a personalizar o LibreChat para suas necessidades precisas. Descubra como ajustar a disponibilidade de modelos de linguagem, integrar logins sociais, gerenciar o sistema de moderação automática e muito mais. Trata-se de dar a você o controle para ajustar o LibreChat para uma experiência de usuário ideal.

Lembrete: Por favor, reinicie o LibreChat para que as alterações de configuração entrem em vigor

Alternativamente, você pode criar um novo arquivo chamado docker-compose.override.yml no mesmo diretório que o seu arquivo principal docker-compose.yml do LibreChat, onde você pode definir suas variáveis de .env conforme necessário em environment, ou modificar a configuração padrão fornecida pelo docker-compose.yml principal, sem a necessidade de editar diretamente ou duplicar o arquivo inteiro.

Para mais informações, veja:


Configuração do Servidor

Porta

  • O servidor escuta em uma porta específica.
  • A variável de ambiente PORT define a porta onde o servidor escuta. Por padrão, ela é definida como 3080.
KeyTypeDescriptionExample
HOSTstringEspecifica o host.HOST=localhost
PORTnumberEspecifica a porta.PORT=3080

Trust proxy

Use o endereço que esteja a, no máximo, n saltos de distância da aplicação Express. req.socket.remoteAddress é o primeiro salto, e os demais são buscados no cabeçalho X-Forwarded-For da direita para a esquerda. Um valor de 0 significa que o primeiro endereço não confiável seria req.socket.remoteAddress, ou seja, não há proxy reverso. O padrão da variável de ambiente TRUST_PROXY é definido como 1.

Consulte Express.js - trust proxy para mais informações sobre isso.

KeyTypeDescriptionExample
TRUST_PROXYnumberEspecifica o número de saltos.TRUST_PROXY=1

Configuração de Credenciais

Para armazenar credenciais de forma segura, você precisa de uma chave e um IV fixos. Você pode defini-los aqui para ambientes de prod e dev.

KeyTypeDescriptionExample
CREDS_KEYstringChave de 32 bytes (64 caracteres em hex) para armazenamento seguro de credenciais. Obrigatória para a inicialização do app.CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0
CREDS_IVstringIV de 16 bytes (32 caracteres em hex) para armazenamento seguro de credenciais. Necessário para a inicialização do app.CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb

Aviso

Aviso: Se você não definir CREDS_KEY e CREDS_IV, o aplicativo irá travar na inicialização. - Você pode usar este Gerador de Chaves para gerá-las rapidamente.

Manipulação de Arquivos Estáticos

KeyTypeDescriptionExample
STATIC_CACHE_MAX_AGEstringCache-Control max-age em segundosSTATIC_CACHE_MAX_AGE=172800
STATIC_CACHE_S_MAX_AGEstringCache-Control s-maxage em segundos para caches compartilhados (CDNs e proxies)STATIC_CACHE_S_MAX_AGE="86400"
DISABLE_COMPRESSIONbooleanDesativa a compressão para arquivos estáticos.DISABLE_COMPRESSION=false
ENABLE_IMAGE_OUTPUT_GZIP_SCANbooleanHabilita o fornecimento de versões gzipped de imagens enviadas, caso estejam presentes na mesma pasta.ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true
ENABLE_STATIC_ASSET_BROTLIbooleanHabilita o fornecimento de versões Brotli pré-comprimidas de ativos estáticos do aplicativo quando disponíveis.ENABLE_STATIC_ASSET_BROTLI=true

Comportamento:

Define os cabeçalhos Cache-Control para arquivos estáticos. Estas configurações só são acionadas quando o NODE_ENV está definido como production.

  • Remova o comentário de STATIC_CACHE_MAX_AGE para alterar o max-age local para arquivos estáticos. Por padrão, isso é definido como 2 dias (172800 segundos).
  • Remova o comentário de STATIC_CACHE_S_MAX_AGE para definir o s-maxage para caches compartilhados (CDNs e proxies). Por padrão, isso é definido como 1 dia (86400 segundos).
  • Remova o comentário de DISABLE_COMPRESSION para desativar a compressão de arquivos estáticos. Por padrão, a compressão está ativada.
  • Descomente ENABLE_IMAGE_OUTPUT_GZIP_SCAN para habilitar a verificação e o fornecimento de versões compactadas em gzip de imagens, caso elas tenham sido pré-compactadas na mesma pasta, com o mesmo nome e uma extensão .gz. Por padrão, a verificação de gzip para imagens enviadas está desabilitada.
  • Descomente ENABLE_STATIC_ASSET_BROTLI para servir versões .br pré-comprimidas de ativos estáticos do aplicativo quando elas existirem. Quando ativado, o Brotli é preferido em relação ao gzip para arquivos estáticos servidos pela API.

Aviso

  • Isso afeta apenas arquivos estáticos servidos pelo servidor da API e não é aplicável ao Firebase, NGINX ou quaisquer outras configurações.

Controle de Cache do HTML de Índice

KeyTypeDescriptionExample
INDEX_CACHE_CONTROLstringCabeçalho Cache-Control para index.htmlINDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate
INDEX_PRAGMAstringCabeçalho Pragma para index.htmlINDEX_PRAGMA=no-cache
INDEX_EXPIRESstringCabeçalho Expires para index.htmlINDEX_EXPIRES=0

Comportamento:

Controla os cabeçalhos de cache especificamente para a resposta do index.html. Por padrão, essas configurações impedem o cache para garantir que os usuários sempre obtenham a versão mais recente do aplicativo.

Nota

Ao contrário dos ativos estáticos que são armazenados em cache para desempenho, os cabeçalhos de cache do arquivo index.html são configurados separadamente para garantir que os usuários sempre obtenham o shell de aplicação mais recente.

Banco de dados MongoDB

KeyTypeDescriptionExample
MONGO_URIstringEspecifica a URI do MongoDB.MONGO_URI=mongodb://127.0.0.1:27017/LibreChat

Altere isso para a sua URI do MongoDB, caso seja diferente. Você deve adicionar LibreChat ou o seu próprio APP_TITLE como o nome do banco de dados na URI.

Se você estiver usando um banco de dados online, o formato da URI é mongodb+srv://<username>:<password>@<host>/<database>?<options>. Sua MONGO_URI deve ser semelhante a isto:

  • mongodb+srv://username:[email protected]/LibreChat?retryWrites=true (retryWrites é a única opção que você precisa ao usar o banco de dados online.)

Configuração do Pool de Conexão do MongoDB

KeyTypeDescriptionExample
MONGO_MAX_POOL_SIZEnumberO número máximo de conexões no pool de conexões.# MONGO_MAX_POOL_SIZE=
MONGO_MIN_POOL_SIZEnumberO número mínimo de conexões no pool de conexões.# MONGO_MIN_POOL_SIZE=
MONGO_MAX_CONNECTINGnumberO número máximo de conexões que podem estar em processo de estabelecimento simultâneo pelo pool de conexões.# MONGO_MAX_CONNECTING=
MONGO_MAX_IDLE_TIME_MSnumberO número máximo de milissegundos que uma conexão pode permanecer ociosa no pool antes de ser removida e fechada.# MONGO_MAX_IDLE_TIME_MS=
MONGO_WAIT_QUEUE_TIMEOUT_MSnumberO tempo máximo em milissegundos que uma thread pode aguardar para que uma conexão fique disponível.# MONGO_WAIT_QUEUE_TIMEOUT_MS=

Configuração do Esquema do MongoDB

KeyTypeDescriptionExample
MONGO_AUTO_INDEXbooleanDefina como false para desativar a criação automática de índice para todos os modelos associados a esta conexão. Quando omitido, utiliza o comportamento padrão do Mongoose.# MONGO_AUTO_INDEX=
MONGO_AUTO_CREATEbooleanDefina como false para desativar a chamada automática de createCollection() pelo Mongoose em cada modelo criado nesta conexão. Quando omitido, utiliza o comportamento padrão do Mongoose.# MONGO_AUTO_CREATE=

Alternativamente, você pode usar o documentDb que emula o mongoDb, mas ele:

  • não suporta retryWrites - use retryWrites=false
  • requer uma conexão TLS, portanto, use os parâmetros tls=true para habilitar o TLS e tlsCAFile=/path-to-ca/bundle.pem para apontar para o arquivo de pacote CA fornecido pela AWS

O URI para documentDb será parecido com:

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

Veja também:

Domínios de Aplicação

Para configurar o LibreChat para uso local ou implantação em domínio personalizado, defina as seguintes variáveis de ambiente:

KeyTypeDescriptionExample
DOMAIN_CLIENTstringEspecifica o domínio do lado do cliente.DOMAIN_CLIENT=http://localhost:3080
DOMAIN_SERVERstringEspecifica o domínio do lado do servidor.DOMAIN_SERVER=http://localhost:3080
ADMIN_PANEL_URLstringURL base do painel de administração externo usado para redirecionamentos de OAuth/SSO do administrador quando o painel de administração é hospedado separadamente. Não inclua uma barra ao final.ADMIN_PANEL_URL=https://admin.example.com/admin
ADMIN_PANEL_SESSION_SECRETstringChave de criptografia de sessão necessária para o painel administrativo integrado (mínimo de 32 caracteres). Os serviços admin-panel do docker-compose e deploy-compose a leem como SESSION_SECRET. Gere com `openssl rand -hex 32` antes de iniciar a stack.ADMIN_PANEL_SESSION_SECRET=<your-32-char-random-string>
ADMIN_PANEL_PORTnumberPorta do host para o painel administrativo integrado no docker-compose padrão. No deploy-compose, o painel é servido em http://admin.localhost via nginx.ADMIN_PANEL_PORT=3000

Ao implantar o LibreChat em um domínio personalizado, substitua http://localhost:3080 pela sua URL implantada

  • por exemplo, https://librechat.example.com.

Impedir a Indexação por Mecanismos de Busca Públicos

Por padrão, seu site não será indexado por mecanismos de busca públicos (por exemplo, Google, Bing, …). Isso significa que as pessoas não conseguirão encontrar seu site através desses mecanismos de busca. Se você deseja tornar seu site mais visível e pesquisável, você pode alterar a configuração a seguir para false

KeyTypeDescriptionExample
NO_INDEXbooleanImpede que mecanismos de busca públicos indexem seu site.NO_INDEX=true

Nota: Este método não garante o funcionamento para todos os mecanismos de busca, e alguns mecanismos de busca ainda podem indexar seu site ou página da web para outros fins, como cache ou arquivamento. Portanto, você não deve confiar apenas neste método para proteger informações sensíveis ou confidenciais em seu site ou página da web.

Registro (Logging)

O LibreChat possui um sistema de log central integrado; veja Logging System para mais informações.

Arquivos de Log

  • O log de depuração está ativado por padrão e é crucial para o desenvolvimento.
  • Para relatar problemas, reproduza o erro e envie os logs de ./api/logs/debug-%DATE%.log em: LibreChat GitHub Issues
  • Os logs de erro são armazenados no mesmo local.

Variáveis de Ambiente

KeyTypeDescriptionExample
DEBUG_LOGGINGbooleanManter logs de depuração ativos.DEBUG_LOGGING=true
DEBUG_CONSOLEbooleanHabilitar logs detalhados no console/stdout no mesmo formato dos logs de depuração de arquivo.DEBUG_CONSOLE=false
LOG_TO_FILEbooleanDefina como false para desativar os transportes Winston baseados em arquivo, mantendo o registro no console disponível.LOG_TO_FILE=true
CONSOLE_JSONbooleanHabilite logs de console/stdout JSON detalhados, adequados para implantações em nuvem como GCP/AWS.CONSOLE_JSON=false
CONSOLE_JSON_STRING_LENGTHnumberConfigure o tamanho de truncamento para valores de string nos logs do console/stdout em JSON. Padrão: 255.# CONSOLE_JSON_STRING_LENGTH=255
LIBRECHAT_LOG_DIRstringDiretório personalizado para arquivos de log. O padrão é /app/logs (Docker) ou api/logs (desenvolvimento local).# LIBRECHAT_LOG_DIR=/custom/log/path
MEM_DIAGbooleanHabilitar diagnósticos de memória — registra snapshots de heap/RSS a cada 60 segundos. Habilitado automaticamente ao executar com --inspect.# MEM_DIAG=true
AGENT_DEBUG_LOGGINGbooleanAtiva o registro de depuração detalhado no controlador de agente (contagem de tokens, diagnósticos de poda de contexto).# AGENT_DEBUG_LOGGING=true

Nota:

  • DEBUG_LOGGING pode ser usado com DEBUG_CONSOLE ou CONSOLE_JSON, mas não com ambos.
  • DEBUG_CONSOLE e CONSOLE_JSON são mutuamente exclusivos.
  • CONSOLE_JSON: Ao lidar com logs de console em implantações na nuvem (como GCP ou AWS), habilitar isso fará com que os logs sejam despejados com um timestamp UTC e formatados como JSON.

Nota: DEBUG_CONSOLE não é recomendado, pois as saídas podem ser bastante detalhadas, e por isso está desativado por padrão.

Permissão

UID e GID são números atribuídos pelo Linux a cada usuário e grupo no sistema. Se você tiver problemas de permissão, defina aqui o UID e o GID do usuário que está executando o comando Docker Compose. As aplicações no container serão executadas com esses UID/GID.

KeyTypeDescriptionExample
UIDnumberO ID do usuário.# UID=1000
GIDnumberO ID do grupo.# GID=1000

Rastreamento OpenTelemetry

O LibreChat pode emitir rastreamentos (traces) de OpenTelemetry do backend para visibilidade geral de API, HTTP, MongoDB, Mongoose, Redis e solicitações de saída. Os spans em nível de comando do Redis são opcionais, portanto, os rastreamentos padrão permanecem em alto nível. Use o Langfuse para observabilidade de prompt/modelo específica para GenAI.

KeyTypeDescriptionExample
OTEL_TRACING_ENABLEDbooleanHabilitar o rastreamento OpenTelemetry do backend. O rastreamento permanece desabilitado quando OTEL_SDK_DISABLED=true.# OTEL_TRACING_ENABLED=false
OTEL_SERVICE_NAMEstringNome do serviço reportado ao OpenTelemetry. Padrão: librechat.# OTEL_SERVICE_NAME=librechat
OTEL_SERVICE_VERSIONstringVersão do serviço reportada ao OpenTelemetry. O padrão é a versão do pacote quando não definida.# OTEL_SERVICE_VERSION=
OTEL_EXPORTER_OTLP_ENDPOINTstringEndpoint base do exportador OTLP.# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTstringendpoint OTLP específico para rastreamento. Substitui o endpoint base para rastreamentos quando definido.# OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=
OTEL_EXPORTER_OTLP_HEADERSstringCabeçalhos do exportador OTLP separados por vírgula, como metadados de autorização.# OTEL_EXPORTER_OTLP_HEADERS=
OTEL_TRACES_EXPORTERstringSeleção do exportador de rastreamento.# OTEL_TRACES_EXPORTER=otlp
OTEL_TRACES_SAMPLERstringAmostrador de rastreamento OpenTelemetry. Exemplo padrão: parentbased_always_on.# OTEL_TRACES_SAMPLER=parentbased_always_on
OTEL_LOG_LEVELstringNível de log do SDK OpenTelemetry.# OTEL_LOG_LEVEL=INFO
OTEL_SDK_DISABLEDbooleanDesabilite o SDK do OpenTelemetry mesmo se o rastreamento estiver ativado.# OTEL_SDK_DISABLED=false
OTEL_IOREDIS_TRACING_ENABLEDbooleanHabilitar spans de nível de comando do Redis. Desabilitado por padrão para manter os rastreamentos do backend em alto nível.# OTEL_IOREDIS_TRACING_ENABLED=false

Real User Monitoring (Navegador)

O LibreChat pode publicar telemetria de Real User Monitoring (RUM) do navegador para coletores OTLP compatíveis com HyperDX. O RUM está desativado por padrão.

KeyTypeDescriptionExample
RUM_ENABLEDbooleanHabilitar o Real User Monitoring do navegador. Padrão: false.# RUM_ENABLED=false
RUM_PROVIDERstringProvedor de RUM para navegador. Atualmente suporta `hyperdx`.# RUM_PROVIDER=hyperdx
RUM_URLstringURL do coletor público usado pelo modo public-token.# RUM_URL=http://localhost:4318
RUM_SERVICE_NAMEstringNome do serviço reportado pelo SDK do navegador. Padrão: librechat-web.# RUM_SERVICE_NAME=librechat-web
RUM_ENVIRONMENTstringRótulo de ambiente relatado com telemetria do navegador.# RUM_ENVIRONMENT=development
RUM_AUTH_MODEstringModo de autenticação para telemetria do navegador. Use `publicToken` ou `proxy`.# RUM_AUTH_MODE=publicToken
RUM_PUBLIC_TOKENstringToken de navegador público para o modo public-token. Trate-o como público e restrinja a ingestão no coletor.# RUM_PUBLIC_TOKEN=
RUM_PROXY_TARGET_URLstringURL base do coletor usada pelo modo de proxy autenticado. Obrigatório quando `RUM_AUTH_MODE=proxy`.# RUM_PROXY_TARGET_URL=http://otel-collector:4318
RUM_PROXY_TIMEOUT_MSnumberTempo limite da solicitação de proxy em milissegundos. Padrão: 10000.# RUM_PROXY_TIMEOUT_MS=10000
RUM_TRACE_PROPAGATION_TARGETSstringOrigens ou URLs HTTPS de primeira parte separadas por vírgula que devem receber cabeçalhos traceparent.# RUM_TRACE_PROPAGATION_TARGETS=https://api.example.com
RUM_DISABLE_REPLAYbooleanDesativar a reprodução de sessão do navegador. Padrão: true.# RUM_DISABLE_REPLAY=true
RUM_CONSOLE_CAPTUREbooleanCapturar logs do console do navegador. Pode coletar prompts, respostas ou payloads sensíveis.# RUM_CONSOLE_CAPTURE=false
RUM_ADVANCED_NETWORK_CAPTUREbooleanCapture payloads de rede detalhados. Pode coletar prompts, respostas ou payloads sensíveis.# RUM_ADVANCED_NETWORK_CAPTURE=false
RUM_SAMPLE_RATEnumberTaxa de amostragem de telemetria do navegador de 0 a 1. Padrão: 1.# RUM_SAMPLE_RATE=1

No modo publicToken, o navegador envia telemetria diretamente para RUM_URL com RUM_PUBLIC_TOKEN. No modo proxy, o navegador envia telemetria através do LibreChat; o backend valida a sessão do usuário, remove os cabeçalhos de autenticação do aplicativo e encaminha a telemetria para RUM_PROXY_TARGET_URL. Sessões inválidas ou expiradas são descartadas com uma resposta 204, para que falhas de telemetria do navegador não exibam erros normais de autenticação da API. Os resultados do proxy são contabilizados em rum_proxy_requests_total com os rótulos endpoint e result no endpoint /metrics da API do LibreChat.

Caminho de Configuração - librechat.yaml

Especifique um local alternativo para o arquivo de configuração do LibreChat. Você pode especificar um caminho absoluto, um caminho relativo ou uma URL. O nome do arquivo no caminho é flexível e não precisa ser librechat.yaml; qualquer arquivo de configuração válido funcionará.

Nota: Se você preferir que o LibreChat procure pelo arquivo de configuração no diretório raiz (que é o comportamento padrão), simplesmente deixe esta opção comentada.

KeyTypeDescriptionExample
CONFIG_PATHstringUm local alternativo para o arquivo de configuração do LibreChat.# CONFIG_PATH=https://raw.githubusercontent.com/danny-avila/LibreChat/main/librechat.example.yaml

Habilidades de Implantação

As Deployment Skills são carregadas como somente leitura na inicialização a partir do sistema de arquivos e expostas aos usuários que possuem a funcionalidade Skills habilitada.

KeyTypeDescriptionExample
DEPLOYMENT_SKILLS_DIRstringDiretório contendo Skills fornecidas pela implantação. O padrão é `./skill` na raiz do projeto.# DEPLOYMENT_SKILLS_DIR=./skill

Reinicie o LibreChat após alterar este diretório ou quaisquer arquivos dentro dele. As Skills fornecidas pela implantação têm precedência sobre as Skills persistidas com o mesmo nome.

Validação de Configuração

Por padrão, o LibreChat será encerrado com um erro (código de saída 1) se o arquivo de configuração librechat.yaml contiver erros de validação. Esse comportamento de falha rápida (fail-fast) ajuda a detectar problemas de configuração precocemente em pipelines de implantação e evita a execução com configurações padrão não intencionais.

KeyTypeDescriptionExample
CONFIG_BYPASS_VALIDATIONbooleanQuando definido como `true`, o servidor registrará um aviso e continuará a inicialização com a configuração padrão, mesmo que o `librechat.yaml` contenha erros de validação. Isso preserva o comportamento legado.# CONFIG_BYPASS_VALIDATION=true

Aviso

O uso de CONFIG_BYPASS_VALIDATION=true não é recomendado para ambientes de produção. Ele destina-se a ser uma solução temporária durante a depuração de problemas de configuração. Sempre corrija os erros de validação no seu arquivo de configuração.

Tratamento de Exceções Não Capturadas

Por padrão, o LibreChat encerrará o processo quando ocorrer uma exceção não tratada, o que é o comportamento padrão do Node.js. Você pode substituir isso para manter o aplicativo em execução após exceções não tratadas.

KeyTypeDescriptionExample
CONTINUE_ON_UNCAUGHT_EXCEPTIONbooleanQuando definido como `true`, o app continuará em execução após encontrar exceções não tratadas, em vez de encerrar o processo.# CONTINUE_ON_UNCAUGHT_EXCEPTION=false

Aviso

Não recomendado para produção, a menos que seja necessário. Exceções não tratadas podem deixar a aplicação em um estado imprevisível.

Endpoints

Nesta seção, você pode configurar os endpoints e a seleção de modelos, suas chaves de API, e as configurações de proxy e proxy reverso para os endpoints que oferecem suporte a isso.

Configuração Geral

Descomente ENDPOINTS para personalizar os endpoints disponíveis no LibreChat.

KeyTypeDescriptionExample
ENDPOINTSstringLista de endpoints disponíveis separados por vírgula.# ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom
PROXYstringProxy de saída para clientes do lado do servidor suportados. Aplica-se a destinos HTTP e HTTPS.PROXY=
HTTP_PROXYstringFallback de proxy HTTP usado por clientes do lado do servidor suportados quando PROXY não está definido.# HTTP_PROXY=
HTTPS_PROXYstringFallback de proxy HTTPS usado por clientes do lado do servidor suportados quando PROXY não está definido.# HTTPS_PROXY=
NO_PROXYstringHosts, domínios ou intervalos de IP separados por vírgula que clientes do lado do servidor suportados devem ignorar. A variante em minúsculas no_proxy também é considerada.# NO_PROXY=
TITLE_CONVObooleanHabilitar a criação de títulos para todos os endpoint.TITLE_CONVO=true

Endpoints Conhecidos - librechat.yaml

KeyTypeDescriptionExample
ANYSCALE_API_KEYstringChave de API para Anyscale.# ANYSCALE_API_KEY=
APIPIE_API_KEYstringChave de API para Apipie.# APIPIE_API_KEY=
COHERE_API_KEYstringChave de API para Cohere.# COHERE_API_KEY=
FIREWORKS_API_KEYstringChave de API para Fireworks.# FIREWORKS_API_KEY=
GROQ_API_KEYstringChave de API para Groq.# GROQ_API_KEY=
MISTRAL_API_KEYstringChave de API para Mistral.# MISTRAL_API_KEY=
OPENROUTER_KEYstringChave de API para OpenRouter.# OPENROUTER_KEY=
PERPLEXITY_API_KEYstringChave de API para Perplexity.# PERPLEXITY_API_KEY=
SHUTTLEAI_API_KEYstringChave de API para ShuttleAI.# SHUTTLEAI_API_KEY=
TOGETHERAI_API_KEYstringChave de API para TogetherAI.# TOGETHERAI_API_KEY=
DEEPSEEK_API_KEYstringChave de API para a API do Deepseek# DEEPSEEK_API_KEY=

O recurso de pesquisa na web habilita capacidades de busca na internet dentro do LibreChat.

Importante: Os nomes exatos das variáveis de ambiente mostrados abaixo são referências padrão e podem ser personalizados através do arquivo de configuração librechat.yaml para usar quaisquer nomes de variáveis que você preferir.

Para opções detalhadas de configuração e personalização, veja: Configuração de Pesquisa na Web

KeyTypeDescriptionExample
SERPER_API_KEYstringChave de API para o provedor de busca Serper. Obtenha sua chave em https://serper.dev/api-keys# SERPER_API_KEY=
TAVILY_API_KEYstringChave de API para o provedor de pesquisa e scraper Tavily. Obtenha sua chave em https://app.tavily.com/home# TAVILY_API_KEY=
TAVILY_SEARCH_URLstringURL da API de pesquisa Tavily personalizada (opcional). Necessária apenas para endpoints de pesquisa personalizados ou proxy compatíveis com Tavily.# TAVILY_SEARCH_URL=
TAVILY_EXTRACT_URLstringURL da API de extração personalizada do Tavily (opcional). Necessário apenas para endpoints de extração personalizados ou proxy compatíveis com o Tavily.# TAVILY_EXTRACT_URL=
FIRECRAWL_API_KEYstringChave de API para o serviço de scraping Firecrawl. Obtenha sua chave em https://docs.firecrawl.dev/introduction#api-key# FIRECRAWL_API_KEY=
FIRECRAWL_API_URLstringURL da API Firecrawl personalizada (opcional). Necessária apenas para instâncias personalizadas do Firecrawl.# FIRECRAWL_API_URL=
FIRECRAWL_VERSIONstringVersão da API do Firecrawl (v0 ou v1).# FIRECRAWL_VERSION=v1
JINA_API_KEYstringChave de API para o serviço de reranker da Jina. Obtenha sua chave em https://jina.ai/api-dashboard/# JINA_API_KEY=
JINA_API_URLstringURL da API Jina personalizada (opcional). Necessária apenas para instâncias Jina personalizadas.# JINA_API_URL=
COHERE_API_KEYstringChave de API para o serviço de reranker da Cohere. Obtenha sua chave em https://dashboard.cohere.com/welcome/login# COHERE_API_KEY=

Nota: Estes nomes de variáveis podem ser personalizados no seu arquivo de configuração librechat.yaml. Por exemplo, você poderia usar CUSTOM_SERPER_KEY em vez de SERPER_API_KEY configurando-o nas definições de pesquisa na web. Consulte a documentação de Web Search Configuration para detalhes sobre como personalizar nomes de variáveis.

Anthropic

veja: Anthropic Endpoint

  • Você pode solicitar uma chave de acesso em https://platform.claude.com/
  • Deixe ANTHROPIC_API_KEY= em branco para desativar este endpoint
  • Defina ANTHROPIC_API_KEY= como "user_provided" para permitir que os usuários forneçam sua própria chave de API a partir da WebUI
  • Se você tiver acesso a um reverse proxy para Anthropic, você pode configurá-lo com ANTHROPIC_REVERSE_PROXY=
    • deixe em branco ou comente para usar a base url padrão
KeyTypeDescriptionExample
ANTHROPIC_API_KEYstringChave de API da Anthropic ou "user_provided" para permitir que os usuários forneçam sua própria chave de API.Defaults to an empty string.
ANTHROPIC_MODELSstringLista separada por vírgulas de modelos Anthropic para usar.# ANTHROPIC_MODELS=claude-fable-5,claude-opus-4-8,claude-opus-4-7,claude-sonnet-4-6,claude-opus-4-6,claude-opus-4-20250514,claude-3-7-sonnet-20250219,claude-3-5-sonnet-20241022,claude-3-5-haiku-20241022
ANTHROPIC_REVERSE_PROXYstringProxy reverso para Anthropic.# ANTHROPIC_REVERSE_PROXY=
ANTHROPIC_TITLE_MODELstringOBSOLETO: Modelo a ser usado para titulação com Anthropic.# ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307
  • ANTHROPIC_TITLE_MODEL está agora obsoleto e será removido em versões futuras. Use a configuração de endpoint titleModel no arquivo de configuração librechat.yaml em vez disso.

Nota: Deve ser compatível com o Anthropic endpoint. Além disso, os modelos Claude 2 e Claude 3 apresentam o melhor desempenho nesta tarefa, sendo os modelos claude-3-haiku os mais baratos.

Claude Fable 5 está incluído na lista padrão de modelos da Anthropic. Modelos da classe Fable/Mythos utilizam o comportamento moderno da Anthropic no LibreChat: 1M de contexto, suporte a raciocínio adaptativo (adaptive thinking), suporte a cache de prompts e tratamento de thinkingDisplay para saída de raciocínio resumida ou omitida.

Anthropic via Vertex AI

Você também pode usar modelos Anthropic Claude através do Google Cloud Vertex AI. Para opções detalhadas de configuração YAML, veja: Configuração Anthropic Vertex AI

KeyTypeDescriptionExample
ANTHROPIC_USE_VERTEXbooleanDefina como true para usar modelos da Anthropic via Google Vertex AI em vez da API direta.ANTHROPIC_USE_VERTEX=true
ANTHROPIC_VERTEX_REGIONstringA região do Google Cloud para o Vertex AI. Padrão: us-east5.ANTHROPIC_VERTEX_REGION=us-east5

Nota: Ao usar o Vertex AI, você também deve configurar GOOGLE_SERVICE_KEY_FILE (veja Configuração do Google) com uma conta de serviço que possua a função Vertex AI User.

AWS Bedrock

Veja: Configuração do AWS Bedrock

KeyTypeDescriptionExample
BEDROCK_AWS_DEFAULT_REGIONstringUma região AWS padrão deve ser fornecida para o Bedrock.BEDROCK_AWS_DEFAULT_REGION=us-east-1
BEDROCK_AWS_ACCESS_KEY_IDstringID da chave de acesso AWS para Bedrock. Opcional se estiver usando a cadeia de credenciais padrão da AWS.# BEDROCK_AWS_ACCESS_KEY_ID=your_access_key_id
BEDROCK_AWS_SECRET_ACCESS_KEYstringChave de acesso secreta da AWS para o Bedrock. Opcional se estiver usando a cadeia de credenciais padrão da AWS.# BEDROCK_AWS_SECRET_ACCESS_KEY=your_secret_access_key
BEDROCK_AWS_SESSION_TOKENstringToken de sessão da AWS para credenciais temporárias. Opcional.# BEDROCK_AWS_SESSION_TOKEN=your_session_token
BEDROCK_AWS_PROFILEstringNome do perfil de configuração compartilhada da AWS para o Bedrock. Opcional se estiver usando a cadeia de credenciais padrão da AWS.# BEDROCK_AWS_PROFILE=your-profile-name
BEDROCK_AWS_BEARER_TOKENstringChave de API da Amazon Bedrock para autenticação bearer, ou user_provided para permitir que os usuários insiram sua própria chave de API da Bedrock na interface.# BEDROCK_AWS_BEARER_TOKEN=your_bedrock_api_key
BEDROCK_AWS_MODELSstringLista de IDs de modelos do Bedrock separados por vírgula. Se omitido, todos os modelos suportados conhecidos são incluídos.# 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: Você pode omitir as chaves de acesso para usar a cadeia de credenciais padrão da AWS (variáveis de ambiente, credenciais SSO, arquivos de credenciais compartilhados ou o serviço de metadados de instância EC2/ECS). Veja AWS Bedrock Setup para mais detalhes.

Modelos da classe Claude Fable/Mythos no Bedrock são apenas para perfil de inferência. Use um ID de perfil como us.anthropic.claude-fable-5 e habilite a configuração de compartilhamento de dados da Anthropic necessária no console do Bedrock ou na Data Retention API antes de invocá-los.

BingAI

Bing, também usado para Sydney, jailbreak e Bing Image Creator

KeyTypeDescriptionExample
BINGAI_TOKENstringToken de acesso do Bing. Deixe em branco para desativar. Pode ser definido como "user_provided" para permitir que os usuários forneçam seu próprio token a partir da WebUI.BINGAI_TOKEN=user_provided
BINGAI_HOSTstringURL do host do Bing. Deixe comentado para usar o servidor padrão.# BINGAI_HOST=https://cn.bing.com

Nota: É recomendado deixar como "user_provided" e fornecer o token a partir da WebUI.

Google

Siga estas instruções para configurar o Google Endpoint

KeyTypeDescriptionExample
GOOGLE_KEYstringChave de API do Google. Defina como "user_provided" para permitir que os usuários forneçam sua própria chave de API a partir da WebUI.GOOGLE_KEY=user_provided
GOOGLE_SERVICE_KEY_FILEstringCaminho para o arquivo de chave JSON da conta de serviço do Google, URL para obtê-lo ou JSON em formato de string. Usado para autenticação no Vertex AI (por exemplo, recursos de OCR).GOOGLE_SERVICE_KEY_FILE=/path/to/auth.json
GOOGLE_REVERSE_PROXYstringURL de proxy reverso do Google.GOOGLE_REVERSE_PROXY=
GOOGLE_AUTH_HEADERbooleanUse o cabeçalho Authorization em vez de X-goog-api-key. Alguns proxies reversos exigem isso.# GOOGLE_AUTH_HEADER=true
GOOGLE_MODELSstringModelos da API Gemini do Google disponíveis, separados por vírgulas.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_MODELSstringModelos Vertex AI Google disponíveis, separados por vírgulas.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_MODELstringOBSOLETO: O modelo usado para a criação de títulos com o Google.GOOGLE_TITLE_MODEL=gemini-pro
GOOGLE_LOCstringEspecifica a localização do Google Cloud para processar solicitações de APIGOOGLE_LOC=us-central1
GOOGLE_CLOUD_LOCATIONstringRegião alternativa para a geração de imagens do Gemini (por exemplo, global).# GOOGLE_CLOUD_LOCATION=global
GOOGLE_EXCLUDE_SAFETY_SETTINGSstringOmita completamente as configurações de segurança incluídas por padrão, o que utilizará os padrões do provedorGOOGLE_EXCLUDE_SAFETY_SETTINGS=true
GOOGLE_SAFETY_SEXUALLY_EXPLICITstringConfiguração de segurança para conteúdo sexualmente explícito. As opções são BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY e OFF.GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_HATE_SPEECHstringConfiguração de segurança para conteúdo de discurso de ódio. As opções são BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY e OFF.GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_HARASSMENTstringConfiguração de segurança para conteúdo de assédio. As opções são BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY e OFF.GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_DANGEROUS_CONTENTstringConfiguração de segurança para conteúdo perigoso. As opções são BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY e OFF.GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_CIVIC_INTEGRITYstringConfiguração de segurança para conteúdo de integridade cívica. As opções são BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY e OFF.# GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH

Personalize os modelos disponíveis, separados por vírgulas, sem espaços. O primeiro será o padrão. Deixe em branco ou comentado para usar as configurações internas.

  • GOOGLE_TITLE_MODEL está agora obsoleto e será removido em versões futuras. Use a configuração de endpoint titleModel no arquivo de configuração librechat.yaml em vez disso.

Nota: Para as variáveis GOOGLE_SAFETY do Vertex AI, você não tem acesso à configuração BLOCK_NONE por padrão. Para usar essa configuração restrita de HarmBlockThreshold, você precisará:

Geração de Imagem do Gemini

A Geração de Imagens Gemini é uma ferramenta para Agents que oferece suporte tanto para a Gemini API quanto para o Vertex AI. Veja: Gemini Image Generation

KeyTypeDescriptionExample
GEMINI_API_KEYstringChave de API dedicada do Gemini para geração de imagens. Recorre à GOOGLE_KEY se não estiver definida.# GEMINI_API_KEY=your_gemini_api_key
GEMINI_IMAGE_MODELstringModelo Gemini para geração de imagens. Padrão: gemini-2.5-flash-image.# GEMINI_IMAGE_MODEL=gemini-2.5-flash-image

Nota: Quando nenhuma chave de API está configurada, a ferramenta automaticamente recorre ao Vertex AI usando a conta de serviço do GOOGLE_SERVICE_KEY_FILE. A conta de serviço deve ter a função Vertex AI User.

OpenAI

Veja: Configuração do OpenAI

KeyTypeDescriptionExample
OPENAI_API_KEYstringSua chave de API da OpenAI. Deixe em branco para desativar este endpoint ou defina como "user_provided" para permitir que os usuários forneçam sua própria chave de API pela WebUI.OPENAI_API_KEY=user_provided
OPENAI_MODELSstringPersonalize os modelos disponíveis, separados por vírgulas, sem espaços. O primeiro será o padrão. Deixe comentado para usar as configurações internas.# 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_OPENAIbooleanHabilitar o modo de depuração para o endpoint OpenAI.DEBUG_OPENAI=false
OPENAI_SUMMARIZEbooleanHabilitar o resumo de mensagens. Falso por padrão# OPENAI_SUMMARIZE=true
OPENAI_SUMMARY_MODELstringO modelo usado para o resumo da OpenAI.# OPENAI_SUMMARY_MODEL=gpt-3.5-turbo
OPENAI_FORCE_PROMPTbooleanForçar a chamada da API com um payload de prompt em vez de um payload de mensagens.# OPENAI_FORCE_PROMPT=false
OPENAI_ORGANIZATIONstringEspecifique qual organização usar para cada solicitação de API para a OpenAI. Opcional# OPENAI_ORGANIZATION=
OPENAI_REVERSE_PROXYstringOBSOLETO: Configurações de proxy reverso para OpenAI.# OPENAI_REVERSE_PROXY=
OPENAI_TITLE_MODELstringOBSOLETO: O modelo usado para a criação de títulos da OpenAI.# OPENAI_TITLE_MODEL=gpt-3.5-turbo
  • OPENAI_TITLE_MODEL está agora obsoleto e será removido em versões futuras. Use a configuração de endpoint titleModel no arquivo de configuração librechat.yaml em seu lugar.
  • OPENAI_REVERSE_PROXY está agora obsoleto e será removido em versões futuras. Use um custom endpoint em vez disso.

Assistants

Veja: Configuração de Assistants

KeyTypeDescriptionExample
ASSISTANTS_API_KEYstringSua chave de API da OpenAI para a Assistants API. Deixe em branco para desativar este endpoint ou defina como "user_provided" para permitir que os usuários forneçam sua própria chave de API a partir da WebUI.ASSISTANTS_API_KEY=user_provided
ASSISTANTS_MODELSstringPersonalize os modelos disponíveis, separados por vírgulas, sem espaços. O primeiro será o padrão. Deixe em branco para usar as configurações internas.# ASSISTANTS_MODELS=gpt-3.5-turbo-0125,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-16k,gpt-3.5-turbo,gpt-4,gpt-4-0314,gpt-4-32k-0314,gpt-4-0613,gpt-3.5-turbo-0613,gpt-3.5-turbo-1106,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview
ASSISTANTS_BASE_URLstringURL base alternativa para a Assistants API.# ASSISTANTS_BASE_URL=

Nota: Você pode personalizar os modelos disponíveis, separados por vírgulas, sem espaços. O primeiro será o padrão. Deixe em branco ou comentado para usar as configurações internas.

Tavily

Obtenha sua chave de API aqui: https://tavily.com/#api

Variáveis de Ambiente:

KeyTypeDescriptionExample
TAVILY_API_KEYstringChave de API da Tavily.TAVILY_API_KEY=

Traversaal

Descrição: Ferramenta de busca aprimorada por LLM.

Obtenha a chave de API aqui: https://api.traversaal.ai/dashboard

Variáveis de Ambiente:

KeyTypeDescriptionExample
TRAVERSAAL_API_KEYstringChave de API do Traversaal.TRAVERSAAL_API_KEY=

WolframAlpha

Veja instruções detalhadas aqui: Wolfram Alpha

Variáveis de Ambiente:

KeyTypeDescriptionExample
WOLFRAM_APP_IDstringID do Aplicativo Wolfram AlphaWOLFRAM_APP_ID=

Zapier

Descrição: - Você precisa de uma conta no Zapier. Obtenha sua chave de API aqui: Zapier

  • Crie ações permitidas - Siga o passo 3 neste guia de introdução do Zapier

Nota: O Zapier é conhecido por ser instável com certas ações. Escrever rascunhos de e-mail é provavelmente o melhor uso para ele.

Variáveis de Ambiente:

KeyTypeDescriptionExample
ZAPIER_NLA_API_KEYstringChave de API do Zapier NLA.ZAPIER_NLA_API_KEY=

OpenWeather

Veja instruções detalhadas aqui: OpenWeather

KeyTypeDescriptionExample
OPENWEATHER_API_KEYstringChave de API do OpenWeather para a One Call API 3.0.OPENWEATHER_API_KEY=

Code Interpreter

A API do Code Interpreter fornece um ambiente seguro para executar código e gerenciar arquivos. Veja: Code Interpreter API

KeyTypeDescriptionExample
LIBRECHAT_CODE_API_KEYstringChave de API para o serviço Code Interpreter. Quando definida globalmente, fornece acesso a todos os usuários.LIBRECHAT_CODE_API_KEY=your-api-key
LIBRECHAT_CODE_BASEURLstringURL base personalizada para a API do Code Interpreter (apenas para planos Enterprise).# LIBRECHAT_CODE_BASEURL=https://your-custom-domain.com

Artifacts

Artifacts utilizam a biblioteca CodeSandbox para renderização segura de código HTML/JS. Por padrão, a CDN pública hospedada pelo CodeSandbox é utilizada.

Felizmente, para aqueles com requisitos de rede interna, você pode hospedar o bundler por conta própria que compila o código do frontend e especificar uma URL de bundler personalizada para o Sandpack.

Para mais informações, incluindo imagens de contêiner pré-configuradas para auto-hospedagem com solicitações de métricas removidas, veja: https://github.com/LibreChat-AI/codesandbox-client

KeyTypeDescriptionExample
SANDPACK_BUNDLER_URLstringEspecifica uma URL de bundler personalizada para o Sandpack, usada por ArtifactsSANDPACK_BUNDLER_URL=your-bundler-url

Pesquisa (Meilisearch)

Habilita a pesquisa em mensagens e conversas:

KeyTypeDescriptionExample
SEARCHbooleanHabilita a pesquisa em mensagens e conversas.SEARCH=true

Nota: Se você não estiver usando Docker, é necessária a instalação do Meilisearch gratuito auto-hospedado ou um plano remoto pago.

Para desativar a telemetria anônima do MeiliSearch para privacidade absoluta, defina como true:

KeyTypeDescriptionExample
MEILI_NO_ANALYTICSbooleanDesativa a análise de telemetria anonimizada para o MeiliSearch.MEILI_NO_ANALYTICS=true

Para que o servidor da API se conecte ao servidor de busca. Substitua '0.0.0.0' por 'meilisearch' se estiver executando o MeiliSearch com docker-compose.

KeyTypeDescriptionExample
MEILI_HOSTstringA conexão do servidor de API com o servidor de busca.MEILI_HOST=http://0.0.0.0:7700

Esta chave mestra deve ter pelo menos 16 bytes, composta por caracteres UTF-8 válidos. O MeiliSearch emitirá um erro e se recusará a iniciar se nenhuma chave mestra for fornecida ou se ela tiver menos de 16 bytes. O MeiliSearch sugerirá uma chave mestra segura gerada automaticamente. Esta é uma chave segura pronta para uso no docker-compose, você pode substituí-la pela sua própria.

KeyTypeDescriptionExample
MEILI_MASTER_KEYstringA chave mestra para o MeiliSearch.MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt

Para impedir que o LibreChat tente realizar uma sincronização de indexação de banco de dados com o Meilisearch, você pode definir a seguinte variável de ambiente como true. Isso é útil em um cluster de nós ou em uma configuração de múltiplos nós, onde apenas uma instância deve ser responsável pela indexação.

KeyTypeDescriptionExample
MEILI_NO_SYNCstringAlternar para desativar a sincronização de índice do MeilisearchMEILI_NO_SYNC=true

RAG API

Configure a Geração Aumentada por Recuperação (RAG) para indexação de documentos e respostas com reconhecimento de contexto. Veja: Configuração da API RAG

KeyTypeDescriptionExample
RAG_API_URLstringURL do serviço de API de RAG.RAG_API_URL=http://host.docker.internal:8000
RAG_OPENAI_API_KEYstringChave de API da OpenAI para embeddings de RAG. Substitui a OPENAI_API_KEY para RAG.# RAG_OPENAI_API_KEY=sk-your-openai-api-key
RAG_OPENAI_BASEURLstringURL base personalizada da OpenAI para embeddings de RAG.# RAG_OPENAI_BASEURL=
RAG_USE_FULL_CONTEXTbooleanBuscar o contexto completo do arquivo em vez dos 4 principais resultados. Padrão: false.# RAG_USE_FULL_CONTEXT=true
EMBEDDINGS_PROVIDERstringProvedor de Embeddings: openai, azure, huggingface, huggingfacetei ou ollama. Padrão: openai.# EMBEDDINGS_PROVIDER=openai
EMBEDDINGS_MODELstringModelo de embeddings a ser usado. O padrão depende do provedor.# EMBEDDINGS_MODEL=text-embedding-3-small

Nota: Ao usar a configuração padrão do Docker, o arquivo .env é compartilhado entre o LibreChat e a RAG API. Para opções completas de configuração, consulte a documentação da RAG API.

Speech to Text & Text to Speech

Configure os serviços de Speech-to-Text (STT) e Text-to-Speech (TTS). Veja: Configurações de Voz

KeyTypeDescriptionExample
STT_API_KEYstringChave de API para o serviço de Speech-to-Text (por exemplo, OpenAI Whisper).# STT_API_KEY=
TTS_API_KEYstringChave de API para o serviço de Text-to-Speech (por exemplo, OpenAI TTS).# TTS_API_KEY=

Nota: STT e TTS são configurados principalmente através da seção speech: no librechat.yaml. Estas variáveis de ambiente são referenciadas nessa configuração. Veja Speech Settings para opções completas de configuração YAML.

Configure a funcionalidade de links de conversa compartilhados.

KeyTypeDescriptionExample
ALLOW_SHARED_LINKSbooleanAtivar ou desativar links de conversas compartilhadas. Padrão: true.ALLOW_SHARED_LINKS=true
ALLOW_SHARED_LINKS_PUBLICbooleanPermitir que links compartilhados sejam acessíveis publicamente sem autenticação. Padrão: false.ALLOW_SHARED_LINKS_PUBLIC=false
SHARED_LINKS_SNAPSHOT_FILESbooleanArquivos de snapshot referenciados por um chat compartilhado para que os visualizadores possam visualizá-los ou baixá-los através do link compartilhado. Substitui interface.sharedLinks.snapshotFiles quando definido.SHARED_LINKS_SNAPSHOT_FILES=true

ALLOW_SHARED_LINKS é o interruptor geral do recurso. As permissões de função agora controlam quem pode criar links compartilhados, compartilhá-los com usuários autenticados ou torná-los visíveis para todos; veja interface.sharedLinks. ALLOW_SHARED_LINKS_PUBLIC controla apenas se links compartilhados publicamente podem ser visualizados sem autenticação. SHARED_LINKS_SNAPSHOT_FILES é uma substituição global para snapshots de arquivos de links compartilhados e pode desativar o fornecimento de snapshots para todos os links quando definido como false.

Sistema de Usuário

Esta seção contém a configuração para:

Moderação

O Automated Moderation System utiliza um mecanismo de pontuação para rastrear violações dos usuários. À medida que os usuários cometem ações como excesso de logins, registros ou envio de mensagens, eles acumulam pontos de violação. Ao atingir um limite definido, o usuário e seu IP são banidos temporariamente. Este sistema garante a segurança da plataforma ao monitorar e penalizar atividades rápidas ou suspeitas.

veja: Moderação Automatizada

Configurações Básicas de Moderação

KeyTypeDescriptionExample
OPENAI_MODERATIONbooleanSe deve ou não habilitar a moderação da OpenAI nos endpoints **OpenAI** e **Plugins**.OPENAI_MODERATION=false
OPENAI_MODERATION_API_KEYstringSua chave de API da OpenAI.OPENAI_MODERATION_API_KEY=
OPENAI_MODERATION_REVERSE_PROXYstringNota: Comentado por padrão, isso não funciona com todos os reverse proxys.# OPENAI_MODERATION_REVERSE_PROXY=

Configurações de Banimento

KeyTypeDescriptionExample
BAN_VIOLATIONSbooleanSe deve ou não habilitar o banimento de usuários por violações (eles ainda serão registrados).BAN_VIOLATIONS=true
BAN_DURATIONintegerPor quanto tempo o usuário e o IP associado serão banidos (em milissegundos).BAN_DURATION=1000 * 60 * 60 * 2
BAN_INTERVALintegerO usuário será banido toda vez que sua pontuação atingir/ultrapassar o limite do intervalo.BAN_INTERVAL=20

Limitação de taxa de login e registro

Previne ataques de força bruta e registros de spam ao limitar tentativas de login e novos registros de conta.

KeyTypeDescriptionExample
LOGIN_MAXintegerA quantidade máxima de logins permitida por IP por LOGIN_WINDOW.LOGIN_MAX=7
LOGIN_WINDOWintegerEm minutos, determina a janela de tempo para LOGIN_MAX logins.LOGIN_WINDOW=5
REGISTER_MAXintegerA quantidade máxima de registros permitida por IP por REGISTER_WINDOW.REGISTER_MAX=5
REGISTER_WINDOWintegerEm minutos, determina a janela de tempo para registros REGISTER_MAX.REGISTER_WINDOW=60

Pontuação para cada violação

KeyTypeDescriptionExample
LOGIN_VIOLATION_SCOREintegerPontuação para violações de login.LOGIN_VIOLATION_SCORE=1
REGISTRATION_VIOLATION_SCOREintegerPontuação para violações de registro.REGISTRATION_VIOLATION_SCORE=1
CONCURRENT_VIOLATION_SCOREintegerPontuação para violações simultâneas.CONCURRENT_VIOLATION_SCORE=1
MESSAGE_VIOLATION_SCOREintegerPontuação para violações de mensagem.MESSAGE_VIOLATION_SCORE=1
NON_BROWSER_VIOLATION_SCOREintegerPontuação para violações fora do navegador.NON_BROWSER_VIOLATION_SCORE=20
ILLEGAL_MODEL_REQ_SCOREintegerPontuação para solicitações de modelo ilegais.ILLEGAL_MODEL_REQ_SCORE=5
IMPORT_VIOLATION_SCOREintegerPontuação para violações de importação de conversas.IMPORT_VIOLATION_SCORE=1
FORK_VIOLATION_SCOREintegerPontuação para violações de ramificação de conversa.FORK_VIOLATION_SCORE=1
TTS_VIOLATION_SCOREintegerPontuação para violações de conversão de texto em fala.TTS_VIOLATION_SCORE=0
STT_VIOLATION_SCOREintegerPontuação para violações de conversão de fala em texto.STT_VIOLATION_SCORE=0
FILE_UPLOAD_VIOLATION_SCOREintegerPontuação para violações de upload de arquivo.FILE_UPLOAD_VIOLATION_SCORE=0
RESET_PASSWORD_VIOLATION_SCOREintegerPontuação para violações de redefinição de senha.RESET_PASSWORD_VIOLATION_SCORE=0
VERIFY_EMAIL_VIOLATION_SCOREintegerPontuação para violações de verificação de e-mail.VERIFY_EMAIL_VIOLATION_SCORE=0
TOOL_CALL_VIOLATION_SCOREintegerPontuação para violações de chamada de ferramenta.TOOL_CALL_VIOLATION_SCORE=0
CONVO_ACCESS_VIOLATION_SCOREintegerPontuação para violações de acesso à conversa.CONVO_ACCESS_VIOLATION_SCORE=0

Nota: Acesso fora do navegador e solicitações de modelos ilegais são quase sempre nefastos, pois significam que terceiros estão tentando acessar o servidor por meio de um script automatizado.

Limitação de taxa de mensagens (por usuário e IP)

KeyTypeDescriptionExample
LIMIT_CONCURRENT_MESSAGESbooleanSe deve limitar a quantidade de mensagens que um usuário pode enviar por solicitação.LIMIT_CONCURRENT_MESSAGES=true
CONCURRENT_MESSAGE_MAXintegerA quantidade máxima de mensagens que um usuário pode enviar por solicitação.CONCURRENT_MESSAGE_MAX=2

Limitadores

Nota: Você pode utilizar ambos os limitadores, mas o padrão é limitar apenas por IP.

Limitador de IP:
KeyTypeDescriptionExample
LIMIT_MESSAGE_IPbooleanSe deve limitar a quantidade de mensagens que um IP pode enviar por `MESSAGE_IP_WINDOW`.LIMIT_MESSAGE_IP=true
MESSAGE_IP_MAXintegerA quantidade máxima de mensagens que um IP pode enviar por `MESSAGE_IP_WINDOW`.MESSAGE_IP_MAX=40
MESSAGE_IP_WINDOWintegerEm minutos, determina a janela de tempo para `MESSAGE_IP_MAX` mensagens.MESSAGE_IP_WINDOW=1
Limitador de Usuário:
KeyTypeDescriptionExample
LIMIT_MESSAGE_USERbooleanSe deve limitar a quantidade de mensagens que um usuário pode enviar por `MESSAGE_USER_WINDOW`.LIMIT_MESSAGE_USER=false
MESSAGE_USER_MAXintegerA quantidade máxima de mensagens que um usuário pode enviar por `MESSAGE_USER_WINDOW`.MESSAGE_USER_MAX=40
MESSAGE_USER_WINDOWintegerEm minutos, determina a janela de tempo para `MESSAGE_USER_MAX` mensagens.MESSAGE_USER_WINDOW=1

Limitação de taxa de importação de conversas

Limita a frequência com que os usuários podem importar conversas para evitar abusos.

Nota: Você pode utilizar ambos os limitadores, mas o padrão é limitar apenas por IP.

Limitador de IP:
KeyTypeDescriptionExample
LIMIT_IMPORT_IPbooleanSe deve limitar a quantidade de importações de conversas que um IP pode realizar por `IMPORT_IP_WINDOW`.LIMIT_IMPORT_IP=true
IMPORT_IP_MAXintegerA quantidade máxima de importações de conversas que um IP pode realizar por `IMPORT_IP_WINDOW`.IMPORT_IP_MAX=100
IMPORT_IP_WINDOWintegerEm minutos, determina a janela de tempo para as importações de `IMPORT_IP_MAX`.IMPORT_IP_WINDOW=1
Limitador de Usuário:
KeyTypeDescriptionExample
LIMIT_IMPORT_USERbooleanSe deve limitar a quantidade de importações de conversa que um usuário pode realizar por `IMPORT_USER_WINDOW`.LIMIT_IMPORT_USER=false
IMPORT_USER_MAXintegerA quantidade máxima de importações de conversas que um usuário pode realizar por `IMPORT_USER_WINDOW`.IMPORT_USER_MAX=50
IMPORT_USER_WINDOWintegerEm minutos, determina a janela de tempo para as importações de `IMPORT_USER_MAX`.IMPORT_USER_WINDOW=1

Limitação de taxa de bifurcação de conversas

Limita a frequência com que usuários podem realizar fork de conversas para evitar abusos.

Nota: Você pode utilizar ambos os limitadores, mas o padrão é limitar apenas por IP.

Limitador de IP:
KeyTypeDescriptionExample
LIMIT_FORK_IPbooleanSe deve limitar a quantidade de ramificações de conversa que um IP pode criar por `FORK_IP_WINDOW`.LIMIT_FORK_IP=true
FORK_IP_MAXintegerA quantidade máxima de ramificações de conversa que um IP pode criar por `FORK_IP_WINDOW`.FORK_IP_MAX=30
FORK_IP_WINDOWintegerEm minutos, determina a janela de tempo para `FORK_IP_MAX` forks.FORK_IP_WINDOW=1
Limitador de Usuário:
KeyTypeDescriptionExample
LIMIT_FORK_USERbooleanSe deve limitar a quantidade de ramificações de conversa que um usuário pode criar por `FORK_USER_WINDOW`.LIMIT_FORK_USER=false
FORK_USER_MAXintegerA quantidade máxima de ramificações de conversa que um usuário pode criar por `FORK_USER_WINDOW`.FORK_USER_MAX=7
FORK_USER_WINDOWintegerEm minutos, determina a janela de tempo para `FORK_USER_MAX` forks.FORK_USER_WINDOW=1

Limitação de taxa de upload de arquivos

Limita a frequência com que os usuários podem enviar arquivos para evitar abusos.

Nota: Estas também podem ser configuradas via librechat.yaml na seção rateLimits.fileUploads.

Limitador de IP:
KeyTypeDescriptionExample
FILE_UPLOAD_IP_MAXintegerMáximo de uploads de arquivos por IP por `FILE_UPLOAD_IP_WINDOW`. Padrão: 100.# FILE_UPLOAD_IP_MAX=100
FILE_UPLOAD_IP_WINDOWintegerEm minutos, determina a janela de tempo para `FILE_UPLOAD_IP_MAX`. Padrão: 15.# FILE_UPLOAD_IP_WINDOW=15
Limitador de Usuário:
KeyTypeDescriptionExample
FILE_UPLOAD_USER_MAXintegerMáximo de uploads de arquivos por usuário por `FILE_UPLOAD_USER_WINDOW`. Padrão: 50.# FILE_UPLOAD_USER_MAX=50
FILE_UPLOAD_USER_WINDOWintegerEm minutos, determina a janela de tempo para `FILE_UPLOAD_USER_MAX`. Padrão: 15.# FILE_UPLOAD_USER_WINDOW=15

Limitação de taxa de TTS (Text-to-Speech)

Limita a frequência com que os usuários podem usar o Text-to-Speech para evitar abusos.

Nota: Estas também podem ser configuradas via librechat.yaml na seção rateLimits.tts.

Limitador de IP:
KeyTypeDescriptionExample
TTS_IP_MAXintegerMáximo de solicitações de TTS por IP por `TTS_IP_WINDOW`. Padrão: 100.# TTS_IP_MAX=100
TTS_IP_WINDOWintegerEm minutos, determina a janela de tempo para `TTS_IP_MAX`. Padrão: 1.# TTS_IP_WINDOW=1
Limitador de Usuário:
KeyTypeDescriptionExample
TTS_USER_MAXintegerMáximo de solicitações de TTS por usuário por `TTS_USER_WINDOW`. Padrão: 50.# TTS_USER_MAX=50
TTS_USER_WINDOWintegerEm minutos, determina a janela de tempo para `TTS_USER_MAX`. Padrão: 1.# TTS_USER_WINDOW=1

Limitação de taxa (rate limiting) de STT (Speech-to-Text)

Limita a frequência com que os usuários podem usar o Speech-to-Text para evitar abusos.

Nota: Estas também podem ser configuradas via librechat.yaml na seção rateLimits.stt.

Limitador de IP:
KeyTypeDescriptionExample
STT_IP_MAXintegerMáximo de solicitações STT por IP por `STT_IP_WINDOW`. Padrão: 100.# STT_IP_MAX=100
STT_IP_WINDOWintegerEm minutos, determina a janela de tempo para `STT_IP_MAX`. Padrão: 1.# STT_IP_WINDOW=1
Limitador de Usuário:
KeyTypeDescriptionExample
STT_USER_MAXintegerMáximo de solicitações STT por usuário por `STT_USER_WINDOW`. Padrão: 50.# STT_USER_MAX=50
STT_USER_WINDOWintegerEm minutos, determina a janela de tempo para `STT_USER_MAX`. Padrão: 1.# STT_USER_WINDOW=1

Balance

O recurso a seguir permite o gerenciamento de saldos de usuários dentro dos endpoints do sistema. Você tem a opção de adicionar saldos manualmente ou pode optar por implementar um sistema que acumula saldos automaticamente para os usuários. Se um saldo inicial específico for definido na configuração, os tokens serão creditados no saldo do usuário automaticamente quando ele se registrar.

veja: Uso de Tokens

KeyTypeDescriptionExample
CHECK_BALANCEbooleanHabilitar saldos de crédito de tokens para os endpoints OpenAI/Plugins.CHECK_BALANCE=false
START_BALANCEintegerSe o valor estiver definido, tokens serão creditados ao saldo do usuário após o registro.START_BALANCE=20000

Gerenciando Saldos

  • Execute npm run add-balance para adicionar saldos manualmente.
    • Você também pode especificar o e-mail e a quantidade de créditos de token a serem adicionados, por exemplo: npm run add-balance [email protected] 1000
  • Execute npm run set-balance para definir saldos manualmente, de forma semelhante ao add-balance.
  • Execute npm run list-balances para listar o saldo de cada usuário.

Nota: 1000 créditos = $0.001 (1 milésimo de USD)

Registro e Login

veja: Sistema de Autenticação

Tela de registro de usuárioTela de registro de usuário

Esclarecimento sobre o arquivo de configuração

Todas as configurações de autenticação nesta seção devem ser configuradas no seu arquivo .env, não no arquivo librechat.yaml ou docker-compose.override.yml. O arquivo docker-compose.override.yml é usado apenas para montar volumes e definir variáveis de ambiente para o Docker, enquanto o arquivo librechat.yaml é usado para endpoints personalizados e outras configurações da aplicação.

  • Configurações Gerais:
KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINbooleanHabilitar ou desabilitar APENAS o login por e-mail.ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONbooleanHabilitar ou desabilitar o registro de novos usuários por e-mail.ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINbooleanPermitir que usuários se conectem ao LibreChat com várias redes sociais.ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONbooleanHabilite ou desabilite o registro de novos usuários usando várias redes sociais.ALLOW_SOCIAL_REGISTRATION=false
ALLOW_PASSWORD_RESETbooleanHabilitar ou desabilitar a capacidade dos usuários de redefinirem suas próprias senhasALLOW_PASSWORD_RESET=false
ALLOW_ACCOUNT_DELETIONbooleanHabilita ou desabilita a capacidade dos usuários de excluírem suas próprias contas. Habilitado por padrão se omitido ou comentado.ALLOW_ACCOUNT_DELETION=true
ALLOW_UNVERIFIED_EMAIL_LOGINbooleanDefina como true para permitir que os usuários façam login sem verificar seu endereço de e-mail. Se definido como false, os usuários deverão verificar seu e-mail antes de fazer login.ALLOW_UNVERIFIED_EMAIL_LOGIN=true
MIN_PASSWORD_LENGTHnumberComprimento mínimo da senha para autenticação de usuário. Ao usar autenticação LDAP, você pode definir isso como 1 para ignorar a validação de senha local, já que servidores LDAP gerenciam suas próprias políticas de senha.MIN_PASSWORD_LENGTH=8

Dica Rápida: Mesmo com o registro desativado, adicione usuários diretamente ao banco de dados usando npm run create-user.

Dica Rápida: Com o registro desativado, você pode excluir um usuário com npm run delete-user [email protected].

  • Configurações de Sessão e Token de Atualização:
KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)Tempo de expiração da sessão.SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (milliseconds)Tempo de expiração do token de atualização.REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7
SESSION_COOKIE_SECUREbooleanSubstitui o atributo Secure para cookies de sessão/autenticação. Deixe sem definir para usar a heurística padrão de NODE_ENV/DOMAIN_SERVER.# SESSION_COOKIE_SECURE=false

Você deve usar novos valores seguros. Os exemplos fornecidos são chaves de 32 bytes (64 caracteres em hexadecimal). Use este replit para gerar alguns rapidamente: JWT Keys

KeyTypeDescriptionExample
JWT_SECRETstring (hex)Chave secreta JWT.JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (hex)Chave secreta de atualização JWT.JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418

Logins Sociais

Para mais detalhes: OAuth2-OIDC

Autenticação Apple

Para mais informações: Autenticação Apple

KeyTypeDescriptionExample
APPLE_CLIENT_IDstringSeu Apple Services ID (ex: com.yourdomain.librechat.services).APPLE_CLIENT_ID=com.yourdomain.librechat.services
APPLE_TEAM_IDstringSeu Apple Developer Team ID.APPLE_TEAM_ID=YOUR_TEAM_ID
APPLE_KEY_IDstringSeu Apple Key ID da chave baixada.APPLE_KEY_ID=YOUR_KEY_ID
APPLE_PRIVATE_KEY_PATHstringCaminho absoluto para o seu arquivo .p8 baixado.APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8
APPLE_CALLBACK_URLstringA URL de retorno de chamada para autenticação Apple.APPLE_CALLBACK_URL=/oauth/apple/callback

Autenticação via Discord

Para mais informações: Discord

KeyTypeDescriptionExample
DISCORD_CLIENT_IDstringSeu ID de cliente do Discord.DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRETstringSeu client secret do Discord.DISCORD_CLIENT_SECRET=
DISCORD_CALLBACK_URLstringA URL de retorno de chamada para autenticação no Discord.DISCORD_CALLBACK_URL=/oauth/discord/callback

Autenticação do Facebook

Para mais informações: Autenticação do Facebook

KeyTypeDescriptionExample
FACEBOOK_CLIENT_IDstringSeu ID de cliente do Facebook.FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRETstringSeu client secret do Facebook.FACEBOOK_CLIENT_SECRET=
FACEBOOK_CALLBACK_URLstringA URL de retorno de chamada para autenticação no Facebook.FACEBOOK_CALLBACK_URL=/oauth/facebook/callback

Autenticação via GitHub

Para mais informações: Autenticação GitHub

KeyTypeDescriptionExample
GITHUB_CLIENT_IDstringSeu ID de cliente do GitHub.GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRETstringSeu client secret do GitHub.GITHUB_CLIENT_SECRET=
GITHUB_CALLBACK_URLstringA URL de retorno de chamada para autenticação no GitHub.GITHUB_CALLBACK_URL=/oauth/github/callback
GITHUB_ENTERPRISE_BASE_URLstringOpcional: A URL base para sua instância do GitHub Enterprise.GITHUB_ENTERPRISE_BASE_URL=
GITHUB_ENTERPRISE_USER_AGENTstringOpcional: O user agent para solicitações do GitHub Enterprise.GITHUB_ENTERPRISE_USER_AGENT=

Autenticação Google

Para mais informações: Autenticação Google

KeyTypeDescriptionExample
GOOGLE_CLIENT_IDstringSeu ID de cliente Google.GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRETstringSeu client secret do Google.GOOGLE_CLIENT_SECRET=
GOOGLE_CALLBACK_URLstringA URL de callback para autenticação do Google.GOOGLE_CALLBACK_URL=/oauth/google/callback

OpenID Connect

Para mais informações:

KeyTypeDescriptionExample
OPENID_CLIENT_IDstringSeu ID de cliente OpenID.OPENID_CLIENT_ID=
OPENID_CLIENT_SECRETstringSeu client secret do OpenID.OPENID_CLIENT_SECRET=
OPENID_ISSUERstringA URL do emissor OpenID.OPENID_ISSUER=
OPENID_SESSION_SECRETstringO segredo para o armazenamento de sessão do OpenID.OPENID_SESSION_SECRET=
OPENID_SCOPEstringO escopo OpenID.OPENID_SCOPE="openid profile email"
OPENID_CALLBACK_URLstringA URL de callback para autenticação OpenID.OPENID_CALLBACK_URL=/oauth/openid/callback
OPENID_AUDIENCEstringValor de audience para validação de JWT OpenID e solicitações de autorização. Valores separados por vírgula são aceitos para validação de JWT; solicitações de autorização usam o primeiro valor não vazio. Obrigatório para Auth0 ao usar OPENID_REUSE_TOKENS=true para receber tokens de acesso JWT em vez de tokens opacos.OPENID_AUDIENCE=https://api.librechat.com
OPENID_REQUIRED_ROLEstringA(s) função(ões) necessária(s) para validação. Suporta uma única função ou múltiplas funções separadas por vírgula. Quando múltiplas funções são especificadas, o usuário precisa de QUALQUER uma das funções especificadas (lógica OU).OPENID_REQUIRED_ROLE=admin or OPENID_REQUIRED_ROLE=role1,role2,admin
OPENID_REQUIRED_ROLE_TOKEN_KINDstringO tipo de token para validação de função obrigatória.OPENID_REQUIRED_ROLE_TOKEN_KIND=
OPENID_REQUIRED_ROLE_PARAMETER_PATHstringO caminho do parâmetro para a validação de função necessária.OPENID_REQUIRED_ROLE_PARAMETER_PATH=
OPENID_ADMIN_ROLEstringA função que o usuário deve ter para ser um administrador no LibreChat.OPENID_ADMIN_ROLE=
OPENID_ADMIN_ROLE_TOKEN_KINDstringA fonte das informações para verificação da função de administrador. Os valores possíveis são: access, id ou userinfo.OPENID_ADMIN_ROLE_TOKEN_KIND=
OPENID_ADMIN_ROLE_PARAMETER_PATHstringO caminho do parâmetro para a validação de função necessária.OPENID_ADMIN_ROLE_PARAMETER_PATH=
OPENID_ROLE_SYNC_ENABLEDbooleanHabilite a sincronização de função OpenID genérica para funções não administrativas. ADMIN não pode ser atribuído por sincronização de função; use OPENID_ADMIN_ROLE para elevação de administrador.OPENID_ROLE_SYNC_ENABLED=false
OPENID_ROLE_SYNC_API_ENABLEDbooleanHabilitar auxiliares de sincronização de função baseados em API. Requer OPENID_ROLE_SYNC_ENABLED=true.OPENID_ROLE_SYNC_API_ENABLED=false
OPENID_ROLE_SYNC_SOURCEstringFonte do token para a reivindicação de função (role claim). Deve ser um dos seguintes: access, id, userinfo. Padrão: id.OPENID_ROLE_SYNC_SOURCE=id
OPENID_ROLE_SYNC_CLAIMstringCaminho da claim que contém as funções ou grupos do provedor. Obrigatório quando a sincronização de funções está ativada.OPENID_ROLE_SYNC_CLAIM=
OPENID_ROLE_SYNC_ROLE_PRIORITYstringFunções do LibreChat separadas por vírgula, ordenadas da mais importante para a menos importante. A primeira função correspondente é atribuída.OPENID_ROLE_SYNC_ROLE_PRIORITY=Support,User
OPENID_ROLE_SYNC_FALLBACK_ROLEstringFunção do LibreChat atribuída quando nenhuma função de prioridade corresponde. O fallback é autoritativo quando configurado.OPENID_ROLE_SYNC_FALLBACK_ROLE=USER
OPENID_BUTTON_LABELstringO rótulo para o botão de login OpenID.OPENID_BUTTON_LABEL=
OPENID_IMAGE_URLstringA URL da imagem do botão de login OpenID.OPENID_IMAGE_URL=
OPENID_USE_END_SESSION_ENDPOINTstringSe deve usar o Issuer End Session Endpoint como um redirecionamento de logoutOPENID_USE_END_SESSION_ENDPOINT=TRUE
OPENID_MAX_LOGOUT_URL_LENGTHnumberComprimento máximo da URL de logout antes de usar logout_hint em vez de id_token_hint. Padrão: 2000.# OPENID_MAX_LOGOUT_URL_LENGTH=2000
OPENID_AUTO_REDIRECTbooleanSe deve redirecionar automaticamente para o provedor OpenID.OPENID_AUTO_REDIRECT=true
OPENID_USE_PKCEbooleanUse PKCE (Proof Key for Code Exchange) para autenticação OpenID. Para clientes públicos sem um client secret, deixe OPENID_CLIENT_SECRET vazio e defina isto como true.# OPENID_USE_PKCE=true
OPENID_POST_LOGOUT_REDIRECT_URIstringURI de redirecionamento após o logout do OpenID. O padrão é ${DOMAIN_CLIENT}/login.# OPENID_POST_LOGOUT_REDIRECT_URI=
OPENID_CLOCK_TOLERANCEnumberTolerância de relógio em segundos para validação de token. Padrão: 300.# OPENID_CLOCK_TOLERANCE=300
OPENID_GENERATE_NONCEbooleanForça o cliente OpenID a gerar um parâmetro nonce. Requerido por alguns provedores de identidade como AWS Cognito (especialmente com federação) e Authentik.OPENID_GENERATE_NONCE=true
DEBUG_OPENID_REQUESTSbooleanHabilita o registro detalhado de cabeçalhos de requisição OpenID. Quando desativado (padrão), apenas as URLs de requisição são registradas no nível de depuração. Quando ativado, os cabeçalhos de requisição também são registrados (com dados sensíveis mascarados) para uma depuração mais profunda de problemas de autenticação.DEBUG_OPENID_REQUESTS=false
OPENID_USERNAME_CLAIMstringA propriedade de informações do usuário do provedor OpenID a ser armazenada como o nome de usuário.OPENID_USERNAME_CLAIM=
OPENID_NAME_CLAIMstringA propriedade de informações do usuário do provedor OpenID a ser armazenada como o nome de exibição do usuário.OPENID_NAME_CLAIM=
OPENID_EMAIL_CLAIMstringA claim de informações do usuário a ser usada como e-mail/identificador para correspondência de usuário (por exemplo, "upn" para Entra ID). Quando não definida, o padrão é: email → preferred_username → upn.OPENID_EMAIL_CLAIM=

Sincronização de funções OpenID

OPENID_ROLE_SYNC_CLAIM é obrigatório quando a sincronização de funções está ativada. OPENID_ROLE_SYNC_API_ENABLED=true também requer OPENID_ROLE_SYNC_ENABLED=true. A sincronização de funções genérica não pode atribuir ADMIN; use OPENID_ADMIN_ROLE para elevação de administrador.

Reutilização de Token OpenID Connect

O LibreChat oferece suporte à reutilização de tokens de acesso e de atualização emitidos pelo seu provedor OpenID Connect (como Azure Entra ID ou Auth0) para gerenciar o estado de autenticação do usuário. Quando este recurso está ativo, o token de atualização passado ao usuário como um cookie é emitido pelo seu provedor OpenID em vez do LibreChat.

KeyTypeDescriptionExample
OPENID_REUSE_TOKENSbooleanHabilitar a reutilização de tokens de provedor OpenID para gerenciamento de sessão.OPENID_REUSE_TOKENS=false
OPENID_SCOPEstringLista de escopos OpenID separados por espaço. Deve incluir offline_access para reutilização de token.OPENID_SCOPE=api://librechat/.default openid profile email offline_access
OPENID_AUDIENCEstringValor de audience para validação de JWT OpenID e solicitações de autorização. Valores separados por vírgula são aceitos para validação de JWT; solicitações de autorização usam o primeiro valor não vazio. Obrigatório para Auth0 quando OPENID_REUSE_TOKENS=true. Veja a nota na seção principal de OpenID acima.OPENID_AUDIENCE=https://api.librechat.com
OPENID_REUSE_MAX_SESSION_AGE_MSnumberIdade máxima em que um token de sessão OpenID reutilizado é servido antes que o LibreChat force uma atualização do IdP. Padrão: 900000 ms / 15 minutos.OPENID_REUSE_MAX_SESSION_AGE_MS=900000
OPENID_JWKS_URL_CACHE_ENABLEDbooleanHabilitar o cache dos resultados da verificação da chave de assinatura.OPENID_JWKS_URL_CACHE_ENABLED=true
OPENID_JWKS_URL_CACHE_TIMEnumberDuração do cache em milissegundos (padrão: 600000 ms / 10 minutos).OPENID_JWKS_URL_CACHE_TIME=600000
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIREDbooleanHabilitar o fluxo on-behalf-of para informações do usuário.OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
OPENID_ON_BEHALF_FLOW_USERINFO_SCOPEstringEscopo para informações do usuário no fluxo on-behalf-of.OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read
OPENID_USE_END_SESSION_ENDPOINTbooleanHabilitar o uso do endpoint de encerramento de sessão para logout.OPENID_USE_END_SESSION_ENDPOINT=true
OPENID_MAX_LOGOUT_URL_LENGTHnumberComprimento máximo da URL de logout em caracteres antes de alternar para logout_hint. Útil para evitar erros de URI muito longa quando id_token_hint excede os limites do servidor. Padrão: 2000.OPENID_MAX_LOGOUT_URL_LENGTH=2000

OPENID_REUSE_MAX_SESSION_AGE_MS aceita expressões aritméticas como SESSION_EXPIRY. Aumente-o em direção ao tempo de vida do access-token do IdP quando seu provedor revogar o access-token anterior ao atualizar, para que consumidores downstream, como servidores MCP, possam terminar de usar um bearer token ainda válido.

Nota

Para etapas detalhadas de configuração e pré-requisitos, consulte Re-use OpenID Tokens for Login Session.

Integração com Microsoft Graph API / Entra ID

Ao usar o Azure Entra ID (anteriormente Azure AD) como seu provedor OpenID, você pode habilitar recursos adicionais da Microsoft Graph API para capacidades aprimoradas de pesquisa de pessoas e grupos dentro do sistema de permissões e compartilhamento.

KeyTypeDescriptionExample
USE_ENTRA_ID_FOR_PEOPLE_SEARCHbooleanHabilite a integração de pesquisa de pessoas do Entra ID no sistema de permissões/compartilhamento. Quando habilitado, o seletor de pessoas pesquisará tanto no banco de dados local quanto no Entra ID.USE_ENTRA_ID_FOR_PEOPLE_SEARCH=false
ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERSbooleanQuando ativado, os proprietários de grupos do Entra ID serão considerados como membros do grupo.ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=false
OPENID_GRAPH_SCOPESstringEscopos da Microsoft Graph API necessários para pesquisa de pessoas/grupos. Os escopos padrão fornecem acesso a perfis de usuário e associações de grupo.OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All

Pré-requisitos Importantes

  • Você deve ter o Azure Entra ID configurado como seu provedor OpenID - a reutilização de token OpenID DEVE estar habilitada (OPENID_REUSE_TOKENS=true) - este recurso não funcionará sem ela - O registro do seu aplicativo Azure deve ter as permissões apropriadas da Microsoft Graph API - Para a funcionalidade de pesquisa de grupo, o consentimento do administrador pode ser necessário para determinados escopos da Graph API
Integração com SharePoint

O LibreChat oferece suporte à integração direta com o SharePoint Online e o OneDrive for Business, permitindo que os usuários selecionem e anexem arquivos de suas bibliotecas do SharePoint diretamente nas conversas. Este recurso corporativo utiliza a autenticação existente do Azure Entra ID.

KeyTypeDescriptionExample
ENABLE_SHAREPOINT_FILEPICKERbooleanHabilita o seletor de arquivos do SharePoint nos painéis de chat e de agentes. Quando habilitado, adiciona a opção "Do SharePoint" no menu de anexos de arquivo.ENABLE_SHAREPOINT_FILEPICKER=true
SHAREPOINT_BASE_URLstringURL base do tenant do SharePoint. Obrigatório quando a integração com o SharePoint estiver habilitada.SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com
SHAREPOINT_PICKER_SHAREPOINT_SCOPEstringEscopo OAuth específico do SharePoint para o seletor de arquivos. Usado para autenticação ao abrir a interface do seletor de arquivos do SharePoint.SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read
SHAREPOINT_PICKER_GRAPH_SCOPEstringEscopo da Microsoft Graph API para downloads de arquivos. Usado para baixar arquivos do SharePoint após a seleção.SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All

Requisitos Críticos

Tudo o que está a seguir deve ser configurado para que a integração com o SharePoint funcione:

  • A autenticação do Azure Entra ID deve estar totalmente configurada
  • OPENID_REUSE_TOKENS=true é obrigatório (usa o fluxo de token on-behalf-of)
  • OPENID_SCOPE deve incluir o escopo da API do seu aplicativo LibreChat, por exemplo api://<client-id>/access_as_user
  • OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true é necessário ao usar esse escopo de app-audience com o Azure Entra ID
  • O seu registro de aplicativo Azure deve ter permissões de SharePoint e Graph API
  • O registro do seu aplicativo Azure deve expor o escopo da API do LibreChat usado em OPENID_SCOPE
  • Todas as quatro variáveis de ambiente do SharePoint devem ser definidas
  • HTTPS é obrigatório em ambientes de produção

Funcionalidades dos Recursos

Quando ativado, os usuários podem:

  • Acessar arquivos de bibliotecas de documentos do SharePoint e OneDrive for Business
  • Selecionar vários arquivos de uma vez (padrão máximo: 10 arquivos)
  • Ver o progresso do download em tempo real
    • Os arquivos são baixados e anexados à conversa como uploads comuns.

Para instruções detalhadas de configuração do SharePoint, veja: Guia de Integração do SharePoint

SAML

Para mais informações:

Exclusão Mútua de OpenID e SAML

Se OpenID estiver habilitado, a autenticação SAML será desabilitada automaticamente.

Apenas um método de autenticação pode estar ativo por vez.

KeyTypeDescriptionExample
SAML_ENTRY_POINTstringA URL do ponto de entrada do provedor de identidade (IdP) SAML.SAML_ENTRY_POINT=
SAML_ISSUERstringO ID da entidade do provedor de serviço (SP) SAML.SAML_ISSUER=
SAML_CERTstringO certificado de assinatura SAML, fornecido como um caminho de arquivo ou uma string PEM de uma linha.SAML_CERT=
SAML_CALLBACK_URLstringA URL de callback para autenticação SAML.SAML_CALLBACK_URL=/oauth/saml/callback
SAML_SESSION_SECRETstringO segredo para o armazenamento de sessão SAML.SAML_SESSION_SECRET=
SAML_EMAIL_CLAIMstring<Optional>: O atributo na asserção SAML que contém o e-mail do usuário. (padrão: email)SAML_EMAIL_CLAIM=
SAML_USERNAME_CLAIMstring<Optional>: O atributo na asserção SAML que contém o nome de usuário. (padrão: username)SAML_USERNAME_CLAIM=
SAML_GIVEN_NAME_CLAIMstring<Optional>: O atributo na asserção SAML que contém o nome. (padrão: given_name)SAML_GIVEN_NAME_CLAIM=
SAML_FAMILY_NAME_CLAIMstring<Optional>: O atributo na asserção SAML que contém o sobrenome. (padrão: family_name)SAML_FAMILY_NAME_CLAIM=
SAML_PICTURE_CLAIMstring<Optional>: O atributo na asserção SAML que contém a URL da foto de perfil. (padrão: picture)SAML_PICTURE_CLAIM=
SAML_NAME_CLAIMstring<Optional>: O atributo na asserção SAML que contém o nome completo.SAML_NAME_CLAIM=
SAML_BUTTON_LABELstring<Optional>: O rótulo para o botão de login SAML.SAML_BUTTON_LABEL=
SAML_IMAGE_URLstring<Optional>: A URL da imagem do botão de login SAML.SAML_IMAGE_URL=
SAML_USE_AUTHN_RESPONSE_SIGNEDboolean<Optional>: Se "true", assina toda a SAML Response. Caso contrário, apenas a Assertion é assinada (padrão).SAML_USE_AUTHN_RESPONSE_SIGNED=

Autenticação LDAP/AD

Para mais informações: Autenticação LDAP/AD

KeyTypeDescriptionExample
LDAP_URLstringURL do servidor LDAP.LDAP_URL=ldap://localhost:389
LDAP_BIND_DNstringDN de VinculaçãoLDAP_BIND_DN=cn=root
LDAP_BIND_CREDENTIALSstringSenha para bindDNLDAP_BIND_CREDENTIALS=password
LDAP_USER_SEARCH_BASEstringBase de busca de usuários LDAPLDAP_USER_SEARCH_BASE=o=users,o=example.com
LDAP_SEARCH_FILTERstringFiltro de busca LDAPLDAP_SEARCH_FILTER=mail={{username}}
LDAP_CA_CERT_PATHstringCaminho do certificado CA.LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt
LDAP_TLS_REJECT_UNAUTHORIZEDstringVerificação TLS LDAPLDAP_TLS_REJECT_UNAUTHORIZED=true
LDAP_STARTTLSstringHabilite o LDAP StartTLS para atualizar a conexão para TLS. Defina como true para habilitar este recurso.LDAP_STARTTLS=true
LDAP_LOGIN_USES_USERNAMEbooleanUse o nome de usuário em vez do e-mail para login via LDAP.# LDAP_LOGIN_USES_USERNAME=true
LDAP_IDstringAtributo LDAP para ID de usuário único. Padrão: uid ou sAMAccountName, mail.# LDAP_ID=uid
LDAP_USERNAMEstringAtributo LDAP para nome de usuário. Padrão: givenName ou mail.# LDAP_USERNAME=givenName
LDAP_EMAILstringAtributo LDAP para e-mail. Padrão: mail.# LDAP_EMAIL=userPrincipalName
LDAP_FULL_NAMEstringAtributo(s) LDAP para nome completo. Pode ser separado por vírgulas. Padrão: givenName + surname.# LDAP_FULL_NAME=givenName,surname

Redefinição de senha

O e-mail é usado para verificação de conta e redefinição de senha. O LibreChat oferece suporte tanto à API do Mailgun quanto a serviços SMTP tradicionais. Veja: Configuração de e-mail

Nota importante: Você deve configurar o Mailgun (recomendado para servidores que bloqueiam SMTP) ou SMTP para que o e-mail funcione.

Aviso: Não definir valores válidos para o Mailgun ou SMTP fará com que o LibreChat utilize a redefinição de senha não segura!

O Mailgun é particularmente útil para implantações em servidores que bloqueiam portas SMTP. Quando MAILGUN_API_KEY e MAILGUN_DOMAIN estão definidos, o LibreChat usará o Mailgun em vez de SMTP.

KeyTypeDescriptionExample
MAILGUN_API_KEYstringSua chave de API do Mailgun (obrigatória para o Mailgun).MAILGUN_API_KEY=
MAILGUN_DOMAINstringSeu domínio Mailgun (obrigatório para Mailgun).MAILGUN_DOMAIN=mg.yourdomain.com
MAILGUN_HOSTstringHost da API do Mailgun personalizado (opcional). Use https://api.eu.mailgun.net para a região da UE.MAILGUN_HOST=https://api.mailgun.net
EMAIL_FROMstringEndereço de e-mail de remetente. Obrigatório.[email protected]
EMAIL_FROM_NAMEstringNome do remetente (usa APP_TITLE como padrão se não definido).EMAIL_FROM_NAME=

Configuração de SMTP

Se o Mailgun não estiver configurado, o LibreChat utilizará as configurações de SMTP como alternativa.

Aviso: Se estiver usando EMAIL_SERVICE, NÃO defina os parâmetros de conexão estendidos: HOST, PORT, ENCRYPTION, ENCRYPTION_HOSTNAME, ALLOW_SELFSIGNED.

Veja: nodemailer well-known-services

KeyTypeDescriptionExample
EMAIL_SERVICEstringServiço de e-mail (por exemplo, Gmail, Outlook).EMAIL_SERVICE=
EMAIL_HOSTstringHost do servidor de e-mail.EMAIL_HOST=
EMAIL_PORTnumberPorta do servidor de e-mail.EMAIL_PORT=25
EMAIL_ENCRYPTIONstringMétodo de criptografia (starttls, tls, etc.).EMAIL_ENCRYPTION=
EMAIL_ENCRYPTION_HOSTNAMEstringHostname para criptografia.EMAIL_ENCRYPTION_HOSTNAME=
EMAIL_ALLOW_SELFSIGNEDbooleanPermitir certificados autoassinados.EMAIL_ALLOW_SELFSIGNED=
EMAIL_USERNAMEstringNome de usuário para autenticação.EMAIL_USERNAME=
EMAIL_PASSWORDstringSenha para autenticação.EMAIL_PASSWORD=
EMAIL_FROM_NAMEstringNome do remetenteEMAIL_FROM_NAME=
EMAIL_FROMstringEndereço de e-mail de remetente. Obrigatório.[email protected]

Firebase CDN

Veja: Configuração do Firebase CDN

Importante

  • Se você estiver usando o Firebase como sua estratégia de armazenamento de arquivos, defina fileStrategy ou fileStrategies como firebase no seu arquivo de configuração librechat.yaml. Para mais informações sobre como configurar o arquivo librechat.yaml, consulte o Guia de Configuração YAML: Custom Endpoints & Configuration
KeyTypeDescriptionExample
FIREBASE_API_KEYstringA chave de API para o seu projeto Firebase.FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAINstringO domínio do Firebase Auth para o seu projeto.FIREBASE_AUTH_DOMAIN=
FIREBASE_PROJECT_IDstringO ID do seu projeto Firebase.FIREBASE_PROJECT_ID=
FIREBASE_STORAGE_BUCKETstringO bucket do Firebase Storage para o seu projeto.FIREBASE_STORAGE_BUCKET=
FIREBASE_MESSAGING_SENDER_IDstringO ID do remetente do Firebase Cloud Messaging.FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_APP_IDstringO Firebase App ID para o seu projeto.FIREBASE_APP_ID=

Amazon S3 e CloudFront

Veja: Configuração do Amazon S3 e CloudFront com S3

Importante

Se você estiver usando o S3 como sua estratégia de armazenamento de arquivos, defina fileStrategy ou fileStrategies no seu arquivo de configuração librechat.yaml. Se você usar o CloudFront, o S3 ainda é necessário como a origem do armazenamento.

KeyTypeDescriptionExample
AWS_ACCESS_KEY_IDstringSeu ID de chave de acesso de usuário IAM. Opcional se estiver usando IRSA.AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEYstringSua chave de acesso secreta de usuário IAM. Opcional se estiver usando IRSA.AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_REGIONstringA região da AWS onde seu bucket S3 está localizado.AWS_REGION=us-east-1
AWS_BUCKET_NAMEstringO nome do bucket S3 para armazenamento de arquivos.AWS_BUCKET_NAME=your_bucket_name
AWS_ENDPOINT_URLstringURL de endpoint AWS personalizada (opcional). Para serviços compatíveis com S3. Inclua o esquema da URL, como https://a7g8.da.idrivee2-32.com.# AWS_ENDPOINT_URL=https://your_endpoint_url
AWS_FORCE_PATH_STYLEbooleanDefina como true para provedores compatíveis com S3 que exigem URLs no estilo de caminho (por exemplo, MinIO, Hetzner, Backblaze B2). Não é necessário para AWS S3. Padrão: false.# AWS_FORCE_PATH_STYLE=false
CLOUDFRONT_KEY_PAIR_IDstringID do par de chaves públicas do CloudFront. Obrigatório para cookies assinados e URLs de download assinadas do CloudFront.# CLOUDFRONT_KEY_PAIR_ID=K1234567890ABC
CLOUDFRONT_PRIVATE_KEYstringChave privada PEM do CloudFront. Necessária para cookies assinados e URLs de download assinadas do CloudFront. Preserve as quebras de linha PEM ao injetar este segredo.# CLOUDFRONT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"

Nota: Para implantações em Kubernetes (por exemplo, no EKS), você pode usar IRSA (IAM Roles for Service Accounts) em vez de fornecer credenciais explícitas. Nesse caso, apenas AWS_REGION e AWS_BUCKET_NAME são necessários.

Azure Blob Storage CDN

Veja: Configuração de CDN do Azure Blob Storage

Importante

Se você estiver usando o Azure Blob Storage como sua estratégia de armazenamento de arquivos, defina fileStrategy ou fileStrategies como azure_blob no seu arquivo de configuração librechat.yaml.

KeyTypeDescriptionExample
AZURE_STORAGE_CONNECTION_STRINGstringString de conexão do Azure Blob Storage. Use isto OU AZURE_STORAGE_ACCOUNT_NAME para Identidade Gerenciada.AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...
AZURE_STORAGE_ACCOUNT_NAMEstringNome da conta de armazenamento Azure. Use para autenticação de Identidade Gerenciada (não defina a string de conexão).# AZURE_STORAGE_ACCOUNT_NAME=yourAccountName
AZURE_STORAGE_PUBLIC_ACCESSbooleanHabilitar acesso público para blobs. Padrão: false.AZURE_STORAGE_PUBLIC_ACCESS=false
AZURE_CONTAINER_NAMEstringNome do container para armazenamento de arquivos. Padrão: files.AZURE_CONTAINER_NAME=files

Nota: Use AZURE_STORAGE_CONNECTION_STRING (Opção A) ou AZURE_STORAGE_ACCOUNT_NAME com Managed Identity (Opção B), não ambos.

UI

Botão de Ajuda e FAQ

KeyTypeDescriptionExample
HELP_AND_FAQ_URLstringURL de Ajuda e FAQ. Se estiver vazio ou comentado, o botão é habilitado. Para desabilitar o botão de Ajuda e FAQ, defina como "/".HELP_AND_FAQ_URL=https://librechat.ai

Comportamento:

Define os cabeçalhos Cache-Control para arquivos estáticos. Estas configurações só são acionadas quando o NODE_ENV está definido como production.

Configurar corretamente os cabeçalhos de cache é crucial para otimizar o desempenho e a eficiência da sua aplicação web. Ao controlar por quanto tempo navegadores e CDNs armazenam cópias dos seus arquivos estáticos, você pode reduzir significativamente a carga do servidor, diminuir o tempo de carregamento das páginas e melhorar a experiência geral do usuário.

  • Remova o comentário de STATIC_CACHE_MAX_AGE para alterar o max-age de arquivos estáticos. Por padrão, isso é definido como 4 semanas.
  • Remova o comentário de STATIC_CACHE_S_MAX_AGE para alterar o s-maxage de arquivos estáticos. Por padrão, isso é definido como 1 semana.
    • Isso é para o shared cache, que é usado por CDNs e proxies.
KeyTypeDescriptionExample
APP_TITLEstringTítulo do aplicativo.APP_TITLE=LibreChat
CUSTOM_FOOTERstringRodapé personalizado.# CUSTOM_FOOTER="My custom footer"
TEMP_CHAT_RETENTION_HOURSnumber**Obsoleto:** Use `interface.temporaryChatRetention` no librechat.yaml em vez disso. Horas para reter chats temporários. Padrão: 720 (30 dias).# TEMP_CHAT_RETENTION_HOURS=168

Comportamento:

  • Remova o comentário de CUSTOM_FOOTER para adicionar um rodapé personalizado.
  • Remova o comentário e deixe CUSTOM_FOOTER vazio para remover o rodapé.
  • You can now add one or more links in the CUSTOM_FOOTER value using the following format: [Anchor text](URL). Each link should be delineated with a pipe (|).

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

Chapéu de Aniversário

KeyTypeDescriptionExample
SHOW_BIRTHDAY_ICONbooleanMostrar o ícone de chapéu de aniversário.# SHOW_BIRTHDAY_ICON=true

Comportamento:

  • O ícone de chapéu de aniversário aparecerá automaticamente no dia 11 de fevereiro (aniversário do LibreChat).
  • Defina SHOW_BIRTHDAY_ICON como false para desativar o chapéu de aniversário.
  • Defina SHOW_BIRTHDAY_ICON como true para habilitar o chapéu de aniversário o tempo todo.

Analytics

Google Tag Manager

O LibreChat oferece suporte ao Google Tag Manager para análise de dados. Você precisará de um ID do Google Tag Manager para ativá-lo no LibreChat. Siga este guia para gerar um ID do Google Tag Manager e configurar o Google Analytics. Em seguida, defina a variável de ambiente ANALYTICS_GTM_ID com o seu ID do Google Tag Manager.

Nota: Se ANALYTICS_GTM_ID não estiver definido, o Google Tag Manager não será habilitado. Se estiver definido incorretamente, você verá falhas nas requisições para gtm.js

KeyTypeDescriptionExample
ANALYTICS_GTM_IDstringID do Google Tag Manager.ANALYTICS_GTM_ID=

Importação de Conversa

Configure limites para importações de arquivos de conversas para evitar problemas de memória.

KeyTypeDescriptionExample
CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTESnumberTamanho máximo de arquivo em bytes para importações de conversas. Padrão: 0 (nenhum limite aplicado). Exemplo: 262144000 (250 MiB).# CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES=262144000

Visualizações de Arquivo Inline

Controle o tamanho máximo que os arquivos gerados podem ter antes que o LibreChat ignore a extração de visualização em linha e os deixe apenas para download.

KeyTypeDescriptionExample
FILE_PREVIEW_MAX_EXTRACT_BYTESnumberTamanho máximo do arquivo de origem em bytes para visualizações inline de artefatos de execução de código. Padrão: 2097152 (2 MiB). Visualizações em HTML renderizadas ainda possuem um limite separado, portanto arquivos muito complexos podem não ser visualizados mesmo abaixo deste valor.# FILE_PREVIEW_MAX_EXTRACT_BYTES=2097152

MCP (Model Context Protocol)

Configure as definições do Model Context Protocol para um gerenciamento de servidor aprimorado e suporte a OAuth.

Configuração do Servidor MCP

KeyTypeDescriptionExample
MCP_OAUTH_ON_AUTH_ERRORbooleanTratar respostas 401/403 como requisito de OAuth quando nenhum metadado de oauth for encontrado.MCP_OAUTH_ON_AUTH_ERROR=true
MCP_OAUTH_DETECTION_TIMEOUTnumberTempo limite para solicitações de detecção de OAuth em milissegundos.MCP_OAUTH_DETECTION_TIMEOUT=5000
MCP_OAUTH_HANDLING_TIMEOUTnumberQuanto tempo o LibreChat aguarda para que um usuário conclua um fluxo OAuth de MCP antes de expirar. Padrão: 600000 ms (10 minutos).MCP_OAUTH_HANDLING_TIMEOUT=600000
MCP_OAUTH_FLOW_TTLnumberPor quanto tempo o estado do fluxo OAuth do MCP é retido. O LibreChat limita isso acima de MCP_OAUTH_HANDLING_TIMEOUT para que callbacks próximos ao prazo final ainda possam ser concluídos. Padrão: 900000 ms (15 minutos).MCP_OAUTH_FLOW_TTL=900000
MCP_CONNECTION_CHECK_TTLnumberCachear verificações de status de conexão por este número de milissegundos para evitar verificações custosas.MCP_CONNECTION_CHECK_TTL=30000
MCP_TOOLS_LIST_MAX_PAGESnumberNúmero máximo de ferramentas/páginas de lista a solicitar quando um servidor MCP pagina sua lista de ferramentas (paginação por cursor). Limita o loop de paginação para que um servidor com comportamento inadequado não trave a descoberta de ferramentas. Limitado a um mínimo de 1. Padrão: 50.MCP_TOOLS_LIST_MAX_PAGES=50
MCP_SKIP_CODE_CHALLENGE_CHECKbooleanPular a validação do método de desafio de código. Quando definido como true, força o desafio de código S256, mesmo que não anunciado em .well-known/openid-configurationMCP_SKIP_CODE_CHALLENGE_CHECK=false
MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTESnumberMáximo de bytes permitidos em uma resposta HTTP MCP streamable não-GET antes de rejeitá-la. Defina como 0 para desativar. Padrão: 16777216 (16 MiB).# MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES=16777216
MCP_STREAMABLE_HTTP_MAX_LINE_BYTESnumberMáximo de bytes permitidos em uma linha SSE para respostas HTTP MCP transmissíveis que não sejam GET. Defina como 0 para desativar. Padrão: 5242880 (5 MiB).# MCP_STREAMABLE_HTTP_MAX_LINE_BYTES=5242880

Outros

Redis

O Redis oferece melhorias significativas de desempenho e habilita capacidades de escalonamento horizontal para o LibreChat.

Nota: O suporte ao Redis é experimental e você pode encontrar alguns problemas ao utilizá-lo.

Importante: Se estiver usando Redis, você deve limpar o cache após alterar qualquer configuração do LibreChat.

Para configurações detalhadas e exemplos, veja: Guia de Configuração do Redis

KeyTypeDescriptionExample
USE_REDISbooleanHabilite o Redis para cache e armazenamento de sessão. Quando definido como true, a REDIS_URI deve ser fornecida.USE_REDIS=true
USE_REDIS_STREAMSbooleanHabilite o Redis para fluxos de LLM retomáveis. O padrão é o valor de USE_REDIS se não for definido. Defina como false para usar armazenamento em memória para fluxos.# USE_REDIS_STREAMS=true
REDIS_URIstringURI de conexão do Redis. Para instância única: `redis://host:port`. Para cluster: URIs separadas por vírgula.REDIS_URI=redis://127.0.0.1:6379
USE_REDIS_CLUSTERbooleanHabilitar o modo de cluster do Redis ao usar uma única URI# USE_REDIS_CLUSTER="true"
REDIS_CLUSTER_SAFE_DELETEbooleanExclua chaves de cache do Redis individualmente para evitar erros CROSSSLOT em serviços Redis gerenciados de endpoint único que particionam chaves internamente.# REDIS_CLUSTER_SAFE_DELETE=true
REDIS_USERNAMEstringNome de usuário do Redis para autenticação. Substitui o nome de usuário na URI caso ambos sejam fornecidos.# REDIS_USERNAME=your_redis_username
REDIS_PASSWORDstringSenha do Redis para autenticação. Substitui a senha na URI caso ambas sejam fornecidas.# REDIS_PASSWORD=your_redis_password
REDIS_CAstringCaminho para o certificado CA para verificação TLS ao usar o protocolo rediss://.# REDIS_CA=/path/to/ca-cert.pem
REDIS_KEY_PREFIXstringPrefixo estático para todas as chaves Redis para evitar contaminação entre implantações.# REDIS_KEY_PREFIX=librechat-prod-v2
REDIS_KEY_PREFIX_VARstringNome da variável de ambiente contendo o prefixo dinâmico (por exemplo, K_REVISION para Cloud Run). Não pode ser usado com REDIS_KEY_PREFIX.# REDIS_KEY_PREFIX_VAR=K_REVISION
REDIS_MAX_LISTENERSnumberMáximo de ouvintes de eventos por cliente Redis. Previne vazamentos de memória. Padrão: 40.# REDIS_MAX_LISTENERS=40
REDIS_PING_INTERVALnumberIntervalo de ping em segundos para manter as conexões. Padrão: 0 (desativado). Defina apenas se estiver enfrentando timeouts.# REDIS_PING_INTERVAL=300
FORCED_IN_MEMORY_CACHE_NAMESPACESstringChaves de cache separadas por vírgula para forçar o armazenamento em memória mesmo quando o Redis estiver habilitado.# FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES
REDIS_USE_ALTERNATIVE_DNS_LOOKUPbooleanHabilitar dnsLookup alternativo para conexões TLS com AWS Elasticache. Necessário para clusters Elasticache com TLS.# REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true

Notas:

  • Quando USE_REDIS=true, você deve fornecer REDIS_URI ou a aplicação lançará um erro.
  • Para o modo Redis Cluster, forneça múltiplas URIs: redis://node1:7001,redis://node2:7002,redis://node3:7003 (o modo cluster é detectado automaticamente).
  • Para serviços Redis gerenciados de endpoint único que fragmentam chaves internamente, mantenha USE_REDIS_CLUSTER=false e defina REDIS_CLUSTER_SAFE_DELETE=true se as limpezas de cache falharem com erros CROSSSLOT.
  • Use o protocolo rediss:// para conexões TLS e defina REDIS_CA se sua CA não for publicamente confiável.
  • REDIS_KEY_PREFIX_VAR e REDIS_KEY_PREFIX são mutuamente exclusivos.
  • AWS Elasticache com TLS: O Elasticache pode precisar usar um dnsLookup alternativo para conexões TLS. Defina REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true se estiver usando o Elasticache com TLS. Veja a documentação do ioredis para mais detalhes.

Eleição de Líder

Configure a eleição de líder distribuída para implantações de múltiplas instâncias com Redis. A eleição de líder garante que apenas uma instância execute certas operações, como tarefas agendadas.

KeyTypeDescriptionExample
LEADER_LEASE_DURATIONnumberDuração em segundos pela qual a concessão do líder é válida antes de expirar. Padrão: 25.LEADER_LEASE_DURATION=25
LEADER_RENEW_INTERVALnumberIntervalo em segundos no qual o líder renova sua concessão. Padrão: 10.LEADER_RENEW_INTERVAL=10
LEADER_RENEW_ATTEMPTSnumberNúmero máximo de tentativas de repetição quando a renovação do lease falha. Padrão: 3.LEADER_RENEW_ATTEMPTS=3
LEADER_RENEW_RETRY_DELAYnumberAtraso em segundos entre as tentativas de repetição ao renovar a concessão. Padrão: 0.5.LEADER_RENEW_RETRY_DELAY=0.5

Notas:

  • A eleição de líder requer que o Redis esteja habilitado (USE_REDIS=true).
  • Estas configurações são relevantes apenas para implantações de múltiplas instâncias.
  • O lease do líder deve ser renovado antes da expiração para manter a liderança.
  • Se a renovação da concessão falhar após as tentativas máximas, a instância renunciará à liderança.

Como está este guia?

Nesta página

Configuração do ServidorPortaTrust proxyConfiguração de CredenciaisManipulação de Arquivos EstáticosControle de Cache do HTML de ÍndiceBanco de dados MongoDBConfiguração do Pool de Conexão do MongoDBConfiguração do Esquema do MongoDBDomínios de AplicaçãoImpedir a Indexação por Mecanismos de Busca PúblicosRegistro (Logging)Arquivos de LogVariáveis de AmbientePermissãoRastreamento OpenTelemetryReal User Monitoring (Navegador)Caminho de Configuração - librechat.yamlHabilidades de ImplantaçãoValidação de ConfiguraçãoTratamento de Exceções Não CapturadasEndpointsConfiguração GeralEndpoints Conhecidos - librechat.yamlPesquisa na WebAnthropicAnthropic via Vertex AIAWS BedrockBingAIGoogleGeração de Imagem do GeminiOpenAIAssistantsTavilyTraversaalWolframAlphaZapierOpenWeatherCode InterpreterArtifactsPesquisa (Meilisearch)RAG APISpeech to Text & Text to SpeechLinks CompartilhadosSistema de UsuárioModeraçãoConfigurações Básicas de ModeraçãoConfigurações de BanimentoLimitação de taxa de login e registroPontuação para cada violaçãoLimitação de taxa de mensagens (por usuário e IP)LimitadoresLimitador de IP:Limitador de Usuário:Limitação de taxa de importação de conversasLimitador de IP:Limitador de Usuário:Limitação de taxa de bifurcação de conversasLimitador de IP:Limitador de Usuário:Limitação de taxa de upload de arquivosLimitador de IP:Limitador de Usuário:Limitação de taxa de TTS (Text-to-Speech)Limitador de IP:Limitador de Usuário:Limitação de taxa (rate limiting) de STT (Speech-to-Text)Limitador de IP:Limitador de Usuário:BalanceGerenciando SaldosRegistro e LoginLogins SociaisAutenticação AppleAutenticação via DiscordAutenticação do FacebookAutenticação via GitHubAutenticação GoogleOpenID ConnectReutilização de Token OpenID ConnectIntegração com Microsoft Graph API / Entra IDIntegração com SharePointSAMLAutenticação LDAP/ADRedefinição de senhaConfiguração do Mailgun (Recomendado)Configuração de SMTPFirebase CDNAmazon S3 e CloudFrontAzure Blob Storage CDNUIBotão de Ajuda e FAQTítulo do Aplicativo e RodapéChapéu de AniversárioAnalyticsGoogle Tag ManagerImportação de ConversaVisualizações de Arquivo InlineMCP (Model Context Protocol)Configuração do Servidor MCPOutrosRedisEleição de Líder