Variabel Lingkungan
Panduan komprehensif untuk mengonfigurasi lingkungan aplikasi Anda dengan file `.env`. Dokumen ini adalah sumber daya lengkap Anda untuk memahami dan menyesuaikan variabel lingkungan yang akan membentuk perilaku aplikasi Anda dalam berbagai konteks.
Selamat datang di panduan komprehensif untuk mengonfigurasi lingkungan aplikasi Anda dengan file .env. Dokumen ini adalah sumber daya lengkap Anda untuk memahami dan menyesuaikan variabel lingkungan yang akan membentuk perilaku aplikasi Anda dalam berbagai konteks.
Meskipun pengaturan default menyediakan fondasi yang kuat untuk instalasi docker standar, mendalami panduan ini akan mengungkap potensi penuh LibreChat. Panduan ini memberdayakan Anda untuk menyesuaikan LibreChat dengan kebutuhan spesifik Anda. Temukan cara mengatur ketersediaan model bahasa, mengintegrasikan login sosial, mengelola sistem moderasi otomatis, dan banyak lagi. Semuanya bertujuan untuk memberikan Anda kendali dalam menyempurnakan LibreChat demi pengalaman pengguna yang optimal.
Pengingat: Harap mulai ulang LibreChat agar perubahan konfigurasi diterapkan
Sebagai alternatif, Anda dapat membuat file baru bernama docker-compose.override.yml di direktori yang sama dengan file utama docker-compose.yml untuk LibreChat, di mana Anda dapat mengatur variabel .env sesuai kebutuhan di bawah environment, atau memodifikasi konfigurasi default yang disediakan oleh docker-compose.yml utama, tanpa perlu mengedit secara langsung atau menduplikasi seluruh file tersebut.
Untuk info lebih lanjut, lihat:
-
Panduan singkat kami:
-
Dokumentasi Docker resmi:
-
Anda juga dapat melihat contoh file pengganti (override) untuk LibreChat di folder LibreChat Anda dan di GitHub:
Konfigurasi Server
Port
- Server mendengarkan pada port tertentu.
- Variabel lingkungan
PORTmenetapkan port tempat server mendengarkan. Secara default, nilainya diatur ke3080.
| Key | Type | Description | Example |
|---|---|---|---|
| HOST | string | Menentukan host. | HOST=localhost |
| PORT | number | Menentukan port. | PORT=3080 |
Trust proxy
Gunakan alamat yang paling banyak berjarak n lompatan dari aplikasi Express.
req.socket.remoteAddress adalah lompatan pertama, dan sisanya dicari di header X-Forwarded-For dari kanan ke kiri.
Nilai 0 berarti alamat pertama yang tidak tepercaya adalah req.socket.remoteAddress, yaitu tidak ada reverse proxy.
Variabel lingkungan TRUST_PROXY secara default diatur ke 1.
Lihat Express.js - trust proxy untuk informasi lebih lanjut mengenai hal ini.
| Key | Type | Description | Example |
|---|---|---|---|
| TRUST_PROXY | number | Menentukan jumlah hop. | TRUST_PROXY=1 |
Konfigurasi Kredensial
Untuk menyimpan kredensial dengan aman, Anda memerlukan kunci dan IV yang tetap. Anda dapat mengaturnya di sini untuk lingkungan prod dan dev.
| Key | Type | Description | Example |
|---|---|---|---|
| CREDS_KEY | string | Kunci 32-byte (64 karakter dalam hex) untuk menyimpan kredensial dengan aman. Diperlukan untuk memulai aplikasi. | CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0 |
| CREDS_IV | string | IV 16-byte (32 karakter dalam hex) untuk menyimpan kredensial dengan aman. Diperlukan untuk startup aplikasi. | CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb |
Peringatan
Peringatan: Jika Anda tidak mengatur CREDS_KEY dan CREDS_IV, aplikasi akan mengalami crash saat dijalankan. - Anda dapat menggunakan Key Generator ini untuk membuatnya dengan cepat.
Penanganan File Statis
| Key | Type | Description | Example |
|---|---|---|---|
| STATIC_CACHE_MAX_AGE | string | Cache-Control max-age dalam detik | STATIC_CACHE_MAX_AGE=172800 |
| STATIC_CACHE_S_MAX_AGE | string | Cache-Control s-maxage dalam detik untuk cache bersama (CDN dan proxy) | STATIC_CACHE_S_MAX_AGE="86400" |
| DISABLE_COMPRESSION | boolean | Menonaktifkan kompresi untuk file statis. | DISABLE_COMPRESSION=false |
| ENABLE_IMAGE_OUTPUT_GZIP_SCAN | boolean | Mengaktifkan penyajian versi gzipped dari gambar yang diunggah jika tersedia di folder yang sama. | ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true |
| ENABLE_STATIC_ASSET_BROTLI | boolean | Mengaktifkan penyajian versi Brotli yang telah dikompresi sebelumnya untuk aset aplikasi statis jika tersedia. | ENABLE_STATIC_ASSET_BROTLI=true |
Perilaku:
Mengatur header Cache-Control untuk file statis. Konfigurasi ini hanya akan dipicu ketika NODE_ENV diatur ke production.
- Hapus tanda komentar pada
STATIC_CACHE_MAX_AGEuntuk mengubahmax-agelokal bagi file statis. Secara default, nilai ini diatur ke 2 hari (172800 detik). - Hapus tanda komentar pada
STATIC_CACHE_S_MAX_AGEuntuk mengaturs-maxagebagi cache bersama (CDN dan proxy). Secara default, ini diatur ke 1 hari (86400 detik). - Hapus tanda komentar pada
DISABLE_COMPRESSIONuntuk menonaktifkan kompresi bagi file statis. Secara default, kompresi diaktifkan. - Hapus tanda komentar pada
ENABLE_IMAGE_OUTPUT_GZIP_SCANuntuk mengaktifkan pemindaian dan penyajian versi gambar yang di-gzip jika gambar tersebut telah dikompresi sebelumnya di folder yang sama, dengan nama yang sama dan ekstensi .gz. Secara default, pemindaian gzip untuk gambar yang diunggah dinonaktifkan. - Hapus tanda komentar pada
ENABLE_STATIC_ASSET_BROTLIuntuk menyajikan versi.bryang telah dikompresi sebelumnya dari aset aplikasi statis jika tersedia. Saat diaktifkan, Brotli lebih diutamakan daripada gzip untuk file statis yang disajikan oleh API.
Peringatan
- Ini hanya memengaruhi file statis yang disajikan oleh server API dan tidak berlaku untuk Firebase, NGINX, atau konfigurasi lainnya.
Kontrol Cache HTML Index
| Key | Type | Description | Example |
|---|---|---|---|
| INDEX_CACHE_CONTROL | string | Header Cache-Control untuk index.html | INDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate |
| INDEX_PRAGMA | string | Header Pragma untuk index.html | INDEX_PRAGMA=no-cache |
| INDEX_EXPIRES | string | Header Expires untuk index.html | INDEX_EXPIRES=0 |
Perilaku:
Mengontrol header caching secara khusus untuk respons index.html. Secara default, pengaturan ini mencegah caching untuk memastikan pengguna selalu mendapatkan versi terbaru dari aplikasi.
Catatan
Berbeda dengan aset statis yang di-cache untuk performa, header cache file index.html dikonfigurasi secara terpisah untuk memastikan pengguna selalu mendapatkan shell aplikasi terbaru.
Basis Data MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_URI | string | Menentukan URI MongoDB. | MONGO_URI=mongodb://127.0.0.1:27017/LibreChat |
Ubah ini ke URI MongoDB Anda jika berbeda. Anda harus menambahkan LibreChat atau APP_TITLE Anda sendiri sebagai nama basis data di dalam URI tersebut.
Jika Anda menggunakan basis data daring, format URI-nya adalah mongodb+srv://<username>:<password>@<host>/<database>?<options>. MONGO_URI Anda seharusnya terlihat seperti ini:
mongodb+srv://username:[email protected]/LibreChat?retryWrites=true(retryWritesadalah satu-satunya opsi yang Anda perlukan saat menggunakan basis data daring.)
Konfigurasi Kumpulan Koneksi MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_MAX_POOL_SIZE | number | Jumlah maksimum koneksi dalam kumpulan koneksi. | # MONGO_MAX_POOL_SIZE= |
| MONGO_MIN_POOL_SIZE | number | Jumlah minimum koneksi dalam kumpulan koneksi. | # MONGO_MIN_POOL_SIZE= |
| MONGO_MAX_CONNECTING | number | Jumlah maksimum koneksi yang dapat diproses untuk dibuat secara bersamaan oleh kumpulan koneksi. | # MONGO_MAX_CONNECTING= |
| MONGO_MAX_IDLE_TIME_MS | number | Jumlah milidetik maksimum agar koneksi dapat tetap tidak aktif di dalam pool sebelum dihapus dan ditutup. | # MONGO_MAX_IDLE_TIME_MS= |
| MONGO_WAIT_QUEUE_TIMEOUT_MS | number | Waktu maksimum dalam milidetik yang dapat ditunggu oleh sebuah thread agar koneksi tersedia. | # MONGO_WAIT_QUEUE_TIMEOUT_MS= |
Konfigurasi Skema MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_AUTO_INDEX | boolean | Atur ke false untuk menonaktifkan pembuatan indeks otomatis bagi semua model yang terkait dengan koneksi ini. Jika dihilangkan, akan menggunakan perilaku default Mongoose. | # MONGO_AUTO_INDEX= |
| MONGO_AUTO_CREATE | boolean | Atur ke false untuk menonaktifkan Mongoose agar tidak memanggil createCollection() secara otomatis pada setiap model yang dibuat di koneksi ini. Jika diabaikan, akan menggunakan perilaku default Mongoose. | # MONGO_AUTO_CREATE= |
Sebagai alternatif, Anda dapat menggunakan documentDb yang mengemulasi mongoDb, namun:
- tidak mendukung
retryWrites- gunakanretryWrites=false - memerlukan koneksi TLS, oleh karena itu gunakan parameter
tls=trueuntuk mengaktifkan TLS dantlsCAFile=/path-to-ca/bundle.pemuntuk mengarahkan ke file bundel CA yang disediakan AWS
URI untuk documentDb akan terlihat seperti:
mongodb+srv://username:password@domain/dbname?retryWrites=false&tls=true&tlsCAFile=/path-to-ca/bundle.pem
Lihat juga:
- MongoDB Atlas untuk instruksi tentang cara membuat basis data MongoDB Atlas daring (berguna untuk penggunaan tanpa Docker)
- MongoDB Community Server untuk instruksi tentang cara membuat basis data MongoDB lokal (tanpa Docker)
- MongoDB Authentication Untuk mengaktifkan autentikasi eksplisit bagi MongoDB di Docker.
- Kelola basis data Anda dengan Mongo Express untuk mengakses basis data MongoDB Docker Anda secara aman
Domain Aplikasi
Untuk mengonfigurasi LibreChat agar dapat digunakan secara lokal atau penerapan domain kustom, atur variabel lingkungan berikut:
| Key | Type | Description | Example |
|---|---|---|---|
| DOMAIN_CLIENT | string | Menentukan domain sisi klien. | DOMAIN_CLIENT=http://localhost:3080 |
| DOMAIN_SERVER | string | Menentukan domain sisi server. | DOMAIN_SERVER=http://localhost:3080 |
| ADMIN_PANEL_URL | string | URL dasar panel admin eksternal yang digunakan untuk pengalihan OAuth/SSO admin saat panel admin dihosting secara terpisah. Jangan sertakan garis miring di akhir. | ADMIN_PANEL_URL=https://admin.example.com/admin |
| ADMIN_PANEL_SESSION_SECRET | string | Kunci enkripsi sesi yang diperlukan untuk panel admin bawaan (minimal 32 karakter). Layanan admin-panel pada docker-compose dan deploy-compose membacanya sebagai SESSION_SECRET. Buat dengan `openssl rand -hex 32` sebelum memulai stack. | ADMIN_PANEL_SESSION_SECRET=<your-32-char-random-string> |
| ADMIN_PANEL_PORT | number | Port host untuk panel admin bawaan di docker-compose default. Pada deploy-compose, panel disajikan di http://admin.localhost melalui nginx sebagai gantinya. | ADMIN_PANEL_PORT=3000 |
Saat men-deploy LibreChat ke domain kustom, ganti http://localhost:3080 dengan URL yang telah Anda deploy.
- contohnya
https://librechat.example.com.
Mencegah Mesin Pencari Publik Melakukan Pengindeksan
Secara default, situs web Anda tidak akan diindeks oleh mesin pencari publik (misalnya Google, Bing, …). Ini berarti orang tidak akan dapat menemukan situs web Anda melalui mesin pencari tersebut. Jika Anda ingin membuat situs web Anda lebih terlihat dan dapat dicari, Anda dapat mengubah pengaturan berikut menjadi false
| Key | Type | Description | Example |
|---|---|---|---|
| NO_INDEX | boolean | Mencegah mesin pencari publik mengindeks situs web Anda. | NO_INDEX=true |
❗Catatan: Metode ini tidak dijamin berfungsi untuk semua mesin pencari, dan beberapa mesin pencari mungkin tetap mengindeks situs web atau halaman web Anda untuk tujuan lain, seperti caching atau pengarsipan. Oleh karena itu, Anda tidak boleh hanya mengandalkan metode ini untuk melindungi informasi sensitif atau rahasia di situs web atau halaman web Anda.
Logging
LibreChat memiliki pencatatan terpusat bawaan, lihat Logging System untuk info lebih lanjut.
File Log
- Pencatatan log debug diaktifkan secara default dan sangat penting untuk pengembangan.
- Untuk melaporkan masalah, reproduksi kesalahan tersebut dan kirimkan log dari
./api/logs/debug-%DATE%.logdi: LibreChat GitHub Issues - Log kesalahan disimpan di lokasi yang sama.
Variabel Lingkungan
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | Tetap aktifkan log debug. | DEBUG_LOGGING=true |
| DEBUG_CONSOLE | boolean | Aktifkan log konsol/stdout verbose dalam format yang sama dengan log debug file. | DEBUG_CONSOLE=false |
| LOG_TO_FILE | boolean | Atur ke false untuk menonaktifkan transport Winston berbasis file sambil tetap menjaga logging konsol tetap tersedia. | LOG_TO_FILE=true |
| CONSOLE_JSON | boolean | Aktifkan log konsol/stdout JSON verbose yang sesuai untuk penyebaran cloud seperti GCP/AWS. | CONSOLE_JSON=false |
| CONSOLE_JSON_STRING_LENGTH | number | Konfigurasikan ukuran pemotongan untuk nilai string dalam log konsol/stdout JSON. Default: 255. | # CONSOLE_JSON_STRING_LENGTH=255 |
| LIBRECHAT_LOG_DIR | string | Direktori kustom untuk file log. Default ke /app/logs (Docker) atau api/logs (pengembangan lokal). | # LIBRECHAT_LOG_DIR=/custom/log/path |
| MEM_DIAG | boolean | Aktifkan diagnostik memori — mencatat snapshot heap/RSS setiap 60 detik. Diaktifkan secara otomatis saat menjalankan dengan --inspect. | # MEM_DIAG=true |
| AGENT_DEBUG_LOGGING | boolean | Mengaktifkan pencatatan debug verbose di pengontrol agen (jumlah token, diagnostik pemangkasan konteks). | # AGENT_DEBUG_LOGGING=true |
Catatan:
DEBUG_LOGGINGdapat digunakan denganDEBUG_CONSOLEatauCONSOLE_JSONtetapi tidak keduanya sekaligus.DEBUG_CONSOLEdanCONSOLE_JSONbersifat eksklusif satu sama lain.CONSOLE_JSON: Saat menangani log konsol dalam penyebaran cloud (seperti GCP atau AWS), mengaktifkan ini akan membuang log dengan stempel waktu UTC dan memformatnya sebagai JSON.- Lihat: feat: Add CONSOLE_JSON
Catatan: DEBUG_CONSOLE tidak disarankan, karena outputnya bisa sangat panjang, sehingga fitur ini dinonaktifkan secara default.
Izin
UID dan GID adalah angka yang ditetapkan oleh Linux untuk setiap pengguna dan grup pada sistem. Jika Anda mengalami masalah izin, atur UID dan GID dari pengguna yang menjalankan perintah Docker Compose di sini. Aplikasi di dalam container akan berjalan dengan UID/GID tersebut.
| Key | Type | Description | Example |
|---|---|---|---|
| UID | number | ID pengguna. | # UID=1000 |
| GID | number | ID grup. | # GID=1000 |
OpenTelemetry Tracing
LibreChat dapat memancarkan trace OpenTelemetry backend untuk visibilitas API umum, HTTP, MongoDB, Mongoose, Redis, dan permintaan keluar. Span tingkat perintah Redis bersifat opsional (opt-in) agar trace default tetap berada pada tingkat tinggi. Gunakan Langfuse untuk observabilitas prompt/model khusus GenAI.
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | Aktifkan pelacakan OpenTelemetry backend. Pelacakan tetap dinonaktifkan jika OTEL_SDK_DISABLED=true. | # OTEL_TRACING_ENABLED=false |
| OTEL_SERVICE_NAME | string | Nama layanan yang dilaporkan ke OpenTelemetry. Default: librechat. | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | Versi layanan yang dilaporkan ke OpenTelemetry. Default ke versi paket jika tidak diatur. | # OTEL_SERVICE_VERSION= |
| OTEL_EXPORTER_OTLP_ENDPOINT | string | Endpoint eksportir OTLP dasar. | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | endpoint OTLP khusus untuk trace. Menggantikan endpoint dasar untuk trace jika diatur. | # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT= |
| OTEL_EXPORTER_OTLP_HEADERS | string | Header eksportir OTLP yang dipisahkan koma, seperti metadata otorisasi. | # OTEL_EXPORTER_OTLP_HEADERS= |
| OTEL_TRACES_EXPORTER | string | Pemilihan eksportir trace. | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | Sampler trace OpenTelemetry. Contoh default: parentbased_always_on. | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | Level log SDK OpenTelemetry. | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | Nonaktifkan SDK OpenTelemetry meskipun pelacakan diaktifkan. | # OTEL_SDK_DISABLED=false |
| OTEL_IOREDIS_TRACING_ENABLED | boolean | Aktifkan span tingkat perintah Redis. Dinonaktifkan secara default untuk menjaga agar trace backend tetap pada tingkat tinggi. | # OTEL_IOREDIS_TRACING_ENABLED=false |
Real User Monitoring (Browser)
LibreChat dapat memublikasikan telemetri Real User Monitoring (RUM) peramban ke kolektor OTLP yang kompatibel dengan HyperDX. RUM dinonaktifkan secara default.
| Key | Type | Description | Example |
|---|---|---|---|
| RUM_ENABLED | boolean | Aktifkan Real User Monitoring browser. Default: false. | # RUM_ENABLED=false |
| RUM_PROVIDER | string | Penyedia RUM Browser. Saat ini mendukung `hyperdx`. | # RUM_PROVIDER=hyperdx |
| RUM_URL | string | URL kolektor publik yang digunakan oleh mode public-token. | # RUM_URL=http://localhost:4318 |
| RUM_SERVICE_NAME | string | Nama layanan yang dilaporkan oleh SDK browser. Default: librechat-web. | # RUM_SERVICE_NAME=librechat-web |
| RUM_ENVIRONMENT | string | Label lingkungan dilaporkan dengan telemetri browser. | # RUM_ENVIRONMENT=development |
| RUM_AUTH_MODE | string | Mode autentikasi untuk telemetri browser. Gunakan `publicToken` atau `proxy`. | # RUM_AUTH_MODE=publicToken |
| RUM_PUBLIC_TOKEN | string | Token browser publik untuk mode public-token. Anggap ini sebagai publik dan batasi penyerapan di kolektor. | # RUM_PUBLIC_TOKEN= |
| RUM_PROXY_TARGET_URL | string | URL basis kolektor yang digunakan oleh mode proksi terautentikasi. Diperlukan saat `RUM_AUTH_MODE=proxy`. | # RUM_PROXY_TARGET_URL=http://otel-collector:4318 |
| RUM_PROXY_TIMEOUT_MS | number | Batas waktu permintaan proxy dalam milidetik. Default: 10000. | # RUM_PROXY_TIMEOUT_MS=10000 |
| RUM_TRACE_PROPAGATION_TARGETS | string | Origin atau URL HTTPS pihak pertama yang dipisahkan dengan koma yang harus menerima header traceparent. | # RUM_TRACE_PROPAGATION_TARGETS=https://api.example.com |
| RUM_DISABLE_REPLAY | boolean | Nonaktifkan pemutaran ulang sesi peramban. Default: true. | # RUM_DISABLE_REPLAY=true |
| RUM_CONSOLE_CAPTURE | boolean | Tangkap log konsol browser. Dapat mengumpulkan prompt, respons, atau payload sensitif. | # RUM_CONSOLE_CAPTURE=false |
| RUM_ADVANCED_NETWORK_CAPTURE | boolean | Menangkap payload jaringan secara mendetail. Dapat mengumpulkan prompt, respons, atau payload yang sensitif. | # RUM_ADVANCED_NETWORK_CAPTURE=false |
| RUM_SAMPLE_RATE | number | Tingkat sampel telemetri browser dari 0 hingga 1. Default: 1. | # RUM_SAMPLE_RATE=1 |
Dalam mode publicToken, browser mengirimkan telemetri secara langsung ke RUM_URL dengan RUM_PUBLIC_TOKEN. Dalam mode proxy, browser mengirimkan telemetri melalui LibreChat; backend memvalidasi sesi pengguna, menghapus header autentikasi aplikasi, dan meneruskan telemetri ke RUM_PROXY_TARGET_URL. Sesi yang tidak valid atau kedaluwarsa akan dihentikan dengan respons 204 sehingga kegagalan telemetri browser tidak memunculkan kesalahan autentikasi API yang normal. Hasil proxy dihitung dalam rum_proxy_requests_total dengan label endpoint dan result pada endpoint /metrics API LibreChat.
Jalur Konfigurasi - librechat.yaml
Tentukan lokasi alternatif untuk file konfigurasi LibreChat.
Anda dapat menentukan absolute path, relative path, atau URL. Nama file dalam path tersebut fleksibel dan tidak harus librechat.yaml; file konfigurasi apa pun yang valid akan berfungsi.
Catatan: Jika Anda lebih suka LibreChat mencari file konfigurasi di direktori root (yang merupakan perilaku default), cukup biarkan opsi ini tetap dikomentari.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_PATH | string | Lokasi alternatif untuk file konfigurasi LibreChat. | # CONFIG_PATH=https://raw.githubusercontent.com/danny-avila/LibreChat/main/librechat.example.yaml |
Keterampilan Deployment
Deployment Skills dimuat secara read-only saat startup dari sistem file dan diekspos kepada pengguna yang memiliki kapabilitas Skills yang diaktifkan.
| Key | Type | Description | Example |
|---|---|---|---|
| DEPLOYMENT_SKILLS_DIR | string | Direktori yang berisi Skill yang disediakan oleh deployment. Default-nya adalah `./skill` di root proyek. | # DEPLOYMENT_SKILLS_DIR=./skill |
Mulai ulang LibreChat setelah mengubah direktori ini atau berkas apa pun di dalamnya. Skills yang disediakan oleh deployment lebih diutamakan daripada Skills yang tersimpan dengan nama yang sama.
Validasi Konfigurasi
Secara default, LibreChat akan keluar dengan error (exit code 1) jika file konfigurasi librechat.yaml mengandung kesalahan validasi. Perilaku fail-fast ini membantu mendeteksi masalah konfigurasi lebih awal dalam pipeline deployment dan mencegah aplikasi berjalan dengan pengaturan default yang tidak diinginkan.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_BYPASS_VALIDATION | boolean | Jika diatur ke `true`, server akan mencatat peringatan dan tetap memulai dengan konfigurasi default meskipun `librechat.yaml` memiliki kesalahan validasi. Ini mempertahankan perilaku lama. | # CONFIG_BYPASS_VALIDATION=true |
Peringatan
Penggunaan CONFIG_BYPASS_VALIDATION=true tidak disarankan untuk lingkungan produksi. Pengaturan ini ditujukan sebagai solusi sementara saat men-debug masalah konfigurasi. Selalu perbaiki kesalahan validasi di dalam file konfigurasi Anda.
Penanganan Pengecualian yang Tidak Tertangkap (Uncaught Exception Handling)
Secara default, LibreChat akan menghentikan proses ketika terjadi pengecualian yang tidak tertangkap (uncaught exception), yang merupakan perilaku standar Node.js. Anda dapat mengganti pengaturan ini agar aplikasi tetap berjalan setelah terjadi pengecualian yang tidak tertangkap.
| Key | Type | Description | Example |
|---|---|---|---|
| CONTINUE_ON_UNCAUGHT_EXCEPTION | boolean | Jika diatur ke `true`, aplikasi akan tetap berjalan setelah menemui pengecualian yang tidak tertangkap alih-alih menghentikan proses. | # CONTINUE_ON_UNCAUGHT_EXCEPTION=false |
Peringatan
Tidak disarankan untuk produksi kecuali diperlukan. Pengecualian yang tidak tertangani (uncaught exceptions) dapat menyebabkan aplikasi berada dalam kondisi yang tidak dapat diprediksi.
Endpoints
Pada bagian ini, Anda dapat mengonfigurasi endpoint dan pemilihan model, kunci API-nya, serta pengaturan proxy dan reverse proxy untuk endpoint yang mendukungnya.
Konfigurasi Umum
Hapus tanda komentar pada ENDPOINTS untuk menyesuaikan endpoint yang tersedia di LibreChat.
| Key | Type | Description | Example |
|---|---|---|---|
| ENDPOINTS | string | Daftar endpoint yang tersedia, dipisahkan dengan koma. | # ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom |
| PROXY | string | Proksi keluar untuk klien sisi server yang didukung. Berlaku untuk target HTTP maupun HTTPS. | PROXY= |
| HTTP_PROXY | string | Fallback proxy HTTP yang digunakan oleh klien sisi server yang didukung saat PROXY tidak diatur. | # HTTP_PROXY= |
| HTTPS_PROXY | string | Fallback proxy HTTPS yang digunakan oleh klien sisi server yang didukung saat PROXY tidak disetel. | # HTTPS_PROXY= |
| NO_PROXY | string | Host, domain, atau rentang IP yang dipisahkan koma yang harus dilewati oleh klien sisi server yang didukung. Varian no_proxy huruf kecil juga didukung. | # NO_PROXY= |
| TITLE_CONVO | boolean | Aktifkan penamaan judul untuk semua endpoint. | TITLE_CONVO=true |
Endpoint yang Diketahui - librechat.yaml
- lihat juga: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| ANYSCALE_API_KEY | string | Kunci API untuk Anyscale. | # ANYSCALE_API_KEY= |
| APIPIE_API_KEY | string | Kunci API untuk Apipie. | # APIPIE_API_KEY= |
| COHERE_API_KEY | string | Kunci API untuk Cohere. | # COHERE_API_KEY= |
| FIREWORKS_API_KEY | string | Kunci API untuk Fireworks. | # FIREWORKS_API_KEY= |
| GROQ_API_KEY | string | Kunci API untuk Groq. | # GROQ_API_KEY= |
| MISTRAL_API_KEY | string | Kunci API untuk Mistral. | # MISTRAL_API_KEY= |
| OPENROUTER_KEY | string | Kunci API untuk OpenRouter. | # OPENROUTER_KEY= |
| PERPLEXITY_API_KEY | string | Kunci API untuk Perplexity. | # PERPLEXITY_API_KEY= |
| SHUTTLEAI_API_KEY | string | Kunci API untuk ShuttleAI. | # SHUTTLEAI_API_KEY= |
| TOGETHERAI_API_KEY | string | Kunci API untuk TogetherAI. | # TOGETHERAI_API_KEY= |
| DEEPSEEK_API_KEY | string | Kunci API untuk Deepseek API | # DEEPSEEK_API_KEY= |
Pencarian Web
Fitur pencarian web memungkinkan kemampuan pencarian internet di dalam LibreChat.
Penting: Nama variabel lingkungan yang tepat yang ditunjukkan di bawah ini adalah referensi default dan dapat disesuaikan melalui file konfigurasi librechat.yaml untuk menggunakan nama variabel apa pun yang Anda sukai.
Untuk opsi konfigurasi dan kustomisasi terperinci, lihat: Web Search Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| SERPER_API_KEY | string | Kunci API untuk penyedia pencarian Serper. Dapatkan kunci Anda dari https://serper.dev/api-keys | # SERPER_API_KEY= |
| TAVILY_API_KEY | string | API key untuk penyedia pencarian dan scraper Tavily. Dapatkan kunci Anda dari https://app.tavily.com/home | # TAVILY_API_KEY= |
| TAVILY_SEARCH_URL | string | URL API Pencarian Tavily Kustom (opsional). Hanya diperlukan untuk endpoint pencarian kustom atau proxy yang kompatibel dengan Tavily. | # TAVILY_SEARCH_URL= |
| TAVILY_EXTRACT_URL | string | URL API Ekstrak Tavily Kustom (opsional). Hanya diperlukan untuk endpoint ekstrak kustom atau proxy yang kompatibel dengan Tavily. | # TAVILY_EXTRACT_URL= |
| FIRECRAWL_API_KEY | string | Kunci API untuk layanan scraper Firecrawl. Dapatkan kunci Anda dari https://docs.firecrawl.dev/introduction#api-key | # FIRECRAWL_API_KEY= |
| FIRECRAWL_API_URL | string | URL API Firecrawl kustom (opsional). Hanya diperlukan untuk instance Firecrawl kustom. | # FIRECRAWL_API_URL= |
| FIRECRAWL_VERSION | string | Versi API Firecrawl (v0 atau v1). | # FIRECRAWL_VERSION=v1 |
| JINA_API_KEY | string | Kunci API untuk layanan Jina reranker. Dapatkan kunci Anda dari https://jina.ai/api-dashboard/ | # JINA_API_KEY= |
| JINA_API_URL | string | URL API Jina kustom (opsional). Hanya diperlukan untuk instans Jina kustom. | # JINA_API_URL= |
| COHERE_API_KEY | string | Kunci API untuk layanan reranker Cohere. Dapatkan kunci Anda dari https://dashboard.cohere.com/welcome/login | # COHERE_API_KEY= |
Catatan: Nama variabel ini dapat disesuaikan di dalam file konfigurasi librechat.yaml Anda. Sebagai contoh, Anda dapat menggunakan CUSTOM_SERPER_KEY alih-alih SERPER_API_KEY dengan mengonfigurasinya di pengaturan pencarian web. Lihat dokumentasi Web Search Configuration untuk detail mengenai penyesuaian nama variabel.
Anthropic
lihat: Anthropic Endpoint
- Anda dapat meminta kunci akses dari https://platform.claude.com/
- Biarkan
ANTHROPIC_API_KEY=kosong untuk menonaktifkan endpoint ini - Atur
ANTHROPIC_API_KEY=menjadi "user_provided" untuk mengizinkan pengguna memberikan kunci API mereka sendiri dari WebUI - Jika Anda memiliki akses ke reverse proxy untuk
Anthropic, Anda dapat mengaturnya denganANTHROPIC_REVERSE_PROXY=- biarkan kosong atau beri komentar untuk menggunakan base url default
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_API_KEY | string | Kunci API Anthropic atau "user_provided" untuk mengizinkan pengguna menyediakan kunci API mereka sendiri. | Defaults to an empty string. |
| ANTHROPIC_MODELS | string | Daftar model Anthropic yang dipisahkan dengan koma untuk digunakan. | # 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 | Proksi balik untuk Anthropic. | # ANTHROPIC_REVERSE_PROXY= |
| ANTHROPIC_TITLE_MODEL | string | TIDAK LAGI DIGUNAKAN: Model yang digunakan untuk pemberian judul dengan Anthropic. | # ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307 |
ANTHROPIC_TITLE_MODELkini telah usang dan akan dihapus pada versi mendatang. Gunakan Pengaturan EndpointtitleModelsebagai gantinya di dalam konfigurasilibrechat.yaml.
Catatan: Harus kompatibel dengan Anthropic endpoint. Selain itu, model Claude 2 dan Claude 3 memberikan performa terbaik untuk tugas ini, dengan model
claude-3-haikusebagai yang termurah.
Claude Fable 5 disertakan dalam daftar model Anthropic default. Model kelas Fable/Mythos menggunakan perilaku Anthropic modern di LibreChat: konteks 1M, dukungan adaptive thinking, dukungan prompt caching, dan penanganan thinkingDisplay untuk output penalaran yang diringkas atau dihilangkan.
Anthropic melalui Vertex AI
Anda juga dapat menggunakan model Anthropic Claude melalui Google Cloud Vertex AI. Untuk opsi konfigurasi YAML yang mendetail, lihat: Konfigurasi Anthropic Vertex AI
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_USE_VERTEX | boolean | Atur ke true untuk menggunakan model Anthropic melalui Google Vertex AI alih-alih API langsung. | ANTHROPIC_USE_VERTEX=true |
| ANTHROPIC_VERTEX_REGION | string | Wilayah Google Cloud untuk Vertex AI. Default: us-east5. | ANTHROPIC_VERTEX_REGION=us-east5 |
Catatan: Saat menggunakan Vertex AI, Anda juga harus mengonfigurasi
GOOGLE_SERVICE_KEY_FILE(lihat Google Configuration) dengan akun layanan yang memiliki peranVertex AI User.
AWS Bedrock
Lihat: AWS Bedrock Setup
| Key | Type | Description | Example |
|---|---|---|---|
| BEDROCK_AWS_DEFAULT_REGION | string | Wilayah AWS default harus disediakan untuk Bedrock. | BEDROCK_AWS_DEFAULT_REGION=us-east-1 |
| BEDROCK_AWS_ACCESS_KEY_ID | string | ID kunci akses AWS untuk Bedrock. Opsional jika menggunakan rantai kredensial AWS default. | # BEDROCK_AWS_ACCESS_KEY_ID=your_access_key_id |
| BEDROCK_AWS_SECRET_ACCESS_KEY | string | AWS secret access key untuk Bedrock. Opsional jika menggunakan rantai kredensial AWS default. | # BEDROCK_AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| BEDROCK_AWS_SESSION_TOKEN | string | Token sesi AWS untuk kredensial sementara. Opsional. | # BEDROCK_AWS_SESSION_TOKEN=your_session_token |
| BEDROCK_AWS_PROFILE | string | Nama profil konfigurasi bersama AWS untuk Bedrock. Opsional jika menggunakan rantai kredensial AWS default. | # BEDROCK_AWS_PROFILE=your-profile-name |
| BEDROCK_AWS_BEARER_TOKEN | string | Kunci API Amazon Bedrock untuk autentikasi bearer, atau user_provided agar pengguna dapat memasukkan kunci API Bedrock mereka sendiri di UI. | # BEDROCK_AWS_BEARER_TOKEN=your_bedrock_api_key |
| BEDROCK_AWS_MODELS | string | Daftar ID model Bedrock yang dipisahkan dengan koma. Jika dihilangkan, semua model yang didukung dan diketahui akan disertakan. | # 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 |
Catatan: Anda dapat mengabaikan kunci akses untuk menggunakan rantai kredensial AWS default (variabel lingkungan, kredensial SSO, file kredensial bersama, atau Layanan Metadata Instans EC2/ECS). Lihat AWS Bedrock Setup untuk detail lebih lanjut.
Model Claude Fable/Mythos-class pada Bedrock hanya berupa inference-profile. Gunakan ID profil seperti us.anthropic.claude-fable-5, dan aktifkan pengaturan berbagi data Anthropic yang diperlukan di konsol Bedrock atau Data Retention API sebelum memanggilnya.
BingAI
Bing, juga digunakan untuk Sydney, jailbreak, dan Bing Image Creator
| Key | Type | Description | Example |
|---|---|---|---|
| BINGAI_TOKEN | string | Token akses Bing. Biarkan kosong untuk menonaktifkan. Dapat diatur ke "user_provided" agar pengguna dapat memberikan token mereka sendiri dari WebUI. | BINGAI_TOKEN=user_provided |
| BINGAI_HOST | string | URL host Bing. Biarkan dikomentari untuk menggunakan server default. | # BINGAI_HOST=https://cn.bing.com |
Catatan: Disarankan untuk membiarkannya sebagai "user_provided" dan memberikan token dari WebUI.
Ikuti petunjuk ini untuk mengatur Google Endpoint
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_KEY | string | Kunci API Google. Atur ke "user_provided" agar pengguna dapat memasukkan kunci API mereka sendiri melalui WebUI. | GOOGLE_KEY=user_provided |
| GOOGLE_SERVICE_KEY_FILE | string | Jalur ke file kunci JSON akun layanan Google, URL untuk mengambilnya, atau JSON string. Digunakan untuk autentikasi Vertex AI (misalnya, fitur OCR). | GOOGLE_SERVICE_KEY_FILE=/path/to/auth.json |
| GOOGLE_REVERSE_PROXY | string | URL reverse proxy Google. | GOOGLE_REVERSE_PROXY= |
| GOOGLE_AUTH_HEADER | boolean | Gunakan header Authorization alih-alih X-goog-api-key. Beberapa reverse proxy memerlukan ini. | # GOOGLE_AUTH_HEADER=true |
| GOOGLE_MODELS | string | Model Gemini API Google yang tersedia, dipisahkan dengan koma. | 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 | Model Vertex AI Google yang tersedia, dipisahkan dengan koma. | 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 | TIDAK LAGI DIDUKUNG: Model yang digunakan untuk pemberian judul dengan Google. | GOOGLE_TITLE_MODEL=gemini-pro |
| GOOGLE_LOC | string | Menentukan lokasi Google Cloud untuk memproses permintaan API | GOOGLE_LOC=us-central1 |
| GOOGLE_CLOUD_LOCATION | string | Wilayah alternatif untuk Pembuatan Gambar Gemini (contoh: global). | # GOOGLE_CLOUD_LOCATION=global |
| GOOGLE_EXCLUDE_SAFETY_SETTINGS | string | Hilangkan sepenuhnya pengaturan keamanan yang disertakan secara default, yang akan menggunakan pengaturan default penyedia | GOOGLE_EXCLUDE_SAFETY_SETTINGS=true |
| GOOGLE_SAFETY_SEXUALLY_EXPLICIT | string | Pengaturan keamanan untuk konten seksual eksplisit. Opsinya adalah BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY, dan OFF. | GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_HATE_SPEECH | string | Pengaturan keamanan untuk konten ujaran kebencian. Opsinya adalah BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY, dan OFF. | GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_HARASSMENT | string | Pengaturan keamanan untuk konten pelecehan. Opsinya adalah BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY, dan OFF. | GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_DANGEROUS_CONTENT | string | Pengaturan keamanan untuk konten berbahaya. Opsinya adalah BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY, dan OFF. | GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_CIVIC_INTEGRITY | string | Pengaturan keamanan untuk konten integritas sipil. Opsinya adalah BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY, dan OFF. | # GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH |
Sesuaikan model yang tersedia, dipisahkan dengan koma, tanpa spasi. Model pertama akan menjadi default. Biarkan kosong atau beri komentar untuk menggunakan pengaturan internal.
GOOGLE_TITLE_MODELkini telah usang dan akan dihapus di versi mendatang. Gunakan Pengaturan EndpointtitleModelsebagai gantinya di dalam konfigurasilibrechat.yaml.
Catatan: Untuk variabel GOOGLE_SAFETY pada Vertex AI, Anda tidak memiliki akses ke pengaturan BLOCK_NONE secara default. Untuk menggunakan pengaturan HarmBlockThreshold yang dibatasi ini, Anda perlu melakukan salah satu dari hal berikut:
- (a) Dapatkan akses melalui allowlist melalui tim akun Google Anda
- (b) Ubah jenis akun Anda ke penagihan faktur bulanan dengan mengikuti petunjuk ini: https://cloud.google.com/billing/docs/how-to/invoiced-billing
Pembuatan Gambar Gemini
Gemini Image Generation adalah alat untuk Agen yang mendukung Gemini API maupun Vertex AI. Lihat: Gemini Image Generation
| Key | Type | Description | Example |
|---|---|---|---|
| GEMINI_API_KEY | string | Kunci API Gemini khusus untuk pembuatan gambar. Akan kembali menggunakan GOOGLE_KEY jika tidak diatur. | # GEMINI_API_KEY=your_gemini_api_key |
| GEMINI_IMAGE_MODEL | string | Model Gemini untuk pembuatan gambar. Default: gemini-2.5-flash-image. | # GEMINI_IMAGE_MODEL=gemini-2.5-flash-image |
Catatan: Jika tidak ada kunci API yang dikonfigurasi, alat ini secara otomatis akan beralih ke Vertex AI menggunakan akun layanan dari
GOOGLE_SERVICE_KEY_FILE. Akun layanan tersebut harus memiliki peranVertex AI User.
OpenAI
Lihat: OpenAI Setup
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_API_KEY | string | Kunci API OpenAI Anda. Biarkan kosong untuk menonaktifkan endpoint ini atau atur ke "user_provided" agar pengguna dapat memasukkan kunci API mereka sendiri melalui WebUI. | OPENAI_API_KEY=user_provided |
| OPENAI_MODELS | string | Sesuaikan model yang tersedia, dipisahkan dengan koma, tanpa spasi. Model pertama akan menjadi default. Biarkan dalam bentuk komentar untuk menggunakan pengaturan internal. | # 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 | Aktifkan mode debug untuk endpoint OpenAI. | DEBUG_OPENAI=false |
| OPENAI_SUMMARIZE | boolean | Aktifkan peringkasan pesan. False secara default | # OPENAI_SUMMARIZE=true |
| OPENAI_SUMMARY_MODEL | string | Model yang digunakan untuk peringkasan OpenAI. | # OPENAI_SUMMARY_MODEL=gpt-3.5-turbo |
| OPENAI_FORCE_PROMPT | boolean | Paksa API untuk dipanggil dengan payload prompt alih-alih payload messages. | # OPENAI_FORCE_PROMPT=false |
| OPENAI_ORGANIZATION | string | Tentukan organisasi mana yang akan digunakan untuk setiap permintaan API ke OpenAI. Opsional | # OPENAI_ORGANIZATION= |
| OPENAI_REVERSE_PROXY | string | TIDAK LAGI DIDUKUNG: Pengaturan reverse proxy untuk OpenAI. | # OPENAI_REVERSE_PROXY= |
| OPENAI_TITLE_MODEL | string | DEPRECATED: Model yang digunakan untuk penamaan OpenAI. | # OPENAI_TITLE_MODEL=gpt-3.5-turbo |
OPENAI_TITLE_MODELkini telah usang dan akan dihapus pada versi mendatang. Gunakan Pengaturan endpointtitleModelsebagai gantinya di dalam konfigurasilibrechat.yaml.OPENAI_REVERSE_PROXYkini sudah tidak digunakan lagi (deprecated) dan akan dihapus pada versi mendatang. Gunakan custom endpoint sebagai gantinya.
Assistants
Lihat: Assistants Setup
| Key | Type | Description | Example |
|---|---|---|---|
| ASSISTANTS_API_KEY | string | Kunci API OpenAI Anda untuk Assistants API. Biarkan kosong untuk menonaktifkan endpoint ini atau atur ke "user_provided" agar pengguna dapat memasukkan kunci API mereka sendiri melalui WebUI. | ASSISTANTS_API_KEY=user_provided |
| ASSISTANTS_MODELS | string | Sesuaikan model yang tersedia, dipisahkan dengan koma, tanpa spasi. Model pertama akan menjadi default. Biarkan kosong untuk menggunakan pengaturan internal. | # 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 dasar alternatif untuk Assistants API. | # ASSISTANTS_BASE_URL= |
Catatan: Anda dapat menyesuaikan model yang tersedia, dipisahkan dengan koma, tanpa spasi. Model pertama akan menjadi default. Biarkan kosong atau beri komentar untuk menggunakan pengaturan internal.
Tavily
Dapatkan kunci API Anda di sini: https://tavily.com/#api
Variabel Lingkungan:
| Key | Type | Description | Example |
|---|---|---|---|
| TAVILY_API_KEY | string | Kunci API Tavily. | TAVILY_API_KEY= |
Traversaal
Deskripsi: Alat pencarian yang ditingkatkan dengan LLM.
Dapatkan API key di sini: https://api.traversaal.ai/dashboard
Variabel Lingkungan:
| Key | Type | Description | Example |
|---|---|---|---|
| TRAVERSAAL_API_KEY | string | Kunci API Traversaal. | TRAVERSAAL_API_KEY= |
WolframAlpha
Lihat instruksi mendetail di sini: Wolfram Alpha
Variabel Lingkungan:
| Key | Type | Description | Example |
|---|---|---|---|
| WOLFRAM_APP_ID | string | ID Aplikasi Wolfram Alpha. | WOLFRAM_APP_ID= |
Zapier
Deskripsi: - Anda memerlukan akun Zapier. Dapatkan kunci API Anda dari sini: Zapier
- Buat tindakan yang diizinkan - Ikuti langkah 3 dalam panduan memulai dari Zapier ini
Catatan: Zapier diketahui cukup sensitif terhadap tindakan tertentu. Menulis draf email mungkin adalah penggunaan terbaik untuknya.
Variabel Lingkungan:
| Key | Type | Description | Example |
|---|---|---|---|
| ZAPIER_NLA_API_KEY | string | Kunci API Zapier NLA. | ZAPIER_NLA_API_KEY= |
OpenWeather
Lihat instruksi terperinci di sini: OpenWeather
| Key | Type | Description | Example |
|---|---|---|---|
| OPENWEATHER_API_KEY | string | Kunci API OpenWeather untuk One Call API 3.0. | OPENWEATHER_API_KEY= |
Code Interpreter
Code Interpreter API menyediakan lingkungan yang aman untuk mengeksekusi kode dan mengelola file. Lihat: Code Interpreter API
| Key | Type | Description | Example |
|---|---|---|---|
| LIBRECHAT_CODE_API_KEY | string | Kunci API untuk layanan Code Interpreter. Jika diatur secara global, memberikan akses ke semua pengguna. | LIBRECHAT_CODE_API_KEY=your-api-key |
| LIBRECHAT_CODE_BASEURL | string | URL dasar kustom untuk API Code Interpreter (hanya untuk paket Enterprise). | # LIBRECHAT_CODE_BASEURL=https://your-custom-domain.com |
Artifacts
Artifacts memanfaatkan pustaka CodeSandbox untuk rendering kode HTML/JS yang aman. Secara default, CDN publik yang dihosting oleh CodeSandbox digunakan.
Untungnya, bagi mereka yang memiliki kebutuhan jaringan internal, Anda dapat melakukan self-host pada bundler yang mengompilasi kode frontend dan menentukan URL bundler kustom untuk Sandpack.
Untuk informasi lebih lanjut, termasuk image container siap pakai untuk self-hosting dengan permintaan metrik yang dihapus, lihat: https://github.com/LibreChat-AI/codesandbox-client
| Key | Type | Description | Example |
|---|---|---|---|
| SANDPACK_BUNDLER_URL | string | Menentukan URL bundler kustom untuk Sandpack, yang digunakan oleh Artifacts | SANDPACK_BUNDLER_URL=your-bundler-url |
Pencarian (Meilisearch)
Mengaktifkan pencarian dalam pesan dan percakapan:
| Key | Type | Description | Example |
|---|---|---|---|
| SEARCH | boolean | Mengaktifkan pencarian dalam pesan dan percakapan. | SEARCH=true |
Catatan: Jika Anda tidak menggunakan Docker, ini memerlukan instalasi Meilisearch yang di-host sendiri secara gratis atau paket jarak jauh berbayar.
Untuk menonaktifkan analitik telemetri anonim bagi MeiliSearch demi privasi mutlak, atur ke true:
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_ANALYTICS | boolean | Menonaktifkan analitik telemetri anonim untuk MeiliSearch. | MEILI_NO_ANALYTICS=true |
Agar server API dapat terhubung ke server pencarian. Ganti '0.0.0.0' dengan 'meilisearch' jika menjalankan MeiliSearch dengan docker-compose.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_HOST | string | Koneksi server API ke server pencarian. | MEILI_HOST=http://0.0.0.0:7700 |
Kunci utama ini harus setidaknya 16 byte, terdiri dari karakter UTF-8 yang valid. MeiliSearch akan menampilkan error dan menolak untuk dijalankan jika tidak ada kunci utama yang disediakan atau jika kurang dari 16 byte. MeiliSearch akan menyarankan kunci utama yang aman dan dibuat secara otomatis. Ini adalah kunci aman siap pakai untuk docker-compose, Anda dapat menggantinya dengan milik Anda sendiri.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_MASTER_KEY | string | Kunci utama untuk MeiliSearch. | MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt |
Untuk mencegah LibreChat mencoba melakukan sinkronisasi pengindeksan basis data dengan Meilisearch, Anda dapat mengatur variabel lingkungan berikut ke true. Hal ini berguna dalam klaster node, atau pengaturan multi-node, di mana hanya satu instans yang harus bertanggung jawab untuk pengindeksan.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_SYNC | string | Alihkan untuk menonaktifkan sinkronisasi indeks Meilisearch | MEILI_NO_SYNC=true |
RAG API
Konfigurasikan Retrieval-Augmented Generation untuk pengindeksan dokumen dan respons yang sadar konteks. Lihat: RAG API Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | URL layanan RAG API. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | Kunci API OpenAI untuk embedding RAG. Menggantikan OPENAI_API_KEY untuk RAG. | # RAG_OPENAI_API_KEY=sk-your-openai-api-key |
| RAG_OPENAI_BASEURL | string | URL dasar OpenAI kustom untuk penyematan RAG. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | Ambil seluruh konteks file alih-alih 4 hasil teratas. Default: false. | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Penyedia embeddings: openai, azure, huggingface, huggingfacetei, atau ollama. Default: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Model embeddings yang akan digunakan. Default bergantung pada penyedia. | # EMBEDDINGS_MODEL=text-embedding-3-small |
Catatan: Saat menggunakan pengaturan Docker default, file
.envdigunakan bersama antara LibreChat dan RAG API. Untuk opsi konfigurasi lengkap, lihat dokumentasi RAG API.
Speech to Text & Text to Speech
Konfigurasikan layanan Speech-to-Text (STT) dan Text-to-Speech (TTS). Lihat: Pengaturan Suara
| Key | Type | Description | Example |
|---|---|---|---|
| STT_API_KEY | string | Kunci API untuk layanan Speech-to-Text (contoh: OpenAI Whisper). | # STT_API_KEY= |
| TTS_API_KEY | string | Kunci API untuk layanan Text-to-Speech (contoh: OpenAI TTS). | # TTS_API_KEY= |
Catatan: STT dan TTS terutama dikonfigurasi melalui bagian
speech:di dalamlibrechat.yaml. Variabel lingkungan ini direferensikan dalam konfigurasi tersebut. Lihat Speech Settings untuk opsi konfigurasi YAML selengkapnya.
Tautan Bersama
Konfigurasikan fungsionalitas tautan percakapan yang dibagikan.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_SHARED_LINKS | boolean | Aktifkan atau nonaktifkan tautan percakapan yang dibagikan. Default: true. | ALLOW_SHARED_LINKS=true |
| ALLOW_SHARED_LINKS_PUBLIC | boolean | Izinkan tautan yang dibagikan untuk dapat diakses publik tanpa autentikasi. Default: false. | ALLOW_SHARED_LINKS_PUBLIC=false |
| SHARED_LINKS_SNAPSHOT_FILES | boolean | File snapshot yang direferensikan oleh obrolan yang dibagikan agar penampil dapat melihat pratinjau atau mengunduhnya melalui tautan yang dibagikan. Menggantikan interface.sharedLinks.snapshotFiles saat diatur. | SHARED_LINKS_SNAPSHOT_FILES=true |
ALLOW_SHARED_LINKS adalah tombol pengalih untuk fitur ini secara menyeluruh. Izin peran sekarang mengontrol siapa yang dapat membuat tautan bersama, membagikannya dengan pengguna terautentikasi, atau membuatnya terlihat oleh semua orang; lihat interface.sharedLinks. ALLOW_SHARED_LINKS_PUBLIC hanya mengontrol apakah tautan yang dibagikan secara publik dapat dilihat tanpa autentikasi. SHARED_LINKS_SNAPSHOT_FILES adalah penggantian global untuk snapshot file tautan bersama dan dapat menonaktifkan penyajian snapshot untuk setiap tautan jika diatur ke false.
Sistem Pengguna
Bagian ini berisi konfigurasi untuk:
Moderasi
Sistem Moderasi Otomatis menggunakan mekanisme penilaian untuk melacak pelanggaran pengguna. Saat pengguna melakukan tindakan seperti login, pendaftaran, atau pengiriman pesan yang berlebihan, mereka akan mengumpulkan skor pelanggaran. Setelah mencapai ambang batas yang ditetapkan, pengguna dan IP mereka akan diblokir sementara. Sistem ini memastikan keamanan platform dengan memantau dan memberikan penalti terhadap aktivitas yang cepat atau mencurigakan.
lihat: Automated Moderation
Pengaturan Moderasi Dasar
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | Apakah akan mengaktifkan moderasi OpenAI pada endpoint **OpenAI** dan **Plugins** atau tidak. | OPENAI_MODERATION=false |
| OPENAI_MODERATION_API_KEY | string | Kunci API OpenAI Anda. | OPENAI_MODERATION_API_KEY= |
| OPENAI_MODERATION_REVERSE_PROXY | string | Catatan: Dinonaktifkan secara default, ini tidak berfungsi dengan semua reverse proxy. | # OPENAI_MODERATION_REVERSE_PROXY= |
Pengaturan Pemblokiran
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | Apakah akan mengaktifkan pemblokiran pengguna karena pelanggaran atau tidak (mereka akan tetap dicatat). | BAN_VIOLATIONS=true |
| BAN_DURATION | integer | Berapa lama pengguna dan IP terkait diblokir (dalam milidetik). | BAN_DURATION=1000 * 60 * 60 * 2 |
| BAN_INTERVAL | integer | Pengguna akan diblokir setiap kali skor mereka mencapai/melewati ambang batas interval. | BAN_INTERVAL=20 |
Pembatasan laju login dan pendaftaran
Mencegah serangan brute force dan pendaftaran spam dengan membatasi upaya masuk dan pendaftaran akun baru.
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | integer | Jumlah maksimum login yang diizinkan per IP per LOGIN_WINDOW. | LOGIN_MAX=7 |
| LOGIN_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk LOGIN_MAX login. | LOGIN_WINDOW=5 |
| REGISTER_MAX | integer | Jumlah maksimum pendaftaran yang diizinkan per IP per REGISTER_WINDOW. | REGISTER_MAX=5 |
| REGISTER_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk pendaftaran REGISTER_MAX. | REGISTER_WINDOW=60 |
Skor untuk setiap pelanggaran
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | Skor untuk pelanggaran login. | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | Skor untuk pelanggaran pendaftaran. | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | Skor untuk pelanggaran serentak. | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | Skor untuk pelanggaran pesan. | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | Skor untuk pelanggaran non-browser. | NON_BROWSER_VIOLATION_SCORE=20 |
| ILLEGAL_MODEL_REQ_SCORE | integer | Skor untuk permintaan model ilegal. | ILLEGAL_MODEL_REQ_SCORE=5 |
| IMPORT_VIOLATION_SCORE | integer | Skor untuk pelanggaran impor percakapan. | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | Skor untuk pelanggaran percabangan percakapan. | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | Skor untuk pelanggaran text-to-speech. | TTS_VIOLATION_SCORE=0 |
| STT_VIOLATION_SCORE | integer | Skor untuk pelanggaran speech-to-text. | STT_VIOLATION_SCORE=0 |
| FILE_UPLOAD_VIOLATION_SCORE | integer | Skor untuk pelanggaran unggahan file. | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | Skor untuk pelanggaran pengaturan ulang kata sandi. | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | Skor untuk pelanggaran verifikasi email. | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | Skor untuk pelanggaran pemanggilan tool. | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | Skor untuk pelanggaran akses percakapan. | CONVO_ACCESS_VIOLATION_SCORE=0 |
Catatan: Akses non-browser dan permintaan model ilegal hampir selalu bersifat jahat karena berarti pihak ke-3 sedang mencoba mengakses server melalui skrip otomatis.
Pembatasan kecepatan pesan (per pengguna & IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | Apakah akan membatasi jumlah pesan yang dapat dikirim pengguna per permintaan. | LIMIT_CONCURRENT_MESSAGES=true |
| CONCURRENT_MESSAGE_MAX | integer | Jumlah maksimum pesan yang dapat dikirim pengguna per permintaan. | CONCURRENT_MESSAGE_MAX=2 |
Pembatas
Catatan: Anda dapat menggunakan kedua pembatas, tetapi setelan defaultnya adalah membatasi berdasarkan IP saja.
Pembatas IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | Apakah akan membatasi jumlah pesan yang dapat dikirim oleh sebuah IP per `MESSAGE_IP_WINDOW`. | LIMIT_MESSAGE_IP=true |
| MESSAGE_IP_MAX | integer | Jumlah maksimum pesan yang dapat dikirim oleh sebuah IP per `MESSAGE_IP_WINDOW`. | MESSAGE_IP_MAX=40 |
| MESSAGE_IP_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk `MESSAGE_IP_MAX` pesan. | MESSAGE_IP_WINDOW=1 |
Pembatas Pengguna:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | Apakah akan membatasi jumlah pesan yang dapat dikirim pengguna per `MESSAGE_USER_WINDOW`. | LIMIT_MESSAGE_USER=false |
| MESSAGE_USER_MAX | integer | Jumlah maksimum pesan yang dapat dikirim pengguna per `MESSAGE_USER_WINDOW`. | MESSAGE_USER_MAX=40 |
| MESSAGE_USER_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk pesan `MESSAGE_USER_MAX`. | MESSAGE_USER_WINDOW=1 |
Pembatasan laju impor percakapan
Membatasi seberapa sering pengguna dapat mengimpor percakapan untuk mencegah penyalahgunaan.
Catatan: Anda dapat menggunakan kedua pembatas, tetapi setelan defaultnya adalah membatasi berdasarkan IP saja.
Pembatas IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | Apakah akan membatasi jumlah impor percakapan yang dapat dilakukan oleh sebuah IP per `IMPORT_IP_WINDOW`. | LIMIT_IMPORT_IP=true |
| IMPORT_IP_MAX | integer | Jumlah maksimum impor percakapan yang dapat dilakukan oleh sebuah IP per `IMPORT_IP_WINDOW`. | IMPORT_IP_MAX=100 |
| IMPORT_IP_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk impor `IMPORT_IP_MAX`. | IMPORT_IP_WINDOW=1 |
Pembatas Pengguna:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | Apakah akan membatasi jumlah impor percakapan yang dapat dilakukan pengguna per `IMPORT_USER_WINDOW`. | LIMIT_IMPORT_USER=false |
| IMPORT_USER_MAX | integer | Jumlah maksimum impor percakapan yang dapat dilakukan pengguna per `IMPORT_USER_WINDOW`. | IMPORT_USER_MAX=50 |
| IMPORT_USER_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk impor `IMPORT_USER_MAX`. | IMPORT_USER_WINDOW=1 |
Pembatasan laju forking percakapan
Membatasi seberapa sering pengguna dapat melakukan fork pada percakapan untuk mencegah penyalahgunaan.
Catatan: Anda dapat menggunakan kedua pembatas, tetapi setelan defaultnya adalah membatasi berdasarkan IP saja.
Pembatas IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | Apakah akan membatasi jumlah percabangan percakapan yang dapat dibuat oleh sebuah IP per `FORK_IP_WINDOW`. | LIMIT_FORK_IP=true |
| FORK_IP_MAX | integer | Jumlah maksimum fork percakapan yang dapat dibuat oleh sebuah IP per `FORK_IP_WINDOW`. | FORK_IP_MAX=30 |
| FORK_IP_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk fork `FORK_IP_MAX`. | FORK_IP_WINDOW=1 |
Pembatas Pengguna:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | Apakah akan membatasi jumlah percabangan percakapan yang dapat dibuat pengguna per `FORK_USER_WINDOW`. | LIMIT_FORK_USER=false |
| FORK_USER_MAX | integer | Jumlah maksimum percabangan percakapan yang dapat dibuat pengguna per `FORK_USER_WINDOW`. | FORK_USER_MAX=7 |
| FORK_USER_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk fork `FORK_USER_MAX`. | FORK_USER_WINDOW=1 |
Pembatasan laju unggah file
Membatasi seberapa sering pengguna dapat mengunggah file untuk mencegah penyalahgunaan.
Catatan: Ini juga dapat dikonfigurasi melalui
librechat.yamldi bagianrateLimits.fileUploads.
Pembatas IP:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_IP_MAX | integer | Batas unggahan file per IP per `FILE_UPLOAD_IP_WINDOW`. Default: 100. | # FILE_UPLOAD_IP_MAX=100 |
| FILE_UPLOAD_IP_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk `FILE_UPLOAD_IP_MAX`. Default: 15. | # FILE_UPLOAD_IP_WINDOW=15 |
Pembatas Pengguna:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_USER_MAX | integer | Batas unggahan file per pengguna per `FILE_UPLOAD_USER_WINDOW`. Default: 50. | # FILE_UPLOAD_USER_MAX=50 |
| FILE_UPLOAD_USER_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk `FILE_UPLOAD_USER_MAX`. Default: 15. | # FILE_UPLOAD_USER_WINDOW=15 |
Pembatasan laju (rate limiting) TTS (Text-to-Speech)
Membatasi seberapa sering pengguna dapat menggunakan Text-to-Speech untuk mencegah penyalahgunaan.
Catatan: Ini juga dapat dikonfigurasi melalui
librechat.yamldi bagianrateLimits.tts.
Pembatas IP:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_IP_MAX | integer | Jumlah maksimum permintaan TTS per IP per `TTS_IP_WINDOW`. Default: 100. | # TTS_IP_MAX=100 |
| TTS_IP_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk `TTS_IP_MAX`. Default: 1. | # TTS_IP_WINDOW=1 |
Pembatas Pengguna:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_USER_MAX | integer | Jumlah maksimum permintaan TTS per pengguna per `TTS_USER_WINDOW`. Default: 50. | # TTS_USER_MAX=50 |
| TTS_USER_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk `TTS_USER_MAX`. Default: 1. | # TTS_USER_WINDOW=1 |
Pembatasan laju (rate limiting) STT (Speech-to-Text)
Membatasi seberapa sering pengguna dapat menggunakan Speech-to-Text untuk mencegah penyalahgunaan.
Catatan: Ini juga dapat dikonfigurasi melalui
librechat.yamldi bagianrateLimits.stt.
Pembatas IP:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_IP_MAX | integer | Maksimum permintaan STT per IP per `STT_IP_WINDOW`. Default: 100. | # STT_IP_MAX=100 |
| STT_IP_WINDOW | integer | Dalam hitungan menit, menentukan rentang waktu untuk `STT_IP_MAX`. Default: 1. | # STT_IP_WINDOW=1 |
Pembatas Pengguna:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_USER_MAX | integer | Maksimum permintaan STT per pengguna per `STT_USER_WINDOW`. Default: 50. | # STT_USER_MAX=50 |
| STT_USER_WINDOW | integer | Dalam hitungan menit, menentukan jendela waktu untuk `STT_USER_MAX`. Default: 1. | # STT_USER_WINDOW=1 |
Saldo
Fitur berikut memungkinkan pengelolaan saldo pengguna di dalam endpoint sistem. Anda memiliki opsi untuk menambahkan saldo secara manual, atau Anda dapat memilih untuk menerapkan sistem yang mengakumulasi saldo secara otomatis bagi pengguna. Jika saldo awal tertentu ditentukan dalam konfigurasi, token akan dikreditkan ke saldo pengguna secara otomatis saat mereka mendaftar.
lihat: Token Usage
| Key | Type | Description | Example |
|---|---|---|---|
| CHECK_BALANCE | boolean | Aktifkan saldo kredit token untuk endpoint OpenAI/Plugins. | CHECK_BALANCE=false |
| START_BALANCE | integer | Jika nilai diatur, token akan dikreditkan ke saldo pengguna setelah pendaftaran. | START_BALANCE=20000 |
Mengelola Saldo
- Jalankan
npm run add-balanceuntuk menambahkan saldo secara manual.- Anda juga dapat menentukan email dan jumlah kredit token yang akan ditambahkan, contohnya:
npm run add-balance [email protected] 1000
- Anda juga dapat menentukan email dan jumlah kredit token yang akan ditambahkan, contohnya:
- Jalankan
npm run set-balanceuntuk mengatur saldo secara manual, mirip denganadd-balance. - Jalankan
npm run list-balancesuntuk menampilkan saldo setiap pengguna.
Catatan: 1000 kredit = $0.001 (1 mill USD)
Pendaftaran dan Login
lihat: Sistem Autentikasi
Klarifikasi File Konfigurasi
Semua pengaturan autentikasi di bagian ini harus dikonfigurasi di dalam file .env Anda, bukan di dalam file librechat.yaml atau docker-compose.override.yml. File docker-compose.override.yml hanya digunakan untuk memasang volume dan mengatur variabel lingkungan untuk Docker, sedangkan file librechat.yaml digunakan untuk endpoint kustom dan pengaturan aplikasi lainnya.
- Pengaturan Umum:
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Aktifkan atau nonaktifkan HANYA login email. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Aktifkan atau nonaktifkan pendaftaran Email untuk pengguna baru. | ALLOW_REGISTRATION=true |
| ALLOW_SOCIAL_LOGIN | boolean | Izinkan pengguna untuk terhubung ke LibreChat dengan berbagai jejaring sosial. | ALLOW_SOCIAL_LOGIN=false |
| ALLOW_SOCIAL_REGISTRATION | boolean | Aktifkan atau nonaktifkan pendaftaran pengguna baru menggunakan berbagai jejaring sosial. | ALLOW_SOCIAL_REGISTRATION=false |
| ALLOW_PASSWORD_RESET | boolean | Aktifkan atau nonaktifkan kemampuan bagi pengguna untuk mengatur ulang kata sandi mereka sendiri | ALLOW_PASSWORD_RESET=false |
| ALLOW_ACCOUNT_DELETION | boolean | Aktifkan atau nonaktifkan kemampuan bagi pengguna untuk menghapus akun mereka sendiri. Diaktifkan secara default jika dihilangkan/dikomentari | ALLOW_ACCOUNT_DELETION=true |
| ALLOW_UNVERIFIED_EMAIL_LOGIN | boolean | Atur ke true untuk mengizinkan pengguna masuk tanpa memverifikasi alamat email mereka. Jika diatur ke false, pengguna akan diminta untuk memverifikasi email mereka sebelum masuk. | ALLOW_UNVERIFIED_EMAIL_LOGIN=true |
| MIN_PASSWORD_LENGTH | number | Panjang kata sandi minimum untuk autentikasi pengguna. Saat menggunakan autentikasi LDAP, Anda mungkin ingin mengaturnya ke 1 untuk melewati validasi kata sandi lokal, karena server LDAP menangani kebijakan kata sandinya sendiri. | MIN_PASSWORD_LENGTH=8 |
Tips Cepat: Meskipun pendaftaran dinonaktifkan, tambahkan pengguna secara langsung ke basis data menggunakan
npm run create-user.
Tips Cepat: Dengan pendaftaran dinonaktifkan, Anda dapat menghapus pengguna dengan
npm run delete-user [email protected].
- Pengaturan Sesi dan Token Penyegaran (Refresh Token):
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Waktu kedaluwarsa sesi. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (milliseconds) | Waktu kedaluwarsa refresh token. | REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7 |
| SESSION_COOKIE_SECURE | boolean | Menimpa atribut Secure untuk cookie sesi/autentikasi. Biarkan tidak disetel untuk menggunakan heuristik NODE_ENV/DOMAIN_SERVER default. | # SESSION_COOKIE_SECURE=false |
-
Untuk informasi lebih lanjut: Refresh Token
-
Pengaturan JWT:
Anda harus menggunakan nilai aman yang baru. Contoh yang diberikan adalah kunci 32-byte (64 karakter dalam hex). Gunakan replit ini untuk membuatnya dengan cepat: JWT Keys
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Kunci rahasia JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (hex) | Kunci rahasia refresh JWT. | JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418 |
Login Sosial
Untuk detail lebih lanjut: OAuth2-OIDC
Autentikasi Apple
Untuk informasi lebih lanjut: Apple Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| APPLE_CLIENT_ID | string | ID Layanan Apple Anda (contoh: com.yourdomain.librechat.services). | APPLE_CLIENT_ID=com.yourdomain.librechat.services |
| APPLE_TEAM_ID | string | ID Tim Pengembang Apple Anda. | APPLE_TEAM_ID=YOUR_TEAM_ID |
| APPLE_KEY_ID | string | ID Kunci Apple Anda dari kunci yang diunduh. | APPLE_KEY_ID=YOUR_KEY_ID |
| APPLE_PRIVATE_KEY_PATH | string | Jalur absolut ke file .p8 yang telah Anda unduh. | APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8 |
| APPLE_CALLBACK_URL | string | URL callback untuk autentikasi Apple. | APPLE_CALLBACK_URL=/oauth/apple/callback |
Autentikasi Discord
Untuk informasi lebih lanjut: Discord
| Key | Type | Description | Example |
|---|---|---|---|
| DISCORD_CLIENT_ID | string | ID klien Discord Anda. | DISCORD_CLIENT_ID= |
| DISCORD_CLIENT_SECRET | string | Client secret Discord Anda. | DISCORD_CLIENT_SECRET= |
| DISCORD_CALLBACK_URL | string | URL callback untuk autentikasi Discord. | DISCORD_CALLBACK_URL=/oauth/discord/callback |
Autentikasi Facebook
Untuk informasi lebih lanjut: Facebook Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| FACEBOOK_CLIENT_ID | string | ID klien Facebook Anda. | FACEBOOK_CLIENT_ID= |
| FACEBOOK_CLIENT_SECRET | string | Client secret Facebook Anda. | FACEBOOK_CLIENT_SECRET= |
| FACEBOOK_CALLBACK_URL | string | URL callback untuk autentikasi Facebook. | FACEBOOK_CALLBACK_URL=/oauth/facebook/callback |
Autentikasi GitHub
Untuk informasi lebih lanjut: GitHub Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| GITHUB_CLIENT_ID | string | ID klien GitHub Anda. | GITHUB_CLIENT_ID= |
| GITHUB_CLIENT_SECRET | string | Client secret GitHub Anda. | GITHUB_CLIENT_SECRET= |
| GITHUB_CALLBACK_URL | string | URL callback untuk autentikasi GitHub. | GITHUB_CALLBACK_URL=/oauth/github/callback |
| GITHUB_ENTERPRISE_BASE_URL | string | Opsional: URL dasar untuk instans GitHub Enterprise Anda. | GITHUB_ENTERPRISE_BASE_URL= |
| GITHUB_ENTERPRISE_USER_AGENT | string | Opsional: User agent untuk permintaan GitHub Enterprise. | GITHUB_ENTERPRISE_USER_AGENT= |
Autentikasi Google
Untuk informasi lebih lanjut: Google Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_CLIENT_ID | string | ID klien Google Anda. | GOOGLE_CLIENT_ID= |
| GOOGLE_CLIENT_SECRET | string | Client secret Google Anda. | GOOGLE_CLIENT_SECRET= |
| GOOGLE_CALLBACK_URL | string | URL callback untuk autentikasi Google. | GOOGLE_CALLBACK_URL=/oauth/google/callback |
OpenID Connect
Untuk informasi lebih lanjut:
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_CLIENT_ID | string | ID klien OpenID Anda. | OPENID_CLIENT_ID= |
| OPENID_CLIENT_SECRET | string | Client secret OpenID Anda. | OPENID_CLIENT_SECRET= |
| OPENID_ISSUER | string | URL penerbit OpenID. | OPENID_ISSUER= |
| OPENID_SESSION_SECRET | string | Rahasia untuk penyimpanan sesi OpenID. | OPENID_SESSION_SECRET= |
| OPENID_SCOPE | string | Cakupan OpenID. | OPENID_SCOPE="openid profile email" |
| OPENID_CALLBACK_URL | string | URL callback untuk autentikasi OpenID. | OPENID_CALLBACK_URL=/oauth/openid/callback |
| OPENID_AUDIENCE | string | Nilai audience untuk validasi JWT OpenID dan permintaan otorisasi. Nilai yang dipisahkan koma diterima untuk validasi JWT; permintaan otorisasi menggunakan nilai non-kosong pertama. Diperlukan untuk Auth0 saat menggunakan OPENID_REUSE_TOKENS=true untuk menerima token akses JWT alih-alih token buram (opaque tokens). | OPENID_AUDIENCE=https://api.librechat.com |
| OPENID_REQUIRED_ROLE | string | Peran yang diperlukan untuk validasi. Mendukung satu peran atau beberapa peran yang dipisahkan dengan koma. Jika beberapa peran ditentukan, pengguna memerlukan SALAH SATU dari peran yang ditentukan (logika OR). | OPENID_REQUIRED_ROLE=admin or OPENID_REQUIRED_ROLE=role1,role2,admin |
| OPENID_REQUIRED_ROLE_TOKEN_KIND | string | Jenis token untuk validasi peran yang diperlukan. | OPENID_REQUIRED_ROLE_TOKEN_KIND= |
| OPENID_REQUIRED_ROLE_PARAMETER_PATH | string | Jalur parameter untuk validasi peran yang diperlukan. | OPENID_REQUIRED_ROLE_PARAMETER_PATH= |
| OPENID_ADMIN_ROLE | string | Peran yang harus dimiliki pengguna agar menjadi admin di LibreChat. | OPENID_ADMIN_ROLE= |
| OPENID_ADMIN_ROLE_TOKEN_KIND | string | Sumber informasi untuk verifikasi peran admin. Nilai yang mungkin adalah: access, id atau userinfo. | OPENID_ADMIN_ROLE_TOKEN_KIND= |
| OPENID_ADMIN_ROLE_PARAMETER_PATH | string | Jalur parameter untuk validasi peran yang diperlukan. | OPENID_ADMIN_ROLE_PARAMETER_PATH= |
| OPENID_ROLE_SYNC_ENABLED | boolean | Aktifkan sinkronisasi peran OpenID generik untuk peran non-admin. ADMIN tidak dapat ditetapkan melalui sinkronisasi peran; gunakan OPENID_ADMIN_ROLE untuk peningkatan hak akses admin. | OPENID_ROLE_SYNC_ENABLED=false |
| OPENID_ROLE_SYNC_API_ENABLED | boolean | Aktifkan helper sinkronisasi peran berbasis API. Memerlukan OPENID_ROLE_SYNC_ENABLED=true. | OPENID_ROLE_SYNC_API_ENABLED=false |
| OPENID_ROLE_SYNC_SOURCE | string | Sumber token untuk klaim peran. Harus salah satu dari: access, id, userinfo. Default: id. | OPENID_ROLE_SYNC_SOURCE=id |
| OPENID_ROLE_SYNC_CLAIM | string | Jalur klaim yang berisi peran atau grup penyedia. Diperlukan saat sinkronisasi peran diaktifkan. | OPENID_ROLE_SYNC_CLAIM= |
| OPENID_ROLE_SYNC_ROLE_PRIORITY | string | Peran LibreChat yang dipisahkan dengan koma, diurutkan dari yang paling penting hingga yang paling tidak penting. Peran pertama yang cocok akan ditetapkan. | OPENID_ROLE_SYNC_ROLE_PRIORITY=Support,User |
| OPENID_ROLE_SYNC_FALLBACK_ROLE | string | Peran LibreChat yang ditetapkan saat tidak ada peran prioritas yang cocok. Cadangan ini bersifat otoritatif jika dikonfigurasi. | OPENID_ROLE_SYNC_FALLBACK_ROLE=USER |
| OPENID_BUTTON_LABEL | string | Label untuk tombol login OpenID. | OPENID_BUTTON_LABEL= |
| OPENID_IMAGE_URL | string | URL gambar tombol login OpenID. | OPENID_IMAGE_URL= |
| OPENID_USE_END_SESSION_ENDPOINT | string | Apakah akan menggunakan Issuer End Session Endpoint sebagai Pengalihan Logout | OPENID_USE_END_SESSION_ENDPOINT=TRUE |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Panjang URL logout maksimum sebelum menggunakan logout_hint alih-alih id_token_hint. Default: 2000. | # OPENID_MAX_LOGOUT_URL_LENGTH=2000 |
| OPENID_AUTO_REDIRECT | boolean | Apakah akan mengalihkan secara otomatis ke penyedia OpenID. | OPENID_AUTO_REDIRECT=true |
| OPENID_USE_PKCE | boolean | Gunakan PKCE (Proof Key for Code Exchange) untuk autentikasi OpenID. Untuk klien publik tanpa client secret, biarkan OPENID_CLIENT_SECRET kosong dan atur ini ke true. | # OPENID_USE_PKCE=true |
| OPENID_POST_LOGOUT_REDIRECT_URI | string | URI pengalihan setelah logout OpenID. Defaultnya adalah ${DOMAIN_CLIENT}/login. | # OPENID_POST_LOGOUT_REDIRECT_URI= |
| OPENID_CLOCK_TOLERANCE | number | Toleransi waktu dalam detik untuk validasi token. Default: 300. | # OPENID_CLOCK_TOLERANCE=300 |
| OPENID_GENERATE_NONCE | boolean | Paksa klien OpenID untuk menghasilkan parameter nonce. Diperlukan oleh beberapa penyedia identitas seperti AWS Cognito (terutama dengan federasi) dan Authentik. | OPENID_GENERATE_NONCE=true |
| DEBUG_OPENID_REQUESTS | boolean | Aktifkan pencatatan mendetail untuk header permintaan OpenID. Saat dinonaktifkan (default), hanya URL permintaan yang dicatat pada level debug. Saat diaktifkan, header permintaan juga akan dicatat (dengan data sensitif disamarkan) untuk debugging masalah autentikasi yang lebih mendalam. | DEBUG_OPENID_REQUESTS=false |
| OPENID_USERNAME_CLAIM | string | Properti info pengguna dari penyedia OpenID untuk disimpan sebagai nama pengguna. | OPENID_USERNAME_CLAIM= |
| OPENID_NAME_CLAIM | string | Properti info pengguna dari penyedia OpenID untuk disimpan sebagai nama tampilan pengguna. | OPENID_NAME_CLAIM= |
| OPENID_EMAIL_CLAIM | string | Klaim info pengguna yang digunakan sebagai email/pengenal untuk pencocokan pengguna (contoh: "upn" untuk Entra ID). Jika tidak diatur, defaultnya adalah: email → preferred_username → upn. | OPENID_EMAIL_CLAIM= |
Sinkronisasi peran OpenID
OPENID_ROLE_SYNC_CLAIM diperlukan saat sinkronisasi peran diaktifkan.
OPENID_ROLE_SYNC_API_ENABLED=true juga memerlukan OPENID_ROLE_SYNC_ENABLED=true. Sinkronisasi peran generik tidak dapat menetapkan ADMIN; gunakan OPENID_ADMIN_ROLE untuk peningkatan hak akses admin.
Penggunaan Kembali Token OpenID Connect
LibreChat mendukung penggunaan kembali access token dan refresh token yang diterbitkan oleh penyedia OpenID Connect Anda (seperti Azure Entra ID atau Auth0) untuk mengelola status autentikasi pengguna. Saat fitur ini aktif, refresh token yang diberikan kepada pengguna sebagai cookie diterbitkan oleh penyedia OpenID Anda, bukan oleh LibreChat.
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_REUSE_TOKENS | boolean | Aktifkan penggunaan kembali token penyedia OpenID untuk manajemen sesi. | OPENID_REUSE_TOKENS=false |
| OPENID_SCOPE | string | Daftar scope OpenID yang dipisahkan oleh spasi. Harus menyertakan offline_access untuk penggunaan ulang token. | OPENID_SCOPE=api://librechat/.default openid profile email offline_access |
| OPENID_AUDIENCE | string | Nilai audience untuk validasi JWT OpenID dan permintaan otorisasi. Nilai yang dipisahkan koma diterima untuk validasi JWT; permintaan otorisasi menggunakan nilai pertama yang tidak kosong. Diperlukan untuk Auth0 saat OPENID_REUSE_TOKENS=true. Lihat catatan di bagian utama OpenID di atas. | OPENID_AUDIENCE=https://api.librechat.com |
| OPENID_REUSE_MAX_SESSION_AGE_MS | number | Usia maksimum token sesi OpenID yang digunakan kembali sebelum LibreChat memaksa penyegaran IdP. Default: 900000 ms / 15 menit. | OPENID_REUSE_MAX_SESSION_AGE_MS=900000 |
| OPENID_JWKS_URL_CACHE_ENABLED | boolean | Aktifkan caching hasil verifikasi kunci penandatanganan. | OPENID_JWKS_URL_CACHE_ENABLED=true |
| OPENID_JWKS_URL_CACHE_TIME | number | Durasi cache dalam milidetik (default: 600000 ms / 10 menit). | OPENID_JWKS_URL_CACHE_TIME=600000 |
| OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED | boolean | Aktifkan alur on-behalf-of untuk info pengguna. | OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true |
| OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE | string | Cakupan untuk info pengguna dalam alur on-behalf-of. | OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read |
| OPENID_USE_END_SESSION_ENDPOINT | boolean | Aktifkan penggunaan endpoint end session untuk logout. | OPENID_USE_END_SESSION_ENDPOINT=true |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Panjang URL logout maksimum dalam karakter sebelum beralih ke logout_hint. Berguna untuk mencegah kesalahan URI too long saat id_token_hint melebihi batas server. Default: 2000. | OPENID_MAX_LOGOUT_URL_LENGTH=2000 |
OPENID_REUSE_MAX_SESSION_AGE_MS menerima ekspresi aritmatika seperti SESSION_EXPIRY. Tingkatkan nilainya mendekati masa berlaku access-token IdP jika penyedia Anda mencabut access token sebelumnya saat penyegaran (refresh), sehingga konsumen hilir seperti server MCP dapat selesai menggunakan bearer token yang masih valid.
Catatan
Untuk langkah-langkah konfigurasi terperinci dan prasyarat, lihat Re-use OpenID Tokens for Login Session.
Integrasi Microsoft Graph API / Entra ID
Saat menggunakan Azure Entra ID (sebelumnya Azure AD) sebagai penyedia OpenID Anda, Anda dapat mengaktifkan fitur Microsoft Graph API tambahan untuk kemampuan pencarian orang dan grup yang ditingkatkan dalam sistem izin dan berbagi.
| Key | Type | Description | Example |
|---|---|---|---|
| USE_ENTRA_ID_FOR_PEOPLE_SEARCH | boolean | Aktifkan integrasi pencarian orang Entra ID dalam sistem izin/berbagi. Saat diaktifkan, pemilih orang akan mencari di database lokal dan Entra ID. | USE_ENTRA_ID_FOR_PEOPLE_SEARCH=false |
| ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS | boolean | Saat diaktifkan, pemilik grup Entra ID akan dianggap sebagai anggota grup tersebut. | ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=false |
| OPENID_GRAPH_SCOPES | string | Cakupan Microsoft Graph API yang diperlukan untuk pencarian orang/grup. Cakupan default menyediakan akses ke profil pengguna dan keanggotaan grup. | OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All |
Prasyarat Penting
- Anda harus mengonfigurasi Azure Entra ID sebagai penyedia OpenID Anda - penggunaan kembali token OpenID HARUS diaktifkan (
OPENID_REUSE_TOKENS=true) - fitur ini tidak akan berfungsi tanpanya - Pendaftaran aplikasi Azure Anda harus memiliki izin Microsoft Graph API yang sesuai - Untuk fungsionalitas pencarian grup, persetujuan admin mungkin diperlukan untuk cakupan Graph API tertentu
Integrasi SharePoint
LibreChat mendukung integrasi langsung dengan SharePoint Online dan OneDrive for Business, yang memungkinkan pengguna untuk memilih dan melampirkan file dari pustaka SharePoint mereka secara langsung di dalam percakapan. Fitur perusahaan ini memanfaatkan autentikasi Azure Entra ID yang sudah ada.
| Key | Type | Description | Example |
|---|---|---|---|
| ENABLE_SHAREPOINT_FILEPICKER | boolean | Aktifkan pemilih file SharePoint di panel chat dan agen. Jika diaktifkan, akan menambahkan opsi "From SharePoint" di menu lampiran file. | ENABLE_SHAREPOINT_FILEPICKER=true |
| SHAREPOINT_BASE_URL | string | URL dasar tenant SharePoint. Diperlukan saat integrasi SharePoint diaktifkan. | SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com |
| SHAREPOINT_PICKER_SHAREPOINT_SCOPE | string | Cakupan OAuth khusus SharePoint untuk pemilih file. Digunakan untuk autentikasi saat membuka antarmuka pemilih file SharePoint. | SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read |
| SHAREPOINT_PICKER_GRAPH_SCOPE | string | Cakupan Microsoft Graph API untuk pengunduhan file. Digunakan untuk mengunduh file dari SharePoint setelah pemilihan. | SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All |
Persyaratan Kritis
Semua hal berikut harus dikonfigurasi agar integrasi SharePoint dapat berfungsi:
- Autentikasi Azure Entra ID harus dikonfigurasi sepenuhnya
OPENID_REUSE_TOKENS=truewajib digunakan (menggunakan alur token on-behalf-of)OPENID_SCOPEharus menyertakan scope API aplikasi LibreChat Anda, sebagai contohapi://<client-id>/access_as_userOPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=truediperlukan saat menggunakan scope app-audience tersebut dengan Azure Entra ID- Registrasi aplikasi Azure Anda harus memiliki izin SharePoint dan Graph API
- Registrasi aplikasi Azure Anda harus mengekspos scope API LibreChat yang digunakan dalam
OPENID_SCOPE - Keempat variabel lingkungan SharePoint harus diatur
- HTTPS diperlukan di lingkungan produksi
Kemampuan Fitur
Saat diaktifkan, pengguna dapat: - Mengakses file dari pustaka dokumen SharePoint dan OneDrive for Business - Memilih beberapa file sekaligus (maksimum default: 10 file) - Melihat progres pengunduhan secara real-time
- File diunduh dan dilampirkan ke percakapan seperti unggahan biasa
Untuk instruksi konfigurasi SharePoint yang mendetail, lihat: SharePoint Integration Guide
SAML
Untuk informasi lebih lanjut:
Eksklusi Timbal Balik OpenID dan SAML
Jika OpenID diaktifkan, autentikasi SAML akan dinonaktifkan secara otomatis.
Hanya satu metode autentikasi yang dapat aktif dalam satu waktu.
| Key | Type | Description | Example |
|---|---|---|---|
| SAML_ENTRY_POINT | string | URL titik masuk penyedia identitas (IdP) SAML. | SAML_ENTRY_POINT= |
| SAML_ISSUER | string | ID entitas penyedia layanan (SP) SAML. | SAML_ISSUER= |
| SAML_CERT | string | Sertifikat penandatanganan SAML, disediakan sebagai jalur file atau string PEM satu baris. | SAML_CERT= |
| SAML_CALLBACK_URL | string | URL callback untuk autentikasi SAML. | SAML_CALLBACK_URL=/oauth/saml/callback |
| SAML_SESSION_SECRET | string | Rahasia untuk penyimpanan sesi SAML. | SAML_SESSION_SECRET= |
| SAML_EMAIL_CLAIM | string | <Optional>: Atribut dalam pernyataan SAML yang berisi email pengguna. (default: email) | SAML_EMAIL_CLAIM= |
| SAML_USERNAME_CLAIM | string | <Optional>: Atribut dalam pernyataan SAML yang berisi nama pengguna. (default: username) | SAML_USERNAME_CLAIM= |
| SAML_GIVEN_NAME_CLAIM | string | <Optional>: Atribut dalam pernyataan SAML yang berisi nama depan. (default: given_name) | SAML_GIVEN_NAME_CLAIM= |
| SAML_FAMILY_NAME_CLAIM | string | <Optional>: Atribut dalam pernyataan SAML yang berisi nama keluarga. (default: family_name) | SAML_FAMILY_NAME_CLAIM= |
| SAML_PICTURE_CLAIM | string | <Optional>: Atribut dalam pernyataan SAML yang berisi URL gambar profil. (default: picture) | SAML_PICTURE_CLAIM= |
| SAML_NAME_CLAIM | string | <Optional>: Atribut dalam pernyataan SAML yang berisi nama lengkap. | SAML_NAME_CLAIM= |
| SAML_BUTTON_LABEL | string | <Optional>: Label untuk tombol login SAML. | SAML_BUTTON_LABEL= |
| SAML_IMAGE_URL | string | <Optional>: URL gambar tombol login SAML. | SAML_IMAGE_URL= |
| SAML_USE_AUTHN_RESPONSE_SIGNED | boolean | <Optional>: Jika "true", menandatangani seluruh SAML Response. Jika tidak, hanya Assertion yang ditandatangani (default). | SAML_USE_AUTHN_RESPONSE_SIGNED= |
Autentikasi LDAP/AD
Untuk informasi lebih lanjut: LDAP/AD Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| LDAP_URL | string | URL server LDAP. | LDAP_URL=ldap://localhost:389 |
| LDAP_BIND_DN | string | DN Pengikatan | LDAP_BIND_DN=cn=root |
| LDAP_BIND_CREDENTIALS | string | Kata sandi untuk bindDN | LDAP_BIND_CREDENTIALS=password |
| LDAP_USER_SEARCH_BASE | string | Basis pencarian pengguna LDAP | LDAP_USER_SEARCH_BASE=o=users,o=example.com |
| LDAP_SEARCH_FILTER | string | Filter pencarian LDAP | LDAP_SEARCH_FILTER=mail={{username}} |
| LDAP_CA_CERT_PATH | string | Jalur sertifikat CA. | LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt |
| LDAP_TLS_REJECT_UNAUTHORIZED | string | Verifikasi TLS LDAP | LDAP_TLS_REJECT_UNAUTHORIZED=true |
| LDAP_STARTTLS | string | Aktifkan LDAP StartTLS untuk meningkatkan koneksi ke TLS. Atur ke true untuk mengaktifkan fitur ini. | LDAP_STARTTLS=true |
| LDAP_LOGIN_USES_USERNAME | boolean | Gunakan nama pengguna alih-alih email untuk login LDAP. | # LDAP_LOGIN_USES_USERNAME=true |
| LDAP_ID | string | Atribut LDAP untuk ID pengguna unik. Default: uid atau sAMAccountName, mail. | # LDAP_ID=uid |
| LDAP_USERNAME | string | Atribut LDAP untuk nama pengguna. Default: givenName atau mail. | # LDAP_USERNAME=givenName |
| LDAP_EMAIL | string | Atribut LDAP untuk email. Default: mail. | # LDAP_EMAIL=userPrincipalName |
| LDAP_FULL_NAME | string | Atribut LDAP untuk nama lengkap. Dapat dipisahkan dengan koma. Default: givenName + surname. | # LDAP_FULL_NAME=givenName,surname |
Atur Ulang Kata Sandi
Email digunakan untuk verifikasi akun dan pengaturan ulang kata sandi. LibreChat mendukung API Mailgun maupun layanan SMTP tradisional. Lihat: Pengaturan email
Catatan Penting: Anda harus mengonfigurasi Mailgun (direkomendasikan untuk server yang memblokir SMTP) atau SMTP agar email dapat berfungsi.
Peringatan: Kegagalan dalam menetapkan nilai yang valid untuk Mailgun atau SMTP akan mengakibatkan LibreChat menggunakan pengaturan ulang kata sandi yang tidak aman!
Konfigurasi Mailgun (Direkomendasikan)
Mailgun sangat berguna untuk penyebaran di server yang memblokir port SMTP. Ketika MAILGUN_API_KEY dan MAILGUN_DOMAIN keduanya diatur, LibreChat akan menggunakan Mailgun alih-alih SMTP.
| Key | Type | Description | Example |
|---|---|---|---|
| MAILGUN_API_KEY | string | Kunci API Mailgun Anda (diperlukan untuk Mailgun). | MAILGUN_API_KEY= |
| MAILGUN_DOMAIN | string | Domain Mailgun Anda (diperlukan untuk Mailgun). | MAILGUN_DOMAIN=mg.yourdomain.com |
| MAILGUN_HOST | string | Host API Mailgun kustom (opsional). Gunakan https://api.eu.mailgun.net untuk wilayah UE. | MAILGUN_HOST=https://api.mailgun.net |
| EMAIL_FROM | string | Alamat email pengirim. Wajib diisi. | [email protected] |
| EMAIL_FROM_NAME | string | Nama pengirim (default ke APP_TITLE jika tidak diatur). | EMAIL_FROM_NAME= |
Konfigurasi SMTP
Jika Mailgun tidak dikonfigurasi, LibreChat akan kembali menggunakan pengaturan SMTP.
Peringatan: Jika menggunakan
EMAIL_SERVICE, jangan atur parameter koneksi tambahan: HOST, PORT, ENCRYPTION, ENCRYPTION_HOSTNAME, ALLOW_SELFSIGNED.
Lihat: nodemailer well-known-services
| Key | Type | Description | Example |
|---|---|---|---|
| EMAIL_SERVICE | string | Layanan email (contoh: Gmail, Outlook). | EMAIL_SERVICE= |
| EMAIL_HOST | string | Host server email. | EMAIL_HOST= |
| EMAIL_PORT | number | Port server email. | EMAIL_PORT=25 |
| EMAIL_ENCRYPTION | string | Metode enkripsi (starttls, tls, dll.). | EMAIL_ENCRYPTION= |
| EMAIL_ENCRYPTION_HOSTNAME | string | Hostname untuk enkripsi. | EMAIL_ENCRYPTION_HOSTNAME= |
| EMAIL_ALLOW_SELFSIGNED | boolean | Izinkan sertifikat yang ditandatangani sendiri (self-signed). | EMAIL_ALLOW_SELFSIGNED= |
| EMAIL_USERNAME | string | Nama pengguna untuk autentikasi. | EMAIL_USERNAME= |
| EMAIL_PASSWORD | string | Kata sandi untuk autentikasi. | EMAIL_PASSWORD= |
| EMAIL_FROM_NAME | string | Dari nama. | EMAIL_FROM_NAME= |
| EMAIL_FROM | string | Alamat email pengirim. Wajib diisi. | [email protected] |
Firebase CDN
Lihat: Konfigurasi CDN Firebase
Penting
- Jika Anda menggunakan Firebase sebagai strategi penyimpanan file Anda, atur
fileStrategyataufileStrategieskefirebasedi dalam file konfigurasilibrechat.yamlAnda. Untuk informasi lebih lanjut mengenai konfigurasi filelibrechat.yaml, silakan merujuk ke Panduan Konfigurasi YAML: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| FIREBASE_API_KEY | string | Kunci API untuk proyek Firebase Anda. | FIREBASE_API_KEY= |
| FIREBASE_AUTH_DOMAIN | string | Domain Firebase Auth untuk proyek Anda. | FIREBASE_AUTH_DOMAIN= |
| FIREBASE_PROJECT_ID | string | ID proyek Firebase Anda. | FIREBASE_PROJECT_ID= |
| FIREBASE_STORAGE_BUCKET | string | Bucket Firebase Storage untuk proyek Anda. | FIREBASE_STORAGE_BUCKET= |
| FIREBASE_MESSAGING_SENDER_ID | string | ID pengirim Firebase Cloud Messaging. | FIREBASE_MESSAGING_SENDER_ID= |
| FIREBASE_APP_ID | string | ID Aplikasi Firebase untuk proyek Anda. | FIREBASE_APP_ID= |
Amazon S3 dan CloudFront
Lihat: Konfigurasi Amazon S3 dan CloudFront dengan S3
Penting
Jika Anda menggunakan S3 sebagai strategi penyimpanan file Anda, atur fileStrategy atau fileStrategies di dalam file konfigurasi librechat.yaml Anda. Jika Anda menggunakan CloudFront, S3 tetap diperlukan sebagai origin penyimpanan.
| Key | Type | Description | Example |
|---|---|---|---|
| AWS_ACCESS_KEY_ID | string | ID kunci akses pengguna IAM Anda. Opsional jika menggunakan IRSA. | AWS_ACCESS_KEY_ID=your_access_key_id |
| AWS_SECRET_ACCESS_KEY | string | Kunci akses rahasia pengguna IAM Anda. Opsional jika menggunakan IRSA. | AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| AWS_REGION | string | Wilayah AWS tempat bucket S3 Anda berada. | AWS_REGION=us-east-1 |
| AWS_BUCKET_NAME | string | Nama bucket S3 untuk penyimpanan file. | AWS_BUCKET_NAME=your_bucket_name |
| AWS_ENDPOINT_URL | string | URL endpoint AWS kustom (opsional). Untuk layanan yang kompatibel dengan S3. Sertakan skema URL, seperti https://a7g8.da.idrivee2-32.com. | # AWS_ENDPOINT_URL=https://your_endpoint_url |
| AWS_FORCE_PATH_STYLE | boolean | Atur ke true untuk penyedia yang kompatibel dengan S3 yang memerlukan URL bergaya jalur (contoh: MinIO, Hetzner, Backblaze B2). Tidak diperlukan untuk AWS S3. Default: false. | # AWS_FORCE_PATH_STYLE=false |
| CLOUDFRONT_KEY_PAIR_ID | string | ID pasangan kunci publik CloudFront. Diperlukan untuk cookie bertanda tangan dan URL unduhan CloudFront bertanda tangan. | # CLOUDFRONT_KEY_PAIR_ID=K1234567890ABC |
| CLOUDFRONT_PRIVATE_KEY | string | Kunci privat PEM CloudFront. Diperlukan untuk cookie bertanda tangan dan URL unduhan CloudFront bertanda tangan. Pertahankan baris baru PEM saat menyuntikkan rahasia ini. | # CLOUDFRONT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----" |
Catatan: Untuk penyebaran Kubernetes (misalnya, di EKS), Anda dapat menggunakan IRSA (IAM Roles for Service Accounts) alih-alih memberikan kredensial secara eksplisit. Dalam kasus tersebut, hanya
AWS_REGIONdanAWS_BUCKET_NAMEyang diperlukan.
Azure Blob Storage CDN
Lihat: Konfigurasi CDN Azure Blob Storage
Penting
Jika Anda menggunakan Azure Blob Storage sebagai strategi penyimpanan file Anda, atur fileStrategy atau fileStrategies ke azure_blob di dalam file konfigurasi librechat.yaml Anda.
| Key | Type | Description | Example |
|---|---|---|---|
| AZURE_STORAGE_CONNECTION_STRING | string | Connection string Azure Blob Storage. Gunakan ini ATAU AZURE_STORAGE_ACCOUNT_NAME untuk Managed Identity. | AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=... |
| AZURE_STORAGE_ACCOUNT_NAME | string | Nama akun Azure Storage. Gunakan untuk autentikasi Managed Identity (jangan atur connection string). | # AZURE_STORAGE_ACCOUNT_NAME=yourAccountName |
| AZURE_STORAGE_PUBLIC_ACCESS | boolean | Aktifkan akses publik untuk blob. Default: false. | AZURE_STORAGE_PUBLIC_ACCESS=false |
| AZURE_CONTAINER_NAME | string | Nama kontainer untuk penyimpanan file. Default: files. | AZURE_CONTAINER_NAME=files |
Catatan: Gunakan salah satu dari
AZURE_STORAGE_CONNECTION_STRING(Opsi A) atauAZURE_STORAGE_ACCOUNT_NAMEdengan Managed Identity (Opsi B), jangan keduanya.
UI
Tombol Bantuan dan FAQ
| Key | Type | Description | Example |
|---|---|---|---|
| HELP_AND_FAQ_URL | string | URL Bantuan dan FAQ. Jika kosong atau dikomentari, tombol akan diaktifkan. Untuk menonaktifkan tombol Bantuan dan FAQ, atur ke "/". | HELP_AND_FAQ_URL=https://librechat.ai |
Perilaku:
Mengatur header Cache-Control untuk file statis. Konfigurasi ini hanya akan dipicu ketika NODE_ENV diatur ke production.
Mengatur header cache dengan benar sangat penting untuk mengoptimalkan kinerja dan efisiensi aplikasi web Anda. Dengan mengontrol berapa lama browser dan CDN menyimpan salinan file statis Anda, Anda dapat mengurangi beban server secara signifikan, mempercepat waktu muat halaman, dan meningkatkan pengalaman pengguna secara keseluruhan.
- Hapus tanda komentar pada
STATIC_CACHE_MAX_AGEuntuk mengubahmax-agebagi file statis. Secara default, ini diatur ke 4 minggu. - Hapus tanda komentar pada
STATIC_CACHE_S_MAX_AGEuntuk mengubahs-maxagebagi file statis. Secara default, ini diatur ke 1 minggu.- Ini ditujukan untuk shared cache, yang digunakan oleh CDN dan proksi.
Judul Aplikasi dan Footer
| Key | Type | Description | Example |
|---|---|---|---|
| APP_TITLE | string | Judul aplikasi. | APP_TITLE=LibreChat |
| CUSTOM_FOOTER | string | Catatan kaki kustom. | # CUSTOM_FOOTER="My custom footer" |
| TEMP_CHAT_RETENTION_HOURS | number | **Tidak digunakan lagi:** Gunakan `interface.temporaryChatRetention` di librechat.yaml sebagai gantinya. Jam untuk menyimpan chat sementara. Default: 720 (30 hari). | # TEMP_CHAT_RETENTION_HOURS=168 |
Perilaku:
- Hapus tanda komentar pada
CUSTOM_FOOTERuntuk menambahkan catatan kaki kustom. - Hapus tanda komentar dan biarkan
CUSTOM_FOOTERkosong untuk menghapus footer. - Anda sekarang dapat menambahkan satu atau beberapa tautan dalam nilai CUSTOM_FOOTER menggunakan format berikut:
[Anchor text](URL). Setiap tautan harus dipisahkan dengan tanda pipa (|).
Contoh Markdown:
CUSTOM_FOOTER=[Link 1](http://example1.com) | [Link 2](http://example2.com)
Topi Ulang Tahun
| Key | Type | Description | Example |
|---|---|---|---|
| SHOW_BIRTHDAY_ICON | boolean | Tampilkan ikon topi ulang tahun. | # SHOW_BIRTHDAY_ICON=true |
Perilaku:
- Ikon topi ulang tahun akan muncul secara otomatis pada tanggal 11 Februari (ulang tahun LibreChat).
- Atur
SHOW_BIRTHDAY_ICONkefalseuntuk menonaktifkan ikon topi ulang tahun. - Atur
SHOW_BIRTHDAY_ICONketrueuntuk mengaktifkan topi ulang tahun sepanjang waktu.
Analitik
Google Tag Manager
LibreChat mendukung Google Tag Manager untuk analitik. Anda memerlukan ID Google Tag Manager untuk mengaktifkannya di LibreChat. Ikuti panduan ini untuk membuat ID Google Tag Manager dan mengonfigurasi Google Analytics. Kemudian, atur variabel lingkungan ANALYTICS_GTM_ID ke ID Google Tag Manager Anda.
Catatan: Jika ANALYTICS_GTM_ID tidak diatur, Google Tag Manager tidak akan diaktifkan. Jika diatur dengan tidak benar, Anda akan melihat permintaan yang gagal ke gtm.js
| Key | Type | Description | Example |
|---|---|---|---|
| ANALYTICS_GTM_ID | string | ID Google Tag Manager. | ANALYTICS_GTM_ID= |
Impor Percakapan
Konfigurasikan batas untuk impor file percakapan guna mencegah masalah memori.
| Key | Type | Description | Example |
|---|---|---|---|
| CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES | number | Ukuran file maksimum dalam byte untuk impor percakapan. Default: 0 (tidak ada batasan yang diberlakukan). Contoh: 262144000 (250 MiB). | # CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES=262144000 |
Pratinjau File Inline
Kontrol seberapa besar file yang dihasilkan sebelum LibreChat melewatkan ekstraksi pratinjau inline dan membiarkannya hanya dapat diunduh.
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_PREVIEW_MAX_EXTRACT_BYTES | number | Ukuran file sumber maksimum dalam byte untuk pratinjau inline artefak eksekusi kode. Default: 2097152 (2 MiB). Pratinjau HTML yang dirender masih dibatasi secara terpisah, sehingga file yang sangat kaya mungkin tetap tidak menampilkan pratinjau meskipun di bawah nilai ini. | # FILE_PREVIEW_MAX_EXTRACT_BYTES=2097152 |
MCP (Model Context Protocol)
Konfigurasikan pengaturan Model Context Protocol untuk manajemen server yang ditingkatkan dan dukungan OAuth.
Konfigurasi Server MCP
| Key | Type | Description | Example |
|---|---|---|---|
| MCP_OAUTH_ON_AUTH_ERROR | boolean | Anggap respons 401/403 sebagai persyaratan OAuth jika tidak ada metadata oauth yang ditemukan. | MCP_OAUTH_ON_AUTH_ERROR=true |
| MCP_OAUTH_DETECTION_TIMEOUT | number | Batas waktu untuk permintaan deteksi OAuth dalam milidetik. | MCP_OAUTH_DETECTION_TIMEOUT=5000 |
| MCP_OAUTH_HANDLING_TIMEOUT | number | Berapa lama LibreChat menunggu pengguna menyelesaikan alur OAuth MCP sebelum waktu habis. Default: 600000 ms (10 menit). | MCP_OAUTH_HANDLING_TIMEOUT=600000 |
| MCP_OAUTH_FLOW_TTL | number | Berapa lama status alur OAuth MCP dipertahankan. LibreChat membatasi ini di atas MCP_OAUTH_HANDLING_TIMEOUT agar callback yang mendekati tenggat waktu tetap dapat selesai. Default: 900000 ms (15 menit). | MCP_OAUTH_FLOW_TTL=900000 |
| MCP_CONNECTION_CHECK_TTL | number | Cache pemeriksaan status koneksi selama sekian milidetik untuk menghindari verifikasi yang memakan banyak sumber daya. | MCP_CONNECTION_CHECK_TTL=30000 |
| MCP_TOOLS_LIST_MAX_PAGES | number | Jumlah maksimum alat/halaman daftar yang diminta saat server MCP melakukan paginasi daftar alatnya (paginasi kursor). Membatasi loop paginasi agar server yang bermasalah tidak menghambat penemuan alat. Dibatasi hingga minimal 1. Default: 50. | MCP_TOOLS_LIST_MAX_PAGES=50 |
| MCP_SKIP_CODE_CHALLENGE_CHECK | boolean | Lewati validasi metode tantangan kode. Jika diatur ke true, memaksa penggunaan tantangan kode S256 meskipun tidak diiklankan di .well-known/openid-configuration | MCP_SKIP_CODE_CHALLENGE_CHECK=false |
| MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES | number | Jumlah byte maksimum yang diizinkan dalam respons HTTP MCP yang dapat di-stream (non-GET) sebelum ditolak. Atur ke 0 untuk menonaktifkan. Default: 16777216 (16 MiB). | # MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES=16777216 |
| MCP_STREAMABLE_HTTP_MAX_LINE_BYTES | number | Jumlah byte maksimum yang diizinkan dalam satu baris SSE untuk respons HTTP MCP yang dapat di-stream selain GET. Atur ke 0 untuk menonaktifkan. Default: 5242880 (5 MiB). | # MCP_STREAMABLE_HTTP_MAX_LINE_BYTES=5242880 |
Lainnya
Redis
Redis memberikan peningkatan performa yang signifikan dan memungkinkan kemampuan penskalaan horizontal untuk LibreChat.
Catatan: Dukungan Redis bersifat eksperimental, dan Anda mungkin akan menemui beberapa masalah saat menggunakannya.
Penting: Jika menggunakan Redis, Anda harus membersihkan cache setelah mengubah pengaturan LibreChat apa pun.
Untuk konfigurasi dan contoh terperinci, lihat: Panduan Konfigurasi Redis
| Key | Type | Description | Example |
|---|---|---|---|
| USE_REDIS | boolean | Aktifkan Redis untuk caching dan penyimpanan sesi. Jika true, REDIS_URI harus disediakan. | USE_REDIS=true |
| USE_REDIS_STREAMS | boolean | Aktifkan Redis untuk stream LLM yang dapat dilanjutkan. Default ke nilai USE_REDIS jika tidak diatur. Atur ke false untuk menggunakan penyimpanan in-memory untuk stream. | # USE_REDIS_STREAMS=true |
| REDIS_URI | string | URI koneksi Redis. Untuk instans tunggal: `redis://host:port`. Untuk klaster: URI yang dipisahkan dengan koma. | REDIS_URI=redis://127.0.0.1:6379 |
| USE_REDIS_CLUSTER | boolean | Aktifkan mode klaster Redis saat menggunakan URI tunggal | # USE_REDIS_CLUSTER="true" |
| REDIS_CLUSTER_SAFE_DELETE | boolean | Hapus kunci cache Redis secara individual untuk menghindari kesalahan CROSSSLOT pada layanan Redis terkelola satu-endpoint yang melakukan sharding kunci secara internal. | # REDIS_CLUSTER_SAFE_DELETE=true |
| REDIS_USERNAME | string | Nama pengguna Redis untuk autentikasi. Menggantikan nama pengguna di URI jika keduanya disediakan. | # REDIS_USERNAME=your_redis_username |
| REDIS_PASSWORD | string | Kata sandi Redis untuk autentikasi. Menggantikan kata sandi di URI jika keduanya disediakan. | # REDIS_PASSWORD=your_redis_password |
| REDIS_CA | string | Jalur ke sertifikat CA untuk verifikasi TLS saat menggunakan protokol rediss://. | # REDIS_CA=/path/to/ca-cert.pem |
| REDIS_KEY_PREFIX | string | Awalan statis untuk semua kunci Redis guna mencegah kontaminasi lintas penyebaran. | # REDIS_KEY_PREFIX=librechat-prod-v2 |
| REDIS_KEY_PREFIX_VAR | string | Nama variabel lingkungan yang berisi prefiks dinamis (contoh: K_REVISION untuk Cloud Run). Tidak dapat digunakan bersamaan dengan REDIS_KEY_PREFIX. | # REDIS_KEY_PREFIX_VAR=K_REVISION |
| REDIS_MAX_LISTENERS | number | Jumlah maksimum event listener per klien Redis. Mencegah kebocoran memori. Default: 40. | # REDIS_MAX_LISTENERS=40 |
| REDIS_PING_INTERVAL | number | Interval ping dalam detik untuk menjaga koneksi. Default: 0 (dinonaktifkan). Hanya atur jika mengalami timeout. | # REDIS_PING_INTERVAL=300 |
| FORCED_IN_MEMORY_CACHE_NAMESPACES | string | Kunci cache yang dipisahkan koma untuk memaksa penyimpanan dalam memori meskipun Redis diaktifkan. | # FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES |
| REDIS_USE_ALTERNATIVE_DNS_LOOKUP | boolean | Aktifkan dnsLookup alternatif untuk koneksi TLS dengan AWS Elasticache. Diperlukan untuk klaster Elasticache dengan TLS. | # REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true |
Catatan:
- Saat
USE_REDIS=true, Anda harus menyediakanREDIS_URIatau aplikasi akan memberikan error. - Untuk mode Redis Cluster, berikan beberapa URI:
redis://node1:7001,redis://node2:7002,redis://node3:7003(mode cluster akan terdeteksi secara otomatis). - Untuk layanan Redis terkelola dengan endpoint tunggal yang melakukan sharding kunci secara internal, pertahankan
USE_REDIS_CLUSTER=falsedan aturREDIS_CLUSTER_SAFE_DELETE=truejika pembersihan cache gagal dengan errorCROSSSLOT. - Gunakan protokol
rediss://untuk koneksi TLS dan aturREDIS_CAjika CA Anda tidak dipercaya secara publik. REDIS_KEY_PREFIX_VARdanREDIS_KEY_PREFIXbersifat eksklusif satu sama lain.- AWS Elasticache dengan TLS: Elasticache mungkin perlu menggunakan dnsLookup alternatif untuk koneksi TLS. Atur
REDIS_USE_ALTERNATIVE_DNS_LOOKUP=truejika menggunakan Elasticache dengan TLS. Lihat dokumentasi ioredis untuk detail lebih lanjut.
Pemilihan Pemimpin (Leader Election)
Konfigurasikan pemilihan leader terdistribusi untuk deployment multi-instance dengan Redis. Pemilihan leader memastikan hanya satu instance yang menjalankan operasi tertentu seperti tugas terjadwal.
| Key | Type | Description | Example |
|---|---|---|---|
| LEADER_LEASE_DURATION | number | Durasi dalam detik agar sewa leader tetap berlaku sebelum kedaluwarsa. Default: 25. | LEADER_LEASE_DURATION=25 |
| LEADER_RENEW_INTERVAL | number | Interval dalam detik di mana leader memperbarui lease-nya. Default: 10. | LEADER_RENEW_INTERVAL=10 |
| LEADER_RENEW_ATTEMPTS | number | Jumlah maksimum percobaan ulang saat pembaruan sewa gagal. Default: 3. | LEADER_RENEW_ATTEMPTS=3 |
| LEADER_RENEW_RETRY_DELAY | number | Jeda dalam detik di antara percobaan ulang saat memperbarui sewa. Default: 0.5. | LEADER_RENEW_RETRY_DELAY=0.5 |
Catatan:
- Pemilihan leader memerlukan Redis untuk diaktifkan (
USE_REDIS=true). - Pengaturan ini hanya relevan untuk penyebaran multi-instance.
- Sewa pemimpin harus diperbarui sebelum kedaluwarsa untuk mempertahankan kepemimpinan.
- Jika pembaruan sewa gagal setelah upaya maksimal, instans tersebut akan melepaskan kepemimpinan.
Bagaimana panduan ini?