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

Các biến môi trường

Hướng dẫn toàn diện để cấu hình môi trường cho ứng dụng của bạn bằng tệp `.env`. Tài liệu này là nguồn tài nguyên duy nhất giúp bạn hiểu và tùy chỉnh các biến môi trường sẽ định hình hành vi của ứng dụng trong các ngữ cảnh khác nhau.

Chào mừng bạn đến với hướng dẫn toàn diện về cách cấu hình môi trường ứng dụng của bạn bằng tệp .env. Tài liệu này là nguồn tài nguyên duy nhất giúp bạn hiểu và tùy chỉnh các biến môi trường sẽ định hình hành vi ứng dụng của bạn trong các ngữ cảnh khác nhau.

Mặc dù các cài đặt mặc định cung cấp một nền tảng vững chắc cho việc cài đặt docker tiêu chuẩn, việc tìm hiểu hướng dẫn này sẽ giúp bạn khai phá toàn bộ tiềm năng của LibreChat. Hướng dẫn này trao quyền cho bạn tùy chỉnh LibreChat theo đúng nhu cầu của mình. Khám phá cách điều chỉnh tính khả dụng của mô hình ngôn ngữ, tích hợp đăng nhập mạng xã hội, quản lý hệ thống kiểm duyệt tự động và nhiều tính năng khác. Tất cả đều nhằm mục đích mang lại cho bạn quyền kiểm soát để tinh chỉnh LibreChat nhằm đạt được trải nghiệm người dùng tối ưu.

Nhắc nhở: Vui lòng khởi động lại LibreChat để các thay đổi cấu hình có hiệu lực

Ngoài ra, bạn có thể tạo một tệp mới có tên docker-compose.override.yml trong cùng thư mục với tệp docker-compose.yml chính của LibreChat, tại đây bạn có thể thiết lập các biến .env của mình khi cần trong phần environment, hoặc sửa đổi cấu hình mặc định được cung cấp bởi tệp docker-compose.yml chính mà không cần phải chỉnh sửa trực tiếp hoặc sao chép toàn bộ tệp.

Để biết thêm thông tin, hãy xem:


Cấu hình máy chủ

Cổng

  • Máy chủ lắng nghe trên một cổng cụ thể.
  • Biến môi trường PORT thiết lập cổng mà máy chủ lắng nghe. Theo mặc định, nó được đặt là 3080.
KeyTypeDescriptionExample
HOSTstringChỉ định host.HOST=localhost
PORTnumberChỉ định cổng.PORT=3080

Trust proxy

Sử dụng địa chỉ cách ứng dụng Express tối đa n bước nhảy (hops). req.socket.remoteAddress là bước nhảy đầu tiên, và các địa chỉ còn lại được tìm kiếm trong tiêu đề X-Forwarded-For từ phải sang trái. Giá trị 0 có nghĩa là địa chỉ không đáng tin cậy đầu tiên sẽ là req.socket.remoteAddress, tức là không có reverse proxy nào. Biến môi trường TRUST_PROXY mặc định được đặt là 1.

Tham khảo Express.js - trust proxy để biết thêm thông tin về vấn đề này.

KeyTypeDescriptionExample
TRUST_PROXYnumberChỉ định số bước nhảy.TRUST_PROXY=1

Cấu hình thông tin xác thực

Để lưu trữ thông tin xác thực một cách an toàn, bạn cần có một key và IV cố định. Bạn có thể thiết lập chúng tại đây cho môi trường prod và dev.

KeyTypeDescriptionExample
CREDS_KEYstringKhóa 32-byte (64 ký tự ở dạng hex) để lưu trữ thông tin xác thực một cách an toàn. Bắt buộc để khởi động ứng dụng.CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0
CREDS_IVstringIV 16-byte (32 ký tự ở dạng hex) để lưu trữ thông tin xác thực một cách an toàn. Bắt buộc để khởi động ứng dụng.CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb

Cảnh báo

Cảnh báo: Nếu bạn không thiết lập CREDS_KEYCREDS_IV, ứng dụng sẽ bị lỗi khi khởi động. - Bạn có thể sử dụng Trình tạo khóa này để tạo chúng một cách nhanh chóng.

Xử lý tệp tĩnh

KeyTypeDescriptionExample
STATIC_CACHE_MAX_AGEstringCache-Control max-age tính bằng giâySTATIC_CACHE_MAX_AGE=172800
STATIC_CACHE_S_MAX_AGEstringCache-Control s-maxage tính bằng giây cho các bộ nhớ đệm dùng chung (CDN và proxy)STATIC_CACHE_S_MAX_AGE="86400"
DISABLE_COMPRESSIONbooleanVô hiệu hóa tính năng nén cho các tệp tĩnh.DISABLE_COMPRESSION=false
ENABLE_IMAGE_OUTPUT_GZIP_SCANbooleanCho phép phục vụ các phiên bản gzipped của hình ảnh đã tải lên nếu có trong cùng thư mục.ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true
ENABLE_STATIC_ASSET_BROTLIbooleanCho phép phục vụ các phiên bản tài nguyên ứng dụng tĩnh đã được nén trước bằng Brotli khi có sẵn.ENABLE_STATIC_ASSET_BROTLI=true

Hành vi:

Thiết lập các header Cache-Control cho các tệp tĩnh. Các cấu hình này chỉ được kích hoạt khi NODE_ENV được đặt thành production.

  • Bỏ ghi chú STATIC_CACHE_MAX_AGE để thay đổi max-age cục bộ cho các tệp tĩnh. Theo mặc định, giá trị này được đặt là 2 ngày (172800 giây).
  • Bỏ chú thích STATIC_CACHE_S_MAX_AGE để thiết lập s-maxage cho các bộ nhớ đệm chia sẻ (CDN và proxy). Theo mặc định, giá trị này được đặt là 1 ngày (86400 giây).
  • Bỏ chú thích DISABLE_COMPRESSION để tắt tính năng nén cho các tệp tĩnh. Theo mặc định, tính năng nén được bật.
  • Bỏ chú thích ENABLE_IMAGE_OUTPUT_GZIP_SCAN để bật tính năng quét và phân phối phiên bản nén gzip của hình ảnh nếu chúng đã được nén trước trong cùng thư mục, với cùng tên và phần mở rộng .gz. Theo mặc định, tính năng quét gzip cho hình ảnh đã tải lên bị vô hiệu hóa.
  • Bỏ ghi chú ENABLE_STATIC_ASSET_BROTLI để phục vụ các phiên bản .br đã nén trước của tài nguyên tĩnh ứng dụng khi chúng tồn tại. Khi được bật, Brotli sẽ được ưu tiên hơn gzip cho các tệp tĩnh được phục vụ qua API.

Cảnh báo

  • Điều này chỉ ảnh hưởng đến các tệp tĩnh được phục vụ bởi máy chủ API và không áp dụng cho Firebase, NGINX, hoặc bất kỳ cấu hình nào khác.

Kiểm soát bộ nhớ đệm HTML Index

KeyTypeDescriptionExample
INDEX_CACHE_CONTROLstringTiêu đề Cache-Control cho index.htmlINDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate
INDEX_PRAGMAstringTiêu đề Pragma cho index.htmlINDEX_PRAGMA=no-cache
INDEX_EXPIRESstringTiêu đề Expires cho index.htmlINDEX_EXPIRES=0

Hành vi:

Kiểm soát các tiêu đề bộ nhớ đệm (caching headers) dành riêng cho phản hồi index.html. Theo mặc định, các cài đặt này ngăn chặn việc lưu vào bộ nhớ đệm để đảm bảo người dùng luôn nhận được phiên bản mới nhất của ứng dụng.

Lưu ý

Không giống như các tài nguyên tĩnh được lưu vào bộ nhớ đệm để tăng hiệu suất, các tiêu đề bộ nhớ đệm của tệp index.html được cấu hình riêng biệt để đảm bảo người dùng luôn nhận được shell ứng dụng mới nhất.

Cơ sở dữ liệu MongoDB

KeyTypeDescriptionExample
MONGO_URIstringChỉ định MongoDB URI.MONGO_URI=mongodb://127.0.0.1:27017/LibreChat

Thay đổi nội dung này thành MongoDB URI của bạn nếu khác biệt. Bạn nên thêm LibreChat hoặc APP_TITLE của riêng bạn làm tên cơ sở dữ liệu trong URI.

Nếu bạn đang sử dụng cơ sở dữ liệu trực tuyến, định dạng URI là mongodb+srv://<username>:<password>@<host>/<database>?<options>. MONGO_URI của bạn sẽ trông như thế này:

  • mongodb+srv://username:[email protected]/LibreChat?retryWrites=true (retryWrites là tùy chọn duy nhất bạn cần khi sử dụng cơ sở dữ liệu trực tuyến.)

Cấu hình Connection Pool cho MongoDB

KeyTypeDescriptionExample
MONGO_MAX_POOL_SIZEnumberSố lượng kết nối tối đa trong nhóm kết nối.# MONGO_MAX_POOL_SIZE=
MONGO_MIN_POOL_SIZEnumberSố lượng kết nối tối thiểu trong nhóm kết nối.# MONGO_MIN_POOL_SIZE=
MONGO_MAX_CONNECTINGnumberSố lượng kết nối tối đa có thể đang trong quá trình thiết lập đồng thời bởi nhóm kết nối.# MONGO_MAX_CONNECTING=
MONGO_MAX_IDLE_TIME_MSnumberSố mili giây tối đa mà một kết nối có thể duy trì trạng thái nhàn rỗi trong nhóm trước khi bị xóa và đóng.# MONGO_MAX_IDLE_TIME_MS=
MONGO_WAIT_QUEUE_TIMEOUT_MSnumberThời gian tối đa tính bằng mili giây mà một luồng có thể chờ để kết nối trở nên khả dụng.# MONGO_WAIT_QUEUE_TIMEOUT_MS=

Cấu hình Schema MongoDB

KeyTypeDescriptionExample
MONGO_AUTO_INDEXbooleanĐặt thành false để vô hiệu hóa việc tự động tạo chỉ mục cho tất cả các model được liên kết với kết nối này. Khi bỏ qua, sẽ sử dụng hành vi mặc định của Mongoose.# MONGO_AUTO_INDEX=
MONGO_AUTO_CREATEbooleanĐặt thành false để vô hiệu hóa việc Mongoose tự động gọi createCollection() trên mọi model được tạo trong kết nối này. Khi bỏ qua, sẽ sử dụng hành vi mặc định của Mongoose.# MONGO_AUTO_CREATE=

Ngoài ra, bạn có thể sử dụng documentDb để mô phỏng mongoDb nhưng nó:

  • không hỗ trợ retryWrites - hãy sử dụng retryWrites=false
  • yêu cầu kết nối TLS, do đó hãy sử dụng các tham số tls=true để bật TLS và tlsCAFile=/path-to-ca/bundle.pem để trỏ đến tệp gói CA do AWS cung cấp

URI cho documentDb sẽ có dạng:

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

Xem thêm:

Các lĩnh vực ứng dụng

Để cấu hình LibreChat cho việc sử dụng cục bộ hoặc triển khai tên miền tùy chỉnh, hãy thiết lập các biến môi trường sau:

KeyTypeDescriptionExample
DOMAIN_CLIENTstringChỉ định tên miền phía máy khách.DOMAIN_CLIENT=http://localhost:3080
DOMAIN_SERVERstringChỉ định tên miền phía máy chủ.DOMAIN_SERVER=http://localhost:3080
ADMIN_PANEL_URLstringURL cơ sở của bảng quản trị bên ngoài được sử dụng cho các chuyển hướng OAuth/SSO của quản trị viên khi bảng quản trị được lưu trữ riêng biệt. Không bao gồm dấu gạch chéo ở cuối.ADMIN_PANEL_URL=https://admin.example.com/admin
ADMIN_PANEL_SESSION_SECRETstringKhóa mã hóa phiên bắt buộc cho bảng quản trị đi kèm (tối thiểu 32 ký tự). Các dịch vụ admin-panel trong docker-compose và deploy-compose đọc khóa này dưới dạng SESSION_SECRET. Hãy tạo bằng lệnh `openssl rand -hex 32` trước khi khởi chạy stack.ADMIN_PANEL_SESSION_SECRET=<your-32-char-random-string>
ADMIN_PANEL_PORTnumberCổng máy chủ cho bảng quản trị đi kèm trong docker-compose mặc định. Trong deploy-compose, bảng quản trị được phục vụ tại http://admin.localhost thông qua nginx thay thế.ADMIN_PANEL_PORT=3000

Khi triển khai LibreChat trên một tên miền tùy chỉnh, hãy thay thế http://localhost:3080 bằng URL đã triển khai của bạn.

  • ví dụ: https://librechat.example.com.

Ngăn chặn các công cụ tìm kiếm công cộng lập chỉ mục

Theo mặc định, trang web của bạn sẽ không được lập chỉ mục bởi các công cụ tìm kiếm công cộng (ví dụ: Google, Bing, …). Điều này có nghĩa là mọi người sẽ không thể tìm thấy trang web của bạn thông qua các công cụ tìm kiếm này. Nếu bạn muốn trang web của mình hiển thị rõ ràng và dễ tìm kiếm hơn, bạn có thể thay đổi cài đặt sau thành false

KeyTypeDescriptionExample
NO_INDEXbooleanNgăn chặn các công cụ tìm kiếm công khai lập chỉ mục trang web của bạn.NO_INDEX=true

Lưu ý: Phương pháp này không đảm bảo hoạt động với tất cả các công cụ tìm kiếm, và một số công cụ tìm kiếm vẫn có thể lập chỉ mục trang web hoặc trang web của bạn cho các mục đích khác, chẳng hạn như lưu bộ nhớ đệm (caching) hoặc lưu trữ (archiving). Do đó, bạn không nên chỉ dựa vào phương pháp này để bảo vệ thông tin nhạy cảm hoặc bảo mật trên trang web hoặc trang web của mình.

Ghi nhật ký

LibreChat có tính năng ghi nhật ký trung tâm được tích hợp sẵn, xem Logging System để biết thêm thông tin.

Tệp nhật ký

  • Ghi nhật ký gỡ lỗi (debug logging) được bật theo mặc định và rất quan trọng đối với quá trình phát triển.
  • Để báo cáo sự cố, hãy tái hiện lỗi và gửi nhật ký từ ./api/logs/debug-%DATE%.log tại: LibreChat GitHub Issues
  • Các nhật ký lỗi được lưu trữ tại cùng một vị trí.

Các biến môi trường

KeyTypeDescriptionExample
DEBUG_LOGGINGbooleanGiữ nhật ký gỡ lỗi hoạt động.DEBUG_LOGGING=true
DEBUG_CONSOLEbooleanBật nhật ký console/stdout chi tiết ở cùng định dạng với nhật ký gỡ lỗi tệp.DEBUG_CONSOLE=false
LOG_TO_FILEbooleanĐặt thành false để vô hiệu hóa các Winston transport dựa trên tệp trong khi vẫn giữ cho tính năng ghi nhật ký console khả dụng.LOG_TO_FILE=true
CONSOLE_JSONbooleanBật nhật ký console/stdout JSON chi tiết phù hợp cho các triển khai đám mây như GCP/AWS.CONSOLE_JSON=false
CONSOLE_JSON_STRING_LENGTHnumberCấu hình kích thước cắt bớt cho các giá trị chuỗi trong nhật ký console/stdout JSON. Mặc định: 255.# CONSOLE_JSON_STRING_LENGTH=255
LIBRECHAT_LOG_DIRstringThư mục tùy chỉnh cho các tệp nhật ký. Mặc định là /app/logs (Docker) hoặc api/logs (phát triển cục bộ).# LIBRECHAT_LOG_DIR=/custom/log/path
MEM_DIAGbooleanBật chẩn đoán bộ nhớ — ghi nhật ký các bản chụp heap/RSS mỗi 60 giây. Tự động bật khi chạy với --inspect.# MEM_DIAG=true
AGENT_DEBUG_LOGGINGbooleanBật tính năng ghi nhật ký gỡ lỗi chi tiết trong bộ điều khiển tác nhân (số lượng token, chẩn đoán cắt tỉa ngữ cảnh).# AGENT_DEBUG_LOGGING=true

Lưu ý:

  • DEBUG_LOGGING có thể được sử dụng với DEBUG_CONSOLE hoặc CONSOLE_JSON nhưng không được dùng cả hai cùng lúc.
  • DEBUG_CONSOLECONSOLE_JSON loại trừ lẫn nhau.
  • CONSOLE_JSON: Khi xử lý nhật ký console trong các triển khai trên đám mây (như GCP hoặc AWS), việc bật tùy chọn này sẽ xuất nhật ký kèm theo dấu thời gian UTC và định dạng chúng dưới dạng JSON.

Lưu ý: DEBUG_CONSOLE không được khuyến nghị sử dụng vì đầu ra có thể khá dài dòng, do đó tính năng này bị vô hiệu hóa theo mặc định.

Quyền hạn

UID và GID là các số được Linux gán cho mỗi người dùng và nhóm trên hệ thống. Nếu bạn gặp vấn đề về quyền truy cập, hãy thiết lập UID và GID của người dùng đang chạy lệnh Docker Compose tại đây. Các ứng dụng trong container sẽ chạy với các UID/GID này.

KeyTypeDescriptionExample
UIDnumberID người dùng.# UID=1000
GIDnumberID nhóm.# GID=1000

Theo dõi OpenTelemetry

LibreChat có thể phát ra các dấu vết OpenTelemetry phía backend để hiển thị thông tin về API chung, HTTP, MongoDB, Mongoose, Redis và các yêu cầu gửi đi. Các span ở cấp độ lệnh Redis là tùy chọn (opt-in) để các dấu vết mặc định vẫn giữ ở mức tổng quát. Hãy sử dụng Langfuse để quan sát các prompt/model dành riêng cho GenAI.

KeyTypeDescriptionExample
OTEL_TRACING_ENABLEDbooleanBật tính năng theo dõi OpenTelemetry cho backend. Tính năng theo dõi sẽ bị vô hiệu hóa khi OTEL_SDK_DISABLED=true.# OTEL_TRACING_ENABLED=false
OTEL_SERVICE_NAMEstringTên dịch vụ được báo cáo cho OpenTelemetry. Mặc định: librechat.# OTEL_SERVICE_NAME=librechat
OTEL_SERVICE_VERSIONstringPhiên bản dịch vụ được báo cáo cho OpenTelemetry. Mặc định là phiên bản gói khi không được thiết lập.# OTEL_SERVICE_VERSION=
OTEL_EXPORTER_OTLP_ENDPOINTstringEndpoint của OTLP exporter cơ sở.# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTstringEndpoint OTLP dành riêng cho trace. Ghi đè endpoint cơ sở cho các trace khi được thiết lập.# OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=
OTEL_EXPORTER_OTLP_HEADERSstringCác tiêu đề trình xuất OTLP được phân tách bằng dấu phẩy, chẳng hạn như siêu dữ liệu ủy quyền.# OTEL_EXPORTER_OTLP_HEADERS=
OTEL_TRACES_EXPORTERstringLựa chọn bộ xuất vết (trace exporter).# OTEL_TRACES_EXPORTER=otlp
OTEL_TRACES_SAMPLERstringBộ lấy mẫu trace OpenTelemetry. Ví dụ mặc định: parentbased_always_on.# OTEL_TRACES_SAMPLER=parentbased_always_on
OTEL_LOG_LEVELstringCấp độ nhật ký OpenTelemetry SDK.# OTEL_LOG_LEVEL=INFO
OTEL_SDK_DISABLEDbooleanVô hiệu hóa OpenTelemetry SDK ngay cả khi tính năng theo dõi (tracing) đã được bật.# OTEL_SDK_DISABLED=false
OTEL_IOREDIS_TRACING_ENABLEDbooleanBật các span ở cấp độ lệnh Redis. Mặc định bị tắt để giữ cho các trace của backend ở mức khái quát.# OTEL_IOREDIS_TRACING_ENABLED=false

Giám sát người dùng thực (Trình duyệt)

LibreChat có thể xuất dữ liệu đo từ xa Real User Monitoring (RUM) của trình duyệt tới các bộ thu OTLP tương thích với HyperDX. RUM bị vô hiệu hóa theo mặc định.

KeyTypeDescriptionExample
RUM_ENABLEDbooleanBật tính năng Giám sát Người dùng Thực (Real User Monitoring) trên trình duyệt. Mặc định: false.# RUM_ENABLED=false
RUM_PROVIDERstringNhà cung cấp Browser RUM. Hiện tại hỗ trợ `hyperdx`.# RUM_PROVIDER=hyperdx
RUM_URLstringURL bộ thu thập công khai được sử dụng bởi chế độ public-token.# RUM_URL=http://localhost:4318
RUM_SERVICE_NAMEstringTên dịch vụ được báo cáo bởi SDK trình duyệt. Mặc định: librechat-web.# RUM_SERVICE_NAME=librechat-web
RUM_ENVIRONMENTstringNhãn môi trường được báo cáo cùng với đo lường từ xa của trình duyệt.# RUM_ENVIRONMENT=development
RUM_AUTH_MODEstringChế độ xác thực cho telemetry trình duyệt. Sử dụng `publicToken` hoặc `proxy`.# RUM_AUTH_MODE=publicToken
RUM_PUBLIC_TOKENstringToken trình duyệt công khai cho chế độ public-token. Hãy coi đây là thông tin công khai và hạn chế việc tiếp nhận tại bộ thu thập.# RUM_PUBLIC_TOKEN=
RUM_PROXY_TARGET_URLstringURL cơ sở của Collector được sử dụng bởi chế độ proxy xác thực. Bắt buộc khi `RUM_AUTH_MODE=proxy`.# RUM_PROXY_TARGET_URL=http://otel-collector:4318
RUM_PROXY_TIMEOUT_MSnumberThời gian chờ yêu cầu proxy tính bằng mili giây. Mặc định: 10000.# RUM_PROXY_TIMEOUT_MS=10000
RUM_TRACE_PROPAGATION_TARGETSstringCác origin hoặc URL HTTPS của bên thứ nhất được phân tách bằng dấu phẩy sẽ nhận các header traceparent.# RUM_TRACE_PROPAGATION_TARGETS=https://api.example.com
RUM_DISABLE_REPLAYbooleanVô hiệu hóa phát lại phiên trình duyệt. Mặc định: true.# RUM_DISABLE_REPLAY=true
RUM_CONSOLE_CAPTUREbooleanGhi lại nhật ký bảng điều khiển trình duyệt. Có thể thu thập các prompt, phản hồi hoặc payload nhạy cảm.# RUM_CONSOLE_CAPTURE=false
RUM_ADVANCED_NETWORK_CAPTUREbooleanGhi lại các payload mạng chi tiết. Có thể thu thập các prompt, phản hồi hoặc payload nhạy cảm.# RUM_ADVANCED_NETWORK_CAPTURE=false
RUM_SAMPLE_RATEnumberTỷ lệ lấy mẫu đo từ xa của trình duyệt từ 0 đến 1. Mặc định: 1.# RUM_SAMPLE_RATE=1

Trong chế độ publicToken, trình duyệt gửi dữ liệu đo lường từ xa (telemetry) trực tiếp đến RUM_URL với RUM_PUBLIC_TOKEN. Trong chế độ proxy, trình duyệt gửi dữ liệu đo lường từ xa thông qua LibreChat; phần backend sẽ xác thực phiên người dùng, loại bỏ các tiêu đề xác thực ứng dụng và chuyển tiếp dữ liệu đo lường từ xa đến RUM_PROXY_TARGET_URL. Các phiên không hợp lệ hoặc đã hết hạn sẽ bị loại bỏ với phản hồi 204 để các lỗi đo lường từ xa của trình duyệt không hiển thị các lỗi xác thực API thông thường. Kết quả của proxy được tính trong rum_proxy_requests_total với các nhãn endpointresult trên endpoint /metrics của LibreChat API.

Đường dẫn cấu hình - librechat.yaml

Chỉ định một vị trí thay thế cho tệp cấu hình LibreChat. Bạn có thể chỉ định đường dẫn tuyệt đối, đường dẫn tương đối hoặc URL. Tên tệp trong đường dẫn là linh hoạt và không bắt buộc phải là librechat.yaml; bất kỳ tệp cấu hình hợp lệ nào cũng sẽ hoạt động.

Lưu ý: Nếu bạn muốn LibreChat tìm kiếm tệp cấu hình trong thư mục gốc (đây là hành vi mặc định), chỉ cần để tùy chọn này ở trạng thái được chú thích (commented out).

KeyTypeDescriptionExample
CONFIG_PATHstringMột vị trí thay thế cho tệp cấu hình LibreChat.# CONFIG_PATH=https://raw.githubusercontent.com/danny-avila/LibreChat/main/librechat.example.yaml

Kỹ năng triển khai

Deployment Skills được tải ở chế độ chỉ đọc khi khởi động từ hệ thống tệp và được hiển thị cho những người dùng đã bật tính năng Skills.

KeyTypeDescriptionExample
DEPLOYMENT_SKILLS_DIRstringThư mục chứa các Skill do quá trình triển khai cung cấp. Mặc định là `./skill` tại thư mục gốc của dự án.# DEPLOYMENT_SKILLS_DIR=./skill

Khởi động lại LibreChat sau khi thay đổi thư mục này hoặc bất kỳ tệp nào bên trong nó. Các Skills do quá trình triển khai cung cấp sẽ được ưu tiên hơn các Skills đã lưu với cùng tên.

Xác thực cấu hình

Theo mặc định, LibreChat sẽ thoát kèm theo lỗi (mã thoát 1) nếu tệp cấu hình librechat.yaml chứa các lỗi xác thực. Hành vi dừng ngay khi gặp lỗi (fail-fast) này giúp phát hiện sớm các vấn đề về cấu hình trong các quy trình triển khai và ngăn chặn việc chạy với các cài đặt mặc định không mong muốn.

KeyTypeDescriptionExample
CONFIG_BYPASS_VALIDATIONbooleanKhi được đặt thành `true`, máy chủ sẽ ghi lại cảnh báo và tiếp tục khởi động với cấu hình mặc định ngay cả khi `librechat.yaml` có lỗi xác thực. Điều này bảo toàn hành vi cũ.# CONFIG_BYPASS_VALIDATION=true

Cảnh báo

Việc sử dụng CONFIG_BYPASS_VALIDATION=true không được khuyến nghị cho các môi trường production. Nó chỉ được dùng như một giải pháp tạm thời trong khi gỡ lỗi các vấn đề về cấu hình. Hãy luôn khắc phục các lỗi xác thực trong tệp cấu hình của bạn.

Xử lý ngoại lệ chưa được bắt (Uncaught Exception Handling)

Theo mặc định, LibreChat sẽ thoát tiến trình khi xảy ra một ngoại lệ chưa được bắt (uncaught exception), đây là hành vi tiêu chuẩn của Node.js. Bạn có thể ghi đè hành vi này để giữ cho ứng dụng tiếp tục chạy sau khi xảy ra các ngoại lệ chưa được bắt.

KeyTypeDescriptionExample
CONTINUE_ON_UNCAUGHT_EXCEPTIONbooleanKhi được đặt thành `true`, ứng dụng sẽ tiếp tục chạy sau khi gặp các ngoại lệ chưa được xử lý thay vì thoát khỏi tiến trình.# CONTINUE_ON_UNCAUGHT_EXCEPTION=false

Cảnh báo

Không khuyến nghị sử dụng cho môi trường production trừ khi cần thiết. Các ngoại lệ chưa được xử lý (uncaught exceptions) có thể khiến ứng dụng rơi vào trạng thái không thể dự đoán trước.

Endpoints

Trong phần này, bạn có thể cấu hình các endpoint và lựa chọn model, API key của chúng, cũng như các thiết lập proxy và reverse proxy cho các endpoint hỗ trợ tính năng này.

Cấu hình chung

Bỏ ghi chú ENDPOINTS để tùy chỉnh các endpoint khả dụng trong LibreChat.

KeyTypeDescriptionExample
ENDPOINTSstringDanh sách các endpoint khả dụng được phân tách bằng dấu phẩy.# ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom
PROXYstringProxy gửi đi cho các máy khách phía máy chủ được hỗ trợ. Áp dụng cho cả các đích HTTP và HTTPS.PROXY=
HTTP_PROXYstringDự phòng proxy HTTP được các client phía máy chủ hỗ trợ sử dụng khi PROXY không được thiết lập.# HTTP_PROXY=
HTTPS_PROXYstringHTTPS proxy dự phòng được các client phía máy chủ hỗ trợ sử dụng khi PROXY không được thiết lập.# HTTPS_PROXY=
NO_PROXYstringCác máy chủ, tên miền hoặc dải IP được phân tách bằng dấu phẩy mà các máy khách phía máy chủ được hỗ trợ nên bỏ qua. Biến thể chữ thường no_proxy cũng được chấp nhận.# NO_PROXY=
TITLE_CONVObooleanBật tính năng đặt tiêu đề cho tất cả endpoint.TITLE_CONVO=true

Các endpoint đã biết - librechat.yaml

KeyTypeDescriptionExample
ANYSCALE_API_KEYstringKhóa API cho Anyscale.# ANYSCALE_API_KEY=
APIPIE_API_KEYstringKhóa API cho Apipie.# APIPIE_API_KEY=
COHERE_API_KEYstringKhóa API cho Cohere.# COHERE_API_KEY=
FIREWORKS_API_KEYstringKhóa API cho Fireworks.# FIREWORKS_API_KEY=
GROQ_API_KEYstringKhóa API cho Groq.# GROQ_API_KEY=
MISTRAL_API_KEYstringKhóa API cho Mistral.# MISTRAL_API_KEY=
OPENROUTER_KEYstringKhóa API cho OpenRouter.# OPENROUTER_KEY=
PERPLEXITY_API_KEYstringKhóa API cho Perplexity.# PERPLEXITY_API_KEY=
SHUTTLEAI_API_KEYstringKhóa API cho ShuttleAI.# SHUTTLEAI_API_KEY=
TOGETHERAI_API_KEYstringKhóa API cho TogetherAI.# TOGETHERAI_API_KEY=
DEEPSEEK_API_KEYstringKhóa API cho Deepseek API# DEEPSEEK_API_KEY=

Tính năng tìm kiếm web cho phép khả năng tìm kiếm internet trong LibreChat.

Quan trọng: Các tên biến môi trường chính xác được hiển thị bên dưới là các tham chiếu mặc định và có thể được tùy chỉnh thông qua tệp cấu hình librechat.yaml để sử dụng bất kỳ tên biến nào bạn muốn.

Để biết các tùy chọn cấu hình và tùy chỉnh chi tiết, hãy xem: Web Search Configuration

KeyTypeDescriptionExample
SERPER_API_KEYstringKhóa API cho nhà cung cấp tìm kiếm Serper. Lấy khóa của bạn tại https://serper.dev/api-keys# SERPER_API_KEY=
TAVILY_API_KEYstringKhóa API cho nhà cung cấp dịch vụ tìm kiếm và thu thập dữ liệu Tavily. Lấy khóa của bạn tại https://app.tavily.com/home# TAVILY_API_KEY=
TAVILY_SEARCH_URLstringURL API tìm kiếm Tavily tùy chỉnh (tùy chọn). Chỉ cần thiết cho các endpoint tìm kiếm tùy chỉnh hoặc proxy tương thích với Tavily.# TAVILY_SEARCH_URL=
TAVILY_EXTRACT_URLstringURL API trích xuất Tavily tùy chỉnh (tùy chọn). Chỉ cần thiết cho các endpoint trích xuất tùy chỉnh hoặc proxy tương thích với Tavily.# TAVILY_EXTRACT_URL=
FIRECRAWL_API_KEYstringKhóa API cho dịch vụ trình thu thập dữ liệu Firecrawl. Lấy khóa của bạn tại https://docs.firecrawl.dev/introduction#api-key# FIRECRAWL_API_KEY=
FIRECRAWL_API_URLstringURL API Firecrawl tùy chỉnh (tùy chọn). Chỉ cần thiết cho các instance Firecrawl tùy chỉnh.# FIRECRAWL_API_URL=
FIRECRAWL_VERSIONstringPhiên bản Firecrawl API (v0 hoặc v1).# FIRECRAWL_VERSION=v1
JINA_API_KEYstringKhóa API cho dịch vụ Jina reranker. Lấy khóa của bạn tại https://jina.ai/api-dashboard/# JINA_API_KEY=
JINA_API_URLstringURL API Jina tùy chỉnh (tùy chọn). Chỉ cần thiết cho các instance Jina tùy chỉnh.# JINA_API_URL=
COHERE_API_KEYstringKhóa API cho dịch vụ Cohere reranker. Lấy khóa của bạn tại https://dashboard.cohere.com/welcome/login# COHERE_API_KEY=

Lưu ý: Các tên biến này có thể được tùy chỉnh trong tệp cấu hình librechat.yaml của bạn. Ví dụ: bạn có thể sử dụng CUSTOM_SERPER_KEY thay vì SERPER_API_KEY bằng cách cấu hình nó trong cài đặt tìm kiếm web. Xem tài liệu Web Search Configuration để biết chi tiết về cách tùy chỉnh tên biến.

Anthropic

xem: Anthropic Endpoint

  • Bạn có thể yêu cầu khóa truy cập từ https://platform.claude.com/
  • Để trống ANTHROPIC_API_KEY= để vô hiệu hóa endpoint này
  • Đặt ANTHROPIC_API_KEY= thành "user_provided" để cho phép người dùng cung cấp API key của riêng họ từ WebUI
  • Nếu bạn có quyền truy cập vào một reverse proxy cho Anthropic, bạn có thể thiết lập nó bằng ANTHROPIC_REVERSE_PROXY=
    • để trống hoặc thêm chú thích để sử dụng base url mặc định
KeyTypeDescriptionExample
ANTHROPIC_API_KEYstringKhóa API Anthropic hoặc "user_provided" để cho phép người dùng tự cung cấp khóa API của riêng họ.Defaults to an empty string.
ANTHROPIC_MODELSstringDanh sách các model Anthropic được phân tách bằng dấu phẩy để sử dụng.# 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_PROXYstringReverse proxy cho Anthropic.# ANTHROPIC_REVERSE_PROXY=
ANTHROPIC_TITLE_MODELstringKHÔNG CÒN ĐƯỢC HỖ TRỢ: Model được sử dụng để đặt tiêu đề với Anthropic.# ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307
  • ANTHROPIC_TITLE_MODEL hiện đã bị phản đối và sẽ bị loại bỏ trong các phiên bản tương lai. Thay vào đó, hãy sử dụng Cài đặt Endpoint titleModel trong cấu hình librechat.yaml.

Lưu ý: Phải tương thích với Anthropic endpoint. Ngoài ra, các model Claude 2 và Claude 3 hoạt động tốt nhất với tác vụ này, trong đó các model claude-3-haiku là rẻ nhất.

Claude Fable 5 được bao gồm trong danh sách model Anthropic mặc định. Các model thuộc lớp Fable/Mythos sử dụng hành vi Anthropic hiện đại trong LibreChat: ngữ cảnh 1M, hỗ trợ tư duy thích ứng (adaptive thinking), hỗ trợ bộ nhớ đệm prompt (prompt caching) và xử lý thinkingDisplay cho đầu ra suy luận được tóm tắt hoặc lược bỏ.

Anthropic thông qua Vertex AI

Bạn cũng có thể sử dụng các mô hình Anthropic Claude thông qua Google Cloud Vertex AI. Để biết các tùy chọn cấu hình YAML chi tiết, hãy xem: Cấu hình Anthropic Vertex AI

KeyTypeDescriptionExample
ANTHROPIC_USE_VERTEXbooleanĐặt thành true để sử dụng các mô hình Anthropic thông qua Google Vertex AI thay vì API trực tiếp.ANTHROPIC_USE_VERTEX=true
ANTHROPIC_VERTEX_REGIONstringVùng Google Cloud cho Vertex AI. Mặc định: us-east5.ANTHROPIC_VERTEX_REGION=us-east5

Lưu ý: Khi sử dụng Vertex AI, bạn cũng phải cấu hình GOOGLE_SERVICE_KEY_FILE (xem Google Configuration) với một tài khoản dịch vụ có vai trò Vertex AI User.

AWS Bedrock

Xem: Thiết lập AWS Bedrock

KeyTypeDescriptionExample
BEDROCK_AWS_DEFAULT_REGIONstringPhải cung cấp một AWS region mặc định cho Bedrock.BEDROCK_AWS_DEFAULT_REGION=us-east-1
BEDROCK_AWS_ACCESS_KEY_IDstringAWS access key ID cho Bedrock. Không bắt buộc nếu sử dụng chuỗi thông tin xác thực AWS mặc định.# BEDROCK_AWS_ACCESS_KEY_ID=your_access_key_id
BEDROCK_AWS_SECRET_ACCESS_KEYstringAWS secret access key cho Bedrock. Không bắt buộc nếu sử dụng chuỗi thông tin xác thực AWS mặc định.# BEDROCK_AWS_SECRET_ACCESS_KEY=your_secret_access_key
BEDROCK_AWS_SESSION_TOKENstringToken phiên AWS cho thông tin xác thực tạm thời. Tùy chọn.# BEDROCK_AWS_SESSION_TOKEN=your_session_token
BEDROCK_AWS_PROFILEstringTên cấu hình chia sẻ AWS cho Bedrock. Không bắt buộc nếu sử dụng chuỗi thông tin xác thực AWS mặc định.# BEDROCK_AWS_PROFILE=your-profile-name
BEDROCK_AWS_BEARER_TOKENstringKhóa API Amazon Bedrock để xác thực bearer, hoặc user_provided để cho phép người dùng nhập khóa API Bedrock của riêng họ trong giao diện người dùng.# BEDROCK_AWS_BEARER_TOKEN=your_bedrock_api_key
BEDROCK_AWS_MODELSstringDanh sách các ID model Bedrock được phân tách bằng dấu phẩy. Nếu bỏ qua, tất cả các model được hỗ trợ đã biết sẽ được bao gồm.# 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

Lưu ý: Bạn có thể bỏ qua các khóa truy cập để sử dụng chuỗi thông tin xác thực AWS mặc định (biến môi trường, thông tin xác thực SSO, tệp thông tin xác thực dùng chung hoặc Dịch vụ Metadata của phiên bản EC2/ECS). Xem AWS Bedrock Setup để biết thêm chi tiết.

Các mô hình Claude Fable/Mythos-class trên Bedrock chỉ dành cho inference-profile. Hãy sử dụng profile ID như us.anthropic.claude-fable-5 và bật cài đặt chia sẻ dữ liệu Anthropic bắt buộc trong bảng điều khiển Bedrock hoặc Data Retention API trước khi gọi chúng.

BingAI

Bing, cũng được sử dụng cho Sydney, jailbreak, và Bing Image Creator

KeyTypeDescriptionExample
BINGAI_TOKENstringBing access token. Để trống để vô hiệu hóa. Có thể đặt thành "user_provided" để cho phép người dùng tự cung cấp token của riêng họ từ WebUI.BINGAI_TOKEN=user_provided
BINGAI_HOSTstringURL máy chủ Bing. Để ở dạng chú thích để sử dụng máy chủ mặc định.# BINGAI_HOST=https://cn.bing.com

Lưu ý: Bạn nên để là "user_provided" và cung cấp token từ WebUI.

Google

Làm theo các hướng dẫn sau để thiết lập Google Endpoint

KeyTypeDescriptionExample
GOOGLE_KEYstringGoogle API key. Đặt thành "user_provided" để cho phép người dùng cung cấp API key của riêng họ từ WebUI.GOOGLE_KEY=user_provided
GOOGLE_SERVICE_KEY_FILEstringĐường dẫn đến tệp JSON khóa tài khoản dịch vụ Google, URL để lấy tệp đó, hoặc chuỗi JSON. Được sử dụng để xác thực Vertex AI (ví dụ: các tính năng OCR).GOOGLE_SERVICE_KEY_FILE=/path/to/auth.json
GOOGLE_REVERSE_PROXYstringURL reverse proxy của Google.GOOGLE_REVERSE_PROXY=
GOOGLE_AUTH_HEADERbooleanSử dụng header Authorization thay vì X-goog-api-key. Một số reverse proxy yêu cầu điều này.# GOOGLE_AUTH_HEADER=true
GOOGLE_MODELSstringCác model Gemini API Google khả dụng, được phân tách bằng dấu phẩy.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_MODELSstringCác model Vertex AI Google khả dụng, được phân tách bằng dấu phẩy.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_MODELstringKHÔNG CÒN ĐƯỢC HỖ TRỢ: Model được sử dụng để đặt tiêu đề với Google.GOOGLE_TITLE_MODEL=gemini-pro
GOOGLE_LOCstringChỉ định vị trí Google Cloud để xử lý các yêu cầu APIGOOGLE_LOC=us-central1
GOOGLE_CLOUD_LOCATIONstringKhu vực thay thế cho tạo ảnh Gemini (ví dụ: global).# GOOGLE_CLOUD_LOCATION=global
GOOGLE_EXCLUDE_SAFETY_SETTINGSstringLoại bỏ hoàn toàn các cài đặt an toàn được bao gồm theo mặc định, điều này sẽ sử dụng các cài đặt mặc định của nhà cung cấpGOOGLE_EXCLUDE_SAFETY_SETTINGS=true
GOOGLE_SAFETY_SEXUALLY_EXPLICITstringCài đặt an toàn cho nội dung khiêu dâm. Các tùy chọn bao gồm BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY và OFF.GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_HATE_SPEECHstringCài đặt an toàn cho nội dung ngôn từ thù ghét. Các tùy chọn bao gồm BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY và OFF.GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_HARASSMENTstringCài đặt an toàn cho nội dung quấy rối. Các tùy chọn bao gồm BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY và OFF.GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_DANGEROUS_CONTENTstringCài đặt an toàn cho nội dung nguy hiểm. Các tùy chọn bao gồm BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY và OFF.GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_CIVIC_INTEGRITYstringCài đặt an toàn cho nội dung liêm chính công dân. Các tùy chọn bao gồm BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY và OFF.# GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH

Tùy chỉnh các model khả dụng, phân tách bằng dấu phẩy, không có khoảng trắng. Model đầu tiên sẽ là mặc định. Để trống hoặc để dưới dạng chú thích để sử dụng cài đặt nội bộ.

  • GOOGLE_TITLE_MODEL hiện đã lỗi thời và sẽ bị loại bỏ trong các phiên bản tương lai. Thay vào đó, hãy sử dụng Cài đặt Endpoint titleModel trong cấu hình librechat.yaml.

Lưu ý: Đối với các biến GOOGLE_SAFETY của Vertex AI, bạn không có quyền truy cập vào cài đặt BLOCK_NONE theo mặc định. Để sử dụng cài đặt HarmBlockThreshold bị hạn chế này, bạn sẽ cần thực hiện một trong các cách sau:

  • (a) Nhận quyền truy cập thông qua danh sách cho phép (allowlist) từ nhóm quản lý tài khoản Google của bạn
  • (b) Chuyển loại tài khoản của bạn sang thanh toán theo hóa đơn hàng tháng bằng cách làm theo hướng dẫn sau: https://cloud.google.com/billing/docs/how-to/invoiced-billing

Tạo ảnh Gemini

Gemini Image Generation là một công cụ dành cho Agents hỗ trợ cả Gemini API và Vertex AI. Xem tại: Gemini Image Generation

KeyTypeDescriptionExample
GEMINI_API_KEYstringKhóa API Gemini chuyên dụng cho tạo ảnh. Sẽ sử dụng GOOGLE_KEY làm dự phòng nếu không được thiết lập.# GEMINI_API_KEY=your_gemini_api_key
GEMINI_IMAGE_MODELstringMô hình Gemini để tạo hình ảnh. Mặc định: gemini-2.5-flash-image.# GEMINI_IMAGE_MODEL=gemini-2.5-flash-image

Lưu ý: Khi không có API key nào được cấu hình, công cụ sẽ tự động chuyển sang sử dụng Vertex AI thông qua tài khoản dịch vụ từ GOOGLE_SERVICE_KEY_FILE. Tài khoản dịch vụ này phải có vai trò Vertex AI User.

OpenAI

Xem: Thiết lập OpenAI

KeyTypeDescriptionExample
OPENAI_API_KEYstringKhóa API OpenAI của bạn. Để trống để vô hiệu hóa endpoint này hoặc đặt thành "user_provided" để cho phép người dùng tự cung cấp khóa API của riêng họ từ WebUI.OPENAI_API_KEY=user_provided
OPENAI_MODELSstringTùy chỉnh các model khả dụng, phân tách bằng dấu phẩy, không có khoảng trắng. Model đầu tiên sẽ là mặc định. Để ở dạng chú thích nếu muốn sử dụng cài đặt nội bộ.# 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_OPENAIbooleanBật chế độ gỡ lỗi cho endpoint OpenAI.DEBUG_OPENAI=false
OPENAI_SUMMARIZEbooleanBật tính năng tóm tắt tin nhắn. Mặc định là False# OPENAI_SUMMARIZE=true
OPENAI_SUMMARY_MODELstringMô hình được sử dụng để tóm tắt OpenAI.# OPENAI_SUMMARY_MODEL=gpt-3.5-turbo
OPENAI_FORCE_PROMPTbooleanBuộc API phải được gọi bằng payload prompt thay vì payload messages.# OPENAI_FORCE_PROMPT=false
OPENAI_ORGANIZATIONstringChỉ định tổ chức sẽ sử dụng cho mỗi yêu cầu API tới OpenAI. Tùy chọn# OPENAI_ORGANIZATION=
OPENAI_REVERSE_PROXYstringKHÔNG CÒN ĐƯỢC HỖ TRỢ: Cài đặt reverse proxy cho OpenAI.# OPENAI_REVERSE_PROXY=
OPENAI_TITLE_MODELstringKHÔNG CÒN ĐƯỢC HỖ TRỢ: Mô hình được sử dụng cho tính năng đặt tiêu đề của OpenAI.# OPENAI_TITLE_MODEL=gpt-3.5-turbo
  • OPENAI_TITLE_MODEL hiện đã lỗi thời và sẽ bị loại bỏ trong các phiên bản tương lai. Thay vào đó, hãy sử dụng Cài đặt Endpoint titleModel trong cấu hình librechat.yaml.
  • OPENAI_REVERSE_PROXY hiện đã lỗi thời và sẽ bị loại bỏ trong các phiên bản tương lai. Hãy sử dụng custom endpoint thay thế.

Assistants

Xem: Thiết lập Assistants

KeyTypeDescriptionExample
ASSISTANTS_API_KEYstringKhóa API OpenAI của bạn cho Assistants API. Để trống để vô hiệu hóa endpoint này hoặc đặt thành "user_provided" để cho phép người dùng cung cấp khóa API của riêng họ từ WebUI.ASSISTANTS_API_KEY=user_provided
ASSISTANTS_MODELSstringTùy chỉnh các model khả dụng, phân tách bằng dấu phẩy, không có khoảng trắng. Model đầu tiên sẽ là mặc định. Để trống để sử dụng cài đặt nội bộ.# ASSISTANTS_MODELS=gpt-3.5-turbo-0125,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-16k,gpt-3.5-turbo,gpt-4,gpt-4-0314,gpt-4-32k-0314,gpt-4-0613,gpt-3.5-turbo-0613,gpt-3.5-turbo-1106,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview
ASSISTANTS_BASE_URLstringURL cơ sở thay thế cho Assistants API.# ASSISTANTS_BASE_URL=

Lưu ý: Bạn có thể tùy chỉnh các model khả dụng, phân tách bằng dấu phẩy, không có khoảng trắng. Model đầu tiên sẽ là mặc định. Để trống hoặc để dưới dạng chú thích nếu muốn sử dụng cài đặt nội bộ.

Tavily

Nhận API key của bạn tại đây: https://tavily.com/#api

Các biến môi trường:

KeyTypeDescriptionExample
TAVILY_API_KEYstringKhóa API Tavily.TAVILY_API_KEY=

Traversaal

Mô tả: Công cụ tìm kiếm được tăng cường bởi LLM.

Lấy API key tại đây: https://api.traversaal.ai/dashboard

Các biến môi trường:

KeyTypeDescriptionExample
TRAVERSAAL_API_KEYstringKhóa API Traversaal.TRAVERSAAL_API_KEY=

WolframAlpha

Xem hướng dẫn chi tiết tại đây: Wolfram Alpha

Các biến môi trường:

KeyTypeDescriptionExample
WOLFRAM_APP_IDstringID ứng dụng Wolfram Alpha.WOLFRAM_APP_ID=

Zapier

Mô tả: - Bạn cần có tài khoản Zapier. Lấy khóa API của bạn tại đây: Zapier

  • Tạo các hành động được cho phép - Làm theo bước 3 trong hướng dẫn bắt đầu này từ Zapier

Lưu ý: Zapier được biết đến là khá kén chọn với một số hành động nhất định. Viết bản nháp email có lẽ là cách sử dụng tốt nhất cho công cụ này.

Các biến môi trường:

KeyTypeDescriptionExample
ZAPIER_NLA_API_KEYstringKhóa API Zapier NLA.ZAPIER_NLA_API_KEY=

OpenWeather

Xem hướng dẫn chi tiết tại đây: OpenWeather

KeyTypeDescriptionExample
OPENWEATHER_API_KEYstringKhóa API OpenWeather cho One Call API 3.0.OPENWEATHER_API_KEY=

Code Interpreter

Code Interpreter API cung cấp một môi trường an toàn để thực thi mã và quản lý tệp. Xem: Code Interpreter API

KeyTypeDescriptionExample
LIBRECHAT_CODE_API_KEYstringKhóa API cho dịch vụ Code Interpreter. Khi được thiết lập toàn cục, nó cung cấp quyền truy cập cho tất cả người dùng.LIBRECHAT_CODE_API_KEY=your-api-key
LIBRECHAT_CODE_BASEURLstringURL cơ sở tùy chỉnh cho API Code Interpreter (chỉ dành cho các gói Enterprise).# LIBRECHAT_CODE_BASEURL=https://your-custom-domain.com

Artifacts

Artifacts tận dụng thư viện CodeSandbox để hiển thị mã HTML/JS một cách an toàn. Theo mặc định, CDN công cộng do CodeSandbox lưu trữ sẽ được sử dụng.

May mắn thay, đối với những người có yêu cầu về mạng nội bộ, bạn có thể tự lưu trữ trình đóng gói (self-host the bundler) để biên dịch mã frontend và chỉ định một URL trình đóng gói tùy chỉnh cho Sandpack.

Để biết thêm thông tin, bao gồm các container image được tạo sẵn để tự lưu trữ (self-hosting) với các yêu cầu về số liệu (metric requests) đã được loại bỏ, hãy xem: https://github.com/LibreChat-AI/codesandbox-client

KeyTypeDescriptionExample
SANDPACK_BUNDLER_URLstringChỉ định một URL trình đóng gói tùy chỉnh cho Sandpack, được sử dụng bởi ArtifactsSANDPACK_BUNDLER_URL=your-bundler-url

Tìm kiếm (Meilisearch)

Cho phép tìm kiếm trong các tin nhắn và cuộc trò chuyện:

KeyTypeDescriptionExample
SEARCHbooleanCho phép tìm kiếm trong các tin nhắn và cuộc trò chuyện.SEARCH=true

Lưu ý: Nếu bạn không sử dụng Docker, bạn cần cài đặt Meilisearch tự lưu trữ miễn phí hoặc gói dịch vụ từ xa trả phí.

Để vô hiệu hóa phân tích đo lường từ xa ẩn danh cho MeiliSearch nhằm đảm bảo quyền riêng tư tuyệt đối, hãy đặt thành true:

KeyTypeDescriptionExample
MEILI_NO_ANALYTICSbooleanVô hiệu hóa phân tích đo lường từ xa ẩn danh cho MeiliSearch.MEILI_NO_ANALYTICS=true

Để máy chủ API kết nối với máy chủ tìm kiếm. Thay thế '0.0.0.0' bằng 'meilisearch' nếu bạn đang chạy MeiliSearch bằng docker-compose.

KeyTypeDescriptionExample
MEILI_HOSTstringKết nối máy chủ API tới máy chủ tìm kiếm.MEILI_HOST=http://0.0.0.0:7700

Khóa chính (master key) này phải có độ dài ít nhất 16 byte, bao gồm các ký tự UTF-8 hợp lệ. MeiliSearch sẽ báo lỗi và từ chối khởi chạy nếu không có khóa chính nào được cung cấp hoặc nếu khóa có độ dài dưới 16 byte. MeiliSearch sẽ gợi ý một khóa chính bảo mật được tạo tự động. Đây là một khóa bảo mật có sẵn cho docker-compose, bạn có thể thay thế nó bằng khóa của riêng mình.

KeyTypeDescriptionExample
MEILI_MASTER_KEYstringKhóa chính cho MeiliSearch.MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt

Để ngăn LibreChat cố gắng đồng bộ hóa lập chỉ mục cơ sở dữ liệu với Meilisearch, bạn có thể đặt biến môi trường sau thành true. Điều này hữu ích trong một cụm node hoặc thiết lập đa node, nơi chỉ một instance nên chịu trách nhiệm lập chỉ mục.

KeyTypeDescriptionExample
MEILI_NO_SYNCstringChuyển đổi để vô hiệu hóa đồng bộ hóa chỉ mục MeilisearchMEILI_NO_SYNC=true

RAG API

Cấu hình Retrieval-Augmented Generation để lập chỉ mục tài liệu và phản hồi dựa trên ngữ cảnh. Xem: Cấu hình RAG API

KeyTypeDescriptionExample
RAG_API_URLstringURL của dịch vụ RAG API.RAG_API_URL=http://host.docker.internal:8000
RAG_OPENAI_API_KEYstringKhóa API OpenAI cho các embedding RAG. Ghi đè lên OPENAI_API_KEY cho RAG.# RAG_OPENAI_API_KEY=sk-your-openai-api-key
RAG_OPENAI_BASEURLstringURL cơ sở OpenAI tùy chỉnh cho các embedding RAG.# RAG_OPENAI_BASEURL=
RAG_USE_FULL_CONTEXTbooleanLấy toàn bộ ngữ cảnh tệp thay vì 4 kết quả hàng đầu. Mặc định: false.# RAG_USE_FULL_CONTEXT=true
EMBEDDINGS_PROVIDERstringNhà cung cấp Embeddings: openai, azure, huggingface, huggingfacetei, hoặc ollama. Mặc định: openai.# EMBEDDINGS_PROVIDER=openai
EMBEDDINGS_MODELstringMô hình Embeddings cần sử dụng. Mặc định phụ thuộc vào nhà cung cấp.# EMBEDDINGS_MODEL=text-embedding-3-small

Lưu ý: Khi sử dụng thiết lập Docker mặc định, tệp .env được chia sẻ giữa LibreChat và RAG API. Để biết các tùy chọn cấu hình đầy đủ, hãy xem tài liệu RAG API.

Chuyển đổi giọng nói thành văn bản & Văn bản thành giọng nói

Cấu hình các dịch vụ Chuyển đổi giọng nói thành văn bản (STT) và Chuyển đổi văn bản thành giọng nói (TTS). Xem: Cài đặt giọng nói

KeyTypeDescriptionExample
STT_API_KEYstringKhóa API cho dịch vụ Chuyển đổi giọng nói thành văn bản (ví dụ: OpenAI Whisper).# STT_API_KEY=
TTS_API_KEYstringKhóa API cho dịch vụ Chuyển văn bản thành giọng nói (ví dụ: OpenAI TTS).# TTS_API_KEY=

Lưu ý: STT và TTS chủ yếu được cấu hình thông qua phần speech: trong librechat.yaml. Các biến môi trường này được tham chiếu trong cấu hình đó. Xem Speech Settings để biết các tùy chọn cấu hình YAML đầy đủ.

Cấu hình chức năng liên kết chia sẻ cuộc trò chuyện.

KeyTypeDescriptionExample
ALLOW_SHARED_LINKSbooleanBật hoặc tắt các liên kết chia sẻ cuộc trò chuyện. Mặc định: true.ALLOW_SHARED_LINKS=true
ALLOW_SHARED_LINKS_PUBLICbooleanCho phép các liên kết được chia sẻ có thể truy cập công khai mà không cần xác thực. Mặc định: false.ALLOW_SHARED_LINKS_PUBLIC=false
SHARED_LINKS_SNAPSHOT_FILESbooleanCác tệp snapshot được tham chiếu bởi một cuộc trò chuyện được chia sẻ để người xem có thể xem trước hoặc tải xuống thông qua liên kết chia sẻ. Ghi đè interface.sharedLinks.snapshotFiles khi được thiết lập.SHARED_LINKS_SNAPSHOT_FILES=true

ALLOW_SHARED_LINKS là công tắc bật/tắt cho toàn bộ tính năng này. Các quyền vai trò hiện kiểm soát ai có thể tạo liên kết chia sẻ, chia sẻ chúng với người dùng đã xác thực hoặc làm cho chúng hiển thị với mọi người; xem interface.sharedLinks. ALLOW_SHARED_LINKS_PUBLIC chỉ kiểm soát việc liệu các liên kết được chia sẻ công khai có thể được xem mà không cần xác thực hay không. SHARED_LINKS_SNAPSHOT_FILES là một tùy chọn ghi đè toàn cục cho các bản chụp tệp (file snapshots) của liên kết chia sẻ và có thể vô hiệu hóa việc phục vụ bản chụp cho mọi liên kết khi được đặt thành false.

Hệ thống người dùng

Phần này chứa cấu hình cho:

Kiểm duyệt

Hệ thống Kiểm duyệt Tự động sử dụng cơ chế tính điểm để theo dõi các vi phạm của người dùng. Khi người dùng thực hiện các hành động như đăng nhập, đăng ký hoặc gửi tin nhắn quá mức, họ sẽ tích lũy điểm vi phạm. Khi đạt đến ngưỡng đã thiết lập, người dùng và địa chỉ IP của họ sẽ bị cấm tạm thời. Hệ thống này đảm bảo an ninh nền tảng bằng cách giám sát và xử phạt các hoạt động nhanh hoặc đáng ngờ.

xem: Automated Moderation

Các cài đặt kiểm duyệt cơ bản

KeyTypeDescriptionExample
OPENAI_MODERATIONbooleanCó bật tính năng kiểm duyệt của OpenAI trên các endpoint **OpenAI** và **Plugins** hay không.OPENAI_MODERATION=false
OPENAI_MODERATION_API_KEYstringKhóa API OpenAI của bạn.OPENAI_MODERATION_API_KEY=
OPENAI_MODERATION_REVERSE_PROXYstringLưu ý: Mặc định bị chú thích, tính năng này không hoạt động với tất cả các reverse proxy.# OPENAI_MODERATION_REVERSE_PROXY=

Cài đặt cấm (Banning Settings)

KeyTypeDescriptionExample
BAN_VIOLATIONSbooleanCó cho phép cấm người dùng do vi phạm hay không (họ vẫn sẽ được ghi lại nhật ký).BAN_VIOLATIONS=true
BAN_DURATIONintegerThời gian người dùng và IP liên quan bị cấm (tính bằng mili giây).BAN_DURATION=1000 * 60 * 60 * 2
BAN_INTERVALintegerNgười dùng sẽ bị cấm mỗi khi điểm số của họ đạt/vượt qua ngưỡng khoảng thời gian.BAN_INTERVAL=20

Giới hạn tốc độ đăng nhập và đăng ký

Ngăn chặn các cuộc tấn công brute force và đăng ký spam bằng cách giới hạn số lần thử đăng nhập và đăng ký tài khoản mới.

KeyTypeDescriptionExample
LOGIN_MAXintegerSố lượng đăng nhập tối đa cho phép trên mỗi IP trong mỗi LOGIN_WINDOW.LOGIN_MAX=7
LOGIN_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho LOGIN_MAX lượt đăng nhập.LOGIN_WINDOW=5
REGISTER_MAXintegerSố lượng đăng ký tối đa cho phép trên mỗi IP trong mỗi REGISTER_WINDOW.REGISTER_MAX=5
REGISTER_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho REGISTER_MAX lượt đăng ký.REGISTER_WINDOW=60

Điểm số cho mỗi vi phạm

KeyTypeDescriptionExample
LOGIN_VIOLATION_SCOREintegerĐiểm cho các vi phạm đăng nhập.LOGIN_VIOLATION_SCORE=1
REGISTRATION_VIOLATION_SCOREintegerĐiểm số cho các vi phạm đăng ký.REGISTRATION_VIOLATION_SCORE=1
CONCURRENT_VIOLATION_SCOREintegerĐiểm số cho các vi phạm đồng thời.CONCURRENT_VIOLATION_SCORE=1
MESSAGE_VIOLATION_SCOREintegerĐiểm số cho các vi phạm tin nhắn.MESSAGE_VIOLATION_SCORE=1
NON_BROWSER_VIOLATION_SCOREintegerĐiểm số cho các vi phạm không liên quan đến trình duyệt.NON_BROWSER_VIOLATION_SCORE=20
ILLEGAL_MODEL_REQ_SCOREintegerĐiểm số cho các yêu cầu mô hình không hợp lệ.ILLEGAL_MODEL_REQ_SCORE=5
IMPORT_VIOLATION_SCOREintegerĐiểm số cho các vi phạm khi nhập cuộc trò chuyện.IMPORT_VIOLATION_SCORE=1
FORK_VIOLATION_SCOREintegerĐiểm cho các vi phạm phân nhánh hội thoại.FORK_VIOLATION_SCORE=1
TTS_VIOLATION_SCOREintegerĐiểm số cho các vi phạm chuyển văn bản thành giọng nói.TTS_VIOLATION_SCORE=0
STT_VIOLATION_SCOREintegerĐiểm vi phạm cho tính năng chuyển đổi giọng nói thành văn bản.STT_VIOLATION_SCORE=0
FILE_UPLOAD_VIOLATION_SCOREintegerĐiểm số cho các vi phạm tải tệp lên.FILE_UPLOAD_VIOLATION_SCORE=0
RESET_PASSWORD_VIOLATION_SCOREintegerĐiểm số cho các vi phạm đặt lại mật khẩu.RESET_PASSWORD_VIOLATION_SCORE=0
VERIFY_EMAIL_VIOLATION_SCOREintegerĐiểm số cho các vi phạm xác minh email.VERIFY_EMAIL_VIOLATION_SCORE=0
TOOL_CALL_VIOLATION_SCOREintegerĐiểm số cho các vi phạm gọi công cụ.TOOL_CALL_VIOLATION_SCORE=0
CONVO_ACCESS_VIOLATION_SCOREintegerĐiểm số cho các vi phạm truy cập hội thoại.CONVO_ACCESS_VIOLATION_SCORE=0

Lưu ý: Truy cập không qua trình duyệt và các yêu cầu mô hình bất hợp pháp hầu như luôn là hành vi độc hại vì điều đó có nghĩa là một bên thứ ba đang cố gắng truy cập máy chủ thông qua một tập lệnh tự động.

Giới hạn tốc độ tin nhắn (theo người dùng & IP)

KeyTypeDescriptionExample
LIMIT_CONCURRENT_MESSAGESbooleanLiệu có giới hạn số lượng tin nhắn mà người dùng có thể gửi trong mỗi yêu cầu hay không.LIMIT_CONCURRENT_MESSAGES=true
CONCURRENT_MESSAGE_MAXintegerSố lượng tin nhắn tối đa mà một người dùng có thể gửi trong mỗi yêu cầu.CONCURRENT_MESSAGE_MAX=2

Bộ giới hạn

Lưu ý: Bạn có thể sử dụng cả hai bộ giới hạn, nhưng mặc định chỉ giới hạn theo IP.

Bộ giới hạn IP:
KeyTypeDescriptionExample
LIMIT_MESSAGE_IPbooleanLiệu có giới hạn số lượng tin nhắn mà một IP có thể gửi trong mỗi `MESSAGE_IP_WINDOW` hay không.LIMIT_MESSAGE_IP=true
MESSAGE_IP_MAXintegerSố lượng tin nhắn tối đa mà một IP có thể gửi trong mỗi `MESSAGE_IP_WINDOW`.MESSAGE_IP_MAX=40
MESSAGE_IP_WINDOWintegerTrong vài phút, xác định khoảng thời gian cho `MESSAGE_IP_MAX` tin nhắn.MESSAGE_IP_WINDOW=1
Giới hạn người dùng:
KeyTypeDescriptionExample
LIMIT_MESSAGE_USERbooleanLiệu có giới hạn số lượng tin nhắn mà người dùng có thể gửi trong mỗi `MESSAGE_USER_WINDOW` hay không.LIMIT_MESSAGE_USER=false
MESSAGE_USER_MAXintegerSố lượng tin nhắn tối đa mà một người dùng có thể gửi trong mỗi `MESSAGE_USER_WINDOW`.MESSAGE_USER_MAX=40
MESSAGE_USER_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho `MESSAGE_USER_MAX` tin nhắn.MESSAGE_USER_WINDOW=1

Giới hạn tốc độ nhập cuộc trò chuyện

Giới hạn tần suất người dùng có thể nhập cuộc trò chuyện để ngăn chặn hành vi lạm dụng.

Lưu ý: Bạn có thể sử dụng cả hai bộ giới hạn, nhưng mặc định chỉ giới hạn theo IP.

Bộ giới hạn IP:
KeyTypeDescriptionExample
LIMIT_IMPORT_IPbooleanLiệu có giới hạn số lượng nhập hội thoại mà một IP có thể thực hiện trong mỗi `IMPORT_IP_WINDOW` hay không.LIMIT_IMPORT_IP=true
IMPORT_IP_MAXintegerSố lượng nhập cuộc trò chuyện tối đa mà một IP có thể thực hiện trong mỗi `IMPORT_IP_WINDOW`.IMPORT_IP_MAX=100
IMPORT_IP_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho các lượt nhập `IMPORT_IP_MAX`.IMPORT_IP_WINDOW=1
Giới hạn người dùng:
KeyTypeDescriptionExample
LIMIT_IMPORT_USERbooleanLiệu có giới hạn số lượng nhập cuộc trò chuyện mà một người dùng có thể thực hiện trong mỗi `IMPORT_USER_WINDOW` hay không.LIMIT_IMPORT_USER=false
IMPORT_USER_MAXintegerSố lượng nhập cuộc trò chuyện tối đa mà một người dùng có thể thực hiện trong mỗi `IMPORT_USER_WINDOW`.IMPORT_USER_MAX=50
IMPORT_USER_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho các lượt nhập `IMPORT_USER_MAX`.IMPORT_USER_WINDOW=1

Giới hạn tốc độ phân nhánh hội thoại

Giới hạn tần suất người dùng có thể fork các cuộc trò chuyện để ngăn chặn hành vi lạm dụng.

Lưu ý: Bạn có thể sử dụng cả hai bộ giới hạn, nhưng mặc định chỉ giới hạn theo IP.

Bộ giới hạn IP:
KeyTypeDescriptionExample
LIMIT_FORK_IPbooleanLiệu có giới hạn số lượng nhánh hội thoại mà một IP có thể tạo trong mỗi `FORK_IP_WINDOW` hay không.LIMIT_FORK_IP=true
FORK_IP_MAXintegerSố lượng nhánh hội thoại tối đa mà một IP có thể tạo trong mỗi `FORK_IP_WINDOW`.FORK_IP_MAX=30
FORK_IP_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho các fork `FORK_IP_MAX`.FORK_IP_WINDOW=1
Giới hạn người dùng:
KeyTypeDescriptionExample
LIMIT_FORK_USERbooleanLiệu có giới hạn số lượng nhánh hội thoại mà một người dùng có thể tạo trong mỗi `FORK_USER_WINDOW` hay không.LIMIT_FORK_USER=false
FORK_USER_MAXintegerSố lượng nhánh hội thoại tối đa mà một người dùng có thể tạo trong mỗi `FORK_USER_WINDOW`.FORK_USER_MAX=7
FORK_USER_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho các fork `FORK_USER_MAX`.FORK_USER_WINDOW=1

Giới hạn tốc độ tải lên tệp

Giới hạn tần suất người dùng có thể tải tệp lên để ngăn chặn hành vi lạm dụng.

Lưu ý: Các thiết lập này cũng có thể được cấu hình thông qua librechat.yaml trong phần rateLimits.fileUploads.

Bộ giới hạn IP:
KeyTypeDescriptionExample
FILE_UPLOAD_IP_MAXintegerSố lượng tệp tải lên tối đa trên mỗi IP trong `FILE_UPLOAD_IP_WINDOW`. Mặc định: 100.# FILE_UPLOAD_IP_MAX=100
FILE_UPLOAD_IP_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho `FILE_UPLOAD_IP_MAX`. Mặc định: 15.# FILE_UPLOAD_IP_WINDOW=15
Giới hạn người dùng:
KeyTypeDescriptionExample
FILE_UPLOAD_USER_MAXintegerSố lượng tệp tối đa mỗi người dùng trong `FILE_UPLOAD_USER_WINDOW`. Mặc định: 50.# FILE_UPLOAD_USER_MAX=50
FILE_UPLOAD_USER_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho `FILE_UPLOAD_USER_MAX`. Mặc định: 15.# FILE_UPLOAD_USER_WINDOW=15

Giới hạn tốc độ TTS (Text-to-Speech)

Giới hạn tần suất người dùng có thể sử dụng tính năng Chuyển văn bản thành giọng nói (Text-to-Speech) để ngăn chặn hành vi lạm dụng.

Lưu ý: Các tùy chọn này cũng có thể được cấu hình thông qua librechat.yaml trong phần rateLimits.tts.

Bộ giới hạn IP:
KeyTypeDescriptionExample
TTS_IP_MAXintegerSố lượng yêu cầu TTS tối đa trên mỗi IP trong `TTS_IP_WINDOW`. Mặc định: 100.# TTS_IP_MAX=100
TTS_IP_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho `TTS_IP_MAX`. Mặc định: 1.# TTS_IP_WINDOW=1
Giới hạn người dùng:
KeyTypeDescriptionExample
TTS_USER_MAXintegerSố lượng yêu cầu TTS tối đa cho mỗi người dùng trong `TTS_USER_WINDOW`. Mặc định: 50.# TTS_USER_MAX=50
TTS_USER_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho `TTS_USER_MAX`. Mặc định: 1.# TTS_USER_WINDOW=1

Giới hạn tốc độ STT (Speech-to-Text)

Giới hạn tần suất người dùng có thể sử dụng Speech-to-Text để ngăn chặn hành vi lạm dụng.

Lưu ý: Các cài đặt này cũng có thể được cấu hình thông qua librechat.yaml trong phần rateLimits.stt.

Bộ giới hạn IP:
KeyTypeDescriptionExample
STT_IP_MAXintegerSố lượng yêu cầu STT tối đa trên mỗi IP trong `STT_IP_WINDOW`. Mặc định: 100.# STT_IP_MAX=100
STT_IP_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho `STT_IP_MAX`. Mặc định: 1.# STT_IP_WINDOW=1
Giới hạn người dùng:
KeyTypeDescriptionExample
STT_USER_MAXintegerSố yêu cầu STT tối đa mỗi người dùng trong `STT_USER_WINDOW`. Mặc định: 50.# STT_USER_MAX=50
STT_USER_WINDOWintegerTính bằng phút, xác định khoảng thời gian cho `STT_USER_MAX`. Mặc định: 1.# STT_USER_WINDOW=1

Số dư

Tính năng sau đây cho phép quản lý số dư người dùng trong các endpoint của hệ thống. Bạn có tùy chọn thêm số dư theo cách thủ công hoặc có thể chọn triển khai một hệ thống tự động tích lũy số dư cho người dùng. Nếu một số dư ban đầu cụ thể được xác định trong cấu hình, các token sẽ được tự động cộng vào số dư của người dùng khi họ đăng ký.

xem: Sử dụng Token

KeyTypeDescriptionExample
CHECK_BALANCEbooleanBật số dư tín dụng token cho các endpoint OpenAI/Plugins.CHECK_BALANCE=false
START_BALANCEintegerNếu giá trị này được thiết lập, các token sẽ được cộng vào số dư của người dùng sau khi đăng ký.START_BALANCE=20000

Quản lý số dư

  • Chạy npm run add-balance để thêm số dư theo cách thủ công.
    • Bạn cũng có thể chỉ định email và số lượng token credit cần thêm, ví dụ: npm run add-balance [email protected] 1000
  • Chạy npm run set-balance để đặt số dư theo cách thủ công, tương tự như add-balance.
  • Chạy npm run list-balances để liệt kê số dư của mọi người dùng.

Lưu ý: 1000 credits = $0.001 (1 mill USD)

Đăng ký và Đăng nhập

xem: Authentication System

Màn hình đăng ký người dùngMàn hình đăng ký người dùng

Làm rõ về tệp cấu hình

Tất cả các cài đặt xác thực trong phần này cần được cấu hình trong tệp .env của bạn, không phải trong tệp librechat.yaml hoặc docker-compose.override.yml. Tệp docker-compose.override.yml chỉ được sử dụng để mount các volume và thiết lập các biến môi trường cho Docker, trong khi tệp librechat.yaml được sử dụng cho các endpoint tùy chỉnh và các cài đặt ứng dụng khác.

  • Cài đặt chung:
KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINbooleanBật hoặc tắt CHỈ đăng nhập bằng email.ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONbooleanBật hoặc tắt tính năng đăng ký bằng Email cho người dùng mới.ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINbooleanCho phép người dùng kết nối với LibreChat bằng nhiều mạng xã hội khác nhau.ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONbooleanBật hoặc tắt tính năng đăng ký người dùng mới bằng các mạng xã hội khác nhau.ALLOW_SOCIAL_REGISTRATION=false
ALLOW_PASSWORD_RESETbooleanCho phép hoặc vô hiệu hóa khả năng người dùng tự đặt lại mật khẩu của họALLOW_PASSWORD_RESET=false
ALLOW_ACCOUNT_DELETIONbooleanBật hoặc tắt khả năng người dùng tự xóa tài khoản của họ. Mặc định được bật nếu bị bỏ qua/được chú thích.ALLOW_ACCOUNT_DELETION=true
ALLOW_UNVERIFIED_EMAIL_LOGINbooleanĐặt thành true để cho phép người dùng đăng nhập mà không cần xác minh địa chỉ email. Nếu đặt thành false, người dùng sẽ bắt buộc phải xác minh email trước khi đăng nhập.ALLOW_UNVERIFIED_EMAIL_LOGIN=true
MIN_PASSWORD_LENGTHnumberĐộ dài mật khẩu tối thiểu để xác thực người dùng. Khi sử dụng xác thực LDAP, bạn có thể muốn đặt giá trị này thành 1 để bỏ qua xác thực mật khẩu cục bộ, vì các máy chủ LDAP tự quản lý chính sách mật khẩu của riêng chúng.MIN_PASSWORD_LENGTH=8

Mẹo nhanh: Ngay cả khi đã tắt tính năng đăng ký, bạn vẫn có thể thêm người dùng trực tiếp vào cơ sở dữ liệu bằng cách sử dụng npm run create-user.

Mẹo nhanh: Khi đã tắt tính năng đăng ký, bạn có thể xóa người dùng bằng lệnh npm run delete-user [email protected].

  • Cài đặt Phiên làm việc (Session) và Token làm mới (Refresh Token):
KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)Thời gian hết hạn phiên.SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (milliseconds)Thời gian hết hạn của refresh token.REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7
SESSION_COOKIE_SECUREbooleanGhi đè thuộc tính Secure cho cookie phiên/xác thực. Để trống để sử dụng phương pháp mặc định của NODE_ENV/DOMAIN_SERVER.# SESSION_COOKIE_SECURE=false

Bạn nên sử dụng các giá trị bảo mật mới. Các ví dụ được đưa ra là các khóa 32-byte (64 ký tự ở dạng hex). Sử dụng replit này để tạo nhanh một số khóa: JWT Keys

KeyTypeDescriptionExample
JWT_SECRETstring (hex)Khóa bí mật JWT.JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (hex)Khóa bí mật làm mới JWT.JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418

Đăng nhập qua mạng xã hội

Để biết thêm chi tiết: OAuth2-OIDC

Xác thực Apple

Để biết thêm thông tin: Apple Authentication

KeyTypeDescriptionExample
APPLE_CLIENT_IDstringID Dịch vụ Apple của bạn (ví dụ: com.yourdomain.librechat.services).APPLE_CLIENT_ID=com.yourdomain.librechat.services
APPLE_TEAM_IDstringID Nhóm Nhà phát triển Apple của bạn.APPLE_TEAM_ID=YOUR_TEAM_ID
APPLE_KEY_IDstringID khóa Apple của bạn từ khóa đã tải xuống.APPLE_KEY_ID=YOUR_KEY_ID
APPLE_PRIVATE_KEY_PATHstringĐường dẫn tuyệt đối đến tệp .p8 đã tải xuống của bạn.APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8
APPLE_CALLBACK_URLstringURL callback cho xác thực Apple.APPLE_CALLBACK_URL=/oauth/apple/callback

Xác thực Discord

Để biết thêm thông tin: Discord

KeyTypeDescriptionExample
DISCORD_CLIENT_IDstringID khách hàng Discord của bạn.DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRETstringClient secret Discord của bạn.DISCORD_CLIENT_SECRET=
DISCORD_CALLBACK_URLstringURL callback cho xác thực Discord.DISCORD_CALLBACK_URL=/oauth/discord/callback

Xác thực Facebook

Để biết thêm thông tin: Xác thực Facebook

KeyTypeDescriptionExample
FACEBOOK_CLIENT_IDstringID khách hàng Facebook của bạn.FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRETstringClient secret Facebook của bạn.FACEBOOK_CLIENT_SECRET=
FACEBOOK_CALLBACK_URLstringURL callback cho xác thực Facebook.FACEBOOK_CALLBACK_URL=/oauth/facebook/callback

Xác thực GitHub

Để biết thêm thông tin: GitHub Authentication

KeyTypeDescriptionExample
GITHUB_CLIENT_IDstringID khách hàng GitHub của bạn.GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRETstringClient secret GitHub của bạn.GITHUB_CLIENT_SECRET=
GITHUB_CALLBACK_URLstringURL callback cho xác thực GitHub.GITHUB_CALLBACK_URL=/oauth/github/callback
GITHUB_ENTERPRISE_BASE_URLstringTùy chọn: URL cơ sở cho instance GitHub Enterprise của bạn.GITHUB_ENTERPRISE_BASE_URL=
GITHUB_ENTERPRISE_USER_AGENTstringTùy chọn: User agent cho các yêu cầu GitHub Enterprise.GITHUB_ENTERPRISE_USER_AGENT=

Xác thực Google

Để biết thêm thông tin: Google Authentication

KeyTypeDescriptionExample
GOOGLE_CLIENT_IDstringID khách hàng Google của bạn.GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRETstringMã bí mật khách hàng Google của bạn.GOOGLE_CLIENT_SECRET=
GOOGLE_CALLBACK_URLstringURL callback cho xác thực Google.GOOGLE_CALLBACK_URL=/oauth/google/callback

OpenID Connect

Để biết thêm thông tin:

KeyTypeDescriptionExample
OPENID_CLIENT_IDstringID khách hàng OpenID của bạn.OPENID_CLIENT_ID=
OPENID_CLIENT_SECRETstringClient secret OpenID của bạn.OPENID_CLIENT_SECRET=
OPENID_ISSUERstringURL của nhà cung cấp OpenID.OPENID_ISSUER=
OPENID_SESSION_SECRETstringKhóa bí mật cho lưu trữ phiên OpenID.OPENID_SESSION_SECRET=
OPENID_SCOPEstringPhạm vi OpenID.OPENID_SCOPE="openid profile email"
OPENID_CALLBACK_URLstringURL callback cho xác thực OpenID.OPENID_CALLBACK_URL=/oauth/openid/callback
OPENID_AUDIENCEstringGiá trị audience cho các yêu cầu xác thực và ủy quyền OpenID JWT. Các giá trị được phân tách bằng dấu phẩy được chấp nhận cho xác thực JWT; các yêu cầu ủy quyền sử dụng giá trị khác rỗng đầu tiên. Bắt buộc đối với Auth0 khi sử dụng OPENID_REUSE_TOKENS=true để nhận JWT access token thay vì opaque token.OPENID_AUDIENCE=https://api.librechat.com
OPENID_REQUIRED_ROLEstring(Các) vai trò bắt buộc để xác thực. Hỗ trợ một vai trò đơn lẻ hoặc nhiều vai trò được phân tách bằng dấu phẩy. Khi chỉ định nhiều vai trò, người dùng cần có BẤT KỲ vai trò nào trong số đó (logic HOẶC).OPENID_REQUIRED_ROLE=admin or OPENID_REQUIRED_ROLE=role1,role2,admin
OPENID_REQUIRED_ROLE_TOKEN_KINDstringLoại token cho xác thực vai trò bắt buộc.OPENID_REQUIRED_ROLE_TOKEN_KIND=
OPENID_REQUIRED_ROLE_PARAMETER_PATHstringĐường dẫn tham số để xác thực vai trò bắt buộc.OPENID_REQUIRED_ROLE_PARAMETER_PATH=
OPENID_ADMIN_ROLEstringVai trò mà người dùng cần có để trở thành quản trị viên trong LibreChat.OPENID_ADMIN_ROLE=
OPENID_ADMIN_ROLE_TOKEN_KINDstringNguồn thông tin để xác minh vai trò quản trị viên. Các giá trị có thể là: access, id hoặc userinfo.OPENID_ADMIN_ROLE_TOKEN_KIND=
OPENID_ADMIN_ROLE_PARAMETER_PATHstringĐường dẫn tham số để xác thực vai trò bắt buộc.OPENID_ADMIN_ROLE_PARAMETER_PATH=
OPENID_ROLE_SYNC_ENABLEDbooleanBật tính năng đồng bộ vai trò OpenID chung cho các vai trò không phải quản trị viên. Không thể gán quyền ADMIN thông qua đồng bộ vai trò; hãy sử dụng OPENID_ADMIN_ROLE để nâng quyền quản trị viên.OPENID_ROLE_SYNC_ENABLED=false
OPENID_ROLE_SYNC_API_ENABLEDbooleanBật các trình hỗ trợ đồng bộ vai trò dựa trên API. Yêu cầu OPENID_ROLE_SYNC_ENABLED=true.OPENID_ROLE_SYNC_API_ENABLED=false
OPENID_ROLE_SYNC_SOURCEstringNguồn token cho xác nhận quyền (role claim). Phải là một trong các giá trị: access, id, userinfo. Mặc định: id.OPENID_ROLE_SYNC_SOURCE=id
OPENID_ROLE_SYNC_CLAIMstringĐường dẫn xác nhận (claim path) chứa các vai trò hoặc nhóm của nhà cung cấp. Bắt buộc khi tính năng đồng bộ vai trò được bật.OPENID_ROLE_SYNC_CLAIM=
OPENID_ROLE_SYNC_ROLE_PRIORITYstringCác vai trò LibreChat được phân tách bằng dấu phẩy, sắp xếp từ quan trọng nhất đến ít quan trọng nhất. Vai trò khớp đầu tiên sẽ được chỉ định.OPENID_ROLE_SYNC_ROLE_PRIORITY=Support,User
OPENID_ROLE_SYNC_FALLBACK_ROLEstringVai trò LibreChat được chỉ định khi không có vai trò ưu tiên nào khớp. Vai trò dự phòng sẽ có quyền quyết định khi được cấu hình.OPENID_ROLE_SYNC_FALLBACK_ROLE=USER
OPENID_BUTTON_LABELstringNhãn cho nút đăng nhập OpenID.OPENID_BUTTON_LABEL=
OPENID_IMAGE_URLstringURL của hình ảnh nút đăng nhập OpenID.OPENID_IMAGE_URL=
OPENID_USE_END_SESSION_ENDPOINTstringLiệu có sử dụng Issuer End Session Endpoint làm Logout Redirect hay khôngOPENID_USE_END_SESSION_ENDPOINT=TRUE
OPENID_MAX_LOGOUT_URL_LENGTHnumberĐộ dài URL đăng xuất tối đa trước khi sử dụng logout_hint thay vì id_token_hint. Mặc định: 2000.# OPENID_MAX_LOGOUT_URL_LENGTH=2000
OPENID_AUTO_REDIRECTbooleanLiệu có tự động chuyển hướng đến nhà cung cấp OpenID hay không.OPENID_AUTO_REDIRECT=true
OPENID_USE_PKCEbooleanSử dụng PKCE (Proof Key for Code Exchange) để xác thực OpenID. Đối với các client công khai không có client secret, hãy để trống OPENID_CLIENT_SECRET và đặt giá trị này thành true.# OPENID_USE_PKCE=true
OPENID_POST_LOGOUT_REDIRECT_URIstringURI chuyển hướng sau khi đăng xuất OpenID. Mặc định là ${DOMAIN_CLIENT}/login.# OPENID_POST_LOGOUT_REDIRECT_URI=
OPENID_CLOCK_TOLERANCEnumberDung sai đồng hồ tính bằng giây cho việc xác thực token. Mặc định: 300.# OPENID_CLOCK_TOLERANCE=300
OPENID_GENERATE_NONCEbooleanBuộc OpenID client tạo tham số nonce. Yêu cầu bởi một số nhà cung cấp danh tính như AWS Cognito (đặc biệt là với liên kết) và Authentik.OPENID_GENERATE_NONCE=true
DEBUG_OPENID_REQUESTSbooleanBật tính năng ghi nhật ký chi tiết các tiêu đề yêu cầu OpenID. Khi bị vô hiệu hóa (mặc định), chỉ các URL yêu cầu được ghi lại ở cấp độ gỡ lỗi. Khi được bật, các tiêu đề yêu cầu cũng được ghi lại (với dữ liệu nhạy cảm được che giấu) để gỡ lỗi sâu hơn các vấn đề xác thực.DEBUG_OPENID_REQUESTS=false
OPENID_USERNAME_CLAIMstringThuộc tính thông tin người dùng từ nhà cung cấp OpenID để lưu trữ làm tên người dùng.OPENID_USERNAME_CLAIM=
OPENID_NAME_CLAIMstringThuộc tính thông tin người dùng từ nhà cung cấp OpenID để lưu làm tên hiển thị của người dùng.OPENID_NAME_CLAIM=
OPENID_EMAIL_CLAIMstringClaim thông tin người dùng được sử dụng làm email/định danh để khớp người dùng (ví dụ: "upn" cho Entra ID). Khi không được thiết lập, mặc định sẽ là: email → preferred_username → upn.OPENID_EMAIL_CLAIM=

Đồng bộ vai trò OpenID

OPENID_ROLE_SYNC_CLAIM là bắt buộc khi tính năng đồng bộ vai trò được bật. OPENID_ROLE_SYNC_API_ENABLED=true cũng yêu cầu OPENID_ROLE_SYNC_ENABLED=true. Đồng bộ vai trò chung không thể gán quyền ADMIN; hãy sử dụng OPENID_ADMIN_ROLE để nâng quyền quản trị viên.

Tái sử dụng Token OpenID Connect

LibreChat hỗ trợ việc tái sử dụng access token và refresh token được cấp bởi nhà cung cấp OpenID Connect của bạn (như Azure Entra ID hoặc Auth0) để quản lý trạng thái xác thực người dùng. Khi tính năng này được kích hoạt, refresh token được chuyển cho người dùng dưới dạng cookie sẽ do nhà cung cấp OpenID của bạn cấp thay vì LibreChat.

KeyTypeDescriptionExample
OPENID_REUSE_TOKENSbooleanCho phép sử dụng lại token của nhà cung cấp OpenID để quản lý phiên làm việc.OPENID_REUSE_TOKENS=false
OPENID_SCOPEstringDanh sách các phạm vi OpenID được phân tách bằng dấu cách. Phải bao gồm offline_access để tái sử dụng token.OPENID_SCOPE=api://librechat/.default openid profile email offline_access
OPENID_AUDIENCEstringGiá trị Audience cho các yêu cầu xác thực và ủy quyền OpenID JWT. Các giá trị được phân tách bằng dấu phẩy được chấp nhận cho xác thực JWT; các yêu cầu ủy quyền sử dụng giá trị khác rỗng đầu tiên. Bắt buộc đối với Auth0 khi OPENID_REUSE_TOKENS=true. Xem ghi chú trong phần OpenID chính ở trên.OPENID_AUDIENCE=https://api.librechat.com
OPENID_REUSE_MAX_SESSION_AGE_MSnumberThời gian tối đa một token phiên OpenID được tái sử dụng trước khi LibreChat buộc làm mới IdP. Mặc định: 900000 ms / 15 phút.OPENID_REUSE_MAX_SESSION_AGE_MS=900000
OPENID_JWKS_URL_CACHE_ENABLEDbooleanBật tính năng lưu bộ nhớ đệm cho kết quả xác minh khóa ký.OPENID_JWKS_URL_CACHE_ENABLED=true
OPENID_JWKS_URL_CACHE_TIMEnumberThời gian lưu bộ nhớ đệm tính bằng mili giây (mặc định: 600000 ms / 10 phút).OPENID_JWKS_URL_CACHE_TIME=600000
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIREDbooleanBật luồng on-behalf-of cho thông tin người dùng.OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
OPENID_ON_BEHALF_FLOW_USERINFO_SCOPEstringPhạm vi cho thông tin người dùng trong luồng on-behalf-of.OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read
OPENID_USE_END_SESSION_ENDPOINTbooleanCho phép sử dụng endpoint end session để đăng xuất.OPENID_USE_END_SESSION_ENDPOINT=true
OPENID_MAX_LOGOUT_URL_LENGTHnumberĐộ dài tối đa của URL đăng xuất tính bằng ký tự trước khi chuyển sang logout_hint. Hữu ích để ngăn lỗi URI quá dài khi id_token_hint vượt quá giới hạn của máy chủ. Mặc định: 2000.OPENID_MAX_LOGOUT_URL_LENGTH=2000

OPENID_REUSE_MAX_SESSION_AGE_MS chấp nhận các biểu thức số học giống như SESSION_EXPIRY. Hãy tăng giá trị này hướng tới thời hạn access-token của IdP khi nhà cung cấp của bạn thu hồi access-token trước đó khi làm mới, để các trình tiêu thụ hạ nguồn như các máy chủ MCP có thể hoàn tất việc sử dụng bearer token vẫn còn hiệu lực.

Lưu ý

Để biết các bước cấu hình chi tiết và các điều kiện tiên quyết, hãy xem Re-use OpenID Tokens for Login Session.

Tích hợp Microsoft Graph API / Entra ID

Khi sử dụng Azure Entra ID (trước đây là Azure AD) làm nhà cung cấp OpenID của bạn, bạn có thể bật thêm các tính năng Microsoft Graph API để nâng cao khả năng tìm kiếm người dùng và nhóm trong hệ thống phân quyền và chia sẻ.

KeyTypeDescriptionExample
USE_ENTRA_ID_FOR_PEOPLE_SEARCHbooleanBật tính năng tích hợp tìm kiếm người dùng Entra ID trong hệ thống quyền/chia sẻ. Khi được bật, trình chọn người dùng sẽ tìm kiếm cả trong cơ sở dữ liệu cục bộ và Entra ID.USE_ENTRA_ID_FOR_PEOPLE_SEARCH=false
ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERSbooleanKhi được bật, những người sở hữu nhóm Entra ID sẽ được coi là thành viên của nhóm đó.ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=false
OPENID_GRAPH_SCOPESstringCác phạm vi Microsoft Graph API cần thiết để tìm kiếm người dùng/nhóm. Các phạm vi mặc định cung cấp quyền truy cập vào hồ sơ người dùng và tư cách thành viên nhóm.OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All

Các điều kiện tiên quyết quan trọng

  • Bạn phải cấu hình Azure Entra ID làm nhà cung cấp OpenID của mình - Bắt buộc phải bật tính năng sử dụng lại mã thông báo OpenID (OPENID_REUSE_TOKENS=true) - tính năng này sẽ không hoạt động nếu không có nó - Đăng ký ứng dụng Azure của bạn phải có các quyền Microsoft Graph API thích hợp - Đối với chức năng tìm kiếm nhóm, có thể cần sự đồng ý của quản trị viên đối với một số phạm vi Graph API nhất định
Tích hợp SharePoint

LibreChat hỗ trợ tích hợp trực tiếp với SharePoint Online và OneDrive for Business, cho phép người dùng chọn và đính kèm tệp từ các thư viện SharePoint của họ ngay trong các cuộc trò chuyện. Tính năng doanh nghiệp này tận dụng xác thực Azure Entra ID hiện có.

KeyTypeDescriptionExample
ENABLE_SHAREPOINT_FILEPICKERbooleanBật trình chọn tệp SharePoint trong bảng trò chuyện và bảng tác nhân. Khi được bật, sẽ thêm tùy chọn "Từ SharePoint" vào menu đính kèm tệp.ENABLE_SHAREPOINT_FILEPICKER=true
SHAREPOINT_BASE_URLstringURL cơ sở của SharePoint tenant. Bắt buộc khi tích hợp SharePoint được bật.SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com
SHAREPOINT_PICKER_SHAREPOINT_SCOPEstringPhạm vi OAuth dành riêng cho SharePoint để chọn tệp. Được sử dụng để xác thực khi mở giao diện chọn tệp SharePoint.SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read
SHAREPOINT_PICKER_GRAPH_SCOPEstringPhạm vi Microsoft Graph API để tải xuống tệp. Được sử dụng để tải tệp từ SharePoint sau khi chọn.SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All

Các yêu cầu quan trọng

Tất cả các mục sau đây phải được cấu hình để tích hợp SharePoint hoạt động:

  • Xác thực Azure Entra ID phải được cấu hình đầy đủ
  • OPENID_REUSE_TOKENS=true là bắt buộc (sử dụng luồng token on-behalf-of)
  • OPENID_SCOPE phải bao gồm phạm vi API ứng dụng LibreChat của bạn, ví dụ: api://<client-id>/access_as_user
  • OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true là bắt buộc khi sử dụng phạm vi app-audience đó với Azure Entra ID
  • Ứng dụng Azure của bạn phải có quyền truy cập SharePoint và Graph API
  • Đăng ký ứng dụng Azure của bạn phải hiển thị phạm vi LibreChat API được sử dụng trong OPENID_SCOPE
  • Tất cả bốn biến môi trường SharePoint phải được thiết lập
  • HTTPS là bắt buộc trong các môi trường production

Khả năng của tính năng

Khi được bật, người dùng có thể:

  • Truy cập tệp từ các thư viện tài liệu SharePoint và OneDrive for Business
  • Chọn nhiều tệp cùng lúc (mặc định tối đa: 10 tệp)
  • Xem tiến trình tải xuống theo thời gian thực
    • Các tệp được tải xuống và đính kèm vào cuộc trò chuyện giống như các tệp tải lên thông thường

Để biết hướng dẫn cấu hình SharePoint chi tiết, hãy xem: SharePoint Integration Guide

SAML

Để biết thêm thông tin:

Loại trừ lẫn nhau giữa OpenID và SAML

Nếu OpenID được bật, xác thực SAML sẽ tự động bị vô hiệu hóa.

Chỉ một phương thức xác thực có thể được kích hoạt tại một thời điểm.

KeyTypeDescriptionExample
SAML_ENTRY_POINTstringURL điểm truy cập của nhà cung cấp danh tính (IdP) SAML.SAML_ENTRY_POINT=
SAML_ISSUERstringID thực thể của nhà cung cấp dịch vụ (SP) SAML.SAML_ISSUER=
SAML_CERTstringChứng chỉ ký SAML, được cung cấp dưới dạng đường dẫn tệp hoặc chuỗi PEM một dòng.SAML_CERT=
SAML_CALLBACK_URLstringURL callback cho xác thực SAML.SAML_CALLBACK_URL=/oauth/saml/callback
SAML_SESSION_SECRETstringBí mật cho lưu trữ phiên SAML.SAML_SESSION_SECRET=
SAML_EMAIL_CLAIMstring<Optional>: Thuộc tính trong xác nhận SAML chứa email người dùng. (mặc định: email)SAML_EMAIL_CLAIM=
SAML_USERNAME_CLAIMstring<Optional>: Thuộc tính trong xác nhận SAML chứa tên người dùng. (mặc định: username)SAML_USERNAME_CLAIM=
SAML_GIVEN_NAME_CLAIMstring<Optional>: Thuộc tính trong xác nhận SAML chứa tên riêng. (mặc định: given_name)SAML_GIVEN_NAME_CLAIM=
SAML_FAMILY_NAME_CLAIMstring<Optional>: Thuộc tính trong xác nhận SAML chứa họ của người dùng. (mặc định: family_name)SAML_FAMILY_NAME_CLAIM=
SAML_PICTURE_CLAIMstring<Optional>: Thuộc tính trong xác nhận SAML chứa URL ảnh đại diện. (mặc định: picture)SAML_PICTURE_CLAIM=
SAML_NAME_CLAIMstring<Optional>: Thuộc tính trong xác nhận SAML chứa tên đầy đủ.SAML_NAME_CLAIM=
SAML_BUTTON_LABELstring<Optional>: Nhãn cho nút đăng nhập SAML.SAML_BUTTON_LABEL=
SAML_IMAGE_URLstring<Optional>: URL của hình ảnh nút đăng nhập SAML.SAML_IMAGE_URL=
SAML_USE_AUTHN_RESPONSE_SIGNEDboolean<Optional>: Nếu là "true", sẽ ký toàn bộ SAML Response. Nếu không, chỉ Assertion được ký (mặc định).SAML_USE_AUTHN_RESPONSE_SIGNED=

Xác thực LDAP/AD

Để biết thêm thông tin: Xác thực LDAP/AD

KeyTypeDescriptionExample
LDAP_URLstringURL máy chủ LDAP.LDAP_URL=ldap://localhost:389
LDAP_BIND_DNstringDN liên kếtLDAP_BIND_DN=cn=root
LDAP_BIND_CREDENTIALSstringMật khẩu cho bindDNLDAP_BIND_CREDENTIALS=password
LDAP_USER_SEARCH_BASEstringCơ sở tìm kiếm người dùng LDAPLDAP_USER_SEARCH_BASE=o=users,o=example.com
LDAP_SEARCH_FILTERstringBộ lọc tìm kiếm LDAPLDAP_SEARCH_FILTER=mail={{username}}
LDAP_CA_CERT_PATHstringĐường dẫn chứng chỉ CA.LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt
LDAP_TLS_REJECT_UNAUTHORIZEDstringXác thực TLS LDAPLDAP_TLS_REJECT_UNAUTHORIZED=true
LDAP_STARTTLSstringBật LDAP StartTLS để nâng cấp kết nối lên TLS. Đặt thành true để bật tính năng này.LDAP_STARTTLS=true
LDAP_LOGIN_USES_USERNAMEbooleanSử dụng tên người dùng thay vì email để đăng nhập LDAP.# LDAP_LOGIN_USES_USERNAME=true
LDAP_IDstringThuộc tính LDAP cho ID người dùng duy nhất. Mặc định: uid hoặc sAMAccountName, mail.# LDAP_ID=uid
LDAP_USERNAMEstringThuộc tính LDAP cho tên người dùng. Mặc định: givenName hoặc mail.# LDAP_USERNAME=givenName
LDAP_EMAILstringThuộc tính LDAP cho email. Mặc định: mail.# LDAP_EMAIL=userPrincipalName
LDAP_FULL_NAMEstring(Các) thuộc tính LDAP cho tên đầy đủ. Có thể phân tách bằng dấu phẩy. Mặc định: givenName + surname.# LDAP_FULL_NAME=givenName,surname

Đặt lại mật khẩu

Email được sử dụng để xác minh tài khoản và đặt lại mật khẩu. LibreChat hỗ trợ cả API Mailgun và các dịch vụ SMTP truyền thống. Xem: Email setup

Lưu ý quan trọng: Bạn phải cấu hình Mailgun (được khuyến nghị cho các máy chủ chặn SMTP) hoặc SMTP để email hoạt động.

Cảnh báo: Việc không thiết lập các giá trị hợp lệ cho Mailgun hoặc SMTP sẽ khiến LibreChat sử dụng tính năng đặt lại mật khẩu không bảo mật!

Mailgun đặc biệt hữu ích cho các triển khai trên máy chủ chặn cổng SMTP. Khi cả MAILGUN_API_KEYMAILGUN_DOMAIN đều được thiết lập, LibreChat sẽ sử dụng Mailgun thay vì SMTP.

KeyTypeDescriptionExample
MAILGUN_API_KEYstringKhóa API Mailgun của bạn (bắt buộc đối với Mailgun).MAILGUN_API_KEY=
MAILGUN_DOMAINstringTên miền Mailgun của bạn (bắt buộc đối với Mailgun).MAILGUN_DOMAIN=mg.yourdomain.com
MAILGUN_HOSTstringMáy chủ API Mailgun tùy chỉnh (tùy chọn). Sử dụng https://api.eu.mailgun.net cho khu vực EU.MAILGUN_HOST=https://api.mailgun.net
EMAIL_FROMstringĐịa chỉ email gửi. Bắt buộc.[email protected]
EMAIL_FROM_NAMEstringTên người gửi (mặc định là APP_TITLE nếu không được thiết lập).EMAIL_FROM_NAME=

Cấu hình SMTP

Nếu Mailgun không được cấu hình, LibreChat sẽ chuyển sang sử dụng các thiết lập SMTP.

Cảnh báo: Nếu sử dụng EMAIL_SERVICE, đừng thiết lập các tham số kết nối mở rộng: HOST, PORT, ENCRYPTION, ENCRYPTION_HOSTNAME, ALLOW_SELFSIGNED.

Xem: nodemailer well-known-services

KeyTypeDescriptionExample
EMAIL_SERVICEstringDịch vụ email (ví dụ: Gmail, Outlook).EMAIL_SERVICE=
EMAIL_HOSTstringMáy chủ mail host.EMAIL_HOST=
EMAIL_PORTnumberCổng máy chủ thư.EMAIL_PORT=25
EMAIL_ENCRYPTIONstringPhương thức mã hóa (starttls, tls, v.v.).EMAIL_ENCRYPTION=
EMAIL_ENCRYPTION_HOSTNAMEstringHostname để mã hóa.EMAIL_ENCRYPTION_HOSTNAME=
EMAIL_ALLOW_SELFSIGNEDbooleanCho phép chứng chỉ tự ký.EMAIL_ALLOW_SELFSIGNED=
EMAIL_USERNAMEstringTên người dùng để xác thực.EMAIL_USERNAME=
EMAIL_PASSWORDstringMật khẩu để xác thực.EMAIL_PASSWORD=
EMAIL_FROM_NAMEstringTên người gửiEMAIL_FROM_NAME=
EMAIL_FROMstringĐịa chỉ email gửi. Bắt buộc.[email protected]

Firebase CDN

Xem: Cấu hình Firebase CDN

Quan trọng

  • Nếu bạn đang sử dụng Firebase làm chiến lược lưu trữ tệp của mình, hãy đặt fileStrategy hoặc fileStrategies thành firebase trong tệp cấu hình librechat.yaml của bạn. Để biết thêm thông tin về cách cấu hình tệp librechat.yaml, vui lòng tham khảo Hướng dẫn Cấu hình YAML: Custom Endpoints & Configuration
KeyTypeDescriptionExample
FIREBASE_API_KEYstringKhóa API cho dự án Firebase của bạn.FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAINstringMiền Firebase Auth cho dự án của bạn.FIREBASE_AUTH_DOMAIN=
FIREBASE_PROJECT_IDstringID dự án Firebase của bạn.FIREBASE_PROJECT_ID=
FIREBASE_STORAGE_BUCKETstringFirebase Storage bucket cho dự án của bạn.FIREBASE_STORAGE_BUCKET=
FIREBASE_MESSAGING_SENDER_IDstringID người gửi Firebase Cloud Messaging.FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_APP_IDstringFirebase App ID cho dự án của bạn.FIREBASE_APP_ID=

Amazon S3 và CloudFront

Xem: Cấu hình Amazon S3CloudFront với S3

Quan trọng

Nếu bạn đang sử dụng S3 làm chiến lược lưu trữ tệp của mình, hãy thiết lập fileStrategy hoặc fileStrategies trong tệp cấu hình librechat.yaml của bạn. Nếu bạn sử dụng CloudFront, S3 vẫn là yêu cầu bắt buộc với vai trò là nguồn lưu trữ (storage origin).

KeyTypeDescriptionExample
AWS_ACCESS_KEY_IDstringID khóa truy cập người dùng IAM của bạn. Không bắt buộc nếu sử dụng IRSA.AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEYstringSecret access key cho người dùng IAM của bạn. Không bắt buộc nếu sử dụng IRSA.AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_REGIONstringKhu vực AWS nơi đặt bucket S3 của bạn.AWS_REGION=us-east-1
AWS_BUCKET_NAMEstringTên của S3 bucket dùng để lưu trữ tệp.AWS_BUCKET_NAME=your_bucket_name
AWS_ENDPOINT_URLstringURL endpoint AWS tùy chỉnh (tùy chọn). Dành cho các dịch vụ tương thích với S3. Bao gồm lược đồ URL, ví dụ như https://a7g8.da.idrivee2-32.com.# AWS_ENDPOINT_URL=https://your_endpoint_url
AWS_FORCE_PATH_STYLEbooleanĐặt thành true cho các nhà cung cấp tương thích với S3 yêu cầu URL kiểu đường dẫn (ví dụ: MinIO, Hetzner, Backblaze B2). Không cần thiết cho AWS S3. Mặc định: false.# AWS_FORCE_PATH_STYLE=false
CLOUDFRONT_KEY_PAIR_IDstringID cặp khóa công khai CloudFront. Bắt buộc đối với cookie đã ký và URL tải xuống CloudFront đã ký.# CLOUDFRONT_KEY_PAIR_ID=K1234567890ABC
CLOUDFRONT_PRIVATE_KEYstringKhóa riêng tư PEM của CloudFront. Bắt buộc đối với cookie đã ký và URL tải xuống CloudFront đã ký. Giữ nguyên các dòng mới của PEM khi chèn secret này.# CLOUDFRONT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"

Lưu ý: Đối với các triển khai Kubernetes (ví dụ: trên EKS), bạn có thể sử dụng IRSA (IAM Roles for Service Accounts) thay vì cung cấp thông tin xác thực rõ ràng. Trong trường hợp đó, chỉ cần AWS_REGIONAWS_BUCKET_NAME.

Azure Blob Storage CDN

Xem: Cấu hình Azure Blob Storage CDN

Quan trọng

Nếu bạn đang sử dụng Azure Blob Storage làm chiến lược lưu trữ tệp của mình, hãy đặt fileStrategy hoặc fileStrategies thành azure_blob trong tệp cấu hình librechat.yaml của bạn.

KeyTypeDescriptionExample
AZURE_STORAGE_CONNECTION_STRINGstringChuỗi kết nối Azure Blob Storage. Sử dụng cái này HOẶC AZURE_STORAGE_ACCOUNT_NAME cho Managed Identity.AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...
AZURE_STORAGE_ACCOUNT_NAMEstringTên tài khoản Azure Storage. Sử dụng cho xác thực Managed Identity (không đặt chuỗi kết nối).# AZURE_STORAGE_ACCOUNT_NAME=yourAccountName
AZURE_STORAGE_PUBLIC_ACCESSbooleanBật quyền truy cập công khai cho các blob. Mặc định: false.AZURE_STORAGE_PUBLIC_ACCESS=false
AZURE_CONTAINER_NAMEstringTên container cho lưu trữ tệp. Mặc định: files.AZURE_CONTAINER_NAME=files

Lưu ý: Sử dụng AZURE_STORAGE_CONNECTION_STRING (Tùy chọn A) hoặc AZURE_STORAGE_ACCOUNT_NAME với Managed Identity (Tùy chọn B), không sử dụng cả hai.

UI

Nút Trợ giúp và FAQ

KeyTypeDescriptionExample
HELP_AND_FAQ_URLstringURL Trợ giúp và FAQ. Nếu để trống hoặc bị chú thích, nút này sẽ được bật. Để tắt nút Trợ giúp và FAQ, hãy đặt thành "/".HELP_AND_FAQ_URL=https://librechat.ai

Hành vi:

Thiết lập các header Cache-Control cho các tệp tĩnh. Các cấu hình này chỉ được kích hoạt khi NODE_ENV được đặt thành production.

Việc thiết lập đúng các tiêu đề cache là rất quan trọng để tối ưu hóa hiệu suất và tính hiệu quả cho ứng dụng web của bạn. Bằng cách kiểm soát thời gian trình duyệt và CDN lưu trữ các bản sao tệp tĩnh, bạn có thể giảm đáng kể tải cho máy chủ, rút ngắn thời gian tải trang và cải thiện trải nghiệm người dùng tổng thể.

  • Bỏ ghi chú STATIC_CACHE_MAX_AGE để thay đổi max-age cho các tệp tĩnh. Theo mặc định, giá trị này được đặt là 4 tuần.
  • Bỏ ghi chú STATIC_CACHE_S_MAX_AGE để thay đổi s-maxage cho các tệp tĩnh. Theo mặc định, giá trị này được đặt là 1 tuần.
    • Đây là dành cho shared cache, được sử dụng bởi các CDN và proxy.
KeyTypeDescriptionExample
APP_TITLEstringTiêu đề ứng dụng.APP_TITLE=LibreChat
CUSTOM_FOOTERstringChân trang tùy chỉnh.# CUSTOM_FOOTER="My custom footer"
TEMP_CHAT_RETENTION_HOURSnumber**Không còn được dùng:** Thay vào đó hãy sử dụng `interface.temporaryChatRetention` trong librechat.yaml. Số giờ lưu giữ các cuộc trò chuyện tạm thời. Mặc định: 720 (30 ngày).# TEMP_CHAT_RETENTION_HOURS=168

Hành vi:

  • Bỏ chú thích CUSTOM_FOOTER để thêm chân trang tùy chỉnh.
  • Bỏ chú thích và để trống CUSTOM_FOOTER để xóa chân trang.
  • Giờ đây, bạn có thể thêm một hoặc nhiều liên kết vào giá trị CUSTOM_FOOTER bằng cách sử dụng định dạng sau: [Anchor text](URL). Mỗi liên kết cần được phân cách bằng dấu gạch đứng (|).

Ví dụ Markdown: CUSTOM_FOOTER=[Link 1](http://example1.com) | [Link 2](http://example2.com)

Mũ sinh nhật

KeyTypeDescriptionExample
SHOW_BIRTHDAY_ICONbooleanHiển thị biểu tượng mũ sinh nhật.# SHOW_BIRTHDAY_ICON=true

Hành vi:

  • Biểu tượng chiếc mũ sinh nhật sẽ tự động hiển thị vào ngày 11 tháng 2 (sinh nhật của LibreChat).
  • Đặt SHOW_BIRTHDAY_ICON thành false để tắt biểu tượng mũ sinh nhật.
  • Đặt SHOW_BIRTHDAY_ICON thành true để luôn hiển thị biểu tượng chiếc mũ sinh nhật.

Phân tích

Google Tag Manager

LibreChat hỗ trợ Google Tag Manager để phân tích dữ liệu. Bạn sẽ cần có ID Google Tag Manager để kích hoạt tính năng này trong LibreChat. Hãy làm theo hướng dẫn này để tạo ID Google Tag Manager và cấu hình Google Analytics. Sau đó, hãy đặt biến môi trường ANALYTICS_GTM_ID thành ID Google Tag Manager của bạn.

Lưu ý: Nếu ANALYTICS_GTM_ID không được thiết lập, Google Tag Manager sẽ không được kích hoạt. Nếu thiết lập không chính xác, bạn sẽ thấy các yêu cầu thất bại gửi đến gtm.js

KeyTypeDescriptionExample
ANALYTICS_GTM_IDstringID Google Tag Manager.ANALYTICS_GTM_ID=

Nhập cuộc trò chuyện

Cấu hình giới hạn cho việc nhập tệp hội thoại để ngăn ngừa các vấn đề về bộ nhớ.

KeyTypeDescriptionExample
CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTESnumberKích thước tệp tối đa tính bằng byte cho việc nhập hội thoại. Mặc định: 0 (không giới hạn). Ví dụ: 262144000 (250 MiB).# CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES=262144000

Xem trước tệp nội dòng

Kiểm soát kích thước tối đa của các tệp được tạo trước khi LibreChat bỏ qua việc trích xuất bản xem trước nội dung (inline preview) và chỉ để lại tùy chọn tải xuống.

KeyTypeDescriptionExample
FILE_PREVIEW_MAX_EXTRACT_BYTESnumberKích thước tệp nguồn tối đa tính bằng byte cho các bản xem trước nội tuyến của artifact thực thi mã. Mặc định: 2097152 (2 MiB). Các bản xem trước HTML được kết xuất vẫn bị giới hạn riêng, vì vậy các tệp rất phong phú có thể bỏ qua bản xem trước ngay cả khi dưới giá trị này.# FILE_PREVIEW_MAX_EXTRACT_BYTES=2097152

MCP (Model Context Protocol)

Cấu hình các thiết lập Model Context Protocol để quản lý máy chủ nâng cao và hỗ trợ OAuth.

Cấu hình MCP Server

KeyTypeDescriptionExample
MCP_OAUTH_ON_AUTH_ERRORbooleanXử lý phản hồi 401/403 như yêu cầu OAuth khi không tìm thấy siêu dữ liệu oauth.MCP_OAUTH_ON_AUTH_ERROR=true
MCP_OAUTH_DETECTION_TIMEOUTnumberThời gian chờ cho các yêu cầu phát hiện OAuth tính bằng mili giây.MCP_OAUTH_DETECTION_TIMEOUT=5000
MCP_OAUTH_HANDLING_TIMEOUTnumberThời gian LibreChat chờ người dùng hoàn tất quy trình OAuth MCP trước khi hết thời gian chờ. Mặc định: 600000 ms (10 phút).MCP_OAUTH_HANDLING_TIMEOUT=600000
MCP_OAUTH_FLOW_TTLnumberThời gian lưu giữ trạng thái luồng MCP OAuth. LibreChat giới hạn giá trị này cao hơn MCP_OAUTH_HANDLING_TIMEOUT để các callback gần thời hạn vẫn có thể hoàn tất. Mặc định: 900000 ms (15 phút).MCP_OAUTH_FLOW_TTL=900000
MCP_CONNECTION_CHECK_TTLnumberBộ đệm kiểm tra trạng thái kết nối trong số mili giây này để tránh việc xác minh tốn kém.MCP_CONNECTION_CHECK_TTL=30000
MCP_TOOLS_LIST_MAX_PAGESnumberSố lượng trang công cụ/danh sách tối đa cần yêu cầu khi một máy chủ MCP phân trang danh sách công cụ của nó (phân trang bằng con trỏ). Giới hạn vòng lặp phân trang để ngăn chặn máy chủ hoạt động sai làm đình trệ quá trình khám phá công cụ. Được giới hạn ở mức tối thiểu là 1. Mặc định: 50.MCP_TOOLS_LIST_MAX_PAGES=50
MCP_SKIP_CODE_CHALLENGE_CHECKbooleanBỏ qua xác thực phương thức thử thách mã. Khi được đặt thành true, buộc sử dụng thử thách mã S256 ngay cả khi không được quảng cáo trong .well-known/openid-configurationMCP_SKIP_CODE_CHALLENGE_CHECK=false
MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTESnumberSố byte tối đa được phép trong một phản hồi HTTP MCP có thể stream (không phải GET) trước khi từ chối. Đặt thành 0 để vô hiệu hóa. Mặc định: 16777216 (16 MiB).# MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES=16777216
MCP_STREAMABLE_HTTP_MAX_LINE_BYTESnumberSố byte tối đa cho phép trong một dòng SSE đối với các phản hồi MCP HTTP có thể truyền phát không phải GET. Đặt thành 0 để vô hiệu hóa. Mặc định: 5242880 (5 MiB).# MCP_STREAMABLE_HTTP_MAX_LINE_BYTES=5242880

Khác

Redis

Redis mang lại những cải thiện đáng kể về hiệu suất và cho phép các khả năng mở rộng theo chiều ngang cho LibreChat.

Lưu ý: Hỗ trợ Redis hiện đang ở giai đoạn thử nghiệm và bạn có thể gặp phải một số vấn đề khi sử dụng.

Quan trọng: Nếu đang sử dụng Redis, bạn nên xóa bộ nhớ đệm (flush the cache) sau khi thay đổi bất kỳ cài đặt nào của LibreChat.

Để biết cấu hình chi tiết và các ví dụ, hãy xem: Redis Configuration Guide

KeyTypeDescriptionExample
USE_REDISbooleanBật Redis để lưu trữ bộ nhớ đệm và phiên làm việc. Khi được đặt là true, phải cung cấp REDIS_URI.USE_REDIS=true
USE_REDIS_STREAMSbooleanBật Redis cho các luồng LLM có thể tiếp tục. Mặc định theo giá trị USE_REDIS nếu không được thiết lập. Đặt thành false để sử dụng bộ nhớ trong cho các luồng.# USE_REDIS_STREAMS=true
REDIS_URIstringURI kết nối Redis. Đối với một instance đơn lẻ: `redis://host:port`. Đối với cluster: các URI được phân tách bằng dấu phẩy.REDIS_URI=redis://127.0.0.1:6379
USE_REDIS_CLUSTERbooleanBật chế độ cụm Redis khi sử dụng một URI duy nhất# USE_REDIS_CLUSTER="true"
REDIS_CLUSTER_SAFE_DELETEbooleanXóa từng khóa bộ nhớ đệm Redis để tránh lỗi CROSSSLOT trên các dịch vụ Redis được quản lý có một endpoint duy nhất và tự động phân mảnh khóa bên trong.# REDIS_CLUSTER_SAFE_DELETE=true
REDIS_USERNAMEstringTên người dùng Redis để xác thực. Ghi đè tên người dùng trong URI nếu cả hai đều được cung cấp.# REDIS_USERNAME=your_redis_username
REDIS_PASSWORDstringMật khẩu Redis để xác thực. Ghi đè mật khẩu trong URI nếu cả hai đều được cung cấp.# REDIS_PASSWORD=your_redis_password
REDIS_CAstringĐường dẫn đến chứng chỉ CA để xác minh TLS khi sử dụng giao thức rediss://.# REDIS_CA=/path/to/ca-cert.pem
REDIS_KEY_PREFIXstringTiền tố tĩnh cho tất cả các khóa Redis để ngăn chặn sự nhiễm chéo giữa các lần triển khai.# REDIS_KEY_PREFIX=librechat-prod-v2
REDIS_KEY_PREFIX_VARstringTên biến môi trường chứa tiền tố động (ví dụ: K_REVISION cho Cloud Run). Không thể sử dụng cùng với REDIS_KEY_PREFIX.# REDIS_KEY_PREFIX_VAR=K_REVISION
REDIS_MAX_LISTENERSnumberSố lượng trình lắng nghe sự kiện tối đa trên mỗi client Redis. Ngăn chặn rò rỉ bộ nhớ. Mặc định: 40.# REDIS_MAX_LISTENERS=40
REDIS_PING_INTERVALnumberKhoảng thời gian ping tính bằng giây để duy trì kết nối. Mặc định: 0 (đã tắt). Chỉ thiết lập nếu gặp lỗi timeout.# REDIS_PING_INTERVAL=300
FORCED_IN_MEMORY_CACHE_NAMESPACESstringCác khóa bộ nhớ đệm được phân tách bằng dấu phẩy để buộc sử dụng lưu trữ trong bộ nhớ ngay cả khi Redis đã được bật.# FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES
REDIS_USE_ALTERNATIVE_DNS_LOOKUPbooleanBật dnsLookup thay thế cho các kết nối TLS với AWS Elasticache. Bắt buộc đối với các cụm Elasticache có sử dụng TLS.# REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true

Ghi chú:

  • Khi USE_REDIS=true, bạn phải cung cấp REDIS_URI nếu không ứng dụng sẽ báo lỗi.
  • Đối với chế độ Redis Cluster, hãy cung cấp nhiều URI: redis://node1:7001,redis://node2:7002,redis://node3:7003 (chế độ cluster sẽ được tự động phát hiện).
  • Đối với các dịch vụ Redis được quản lý có một endpoint duy nhất và tự phân mảnh (shard) khóa nội bộ, hãy giữ USE_REDIS_CLUSTER=false và đặt REDIS_CLUSTER_SAFE_DELETE=true nếu việc xóa bộ nhớ đệm thất bại với lỗi CROSSSLOT.
  • Sử dụng giao thức rediss:// cho các kết nối TLS và thiết lập REDIS_CA nếu CA của bạn không được tin cậy công khai.
  • REDIS_KEY_PREFIX_VARREDIS_KEY_PREFIX loại trừ lẫn nhau.
  • AWS Elasticache với TLS: Elasticache có thể cần sử dụng một dnsLookup thay thế cho các kết nối TLS. Hãy đặt REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true nếu bạn đang sử dụng Elasticache với TLS. Xem tài liệu ioredis để biết thêm chi tiết.

Bầu chọn Leader

Cấu hình bầu chọn leader phân tán cho các triển khai đa instance với Redis. Việc bầu chọn leader đảm bảo chỉ một instance thực hiện các thao tác nhất định như các tác vụ theo lịch trình.

KeyTypeDescriptionExample
LEADER_LEASE_DURATIONnumberThời lượng tính bằng giây mà hợp đồng thuê leader có hiệu lực trước khi hết hạn. Mặc định: 25.LEADER_LEASE_DURATION=25
LEADER_RENEW_INTERVALnumberKhoảng thời gian tính bằng giây mà leader gia hạn lease của nó. Mặc định: 10.LEADER_RENEW_INTERVAL=10
LEADER_RENEW_ATTEMPTSnumberSố lần thử lại tối đa khi việc gia hạn lease thất bại. Mặc định: 3.LEADER_RENEW_ATTEMPTS=3
LEADER_RENEW_RETRY_DELAYnumberĐộ trễ tính bằng giây giữa các lần thử lại khi gia hạn lease. Mặc định: 0.5.LEADER_RENEW_RETRY_DELAY=0.5

Ghi chú:

  • Việc bầu chọn leader yêu cầu phải bật Redis (USE_REDIS=true).
  • Các cài đặt này chỉ liên quan đến các triển khai đa phiên bản (multi-instance).
  • Leader lease phải được gia hạn trước khi hết hạn để duy trì quyền lãnh đạo.
  • Nếu việc gia hạn lease thất bại sau số lần thử tối đa, instance sẽ từ bỏ quyền lãnh đạo.

Hướng dẫn này thế nào?

Trên trang này

Cấu hình máy chủCổngTrust proxyCấu hình thông tin xác thựcXử lý tệp tĩnhKiểm soát bộ nhớ đệm HTML IndexCơ sở dữ liệu MongoDBCấu hình Connection Pool cho MongoDBCấu hình Schema MongoDBCác lĩnh vực ứng dụngNgăn chặn các công cụ tìm kiếm công cộng lập chỉ mụcGhi nhật kýTệp nhật kýCác biến môi trườngQuyền hạnTheo dõi OpenTelemetryGiám sát người dùng thực (Trình duyệt)Đường dẫn cấu hình - librechat.yamlKỹ năng triển khaiXác thực cấu hìnhXử lý ngoại lệ chưa được bắt (Uncaught Exception Handling)EndpointsCấu hình chungCác endpoint đã biết - librechat.yamlTìm kiếm WebAnthropicAnthropic thông qua Vertex AIAWS BedrockBingAIGoogleTạo ảnh GeminiOpenAIAssistantsTavilyTraversaalWolframAlphaZapierOpenWeatherCode InterpreterArtifactsTìm kiếm (Meilisearch)RAG APIChuyển đổi giọng nói thành văn bản & Văn bản thành giọng nóiShared LinksHệ thống người dùngKiểm duyệtCác cài đặt kiểm duyệt cơ bảnCài đặt cấm (Banning Settings)Giới hạn tốc độ đăng nhập và đăng kýĐiểm số cho mỗi vi phạmGiới hạn tốc độ tin nhắn (theo người dùng & IP)Bộ giới hạnBộ giới hạn IP:Giới hạn người dùng:Giới hạn tốc độ nhập cuộc trò chuyệnBộ giới hạn IP:Giới hạn người dùng:Giới hạn tốc độ phân nhánh hội thoạiBộ giới hạn IP:Giới hạn người dùng:Giới hạn tốc độ tải lên tệpBộ giới hạn IP:Giới hạn người dùng:Giới hạn tốc độ TTS (Text-to-Speech)Bộ giới hạn IP:Giới hạn người dùng:Giới hạn tốc độ STT (Speech-to-Text)Bộ giới hạn IP:Giới hạn người dùng:Số dưQuản lý số dưĐăng ký và Đăng nhậpĐăng nhập qua mạng xã hộiXác thực AppleXác thực DiscordXác thực FacebookXác thực GitHubXác thực GoogleOpenID ConnectTái sử dụng Token OpenID ConnectTích hợp Microsoft Graph API / Entra IDTích hợp SharePointSAMLXác thực LDAP/ADĐặt lại mật khẩuCấu hình Mailgun (Khuyên dùng)Cấu hình SMTPFirebase CDNAmazon S3 và CloudFrontAzure Blob Storage CDNUINút Trợ giúp và FAQTiêu đề ứng dụng và Chân trangMũ sinh nhậtPhân tíchGoogle Tag ManagerNhập cuộc trò chuyệnXem trước tệp nội dòngMCP (Model Context Protocol)Cấu hình MCP ServerKhácRedisBầu chọn Leader