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:
-
Hướng dẫn nhanh của chúng tôi:
-
Tài liệu Docker chính thức:
-
Bạn cũng có thể xem ví dụ về tệp ghi đè (override file) cho LibreChat trong thư mục LibreChat của bạn và trên GitHub:
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
PORTthiết lập cổng mà máy chủ lắng nghe. Theo mặc định, nó được đặt là3080.
| Key | Type | Description | Example |
|---|---|---|---|
| HOST | string | Chỉ định host. | HOST=localhost |
| PORT | number | Chỉ đị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.
| Key | Type | Description | Example |
|---|---|---|---|
| TRUST_PROXY | number | Chỉ đị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.
| Key | Type | Description | Example |
|---|---|---|---|
| CREDS_KEY | string | Khó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_IV | string | IV 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_KEY và CREDS_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
| Key | Type | Description | Example |
|---|---|---|---|
| STATIC_CACHE_MAX_AGE | string | Cache-Control max-age tính bằng giây | STATIC_CACHE_MAX_AGE=172800 |
| STATIC_CACHE_S_MAX_AGE | string | Cache-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_COMPRESSION | boolean | Vô hiệu hóa tính năng nén cho các tệp tĩnh. | DISABLE_COMPRESSION=false |
| ENABLE_IMAGE_OUTPUT_GZIP_SCAN | boolean | Cho 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_BROTLI | boolean | Cho 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 đổimax-agecụ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ậps-maxagecho 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
| Key | Type | Description | Example |
|---|---|---|---|
| INDEX_CACHE_CONTROL | string | Tiêu đề Cache-Control cho index.html | INDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate |
| INDEX_PRAGMA | string | Tiêu đề Pragma cho index.html | INDEX_PRAGMA=no-cache |
| INDEX_EXPIRES | string | Tiêu đề Expires cho index.html | INDEX_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
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_URI | string | Chỉ đị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(retryWriteslà 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
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_MAX_POOL_SIZE | number | Số lượng kết nối tối đa trong nhóm kết nối. | # MONGO_MAX_POOL_SIZE= |
| MONGO_MIN_POOL_SIZE | number | Số lượng kết nối tối thiểu trong nhóm kết nối. | # MONGO_MIN_POOL_SIZE= |
| MONGO_MAX_CONNECTING | number | Số 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_MS | number | Số 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_MS | number | Thờ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
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_AUTO_INDEX | boolean | Đặ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_CREATE | boolean | Đặ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ụngretryWrites=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:
- MongoDB Atlas để biết hướng dẫn cách tạo cơ sở dữ liệu MongoDB Atlas trực tuyến (hữu ích khi sử dụng mà không cần Docker)
- MongoDB Community Server để biết hướng dẫn cách tạo cơ sở dữ liệu MongoDB cục bộ (không dùng Docker)
- MongoDB Authentication Để kích hoạt xác thực tường minh cho MongoDB trong Docker.
- Quản lý cơ sở dữ liệu của bạn với Mongo Express để truy cập an toàn vào cơ sở dữ liệu MongoDB trên Docker của bạn
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:
| Key | Type | Description | Example |
|---|---|---|---|
| DOMAIN_CLIENT | string | Chỉ định tên miền phía máy khách. | DOMAIN_CLIENT=http://localhost:3080 |
| DOMAIN_SERVER | string | Chỉ định tên miền phía máy chủ. | DOMAIN_SERVER=http://localhost:3080 |
| ADMIN_PANEL_URL | string | URL 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_SECRET | string | Khó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_PORT | number | Cổ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
| Key | Type | Description | Example |
|---|---|---|---|
| NO_INDEX | boolean | Ngă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%.logtạ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
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | Giữ nhật ký gỡ lỗi hoạt động. | DEBUG_LOGGING=true |
| DEBUG_CONSOLE | boolean | Bậ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_FILE | boolean | Đặ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_JSON | boolean | Bậ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_LENGTH | number | Cấ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_DIR | string | Thư 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_DIAG | boolean | Bậ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_LOGGING | boolean | Bậ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_LOGGINGcó thể được sử dụng vớiDEBUG_CONSOLEhoặcCONSOLE_JSONnhưng không được dùng cả hai cùng lúc.DEBUG_CONSOLEvàCONSOLE_JSONloạ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.
| Key | Type | Description | Example |
|---|---|---|---|
| UID | number | ID người dùng. | # UID=1000 |
| GID | number | ID 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.
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | Bậ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_NAME | string | Tên dịch vụ được báo cáo cho OpenTelemetry. Mặc định: librechat. | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | Phiê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_ENDPOINT | string | Endpoint của OTLP exporter cơ sở. | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | Endpoint 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_HEADERS | string | Cá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_EXPORTER | string | Lựa chọn bộ xuất vết (trace exporter). | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | Bộ lấy mẫu trace OpenTelemetry. Ví dụ mặc định: parentbased_always_on. | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | Cấp độ nhật ký OpenTelemetry SDK. | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | Vô 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_ENABLED | boolean | Bậ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.
| Key | Type | Description | Example |
|---|---|---|---|
| RUM_ENABLED | boolean | Bậ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_PROVIDER | string | Nhà cung cấp Browser RUM. Hiện tại hỗ trợ `hyperdx`. | # RUM_PROVIDER=hyperdx |
| RUM_URL | string | URL bộ thu thập công khai được sử dụng bởi chế độ public-token. | # RUM_URL=http://localhost:4318 |
| RUM_SERVICE_NAME | string | Tê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_ENVIRONMENT | string | Nhã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_MODE | string | Chế độ xác thực cho telemetry trình duyệt. Sử dụng `publicToken` hoặc `proxy`. | # RUM_AUTH_MODE=publicToken |
| RUM_PUBLIC_TOKEN | string | Token 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_URL | string | URL 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_MS | number | Thờ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_TARGETS | string | Cá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_REPLAY | boolean | Vô hiệu hóa phát lại phiên trình duyệt. Mặc định: true. | # RUM_DISABLE_REPLAY=true |
| RUM_CONSOLE_CAPTURE | boolean | Ghi 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_CAPTURE | boolean | Ghi 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_RATE | number | Tỷ 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 endpoint và result 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).
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_PATH | string | Mộ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.
| Key | Type | Description | Example |
|---|---|---|---|
| DEPLOYMENT_SKILLS_DIR | string | Thư 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.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_BYPASS_VALIDATION | boolean | Khi đượ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.
| Key | Type | Description | Example |
|---|---|---|---|
| CONTINUE_ON_UNCAUGHT_EXCEPTION | boolean | Khi đượ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.
| Key | Type | Description | Example |
|---|---|---|---|
| ENDPOINTS | string | Danh 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 |
| PROXY | string | Proxy 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_PROXY | string | Dự 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_PROXY | string | HTTPS 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_PROXY | string | Cá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_CONVO | boolean | Bật tính năng đặt tiêu đề cho tất cả endpoint. | TITLE_CONVO=true |
Các endpoint đã biết - librechat.yaml
- xem thêm: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| ANYSCALE_API_KEY | string | Khóa API cho Anyscale. | # ANYSCALE_API_KEY= |
| APIPIE_API_KEY | string | Khóa API cho Apipie. | # APIPIE_API_KEY= |
| COHERE_API_KEY | string | Khóa API cho Cohere. | # COHERE_API_KEY= |
| FIREWORKS_API_KEY | string | Khóa API cho Fireworks. | # FIREWORKS_API_KEY= |
| GROQ_API_KEY | string | Khóa API cho Groq. | # GROQ_API_KEY= |
| MISTRAL_API_KEY | string | Khóa API cho Mistral. | # MISTRAL_API_KEY= |
| OPENROUTER_KEY | string | Khóa API cho OpenRouter. | # OPENROUTER_KEY= |
| PERPLEXITY_API_KEY | string | Khóa API cho Perplexity. | # PERPLEXITY_API_KEY= |
| SHUTTLEAI_API_KEY | string | Khóa API cho ShuttleAI. | # SHUTTLEAI_API_KEY= |
| TOGETHERAI_API_KEY | string | Khóa API cho TogetherAI. | # TOGETHERAI_API_KEY= |
| DEEPSEEK_API_KEY | string | Khóa API cho Deepseek API | # DEEPSEEK_API_KEY= |
Tìm kiếm Web
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
| Key | Type | Description | Example |
|---|---|---|---|
| SERPER_API_KEY | string | Khó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_KEY | string | Khó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_URL | string | URL 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_URL | string | URL 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_KEY | string | Khó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_URL | string | URL 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_VERSION | string | Phiên bản Firecrawl API (v0 hoặc v1). | # FIRECRAWL_VERSION=v1 |
| JINA_API_KEY | string | Khó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_URL | string | URL 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_KEY | string | Khó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ằngANTHROPIC_REVERSE_PROXY=- để trống hoặc thêm chú thích để sử dụng base url mặc định
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_API_KEY | string | Khó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_MODELS | string | Danh 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_PROXY | string | Reverse proxy cho Anthropic. | # ANTHROPIC_REVERSE_PROXY= |
| ANTHROPIC_TITLE_MODEL | string | KHÔ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_MODELhiệ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 EndpointtitleModeltrong cấu hìnhlibrechat.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-haikulà 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
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_USE_VERTEX | boolean | Đặ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_REGION | string | Vù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
| Key | Type | Description | Example |
|---|---|---|---|
| BEDROCK_AWS_DEFAULT_REGION | string | Phải cung cấp một AWS region mặc định cho Bedrock. | BEDROCK_AWS_DEFAULT_REGION=us-east-1 |
| BEDROCK_AWS_ACCESS_KEY_ID | string | AWS 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_KEY | string | AWS 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_TOKEN | string | Token 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_PROFILE | string | Tê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_TOKEN | string | Khó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_MODELS | string | Danh 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
| Key | Type | Description | Example |
|---|---|---|---|
| BINGAI_TOKEN | string | Bing 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_HOST | string | URL 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.
Làm theo các hướng dẫn sau để thiết lập Google Endpoint
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_KEY | string | Google 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_FILE | string | Đườ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_PROXY | string | URL reverse proxy của Google. | GOOGLE_REVERSE_PROXY= |
| GOOGLE_AUTH_HEADER | boolean | Sử 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_MODELS | string | Cá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_MODELS | string | Cá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_MODEL | string | KHÔNG CÒN ĐƯỢC HỖ TRỢ: Model được sử dụng để đặt tiêu đề với Google. | GOOGLE_TITLE_MODEL=gemini-pro |
| GOOGLE_LOC | string | Chỉ định vị trí Google Cloud để xử lý các yêu cầu API | GOOGLE_LOC=us-central1 |
| GOOGLE_CLOUD_LOCATION | string | Khu vực thay thế cho tạo ảnh Gemini (ví dụ: global). | # GOOGLE_CLOUD_LOCATION=global |
| GOOGLE_EXCLUDE_SAFETY_SETTINGS | string | Loạ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ấp | GOOGLE_EXCLUDE_SAFETY_SETTINGS=true |
| GOOGLE_SAFETY_SEXUALLY_EXPLICIT | string | Cà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_SPEECH | string | Cà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_HARASSMENT | string | Cà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_CONTENT | string | Cà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_INTEGRITY | string | Cà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_MODELhiệ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 EndpointtitleModeltrong cấu hìnhlibrechat.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
| Key | Type | Description | Example |
|---|---|---|---|
| GEMINI_API_KEY | string | Khó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_MODEL | string | Mô 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
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_API_KEY | string | Khó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_MODELS | string | 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. Để ở 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_OPENAI | boolean | Bật chế độ gỡ lỗi cho endpoint OpenAI. | DEBUG_OPENAI=false |
| OPENAI_SUMMARIZE | boolean | Bật tính năng tóm tắt tin nhắn. Mặc định là False | # OPENAI_SUMMARIZE=true |
| OPENAI_SUMMARY_MODEL | string | Mô hình được sử dụng để tóm tắt OpenAI. | # OPENAI_SUMMARY_MODEL=gpt-3.5-turbo |
| OPENAI_FORCE_PROMPT | boolean | Buộc API phải được gọi bằng payload prompt thay vì payload messages. | # OPENAI_FORCE_PROMPT=false |
| OPENAI_ORGANIZATION | string | Chỉ đị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_PROXY | string | KHÔNG CÒN ĐƯỢC HỖ TRỢ: Cài đặt reverse proxy cho OpenAI. | # OPENAI_REVERSE_PROXY= |
| OPENAI_TITLE_MODEL | string | KHÔ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_MODELhiệ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 EndpointtitleModeltrong cấu hìnhlibrechat.yaml.OPENAI_REVERSE_PROXYhiệ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
| Key | Type | Description | Example |
|---|---|---|---|
| ASSISTANTS_API_KEY | string | Khó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_MODELS | string | 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 để 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_URL | string | URL 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:
| Key | Type | Description | Example |
|---|---|---|---|
| TAVILY_API_KEY | string | Khó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:
| Key | Type | Description | Example |
|---|---|---|---|
| TRAVERSAAL_API_KEY | string | Khó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:
| Key | Type | Description | Example |
|---|---|---|---|
| WOLFRAM_APP_ID | string | ID ứ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:
| Key | Type | Description | Example |
|---|---|---|---|
| ZAPIER_NLA_API_KEY | string | Khóa API Zapier NLA. | ZAPIER_NLA_API_KEY= |
OpenWeather
Xem hướng dẫn chi tiết tại đây: OpenWeather
| Key | Type | Description | Example |
|---|---|---|---|
| OPENWEATHER_API_KEY | string | Khó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
| Key | Type | Description | Example |
|---|---|---|---|
| LIBRECHAT_CODE_API_KEY | string | Khó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_BASEURL | string | URL 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
| Key | Type | Description | Example |
|---|---|---|---|
| SANDPACK_BUNDLER_URL | string | Chỉ định một URL trình đóng gói tùy chỉnh cho Sandpack, được sử dụng bởi Artifacts | SANDPACK_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:
| Key | Type | Description | Example |
|---|---|---|---|
| SEARCH | boolean | Cho 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:
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_ANALYTICS | boolean | Vô 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.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_HOST | string | Kế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.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_MASTER_KEY | string | Khó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.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_SYNC | string | Chuyển đổi để vô hiệu hóa đồng bộ hóa chỉ mục Meilisearch | MEILI_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
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | URL của dịch vụ RAG API. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | Khó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_BASEURL | string | URL cơ sở OpenAI tùy chỉnh cho các embedding RAG. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | Lấ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_PROVIDER | string | Nhà cung cấp Embeddings: openai, azure, huggingface, huggingfacetei, hoặc ollama. Mặc định: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Mô 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
| Key | Type | Description | Example |
|---|---|---|---|
| STT_API_KEY | string | Khó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_KEY | string | Khó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:tronglibrechat.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 đủ.
Shared Links
Cấu hình chức năng liên kết chia sẻ cuộc trò chuyện.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_SHARED_LINKS | boolean | Bậ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_PUBLIC | boolean | Cho 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_FILES | boolean | Cá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 tự động
- Số dư/Mức sử dụng Token
- Đăng ký và Đăng nhập mạng xã hội
- Đặt lại mật khẩu qua email
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
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | Có 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_KEY | string | Khóa API OpenAI của bạn. | OPENAI_MODERATION_API_KEY= |
| OPENAI_MODERATION_REVERSE_PROXY | string | Lư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)
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | Có 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_DURATION | integer | Thờ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_INTERVAL | integer | Ngườ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.
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | integer | Số 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_WINDOW | integer | Tí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_MAX | integer | Số lượng đăng ký tối đa cho phép trên mỗi IP trong mỗi REGISTER_WINDOW. | REGISTER_MAX=5 |
| REGISTER_WINDOW | integer | Tí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
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | Điểm cho các vi phạm đăng nhập. | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | Điểm số cho các vi phạm đăng ký. | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | Điểm số cho các vi phạm đồng thời. | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | Điểm số cho các vi phạm tin nhắn. | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | Đ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_SCORE | integer | Đ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_SCORE | integer | Điểm số cho các vi phạm khi nhập cuộc trò chuyện. | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | Điểm cho các vi phạm phân nhánh hội thoại. | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | Đ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_SCORE | integer | Đ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_SCORE | integer | Điểm số cho các vi phạm tải tệp lên. | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | Điểm số cho các vi phạm đặt lại mật khẩu. | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | Điểm số cho các vi phạm xác minh email. | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | Điểm số cho các vi phạm gọi công cụ. | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | Đ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)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | Liệ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_MAX | integer | Số 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:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | Liệ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_MAX | integer | Số 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_WINDOW | integer | Trong 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:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | Liệ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_MAX | integer | Số 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_WINDOW | integer | Tí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:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | Liệ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_MAX | integer | Số 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_WINDOW | integer | Tí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:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | Liệ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_MAX | integer | Số 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_WINDOW | integer | Tí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:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | Liệ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_MAX | integer | Số 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_WINDOW | integer | Tí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:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | Liệ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_MAX | integer | Số 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_WINDOW | integer | Tí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.yamltrong phầnrateLimits.fileUploads.
Bộ giới hạn IP:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_IP_MAX | integer | Số 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_WINDOW | integer | Tí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:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_USER_MAX | integer | Số 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_WINDOW | integer | Tí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.yamltrong phầnrateLimits.tts.
Bộ giới hạn IP:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_IP_MAX | integer | Số 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_WINDOW | integer | Tí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:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_USER_MAX | integer | Số 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_WINDOW | integer | Tí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.yamltrong phầnrateLimits.stt.
Bộ giới hạn IP:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_IP_MAX | integer | Số 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_WINDOW | integer | Tí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:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_USER_MAX | integer | Số 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_WINDOW | integer | Tí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
| Key | Type | Description | Example |
|---|---|---|---|
| CHECK_BALANCE | boolean | Bật số dư tín dụng token cho các endpoint OpenAI/Plugins. | CHECK_BALANCE=false |
| START_BALANCE | integer | Nế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
- Bạn cũng có thể chỉ định email và số lượng token credit cần thêm, ví dụ:
- 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
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:
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Bật hoặc tắt CHỈ đăng nhập bằng email. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Bậ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_LOGIN | boolean | Cho 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_REGISTRATION | boolean | Bậ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_RESET | boolean | Cho 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_DELETION | boolean | Bậ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_LOGIN | boolean | Đặ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_LENGTH | number | Độ 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):
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Thời gian hết hạn phiên. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (milliseconds) | Thời gian hết hạn của refresh token. | REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7 |
| SESSION_COOKIE_SECURE | boolean | Ghi đè 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 |
-
Để biết thêm thông tin: Refresh Token
-
Cài đặt JWT:
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
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Khóa bí mật JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (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
| Key | Type | Description | Example |
|---|---|---|---|
| APPLE_CLIENT_ID | string | ID Dịch vụ Apple của bạn (ví dụ: com.yourdomain.librechat.services). | APPLE_CLIENT_ID=com.yourdomain.librechat.services |
| APPLE_TEAM_ID | string | ID Nhóm Nhà phát triển Apple của bạn. | APPLE_TEAM_ID=YOUR_TEAM_ID |
| APPLE_KEY_ID | string | ID khóa Apple của bạn từ khóa đã tải xuống. | APPLE_KEY_ID=YOUR_KEY_ID |
| APPLE_PRIVATE_KEY_PATH | string | Đườ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_URL | string | URL 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
| Key | Type | Description | Example |
|---|---|---|---|
| DISCORD_CLIENT_ID | string | ID khách hàng Discord của bạn. | DISCORD_CLIENT_ID= |
| DISCORD_CLIENT_SECRET | string | Client secret Discord của bạn. | DISCORD_CLIENT_SECRET= |
| DISCORD_CALLBACK_URL | string | URL 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
| Key | Type | Description | Example |
|---|---|---|---|
| FACEBOOK_CLIENT_ID | string | ID khách hàng Facebook của bạn. | FACEBOOK_CLIENT_ID= |
| FACEBOOK_CLIENT_SECRET | string | Client secret Facebook của bạn. | FACEBOOK_CLIENT_SECRET= |
| FACEBOOK_CALLBACK_URL | string | URL 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
| Key | Type | Description | Example |
|---|---|---|---|
| GITHUB_CLIENT_ID | string | ID khách hàng GitHub của bạn. | GITHUB_CLIENT_ID= |
| GITHUB_CLIENT_SECRET | string | Client secret GitHub của bạn. | GITHUB_CLIENT_SECRET= |
| GITHUB_CALLBACK_URL | string | URL callback cho xác thực GitHub. | GITHUB_CALLBACK_URL=/oauth/github/callback |
| GITHUB_ENTERPRISE_BASE_URL | string | Tùy chọn: URL cơ sở cho instance GitHub Enterprise của bạn. | GITHUB_ENTERPRISE_BASE_URL= |
| GITHUB_ENTERPRISE_USER_AGENT | string | Tù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
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_CLIENT_ID | string | ID khách hàng Google của bạn. | GOOGLE_CLIENT_ID= |
| GOOGLE_CLIENT_SECRET | string | Mã bí mật khách hàng Google của bạn. | GOOGLE_CLIENT_SECRET= |
| GOOGLE_CALLBACK_URL | string | URL callback cho xác thực Google. | GOOGLE_CALLBACK_URL=/oauth/google/callback |
OpenID Connect
Để biết thêm thông tin:
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_CLIENT_ID | string | ID khách hàng OpenID của bạn. | OPENID_CLIENT_ID= |
| OPENID_CLIENT_SECRET | string | Client secret OpenID của bạn. | OPENID_CLIENT_SECRET= |
| OPENID_ISSUER | string | URL của nhà cung cấp OpenID. | OPENID_ISSUER= |
| OPENID_SESSION_SECRET | string | Khóa bí mật cho lưu trữ phiên OpenID. | OPENID_SESSION_SECRET= |
| OPENID_SCOPE | string | Phạm vi OpenID. | OPENID_SCOPE="openid profile email" |
| OPENID_CALLBACK_URL | string | URL callback cho xác thực OpenID. | OPENID_CALLBACK_URL=/oauth/openid/callback |
| OPENID_AUDIENCE | string | Giá 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_ROLE | string | (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_KIND | string | Loại token cho xác thực vai trò bắt buộc. | OPENID_REQUIRED_ROLE_TOKEN_KIND= |
| OPENID_REQUIRED_ROLE_PARAMETER_PATH | string | Đường dẫn tham số để xác thực vai trò bắt buộc. | OPENID_REQUIRED_ROLE_PARAMETER_PATH= |
| OPENID_ADMIN_ROLE | string | Vai 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_KIND | string | Nguồ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_PATH | string | Đường dẫn tham số để xác thực vai trò bắt buộc. | OPENID_ADMIN_ROLE_PARAMETER_PATH= |
| OPENID_ROLE_SYNC_ENABLED | boolean | Bậ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_ENABLED | boolean | Bậ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_SOURCE | string | Nguồ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_CLAIM | string | Đườ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_PRIORITY | string | Cá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_ROLE | string | Vai 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_LABEL | string | Nhãn cho nút đăng nhập OpenID. | OPENID_BUTTON_LABEL= |
| OPENID_IMAGE_URL | string | URL của hình ảnh nút đăng nhập OpenID. | OPENID_IMAGE_URL= |
| OPENID_USE_END_SESSION_ENDPOINT | string | Liệu có sử dụng Issuer End Session Endpoint làm Logout Redirect hay không | OPENID_USE_END_SESSION_ENDPOINT=TRUE |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Độ 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_REDIRECT | boolean | Liệu có tự động chuyển hướng đến nhà cung cấp OpenID hay không. | OPENID_AUTO_REDIRECT=true |
| OPENID_USE_PKCE | boolean | Sử 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_URI | string | URI chuyển hướng sau khi đăng xuất OpenID. Mặc định là ${DOMAIN_CLIENT}/login. | # OPENID_POST_LOGOUT_REDIRECT_URI= |
| OPENID_CLOCK_TOLERANCE | number | Dung 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_NONCE | boolean | Buộ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_REQUESTS | boolean | Bậ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_CLAIM | string | Thuộ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_CLAIM | string | Thuộ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_CLAIM | string | Claim 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.
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_REUSE_TOKENS | boolean | Cho 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_SCOPE | string | Danh 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_AUDIENCE | string | Giá 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_MS | number | Thờ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_ENABLED | boolean | Bậ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_TIME | number | Thờ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_REQUIRED | boolean | Bậ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_SCOPE | string | Phạ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_ENDPOINT | boolean | Cho phép sử dụng endpoint end session để đăng xuất. | OPENID_USE_END_SESSION_ENDPOINT=true |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Độ 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ẻ.
| Key | Type | Description | Example |
|---|---|---|---|
| USE_ENTRA_ID_FOR_PEOPLE_SEARCH | boolean | Bậ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_MEMBERS | boolean | Khi đượ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_SCOPES | string | Cá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ó.
| Key | Type | Description | Example |
|---|---|---|---|
| ENABLE_SHAREPOINT_FILEPICKER | boolean | Bậ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_URL | string | URL 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_SCOPE | string | Phạ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_SCOPE | string | Phạ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=truelà bắt buộc (sử dụng luồng token on-behalf-of)OPENID_SCOPEphải bao gồm phạm vi API ứng dụng LibreChat của bạn, ví dụ:api://<client-id>/access_as_userOPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=truelà 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.
| Key | Type | Description | Example |
|---|---|---|---|
| SAML_ENTRY_POINT | string | URL điểm truy cập của nhà cung cấp danh tính (IdP) SAML. | SAML_ENTRY_POINT= |
| SAML_ISSUER | string | ID thực thể của nhà cung cấp dịch vụ (SP) SAML. | SAML_ISSUER= |
| SAML_CERT | string | Chứ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_URL | string | URL callback cho xác thực SAML. | SAML_CALLBACK_URL=/oauth/saml/callback |
| SAML_SESSION_SECRET | string | Bí mật cho lưu trữ phiên SAML. | SAML_SESSION_SECRET= |
| SAML_EMAIL_CLAIM | string | <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_CLAIM | string | <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_CLAIM | string | <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_CLAIM | string | <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_CLAIM | string | <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_CLAIM | string | <Optional>: Thuộc tính trong xác nhận SAML chứa tên đầy đủ. | SAML_NAME_CLAIM= |
| SAML_BUTTON_LABEL | string | <Optional>: Nhãn cho nút đăng nhập SAML. | SAML_BUTTON_LABEL= |
| SAML_IMAGE_URL | string | <Optional>: URL của hình ảnh nút đăng nhập SAML. | SAML_IMAGE_URL= |
| SAML_USE_AUTHN_RESPONSE_SIGNED | boolean | <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
| Key | Type | Description | Example |
|---|---|---|---|
| LDAP_URL | string | URL máy chủ LDAP. | LDAP_URL=ldap://localhost:389 |
| LDAP_BIND_DN | string | DN liên kết | LDAP_BIND_DN=cn=root |
| LDAP_BIND_CREDENTIALS | string | Mật khẩu cho bindDN | LDAP_BIND_CREDENTIALS=password |
| LDAP_USER_SEARCH_BASE | string | Cơ sở tìm kiếm người dùng LDAP | LDAP_USER_SEARCH_BASE=o=users,o=example.com |
| LDAP_SEARCH_FILTER | string | Bộ lọc tìm kiếm LDAP | LDAP_SEARCH_FILTER=mail={{username}} |
| LDAP_CA_CERT_PATH | string | Đường dẫn chứng chỉ CA. | LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt |
| LDAP_TLS_REJECT_UNAUTHORIZED | string | Xác thực TLS LDAP | LDAP_TLS_REJECT_UNAUTHORIZED=true |
| LDAP_STARTTLS | string | Bậ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_USERNAME | boolean | Sử dụng tên người dùng thay vì email để đăng nhập LDAP. | # LDAP_LOGIN_USES_USERNAME=true |
| LDAP_ID | string | Thuộ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_USERNAME | string | Thuộc tính LDAP cho tên người dùng. Mặc định: givenName hoặc mail. | # LDAP_USERNAME=givenName |
| LDAP_EMAIL | string | Thuộc tính LDAP cho email. Mặc định: mail. | # LDAP_EMAIL=userPrincipalName |
| LDAP_FULL_NAME | string | (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!
Cấu hình Mailgun (Khuyên dùng)
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_KEY và MAILGUN_DOMAIN đều được thiết lập, LibreChat sẽ sử dụng Mailgun thay vì SMTP.
| Key | Type | Description | Example |
|---|---|---|---|
| MAILGUN_API_KEY | string | Khóa API Mailgun của bạn (bắt buộc đối với Mailgun). | MAILGUN_API_KEY= |
| MAILGUN_DOMAIN | string | Tên miền Mailgun của bạn (bắt buộc đối với Mailgun). | MAILGUN_DOMAIN=mg.yourdomain.com |
| MAILGUN_HOST | string | Má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_FROM | string | Địa chỉ email gửi. Bắt buộc. | [email protected] |
| EMAIL_FROM_NAME | string | Tê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
| Key | Type | Description | Example |
|---|---|---|---|
| EMAIL_SERVICE | string | Dịch vụ email (ví dụ: Gmail, Outlook). | EMAIL_SERVICE= |
| EMAIL_HOST | string | Máy chủ mail host. | EMAIL_HOST= |
| EMAIL_PORT | number | Cổng máy chủ thư. | EMAIL_PORT=25 |
| EMAIL_ENCRYPTION | string | Phương thức mã hóa (starttls, tls, v.v.). | EMAIL_ENCRYPTION= |
| EMAIL_ENCRYPTION_HOSTNAME | string | Hostname để mã hóa. | EMAIL_ENCRYPTION_HOSTNAME= |
| EMAIL_ALLOW_SELFSIGNED | boolean | Cho phép chứng chỉ tự ký. | EMAIL_ALLOW_SELFSIGNED= |
| EMAIL_USERNAME | string | Tên người dùng để xác thực. | EMAIL_USERNAME= |
| EMAIL_PASSWORD | string | Mật khẩu để xác thực. | EMAIL_PASSWORD= |
| EMAIL_FROM_NAME | string | Tên người gửi | EMAIL_FROM_NAME= |
| EMAIL_FROM | string | Địa chỉ email gửi. Bắt buộc. | [email protected] |
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
fileStrategyhoặcfileStrategiesthànhfirebasetrong tệp cấu hìnhlibrechat.yamlcủa bạn. Để biết thêm thông tin về cách cấu hình tệplibrechat.yaml, vui lòng tham khảo Hướng dẫn Cấu hình YAML: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| FIREBASE_API_KEY | string | Khóa API cho dự án Firebase của bạn. | FIREBASE_API_KEY= |
| FIREBASE_AUTH_DOMAIN | string | Miền Firebase Auth cho dự án của bạn. | FIREBASE_AUTH_DOMAIN= |
| FIREBASE_PROJECT_ID | string | ID dự án Firebase của bạn. | FIREBASE_PROJECT_ID= |
| FIREBASE_STORAGE_BUCKET | string | Firebase Storage bucket cho dự án của bạn. | FIREBASE_STORAGE_BUCKET= |
| FIREBASE_MESSAGING_SENDER_ID | string | ID người gửi Firebase Cloud Messaging. | FIREBASE_MESSAGING_SENDER_ID= |
| FIREBASE_APP_ID | string | Firebase App ID cho dự án của bạn. | FIREBASE_APP_ID= |
Amazon S3 và CloudFront
Xem: Cấu hình Amazon S3 và CloudFront 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).
| Key | Type | Description | Example |
|---|---|---|---|
| AWS_ACCESS_KEY_ID | string | ID 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_KEY | string | Secret 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_REGION | string | Khu vực AWS nơi đặt bucket S3 của bạn. | AWS_REGION=us-east-1 |
| AWS_BUCKET_NAME | string | Tên của S3 bucket dùng để lưu trữ tệp. | AWS_BUCKET_NAME=your_bucket_name |
| AWS_ENDPOINT_URL | string | URL 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_STYLE | boolean | Đặ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_ID | string | ID 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_KEY | string | Khó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_REGIONvàAWS_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.
| Key | Type | Description | Example |
|---|---|---|---|
| AZURE_STORAGE_CONNECTION_STRING | string | Chuỗ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_NAME | string | Tê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_ACCESS | boolean | Bật quyền truy cập công khai cho các blob. Mặc định: false. | AZURE_STORAGE_PUBLIC_ACCESS=false |
| AZURE_CONTAINER_NAME | string | Tê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ặcAZURE_STORAGE_ACCOUNT_NAMEvới Managed Identity (Tùy chọn B), không sử dụng cả hai.
UI
Nút Trợ giúp và FAQ
| Key | Type | Description | Example |
|---|---|---|---|
| HELP_AND_FAQ_URL | string | URL 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 đổimax-agecho 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 đổis-maxagecho 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.
Tiêu đề ứng dụng và Chân trang
| Key | Type | Description | Example |
|---|---|---|---|
| APP_TITLE | string | Tiêu đề ứng dụng. | APP_TITLE=LibreChat |
| CUSTOM_FOOTER | string | Chân trang tùy chỉnh. | # CUSTOM_FOOTER="My custom footer" |
| TEMP_CHAT_RETENTION_HOURS | number | **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
| Key | Type | Description | Example |
|---|---|---|---|
| SHOW_BIRTHDAY_ICON | boolean | Hiể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_ICONthànhfalseđể tắt biểu tượng mũ sinh nhật. - Đặt
SHOW_BIRTHDAY_ICONthànhtrueđể 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
| Key | Type | Description | Example |
|---|---|---|---|
| ANALYTICS_GTM_ID | string | ID 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ớ.
| Key | Type | Description | Example |
|---|---|---|---|
| CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES | number | Kí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.
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_PREVIEW_MAX_EXTRACT_BYTES | number | Kí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
| Key | Type | Description | Example |
|---|---|---|---|
| MCP_OAUTH_ON_AUTH_ERROR | boolean | Xử 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_TIMEOUT | number | Thờ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_TIMEOUT | number | Thờ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_TTL | number | Thờ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_TTL | number | Bộ đệ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_PAGES | number | Số 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_CHECK | boolean | Bỏ 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-configuration | MCP_SKIP_CODE_CHALLENGE_CHECK=false |
| MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES | number | Số 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_BYTES | number | Số 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
| Key | Type | Description | Example |
|---|---|---|---|
| USE_REDIS | boolean | Bậ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_STREAMS | boolean | Bậ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_URI | string | URI 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_CLUSTER | boolean | Bật chế độ cụm Redis khi sử dụng một URI duy nhất | # USE_REDIS_CLUSTER="true" |
| REDIS_CLUSTER_SAFE_DELETE | boolean | Xó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_USERNAME | string | Tê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_PASSWORD | string | Mậ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_CA | string | Đườ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_PREFIX | string | Tiề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_VAR | string | Tê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_LISTENERS | number | Số 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_INTERVAL | number | Khoả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_NAMESPACES | string | Cá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_LOOKUP | boolean | Bậ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ấpREDIS_URInế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=falsevà đặtREDIS_CLUSTER_SAFE_DELETE=truenếu việc xóa bộ nhớ đệm thất bại với lỗiCROSSSLOT. - Sử dụng giao thức
rediss://cho các kết nối TLS và thiết lậpREDIS_CAnếu CA của bạn không được tin cậy công khai. REDIS_KEY_PREFIX_VARvàREDIS_KEY_PREFIXloạ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=truenế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.
| Key | Type | Description | Example |
|---|---|---|---|
| LEADER_LEASE_DURATION | number | Thờ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_INTERVAL | number | Khoả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_ATTEMPTS | number | Số 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_DELAY | number | Độ 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?