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:
-
Nosso guia rápido:
-
A documentação oficial do Docker:
-
Você também pode visualizar um exemplo de um arquivo de substituição (override) para o LibreChat na sua pasta do LibreChat e no GitHub:
Configuração do Servidor
Porta
- O servidor escuta em uma porta específica.
- A variável de ambiente
PORTdefine a porta onde o servidor escuta. Por padrão, ela é definida como3080.
| Key | Type | Description | Example |
|---|---|---|---|
| HOST | string | Especifica o host. | HOST=localhost |
| PORT | number | Especifica 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.
| Key | Type | Description | Example |
|---|---|---|---|
| TRUST_PROXY | number | Especifica 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.
| Key | Type | Description | Example |
|---|---|---|---|
| CREDS_KEY | string | Chave de 32 bytes (64 caracteres em hex) para armazenamento seguro de credenciais. Obrigatória para a inicialização do app. | CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0 |
| CREDS_IV | string | IV 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
| Key | Type | Description | Example |
|---|---|---|---|
| STATIC_CACHE_MAX_AGE | string | Cache-Control max-age em segundos | STATIC_CACHE_MAX_AGE=172800 |
| STATIC_CACHE_S_MAX_AGE | string | Cache-Control s-maxage em segundos para caches compartilhados (CDNs e proxies) | STATIC_CACHE_S_MAX_AGE="86400" |
| DISABLE_COMPRESSION | boolean | Desativa a compressão para arquivos estáticos. | DISABLE_COMPRESSION=false |
| ENABLE_IMAGE_OUTPUT_GZIP_SCAN | boolean | Habilita o fornecimento de versões gzipped de imagens enviadas, caso estejam presentes na mesma pasta. | ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true |
| ENABLE_STATIC_ASSET_BROTLI | boolean | Habilita 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_AGEpara alterar omax-agelocal para arquivos estáticos. Por padrão, isso é definido como 2 dias (172800 segundos). - Remova o comentário de
STATIC_CACHE_S_MAX_AGEpara definir os-maxagepara caches compartilhados (CDNs e proxies). Por padrão, isso é definido como 1 dia (86400 segundos). - Remova o comentário de
DISABLE_COMPRESSIONpara desativar a compressão de arquivos estáticos. Por padrão, a compressão está ativada. - Descomente
ENABLE_IMAGE_OUTPUT_GZIP_SCANpara 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_BROTLIpara servir versões.brpré-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
| Key | Type | Description | Example |
|---|---|---|---|
| INDEX_CACHE_CONTROL | string | Cabeçalho Cache-Control para index.html | INDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate |
| INDEX_PRAGMA | string | Cabeçalho Pragma para index.html | INDEX_PRAGMA=no-cache |
| INDEX_EXPIRES | string | Cabeçalho Expires para index.html | INDEX_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
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_URI | string | Especifica 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
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_MAX_POOL_SIZE | number | O número máximo de conexões no pool de conexões. | # MONGO_MAX_POOL_SIZE= |
| MONGO_MIN_POOL_SIZE | number | O número mínimo de conexões no pool de conexões. | # MONGO_MIN_POOL_SIZE= |
| MONGO_MAX_CONNECTING | number | O 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_MS | number | O 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_MS | number | O 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
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_AUTO_INDEX | boolean | Defina 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_CREATE | boolean | Defina 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- useretryWrites=false - requer uma conexão TLS, portanto, use os parâmetros
tls=truepara habilitar o TLS etlsCAFile=/path-to-ca/bundle.pempara 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:
- MongoDB Atlas para instruções sobre como criar um banco de dados MongoDB Atlas online (útil para uso sem Docker)
- MongoDB Community Server para instruções sobre como criar um banco de dados MongoDB local (sem Docker)
- Autenticação do MongoDB Para habilitar a autenticação explícita para o MongoDB no Docker.
- Gerencie seu banco de dados com o Mongo Express para acessar com segurança seu banco de dados MongoDB no Docker
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:
| Key | Type | Description | Example |
|---|---|---|---|
| DOMAIN_CLIENT | string | Especifica o domínio do lado do cliente. | DOMAIN_CLIENT=http://localhost:3080 |
| DOMAIN_SERVER | string | Especifica o domínio do lado do servidor. | DOMAIN_SERVER=http://localhost:3080 |
| ADMIN_PANEL_URL | string | URL 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_SECRET | string | Chave 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_PORT | number | Porta 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
| Key | Type | Description | Example |
|---|---|---|---|
| NO_INDEX | boolean | Impede 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%.logem: LibreChat GitHub Issues - Os logs de erro são armazenados no mesmo local.
Variáveis de Ambiente
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | Manter logs de depuração ativos. | DEBUG_LOGGING=true |
| DEBUG_CONSOLE | boolean | Habilitar logs detalhados no console/stdout no mesmo formato dos logs de depuração de arquivo. | DEBUG_CONSOLE=false |
| LOG_TO_FILE | boolean | Defina como false para desativar os transportes Winston baseados em arquivo, mantendo o registro no console disponível. | LOG_TO_FILE=true |
| CONSOLE_JSON | boolean | Habilite logs de console/stdout JSON detalhados, adequados para implantações em nuvem como GCP/AWS. | CONSOLE_JSON=false |
| CONSOLE_JSON_STRING_LENGTH | number | Configure 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_DIR | string | Diretório personalizado para arquivos de log. O padrão é /app/logs (Docker) ou api/logs (desenvolvimento local). | # LIBRECHAT_LOG_DIR=/custom/log/path |
| MEM_DIAG | boolean | Habilitar 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_LOGGING | boolean | Ativa 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_LOGGINGpode ser usado comDEBUG_CONSOLEouCONSOLE_JSON, mas não com ambos.DEBUG_CONSOLEeCONSOLE_JSONsã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.- Veja: feat: Add CONSOLE_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.
| Key | Type | Description | Example |
|---|---|---|---|
| UID | number | O ID do usuário. | # UID=1000 |
| GID | number | O 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.
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | Habilitar o rastreamento OpenTelemetry do backend. O rastreamento permanece desabilitado quando OTEL_SDK_DISABLED=true. | # OTEL_TRACING_ENABLED=false |
| OTEL_SERVICE_NAME | string | Nome do serviço reportado ao OpenTelemetry. Padrão: librechat. | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | Versã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_ENDPOINT | string | Endpoint base do exportador OTLP. | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | endpoint OTLP específico para rastreamento. Substitui o endpoint base para rastreamentos quando definido. | # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT= |
| OTEL_EXPORTER_OTLP_HEADERS | string | Cabeçalhos do exportador OTLP separados por vírgula, como metadados de autorização. | # OTEL_EXPORTER_OTLP_HEADERS= |
| OTEL_TRACES_EXPORTER | string | Seleção do exportador de rastreamento. | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | Amostrador de rastreamento OpenTelemetry. Exemplo padrão: parentbased_always_on. | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | Nível de log do SDK OpenTelemetry. | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | Desabilite o SDK do OpenTelemetry mesmo se o rastreamento estiver ativado. | # OTEL_SDK_DISABLED=false |
| OTEL_IOREDIS_TRACING_ENABLED | boolean | Habilitar 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.
| Key | Type | Description | Example |
|---|---|---|---|
| RUM_ENABLED | boolean | Habilitar o Real User Monitoring do navegador. Padrão: false. | # RUM_ENABLED=false |
| RUM_PROVIDER | string | Provedor de RUM para navegador. Atualmente suporta `hyperdx`. | # RUM_PROVIDER=hyperdx |
| RUM_URL | string | URL do coletor público usado pelo modo public-token. | # RUM_URL=http://localhost:4318 |
| RUM_SERVICE_NAME | string | Nome do serviço reportado pelo SDK do navegador. Padrão: librechat-web. | # RUM_SERVICE_NAME=librechat-web |
| RUM_ENVIRONMENT | string | Rótulo de ambiente relatado com telemetria do navegador. | # RUM_ENVIRONMENT=development |
| RUM_AUTH_MODE | string | Modo de autenticação para telemetria do navegador. Use `publicToken` ou `proxy`. | # RUM_AUTH_MODE=publicToken |
| RUM_PUBLIC_TOKEN | string | Token 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_URL | string | URL 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_MS | number | Tempo limite da solicitação de proxy em milissegundos. Padrão: 10000. | # RUM_PROXY_TIMEOUT_MS=10000 |
| RUM_TRACE_PROPAGATION_TARGETS | string | Origens 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_REPLAY | boolean | Desativar a reprodução de sessão do navegador. Padrão: true. | # RUM_DISABLE_REPLAY=true |
| RUM_CONSOLE_CAPTURE | boolean | Capturar logs do console do navegador. Pode coletar prompts, respostas ou payloads sensíveis. | # RUM_CONSOLE_CAPTURE=false |
| RUM_ADVANCED_NETWORK_CAPTURE | boolean | Capture payloads de rede detalhados. Pode coletar prompts, respostas ou payloads sensíveis. | # RUM_ADVANCED_NETWORK_CAPTURE=false |
| RUM_SAMPLE_RATE | number | Taxa 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.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_PATH | string | Um 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.
| Key | Type | Description | Example |
|---|---|---|---|
| DEPLOYMENT_SKILLS_DIR | string | Diretó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.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_BYPASS_VALIDATION | boolean | Quando 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.
| Key | Type | Description | Example |
|---|---|---|---|
| CONTINUE_ON_UNCAUGHT_EXCEPTION | boolean | Quando 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.
| Key | Type | Description | Example |
|---|---|---|---|
| ENDPOINTS | string | Lista de endpoints disponíveis separados por vírgula. | # ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom |
| PROXY | string | Proxy de saída para clientes do lado do servidor suportados. Aplica-se a destinos HTTP e HTTPS. | PROXY= |
| HTTP_PROXY | string | Fallback de proxy HTTP usado por clientes do lado do servidor suportados quando PROXY não está definido. | # HTTP_PROXY= |
| HTTPS_PROXY | string | Fallback de proxy HTTPS usado por clientes do lado do servidor suportados quando PROXY não está definido. | # HTTPS_PROXY= |
| NO_PROXY | string | Hosts, 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_CONVO | boolean | Habilitar a criação de títulos para todos os endpoint. | TITLE_CONVO=true |
Endpoints Conhecidos - librechat.yaml
- veja também: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| ANYSCALE_API_KEY | string | Chave de API para Anyscale. | # ANYSCALE_API_KEY= |
| APIPIE_API_KEY | string | Chave de API para Apipie. | # APIPIE_API_KEY= |
| COHERE_API_KEY | string | Chave de API para Cohere. | # COHERE_API_KEY= |
| FIREWORKS_API_KEY | string | Chave de API para Fireworks. | # FIREWORKS_API_KEY= |
| GROQ_API_KEY | string | Chave de API para Groq. | # GROQ_API_KEY= |
| MISTRAL_API_KEY | string | Chave de API para Mistral. | # MISTRAL_API_KEY= |
| OPENROUTER_KEY | string | Chave de API para OpenRouter. | # OPENROUTER_KEY= |
| PERPLEXITY_API_KEY | string | Chave de API para Perplexity. | # PERPLEXITY_API_KEY= |
| SHUTTLEAI_API_KEY | string | Chave de API para ShuttleAI. | # SHUTTLEAI_API_KEY= |
| TOGETHERAI_API_KEY | string | Chave de API para TogetherAI. | # TOGETHERAI_API_KEY= |
| DEEPSEEK_API_KEY | string | Chave de API para a API do Deepseek | # DEEPSEEK_API_KEY= |
Pesquisa na Web
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
| Key | Type | Description | Example |
|---|---|---|---|
| SERPER_API_KEY | string | Chave de API para o provedor de busca Serper. Obtenha sua chave em https://serper.dev/api-keys | # SERPER_API_KEY= |
| TAVILY_API_KEY | string | Chave de API para o provedor de pesquisa e scraper Tavily. Obtenha sua chave em https://app.tavily.com/home | # TAVILY_API_KEY= |
| TAVILY_SEARCH_URL | string | URL 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_URL | string | URL 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_KEY | string | Chave 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_URL | string | URL da API Firecrawl personalizada (opcional). Necessária apenas para instâncias personalizadas do Firecrawl. | # FIRECRAWL_API_URL= |
| FIRECRAWL_VERSION | string | Versão da API do Firecrawl (v0 ou v1). | # FIRECRAWL_VERSION=v1 |
| JINA_API_KEY | string | Chave de API para o serviço de reranker da Jina. Obtenha sua chave em https://jina.ai/api-dashboard/ | # JINA_API_KEY= |
| JINA_API_URL | string | URL da API Jina personalizada (opcional). Necessária apenas para instâncias Jina personalizadas. | # JINA_API_URL= |
| COHERE_API_KEY | string | Chave 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 comANTHROPIC_REVERSE_PROXY=- deixe em branco ou comente para usar a base url padrão
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_API_KEY | string | Chave 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_MODELS | string | Lista 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_PROXY | string | Proxy reverso para Anthropic. | # ANTHROPIC_REVERSE_PROXY= |
| ANTHROPIC_TITLE_MODEL | string | OBSOLETO: Modelo a ser usado para titulação com Anthropic. | # ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307 |
ANTHROPIC_TITLE_MODELestá agora obsoleto e será removido em versões futuras. Use a configuração de endpointtitleModelno arquivo de configuraçãolibrechat.yamlem 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-haikuos 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
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_USE_VERTEX | boolean | Defina como true para usar modelos da Anthropic via Google Vertex AI em vez da API direta. | ANTHROPIC_USE_VERTEX=true |
| ANTHROPIC_VERTEX_REGION | string | A 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çãoVertex AI User.
AWS Bedrock
Veja: Configuração do AWS Bedrock
| Key | Type | Description | Example |
|---|---|---|---|
| BEDROCK_AWS_DEFAULT_REGION | string | Uma região AWS padrão deve ser fornecida para o Bedrock. | BEDROCK_AWS_DEFAULT_REGION=us-east-1 |
| BEDROCK_AWS_ACCESS_KEY_ID | string | ID 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_KEY | string | Chave 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_TOKEN | string | Token de sessão da AWS para credenciais temporárias. Opcional. | # BEDROCK_AWS_SESSION_TOKEN=your_session_token |
| BEDROCK_AWS_PROFILE | string | Nome 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_TOKEN | string | Chave 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_MODELS | string | Lista 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
| Key | Type | Description | Example |
|---|---|---|---|
| BINGAI_TOKEN | string | Token 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_HOST | string | URL 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.
Siga estas instruções para configurar o Google Endpoint
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_KEY | string | Chave 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_FILE | string | Caminho 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_PROXY | string | URL de proxy reverso do Google. | GOOGLE_REVERSE_PROXY= |
| GOOGLE_AUTH_HEADER | boolean | Use o cabeçalho Authorization em vez de X-goog-api-key. Alguns proxies reversos exigem isso. | # GOOGLE_AUTH_HEADER=true |
| GOOGLE_MODELS | string | Modelos 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_MODELS | string | Modelos 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_MODEL | string | OBSOLETO: O modelo usado para a criação de títulos com o Google. | GOOGLE_TITLE_MODEL=gemini-pro |
| GOOGLE_LOC | string | Especifica a localização do Google Cloud para processar solicitações de API | GOOGLE_LOC=us-central1 |
| GOOGLE_CLOUD_LOCATION | string | Região alternativa para a geração de imagens do Gemini (por exemplo, global). | # GOOGLE_CLOUD_LOCATION=global |
| GOOGLE_EXCLUDE_SAFETY_SETTINGS | string | Omita completamente as configurações de segurança incluídas por padrão, o que utilizará os padrões do provedor | GOOGLE_EXCLUDE_SAFETY_SETTINGS=true |
| GOOGLE_SAFETY_SEXUALLY_EXPLICIT | string | Configuraçã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_SPEECH | string | Configuraçã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_HARASSMENT | string | Configuraçã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_CONTENT | string | Configuraçã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_INTEGRITY | string | Configuraçã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_MODELestá agora obsoleto e será removido em versões futuras. Use a configuração de endpointtitleModelno arquivo de configuraçãolibrechat.yamlem 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á:
- (a) Obtenha acesso através de uma allowlist via sua equipe de conta Google
- (b) Altere o tipo da sua conta para faturamento mensal seguindo estas instruções: https://cloud.google.com/billing/docs/how-to/invoiced-billing
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
| Key | Type | Description | Example |
|---|---|---|---|
| GEMINI_API_KEY | string | Chave 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_MODEL | string | Modelo 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çãoVertex AI User.
OpenAI
Veja: Configuração do OpenAI
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_API_KEY | string | Sua 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_MODELS | string | Personalize 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_OPENAI | boolean | Habilitar o modo de depuração para o endpoint OpenAI. | DEBUG_OPENAI=false |
| OPENAI_SUMMARIZE | boolean | Habilitar o resumo de mensagens. Falso por padrão | # OPENAI_SUMMARIZE=true |
| OPENAI_SUMMARY_MODEL | string | O modelo usado para o resumo da OpenAI. | # OPENAI_SUMMARY_MODEL=gpt-3.5-turbo |
| OPENAI_FORCE_PROMPT | boolean | Forçar a chamada da API com um payload de prompt em vez de um payload de mensagens. | # OPENAI_FORCE_PROMPT=false |
| OPENAI_ORGANIZATION | string | Especifique qual organização usar para cada solicitação de API para a OpenAI. Opcional | # OPENAI_ORGANIZATION= |
| OPENAI_REVERSE_PROXY | string | OBSOLETO: Configurações de proxy reverso para OpenAI. | # OPENAI_REVERSE_PROXY= |
| OPENAI_TITLE_MODEL | string | OBSOLETO: O modelo usado para a criação de títulos da OpenAI. | # OPENAI_TITLE_MODEL=gpt-3.5-turbo |
OPENAI_TITLE_MODELestá agora obsoleto e será removido em versões futuras. Use a configuração de endpointtitleModelno arquivo de configuraçãolibrechat.yamlem seu lugar.OPENAI_REVERSE_PROXYestá agora obsoleto e será removido em versões futuras. Use um custom endpoint em vez disso.
Assistants
Veja: Configuração de Assistants
| Key | Type | Description | Example |
|---|---|---|---|
| ASSISTANTS_API_KEY | string | Sua 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_MODELS | string | Personalize 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_URL | string | URL 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:
| Key | Type | Description | Example |
|---|---|---|---|
| TAVILY_API_KEY | string | Chave 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:
| Key | Type | Description | Example |
|---|---|---|---|
| TRAVERSAAL_API_KEY | string | Chave de API do Traversaal. | TRAVERSAAL_API_KEY= |
WolframAlpha
Veja instruções detalhadas aqui: Wolfram Alpha
Variáveis de Ambiente:
| Key | Type | Description | Example |
|---|---|---|---|
| WOLFRAM_APP_ID | string | ID do Aplicativo Wolfram Alpha | WOLFRAM_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:
| Key | Type | Description | Example |
|---|---|---|---|
| ZAPIER_NLA_API_KEY | string | Chave de API do Zapier NLA. | ZAPIER_NLA_API_KEY= |
OpenWeather
Veja instruções detalhadas aqui: OpenWeather
| Key | Type | Description | Example |
|---|---|---|---|
| OPENWEATHER_API_KEY | string | Chave 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
| Key | Type | Description | Example |
|---|---|---|---|
| LIBRECHAT_CODE_API_KEY | string | Chave 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_BASEURL | string | URL 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
| Key | Type | Description | Example |
|---|---|---|---|
| SANDPACK_BUNDLER_URL | string | Especifica uma URL de bundler personalizada para o Sandpack, usada por Artifacts | SANDPACK_BUNDLER_URL=your-bundler-url |
Pesquisa (Meilisearch)
Habilita a pesquisa em mensagens e conversas:
| Key | Type | Description | Example |
|---|---|---|---|
| SEARCH | boolean | Habilita 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:
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_ANALYTICS | boolean | Desativa 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.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_HOST | string | A 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.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_MASTER_KEY | string | A 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.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_SYNC | string | Alternar para desativar a sincronização de índice do Meilisearch | MEILI_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
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | URL do serviço de API de RAG. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | Chave 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_BASEURL | string | URL base personalizada da OpenAI para embeddings de RAG. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | Buscar o contexto completo do arquivo em vez dos 4 principais resultados. Padrão: false. | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Provedor de Embeddings: openai, azure, huggingface, huggingfacetei ou ollama. Padrão: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Modelo 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
| Key | Type | Description | Example |
|---|---|---|---|
| STT_API_KEY | string | Chave de API para o serviço de Speech-to-Text (por exemplo, OpenAI Whisper). | # STT_API_KEY= |
| TTS_API_KEY | string | Chave 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:nolibrechat.yaml. Estas variáveis de ambiente são referenciadas nessa configuração. Veja Speech Settings para opções completas de configuração YAML.
Links Compartilhados
Configure a funcionalidade de links de conversa compartilhados.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_SHARED_LINKS | boolean | Ativar ou desativar links de conversas compartilhadas. Padrão: true. | ALLOW_SHARED_LINKS=true |
| ALLOW_SHARED_LINKS_PUBLIC | boolean | Permitir que links compartilhados sejam acessíveis publicamente sem autenticação. Padrão: false. | ALLOW_SHARED_LINKS_PUBLIC=false |
| SHARED_LINKS_SNAPSHOT_FILES | boolean | Arquivos 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 Automatizada
- Saldo/Uso de Tokens
- Registro e Logins Sociais
- Redefinição de Senha por E-mail
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
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | Se deve ou não habilitar a moderação da OpenAI nos endpoints **OpenAI** e **Plugins**. | OPENAI_MODERATION=false |
| OPENAI_MODERATION_API_KEY | string | Sua chave de API da OpenAI. | OPENAI_MODERATION_API_KEY= |
| OPENAI_MODERATION_REVERSE_PROXY | string | Nota: Comentado por padrão, isso não funciona com todos os reverse proxys. | # OPENAI_MODERATION_REVERSE_PROXY= |
Configurações de Banimento
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | Se deve ou não habilitar o banimento de usuários por violações (eles ainda serão registrados). | BAN_VIOLATIONS=true |
| BAN_DURATION | integer | Por quanto tempo o usuário e o IP associado serão banidos (em milissegundos). | BAN_DURATION=1000 * 60 * 60 * 2 |
| BAN_INTERVAL | integer | O 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.
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | integer | A quantidade máxima de logins permitida por IP por LOGIN_WINDOW. | LOGIN_MAX=7 |
| LOGIN_WINDOW | integer | Em minutos, determina a janela de tempo para LOGIN_MAX logins. | LOGIN_WINDOW=5 |
| REGISTER_MAX | integer | A quantidade máxima de registros permitida por IP por REGISTER_WINDOW. | REGISTER_MAX=5 |
| REGISTER_WINDOW | integer | Em minutos, determina a janela de tempo para registros REGISTER_MAX. | REGISTER_WINDOW=60 |
Pontuação para cada violação
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | Pontuação para violações de login. | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | Pontuação para violações de registro. | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | Pontuação para violações simultâneas. | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | Pontuação para violações de mensagem. | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | Pontuação para violações fora do navegador. | NON_BROWSER_VIOLATION_SCORE=20 |
| ILLEGAL_MODEL_REQ_SCORE | integer | Pontuação para solicitações de modelo ilegais. | ILLEGAL_MODEL_REQ_SCORE=5 |
| IMPORT_VIOLATION_SCORE | integer | Pontuação para violações de importação de conversas. | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | Pontuação para violações de ramificação de conversa. | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | Pontuação para violações de conversão de texto em fala. | TTS_VIOLATION_SCORE=0 |
| STT_VIOLATION_SCORE | integer | Pontuação para violações de conversão de fala em texto. | STT_VIOLATION_SCORE=0 |
| FILE_UPLOAD_VIOLATION_SCORE | integer | Pontuação para violações de upload de arquivo. | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | Pontuação para violações de redefinição de senha. | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | Pontuação para violações de verificação de e-mail. | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | Pontuação para violações de chamada de ferramenta. | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | Pontuaçã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)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | Se deve limitar a quantidade de mensagens que um usuário pode enviar por solicitação. | LIMIT_CONCURRENT_MESSAGES=true |
| CONCURRENT_MESSAGE_MAX | integer | A 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:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | Se deve limitar a quantidade de mensagens que um IP pode enviar por `MESSAGE_IP_WINDOW`. | LIMIT_MESSAGE_IP=true |
| MESSAGE_IP_MAX | integer | A quantidade máxima de mensagens que um IP pode enviar por `MESSAGE_IP_WINDOW`. | MESSAGE_IP_MAX=40 |
| MESSAGE_IP_WINDOW | integer | Em minutos, determina a janela de tempo para `MESSAGE_IP_MAX` mensagens. | MESSAGE_IP_WINDOW=1 |
Limitador de Usuário:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | Se deve limitar a quantidade de mensagens que um usuário pode enviar por `MESSAGE_USER_WINDOW`. | LIMIT_MESSAGE_USER=false |
| MESSAGE_USER_MAX | integer | A quantidade máxima de mensagens que um usuário pode enviar por `MESSAGE_USER_WINDOW`. | MESSAGE_USER_MAX=40 |
| MESSAGE_USER_WINDOW | integer | Em 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:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | Se deve limitar a quantidade de importações de conversas que um IP pode realizar por `IMPORT_IP_WINDOW`. | LIMIT_IMPORT_IP=true |
| IMPORT_IP_MAX | integer | A quantidade máxima de importações de conversas que um IP pode realizar por `IMPORT_IP_WINDOW`. | IMPORT_IP_MAX=100 |
| IMPORT_IP_WINDOW | integer | Em minutos, determina a janela de tempo para as importações de `IMPORT_IP_MAX`. | IMPORT_IP_WINDOW=1 |
Limitador de Usuário:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | Se 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_MAX | integer | A quantidade máxima de importações de conversas que um usuário pode realizar por `IMPORT_USER_WINDOW`. | IMPORT_USER_MAX=50 |
| IMPORT_USER_WINDOW | integer | Em 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:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | Se deve limitar a quantidade de ramificações de conversa que um IP pode criar por `FORK_IP_WINDOW`. | LIMIT_FORK_IP=true |
| FORK_IP_MAX | integer | A quantidade máxima de ramificações de conversa que um IP pode criar por `FORK_IP_WINDOW`. | FORK_IP_MAX=30 |
| FORK_IP_WINDOW | integer | Em minutos, determina a janela de tempo para `FORK_IP_MAX` forks. | FORK_IP_WINDOW=1 |
Limitador de Usuário:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | Se 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_MAX | integer | A quantidade máxima de ramificações de conversa que um usuário pode criar por `FORK_USER_WINDOW`. | FORK_USER_MAX=7 |
| FORK_USER_WINDOW | integer | Em 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.yamlna seçãorateLimits.fileUploads.
Limitador de IP:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_IP_MAX | integer | Máximo de uploads de arquivos por IP por `FILE_UPLOAD_IP_WINDOW`. Padrão: 100. | # FILE_UPLOAD_IP_MAX=100 |
| FILE_UPLOAD_IP_WINDOW | integer | Em minutos, determina a janela de tempo para `FILE_UPLOAD_IP_MAX`. Padrão: 15. | # FILE_UPLOAD_IP_WINDOW=15 |
Limitador de Usuário:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_USER_MAX | integer | Máximo de uploads de arquivos por usuário por `FILE_UPLOAD_USER_WINDOW`. Padrão: 50. | # FILE_UPLOAD_USER_MAX=50 |
| FILE_UPLOAD_USER_WINDOW | integer | Em 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.yamlna seçãorateLimits.tts.
Limitador de IP:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_IP_MAX | integer | Máximo de solicitações de TTS por IP por `TTS_IP_WINDOW`. Padrão: 100. | # TTS_IP_MAX=100 |
| TTS_IP_WINDOW | integer | Em minutos, determina a janela de tempo para `TTS_IP_MAX`. Padrão: 1. | # TTS_IP_WINDOW=1 |
Limitador de Usuário:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_USER_MAX | integer | Máximo de solicitações de TTS por usuário por `TTS_USER_WINDOW`. Padrão: 50. | # TTS_USER_MAX=50 |
| TTS_USER_WINDOW | integer | Em 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.yamlna seçãorateLimits.stt.
Limitador de IP:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_IP_MAX | integer | Máximo de solicitações STT por IP por `STT_IP_WINDOW`. Padrão: 100. | # STT_IP_MAX=100 |
| STT_IP_WINDOW | integer | Em minutos, determina a janela de tempo para `STT_IP_MAX`. Padrão: 1. | # STT_IP_WINDOW=1 |
Limitador de Usuário:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_USER_MAX | integer | Máximo de solicitações STT por usuário por `STT_USER_WINDOW`. Padrão: 50. | # STT_USER_MAX=50 |
| STT_USER_WINDOW | integer | Em 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
| Key | Type | Description | Example |
|---|---|---|---|
| CHECK_BALANCE | boolean | Habilitar saldos de crédito de tokens para os endpoints OpenAI/Plugins. | CHECK_BALANCE=false |
| START_BALANCE | integer | Se 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-balancepara 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
- Você também pode especificar o e-mail e a quantidade de créditos de token a serem adicionados, por exemplo:
- Execute
npm run set-balancepara definir saldos manualmente, de forma semelhante aoadd-balance. - Execute
npm run list-balancespara 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
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:
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Habilitar ou desabilitar APENAS o login por e-mail. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Habilitar ou desabilitar o registro de novos usuários por e-mail. | ALLOW_REGISTRATION=true |
| ALLOW_SOCIAL_LOGIN | boolean | Permitir que usuários se conectem ao LibreChat com várias redes sociais. | ALLOW_SOCIAL_LOGIN=false |
| ALLOW_SOCIAL_REGISTRATION | boolean | Habilite ou desabilite o registro de novos usuários usando várias redes sociais. | ALLOW_SOCIAL_REGISTRATION=false |
| ALLOW_PASSWORD_RESET | boolean | Habilitar ou desabilitar a capacidade dos usuários de redefinirem suas próprias senhas | ALLOW_PASSWORD_RESET=false |
| ALLOW_ACCOUNT_DELETION | boolean | Habilita 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_LOGIN | boolean | Defina 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_LENGTH | number | Comprimento 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:
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Tempo de expiração da sessão. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (milliseconds) | Tempo de expiração do token de atualização. | REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7 |
| SESSION_COOKIE_SECURE | boolean | Substitui 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 |
-
Para mais informações: Refresh Token
-
Configurações de JWT:
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
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Chave secreta JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (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
| Key | Type | Description | Example |
|---|---|---|---|
| APPLE_CLIENT_ID | string | Seu Apple Services ID (ex: com.yourdomain.librechat.services). | APPLE_CLIENT_ID=com.yourdomain.librechat.services |
| APPLE_TEAM_ID | string | Seu Apple Developer Team ID. | APPLE_TEAM_ID=YOUR_TEAM_ID |
| APPLE_KEY_ID | string | Seu Apple Key ID da chave baixada. | APPLE_KEY_ID=YOUR_KEY_ID |
| APPLE_PRIVATE_KEY_PATH | string | Caminho absoluto para o seu arquivo .p8 baixado. | APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8 |
| APPLE_CALLBACK_URL | string | A URL de retorno de chamada para autenticação Apple. | APPLE_CALLBACK_URL=/oauth/apple/callback |
Autenticação via Discord
Para mais informações: Discord
| Key | Type | Description | Example |
|---|---|---|---|
| DISCORD_CLIENT_ID | string | Seu ID de cliente do Discord. | DISCORD_CLIENT_ID= |
| DISCORD_CLIENT_SECRET | string | Seu client secret do Discord. | DISCORD_CLIENT_SECRET= |
| DISCORD_CALLBACK_URL | string | A 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
| Key | Type | Description | Example |
|---|---|---|---|
| FACEBOOK_CLIENT_ID | string | Seu ID de cliente do Facebook. | FACEBOOK_CLIENT_ID= |
| FACEBOOK_CLIENT_SECRET | string | Seu client secret do Facebook. | FACEBOOK_CLIENT_SECRET= |
| FACEBOOK_CALLBACK_URL | string | A 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
| Key | Type | Description | Example |
|---|---|---|---|
| GITHUB_CLIENT_ID | string | Seu ID de cliente do GitHub. | GITHUB_CLIENT_ID= |
| GITHUB_CLIENT_SECRET | string | Seu client secret do GitHub. | GITHUB_CLIENT_SECRET= |
| GITHUB_CALLBACK_URL | string | A URL de retorno de chamada para autenticação no GitHub. | GITHUB_CALLBACK_URL=/oauth/github/callback |
| GITHUB_ENTERPRISE_BASE_URL | string | Opcional: A URL base para sua instância do GitHub Enterprise. | GITHUB_ENTERPRISE_BASE_URL= |
| GITHUB_ENTERPRISE_USER_AGENT | string | Opcional: O user agent para solicitações do GitHub Enterprise. | GITHUB_ENTERPRISE_USER_AGENT= |
Autenticação Google
Para mais informações: Autenticação Google
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_CLIENT_ID | string | Seu ID de cliente Google. | GOOGLE_CLIENT_ID= |
| GOOGLE_CLIENT_SECRET | string | Seu client secret do Google. | GOOGLE_CLIENT_SECRET= |
| GOOGLE_CALLBACK_URL | string | A URL de callback para autenticação do Google. | GOOGLE_CALLBACK_URL=/oauth/google/callback |
OpenID Connect
Para mais informações:
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_CLIENT_ID | string | Seu ID de cliente OpenID. | OPENID_CLIENT_ID= |
| OPENID_CLIENT_SECRET | string | Seu client secret do OpenID. | OPENID_CLIENT_SECRET= |
| OPENID_ISSUER | string | A URL do emissor OpenID. | OPENID_ISSUER= |
| OPENID_SESSION_SECRET | string | O segredo para o armazenamento de sessão do OpenID. | OPENID_SESSION_SECRET= |
| OPENID_SCOPE | string | O escopo OpenID. | OPENID_SCOPE="openid profile email" |
| OPENID_CALLBACK_URL | string | A URL de callback para autenticação OpenID. | OPENID_CALLBACK_URL=/oauth/openid/callback |
| OPENID_AUDIENCE | string | Valor 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_ROLE | string | A(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_KIND | string | O tipo de token para validação de função obrigatória. | OPENID_REQUIRED_ROLE_TOKEN_KIND= |
| OPENID_REQUIRED_ROLE_PARAMETER_PATH | string | O caminho do parâmetro para a validação de função necessária. | OPENID_REQUIRED_ROLE_PARAMETER_PATH= |
| OPENID_ADMIN_ROLE | string | A função que o usuário deve ter para ser um administrador no LibreChat. | OPENID_ADMIN_ROLE= |
| OPENID_ADMIN_ROLE_TOKEN_KIND | string | A 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_PATH | string | O caminho do parâmetro para a validação de função necessária. | OPENID_ADMIN_ROLE_PARAMETER_PATH= |
| OPENID_ROLE_SYNC_ENABLED | boolean | Habilite 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_ENABLED | boolean | Habilitar 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_SOURCE | string | Fonte 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_CLAIM | string | Caminho 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_PRIORITY | string | Funçõ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_ROLE | string | Funçã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_LABEL | string | O rótulo para o botão de login OpenID. | OPENID_BUTTON_LABEL= |
| OPENID_IMAGE_URL | string | A URL da imagem do botão de login OpenID. | OPENID_IMAGE_URL= |
| OPENID_USE_END_SESSION_ENDPOINT | string | Se deve usar o Issuer End Session Endpoint como um redirecionamento de logout | OPENID_USE_END_SESSION_ENDPOINT=TRUE |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Comprimento 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_REDIRECT | boolean | Se deve redirecionar automaticamente para o provedor OpenID. | OPENID_AUTO_REDIRECT=true |
| OPENID_USE_PKCE | boolean | Use 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_URI | string | URI de redirecionamento após o logout do OpenID. O padrão é ${DOMAIN_CLIENT}/login. | # OPENID_POST_LOGOUT_REDIRECT_URI= |
| OPENID_CLOCK_TOLERANCE | number | Tolerância de relógio em segundos para validação de token. Padrão: 300. | # OPENID_CLOCK_TOLERANCE=300 |
| OPENID_GENERATE_NONCE | boolean | Forç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_REQUESTS | boolean | Habilita 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_CLAIM | string | A propriedade de informações do usuário do provedor OpenID a ser armazenada como o nome de usuário. | OPENID_USERNAME_CLAIM= |
| OPENID_NAME_CLAIM | string | A 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_CLAIM | string | A 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.
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_REUSE_TOKENS | boolean | Habilitar a reutilização de tokens de provedor OpenID para gerenciamento de sessão. | OPENID_REUSE_TOKENS=false |
| OPENID_SCOPE | string | Lista 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_AUDIENCE | string | Valor 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_MS | number | Idade 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_ENABLED | boolean | Habilitar o cache dos resultados da verificação da chave de assinatura. | OPENID_JWKS_URL_CACHE_ENABLED=true |
| OPENID_JWKS_URL_CACHE_TIME | number | Duração do cache em milissegundos (padrão: 600000 ms / 10 minutos). | OPENID_JWKS_URL_CACHE_TIME=600000 |
| OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED | boolean | Habilitar o fluxo on-behalf-of para informações do usuário. | OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true |
| OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE | string | Escopo para informações do usuário no fluxo on-behalf-of. | OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read |
| OPENID_USE_END_SESSION_ENDPOINT | boolean | Habilitar o uso do endpoint de encerramento de sessão para logout. | OPENID_USE_END_SESSION_ENDPOINT=true |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Comprimento 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.
| Key | Type | Description | Example |
|---|---|---|---|
| USE_ENTRA_ID_FOR_PEOPLE_SEARCH | boolean | Habilite 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_MEMBERS | boolean | Quando 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_SCOPES | string | Escopos 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.
| Key | Type | Description | Example |
|---|---|---|---|
| ENABLE_SHAREPOINT_FILEPICKER | boolean | Habilita 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_URL | string | URL 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_SCOPE | string | Escopo 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_SCOPE | string | Escopo 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_SCOPEdeve incluir o escopo da API do seu aplicativo LibreChat, por exemploapi://<client-id>/access_as_userOPENID_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.
| Key | Type | Description | Example |
|---|---|---|---|
| SAML_ENTRY_POINT | string | A URL do ponto de entrada do provedor de identidade (IdP) SAML. | SAML_ENTRY_POINT= |
| SAML_ISSUER | string | O ID da entidade do provedor de serviço (SP) SAML. | SAML_ISSUER= |
| SAML_CERT | string | O certificado de assinatura SAML, fornecido como um caminho de arquivo ou uma string PEM de uma linha. | SAML_CERT= |
| SAML_CALLBACK_URL | string | A URL de callback para autenticação SAML. | SAML_CALLBACK_URL=/oauth/saml/callback |
| SAML_SESSION_SECRET | string | O segredo para o armazenamento de sessão SAML. | SAML_SESSION_SECRET= |
| SAML_EMAIL_CLAIM | string | <Optional>: O atributo na asserção SAML que contém o e-mail do usuário. (padrão: email) | SAML_EMAIL_CLAIM= |
| SAML_USERNAME_CLAIM | string | <Optional>: O atributo na asserção SAML que contém o nome de usuário. (padrão: username) | SAML_USERNAME_CLAIM= |
| SAML_GIVEN_NAME_CLAIM | string | <Optional>: O atributo na asserção SAML que contém o nome. (padrão: given_name) | SAML_GIVEN_NAME_CLAIM= |
| SAML_FAMILY_NAME_CLAIM | string | <Optional>: O atributo na asserção SAML que contém o sobrenome. (padrão: family_name) | SAML_FAMILY_NAME_CLAIM= |
| SAML_PICTURE_CLAIM | string | <Optional>: O atributo na asserção SAML que contém a URL da foto de perfil. (padrão: picture) | SAML_PICTURE_CLAIM= |
| SAML_NAME_CLAIM | string | <Optional>: O atributo na asserção SAML que contém o nome completo. | SAML_NAME_CLAIM= |
| SAML_BUTTON_LABEL | string | <Optional>: O rótulo para o botão de login SAML. | SAML_BUTTON_LABEL= |
| SAML_IMAGE_URL | string | <Optional>: A URL da imagem do botão de login SAML. | SAML_IMAGE_URL= |
| SAML_USE_AUTHN_RESPONSE_SIGNED | boolean | <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
| Key | Type | Description | Example |
|---|---|---|---|
| LDAP_URL | string | URL do servidor LDAP. | LDAP_URL=ldap://localhost:389 |
| LDAP_BIND_DN | string | DN de Vinculação | LDAP_BIND_DN=cn=root |
| LDAP_BIND_CREDENTIALS | string | Senha para bindDN | LDAP_BIND_CREDENTIALS=password |
| LDAP_USER_SEARCH_BASE | string | Base de busca de usuários LDAP | LDAP_USER_SEARCH_BASE=o=users,o=example.com |
| LDAP_SEARCH_FILTER | string | Filtro de busca LDAP | LDAP_SEARCH_FILTER=mail={{username}} |
| LDAP_CA_CERT_PATH | string | Caminho do certificado CA. | LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt |
| LDAP_TLS_REJECT_UNAUTHORIZED | string | Verificação TLS LDAP | LDAP_TLS_REJECT_UNAUTHORIZED=true |
| LDAP_STARTTLS | string | Habilite o LDAP StartTLS para atualizar a conexão para TLS. Defina como true para habilitar este recurso. | LDAP_STARTTLS=true |
| LDAP_LOGIN_USES_USERNAME | boolean | Use o nome de usuário em vez do e-mail para login via LDAP. | # LDAP_LOGIN_USES_USERNAME=true |
| LDAP_ID | string | Atributo LDAP para ID de usuário único. Padrão: uid ou sAMAccountName, mail. | # LDAP_ID=uid |
| LDAP_USERNAME | string | Atributo LDAP para nome de usuário. Padrão: givenName ou mail. | # LDAP_USERNAME=givenName |
| LDAP_EMAIL | string | Atributo LDAP para e-mail. Padrão: mail. | # LDAP_EMAIL=userPrincipalName |
| LDAP_FULL_NAME | string | Atributo(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!
Configuração do Mailgun (Recomendado)
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.
| Key | Type | Description | Example |
|---|---|---|---|
| MAILGUN_API_KEY | string | Sua chave de API do Mailgun (obrigatória para o Mailgun). | MAILGUN_API_KEY= |
| MAILGUN_DOMAIN | string | Seu domínio Mailgun (obrigatório para Mailgun). | MAILGUN_DOMAIN=mg.yourdomain.com |
| MAILGUN_HOST | string | Host 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_FROM | string | Endereço de e-mail de remetente. Obrigatório. | [email protected] |
| EMAIL_FROM_NAME | string | Nome 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
| Key | Type | Description | Example |
|---|---|---|---|
| EMAIL_SERVICE | string | Serviço de e-mail (por exemplo, Gmail, Outlook). | EMAIL_SERVICE= |
| EMAIL_HOST | string | Host do servidor de e-mail. | EMAIL_HOST= |
| EMAIL_PORT | number | Porta do servidor de e-mail. | EMAIL_PORT=25 |
| EMAIL_ENCRYPTION | string | Método de criptografia (starttls, tls, etc.). | EMAIL_ENCRYPTION= |
| EMAIL_ENCRYPTION_HOSTNAME | string | Hostname para criptografia. | EMAIL_ENCRYPTION_HOSTNAME= |
| EMAIL_ALLOW_SELFSIGNED | boolean | Permitir certificados autoassinados. | EMAIL_ALLOW_SELFSIGNED= |
| EMAIL_USERNAME | string | Nome de usuário para autenticação. | EMAIL_USERNAME= |
| EMAIL_PASSWORD | string | Senha para autenticação. | EMAIL_PASSWORD= |
| EMAIL_FROM_NAME | string | Nome do remetente | EMAIL_FROM_NAME= |
| EMAIL_FROM | string | Endereç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
fileStrategyoufileStrategiescomofirebaseno seu arquivo de configuraçãolibrechat.yaml. Para mais informações sobre como configurar o arquivolibrechat.yaml, consulte o Guia de Configuração YAML: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| FIREBASE_API_KEY | string | A chave de API para o seu projeto Firebase. | FIREBASE_API_KEY= |
| FIREBASE_AUTH_DOMAIN | string | O domínio do Firebase Auth para o seu projeto. | FIREBASE_AUTH_DOMAIN= |
| FIREBASE_PROJECT_ID | string | O ID do seu projeto Firebase. | FIREBASE_PROJECT_ID= |
| FIREBASE_STORAGE_BUCKET | string | O bucket do Firebase Storage para o seu projeto. | FIREBASE_STORAGE_BUCKET= |
| FIREBASE_MESSAGING_SENDER_ID | string | O ID do remetente do Firebase Cloud Messaging. | FIREBASE_MESSAGING_SENDER_ID= |
| FIREBASE_APP_ID | string | O 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.
| Key | Type | Description | Example |
|---|---|---|---|
| AWS_ACCESS_KEY_ID | string | Seu 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_KEY | string | Sua chave de acesso secreta de usuário IAM. Opcional se estiver usando IRSA. | AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| AWS_REGION | string | A região da AWS onde seu bucket S3 está localizado. | AWS_REGION=us-east-1 |
| AWS_BUCKET_NAME | string | O nome do bucket S3 para armazenamento de arquivos. | AWS_BUCKET_NAME=your_bucket_name |
| AWS_ENDPOINT_URL | string | URL 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_STYLE | boolean | Defina 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_ID | string | ID 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_KEY | string | Chave 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_REGIONeAWS_BUCKET_NAMEsã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.
| Key | Type | Description | Example |
|---|---|---|---|
| AZURE_STORAGE_CONNECTION_STRING | string | String 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_NAME | string | Nome 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_ACCESS | boolean | Habilitar acesso público para blobs. Padrão: false. | AZURE_STORAGE_PUBLIC_ACCESS=false |
| AZURE_CONTAINER_NAME | string | Nome do container para armazenamento de arquivos. Padrão: files. | AZURE_CONTAINER_NAME=files |
Nota: Use
AZURE_STORAGE_CONNECTION_STRING(Opção A) ouAZURE_STORAGE_ACCOUNT_NAMEcom Managed Identity (Opção B), não ambos.
UI
Botão de Ajuda e FAQ
| Key | Type | Description | Example |
|---|---|---|---|
| HELP_AND_FAQ_URL | string | URL 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_AGEpara alterar omax-agede arquivos estáticos. Por padrão, isso é definido como 4 semanas. - Remova o comentário de
STATIC_CACHE_S_MAX_AGEpara alterar os-maxagede arquivos estáticos. Por padrão, isso é definido como 1 semana.- Isso é para o shared cache, que é usado por CDNs e proxies.
Título do Aplicativo e Rodapé
| Key | Type | Description | Example |
|---|---|---|---|
| APP_TITLE | string | Título do aplicativo. | APP_TITLE=LibreChat |
| CUSTOM_FOOTER | string | Rodapé personalizado. | # CUSTOM_FOOTER="My custom footer" |
| TEMP_CHAT_RETENTION_HOURS | number | **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_FOOTERpara adicionar um rodapé personalizado. - Remova o comentário e deixe
CUSTOM_FOOTERvazio 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
| Key | Type | Description | Example |
|---|---|---|---|
| SHOW_BIRTHDAY_ICON | boolean | Mostrar 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_ICONcomofalsepara desativar o chapéu de aniversário. - Defina
SHOW_BIRTHDAY_ICONcomotruepara 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
| Key | Type | Description | Example |
|---|---|---|---|
| ANALYTICS_GTM_ID | string | ID 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.
| Key | Type | Description | Example |
|---|---|---|---|
| CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES | number | Tamanho 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.
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_PREVIEW_MAX_EXTRACT_BYTES | number | Tamanho 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
| Key | Type | Description | Example |
|---|---|---|---|
| MCP_OAUTH_ON_AUTH_ERROR | boolean | Tratar respostas 401/403 como requisito de OAuth quando nenhum metadado de oauth for encontrado. | MCP_OAUTH_ON_AUTH_ERROR=true |
| MCP_OAUTH_DETECTION_TIMEOUT | number | Tempo limite para solicitações de detecção de OAuth em milissegundos. | MCP_OAUTH_DETECTION_TIMEOUT=5000 |
| MCP_OAUTH_HANDLING_TIMEOUT | number | Quanto 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_TTL | number | Por 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_TTL | number | Cachear 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_PAGES | number | Nú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_CHECK | boolean | Pular 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-configuration | MCP_SKIP_CODE_CHALLENGE_CHECK=false |
| MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES | number | Má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_BYTES | number | Má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
| Key | Type | Description | Example |
|---|---|---|---|
| USE_REDIS | boolean | Habilite o Redis para cache e armazenamento de sessão. Quando definido como true, a REDIS_URI deve ser fornecida. | USE_REDIS=true |
| USE_REDIS_STREAMS | boolean | Habilite 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_URI | string | URI 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_CLUSTER | boolean | Habilitar o modo de cluster do Redis ao usar uma única URI | # USE_REDIS_CLUSTER="true" |
| REDIS_CLUSTER_SAFE_DELETE | boolean | Exclua 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_USERNAME | string | Nome 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_PASSWORD | string | Senha do Redis para autenticação. Substitui a senha na URI caso ambas sejam fornecidas. | # REDIS_PASSWORD=your_redis_password |
| REDIS_CA | string | Caminho para o certificado CA para verificação TLS ao usar o protocolo rediss://. | # REDIS_CA=/path/to/ca-cert.pem |
| REDIS_KEY_PREFIX | string | Prefixo estático para todas as chaves Redis para evitar contaminação entre implantações. | # REDIS_KEY_PREFIX=librechat-prod-v2 |
| REDIS_KEY_PREFIX_VAR | string | Nome 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_LISTENERS | number | Máximo de ouvintes de eventos por cliente Redis. Previne vazamentos de memória. Padrão: 40. | # REDIS_MAX_LISTENERS=40 |
| REDIS_PING_INTERVAL | number | Intervalo 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_NAMESPACES | string | Chaves 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_LOOKUP | boolean | Habilitar 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 fornecerREDIS_URIou 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=falsee definaREDIS_CLUSTER_SAFE_DELETE=truese as limpezas de cache falharem com errosCROSSSLOT. - Use o protocolo
rediss://para conexões TLS e definaREDIS_CAse sua CA não for publicamente confiável. REDIS_KEY_PREFIX_VAReREDIS_KEY_PREFIXsã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=truese 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.
| Key | Type | Description | Example |
|---|---|---|---|
| LEADER_LEASE_DURATION | number | Duraçã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_INTERVAL | number | Intervalo em segundos no qual o líder renova sua concessão. Padrão: 10. | LEADER_RENEW_INTERVAL=10 |
| LEADER_RENEW_ATTEMPTS | number | Nú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_DELAY | number | Atraso 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?