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

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:


Konfigurasi Server

Port

  • Server mendengarkan pada port tertentu.
  • Variabel lingkungan PORT menetapkan port tempat server mendengarkan. Secara default, nilainya diatur ke 3080.
KeyTypeDescriptionExample
HOSTstringMenentukan host.HOST=localhost
PORTnumberMenentukan 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.

KeyTypeDescriptionExample
TRUST_PROXYnumberMenentukan 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.

KeyTypeDescriptionExample
CREDS_KEYstringKunci 32-byte (64 karakter dalam hex) untuk menyimpan kredensial dengan aman. Diperlukan untuk memulai aplikasi.CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0
CREDS_IVstringIV 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

KeyTypeDescriptionExample
STATIC_CACHE_MAX_AGEstringCache-Control max-age dalam detikSTATIC_CACHE_MAX_AGE=172800
STATIC_CACHE_S_MAX_AGEstringCache-Control s-maxage dalam detik untuk cache bersama (CDN dan proxy)STATIC_CACHE_S_MAX_AGE="86400"
DISABLE_COMPRESSIONbooleanMenonaktifkan kompresi untuk file statis.DISABLE_COMPRESSION=false
ENABLE_IMAGE_OUTPUT_GZIP_SCANbooleanMengaktifkan penyajian versi gzipped dari gambar yang diunggah jika tersedia di folder yang sama.ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true
ENABLE_STATIC_ASSET_BROTLIbooleanMengaktifkan 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_AGE untuk mengubah max-age lokal bagi file statis. Secara default, nilai ini diatur ke 2 hari (172800 detik).
  • Hapus tanda komentar pada STATIC_CACHE_S_MAX_AGE untuk mengatur s-maxage bagi cache bersama (CDN dan proxy). Secara default, ini diatur ke 1 hari (86400 detik).
  • Hapus tanda komentar pada DISABLE_COMPRESSION untuk menonaktifkan kompresi bagi file statis. Secara default, kompresi diaktifkan.
  • Hapus tanda komentar pada ENABLE_IMAGE_OUTPUT_GZIP_SCAN untuk 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_BROTLI untuk menyajikan versi .br yang 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

KeyTypeDescriptionExample
INDEX_CACHE_CONTROLstringHeader Cache-Control untuk index.htmlINDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate
INDEX_PRAGMAstringHeader Pragma untuk index.htmlINDEX_PRAGMA=no-cache
INDEX_EXPIRESstringHeader Expires untuk index.htmlINDEX_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

KeyTypeDescriptionExample
MONGO_URIstringMenentukan 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 (retryWrites adalah satu-satunya opsi yang Anda perlukan saat menggunakan basis data daring.)

Konfigurasi Kumpulan Koneksi MongoDB

KeyTypeDescriptionExample
MONGO_MAX_POOL_SIZEnumberJumlah maksimum koneksi dalam kumpulan koneksi.# MONGO_MAX_POOL_SIZE=
MONGO_MIN_POOL_SIZEnumberJumlah minimum koneksi dalam kumpulan koneksi.# MONGO_MIN_POOL_SIZE=
MONGO_MAX_CONNECTINGnumberJumlah maksimum koneksi yang dapat diproses untuk dibuat secara bersamaan oleh kumpulan koneksi.# MONGO_MAX_CONNECTING=
MONGO_MAX_IDLE_TIME_MSnumberJumlah milidetik maksimum agar koneksi dapat tetap tidak aktif di dalam pool sebelum dihapus dan ditutup.# MONGO_MAX_IDLE_TIME_MS=
MONGO_WAIT_QUEUE_TIMEOUT_MSnumberWaktu maksimum dalam milidetik yang dapat ditunggu oleh sebuah thread agar koneksi tersedia.# MONGO_WAIT_QUEUE_TIMEOUT_MS=

Konfigurasi Skema MongoDB

KeyTypeDescriptionExample
MONGO_AUTO_INDEXbooleanAtur 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_CREATEbooleanAtur 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 - gunakan retryWrites=false
  • memerlukan koneksi TLS, oleh karena itu gunakan parameter tls=true untuk mengaktifkan TLS dan tlsCAFile=/path-to-ca/bundle.pem untuk 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:

Domain Aplikasi

Untuk mengonfigurasi LibreChat agar dapat digunakan secara lokal atau penerapan domain kustom, atur variabel lingkungan berikut:

KeyTypeDescriptionExample
DOMAIN_CLIENTstringMenentukan domain sisi klien.DOMAIN_CLIENT=http://localhost:3080
DOMAIN_SERVERstringMenentukan domain sisi server.DOMAIN_SERVER=http://localhost:3080
ADMIN_PANEL_URLstringURL 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_SECRETstringKunci 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_PORTnumberPort 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

KeyTypeDescriptionExample
NO_INDEXbooleanMencegah 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%.log di: LibreChat GitHub Issues
  • Log kesalahan disimpan di lokasi yang sama.

Variabel Lingkungan

KeyTypeDescriptionExample
DEBUG_LOGGINGbooleanTetap aktifkan log debug.DEBUG_LOGGING=true
DEBUG_CONSOLEbooleanAktifkan log konsol/stdout verbose dalam format yang sama dengan log debug file.DEBUG_CONSOLE=false
LOG_TO_FILEbooleanAtur ke false untuk menonaktifkan transport Winston berbasis file sambil tetap menjaga logging konsol tetap tersedia.LOG_TO_FILE=true
CONSOLE_JSONbooleanAktifkan log konsol/stdout JSON verbose yang sesuai untuk penyebaran cloud seperti GCP/AWS.CONSOLE_JSON=false
CONSOLE_JSON_STRING_LENGTHnumberKonfigurasikan ukuran pemotongan untuk nilai string dalam log konsol/stdout JSON. Default: 255.# CONSOLE_JSON_STRING_LENGTH=255
LIBRECHAT_LOG_DIRstringDirektori kustom untuk file log. Default ke /app/logs (Docker) atau api/logs (pengembangan lokal).# LIBRECHAT_LOG_DIR=/custom/log/path
MEM_DIAGbooleanAktifkan diagnostik memori — mencatat snapshot heap/RSS setiap 60 detik. Diaktifkan secara otomatis saat menjalankan dengan --inspect.# MEM_DIAG=true
AGENT_DEBUG_LOGGINGbooleanMengaktifkan pencatatan debug verbose di pengontrol agen (jumlah token, diagnostik pemangkasan konteks).# AGENT_DEBUG_LOGGING=true

Catatan:

  • DEBUG_LOGGING dapat digunakan dengan DEBUG_CONSOLE atau CONSOLE_JSON tetapi tidak keduanya sekaligus.
  • DEBUG_CONSOLE dan CONSOLE_JSON bersifat 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.

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.

KeyTypeDescriptionExample
UIDnumberID pengguna.# UID=1000
GIDnumberID 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.

KeyTypeDescriptionExample
OTEL_TRACING_ENABLEDbooleanAktifkan pelacakan OpenTelemetry backend. Pelacakan tetap dinonaktifkan jika OTEL_SDK_DISABLED=true.# OTEL_TRACING_ENABLED=false
OTEL_SERVICE_NAMEstringNama layanan yang dilaporkan ke OpenTelemetry. Default: librechat.# OTEL_SERVICE_NAME=librechat
OTEL_SERVICE_VERSIONstringVersi layanan yang dilaporkan ke OpenTelemetry. Default ke versi paket jika tidak diatur.# OTEL_SERVICE_VERSION=
OTEL_EXPORTER_OTLP_ENDPOINTstringEndpoint eksportir OTLP dasar.# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTstringendpoint OTLP khusus untuk trace. Menggantikan endpoint dasar untuk trace jika diatur.# OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=
OTEL_EXPORTER_OTLP_HEADERSstringHeader eksportir OTLP yang dipisahkan koma, seperti metadata otorisasi.# OTEL_EXPORTER_OTLP_HEADERS=
OTEL_TRACES_EXPORTERstringPemilihan eksportir trace.# OTEL_TRACES_EXPORTER=otlp
OTEL_TRACES_SAMPLERstringSampler trace OpenTelemetry. Contoh default: parentbased_always_on.# OTEL_TRACES_SAMPLER=parentbased_always_on
OTEL_LOG_LEVELstringLevel log SDK OpenTelemetry.# OTEL_LOG_LEVEL=INFO
OTEL_SDK_DISABLEDbooleanNonaktifkan SDK OpenTelemetry meskipun pelacakan diaktifkan.# OTEL_SDK_DISABLED=false
OTEL_IOREDIS_TRACING_ENABLEDbooleanAktifkan 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.

KeyTypeDescriptionExample
RUM_ENABLEDbooleanAktifkan Real User Monitoring browser. Default: false.# RUM_ENABLED=false
RUM_PROVIDERstringPenyedia RUM Browser. Saat ini mendukung `hyperdx`.# RUM_PROVIDER=hyperdx
RUM_URLstringURL kolektor publik yang digunakan oleh mode public-token.# RUM_URL=http://localhost:4318
RUM_SERVICE_NAMEstringNama layanan yang dilaporkan oleh SDK browser. Default: librechat-web.# RUM_SERVICE_NAME=librechat-web
RUM_ENVIRONMENTstringLabel lingkungan dilaporkan dengan telemetri browser.# RUM_ENVIRONMENT=development
RUM_AUTH_MODEstringMode autentikasi untuk telemetri browser. Gunakan `publicToken` atau `proxy`.# RUM_AUTH_MODE=publicToken
RUM_PUBLIC_TOKENstringToken browser publik untuk mode public-token. Anggap ini sebagai publik dan batasi penyerapan di kolektor.# RUM_PUBLIC_TOKEN=
RUM_PROXY_TARGET_URLstringURL 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_MSnumberBatas waktu permintaan proxy dalam milidetik. Default: 10000.# RUM_PROXY_TIMEOUT_MS=10000
RUM_TRACE_PROPAGATION_TARGETSstringOrigin atau URL HTTPS pihak pertama yang dipisahkan dengan koma yang harus menerima header traceparent.# RUM_TRACE_PROPAGATION_TARGETS=https://api.example.com
RUM_DISABLE_REPLAYbooleanNonaktifkan pemutaran ulang sesi peramban. Default: true.# RUM_DISABLE_REPLAY=true
RUM_CONSOLE_CAPTUREbooleanTangkap log konsol browser. Dapat mengumpulkan prompt, respons, atau payload sensitif.# RUM_CONSOLE_CAPTURE=false
RUM_ADVANCED_NETWORK_CAPTUREbooleanMenangkap payload jaringan secara mendetail. Dapat mengumpulkan prompt, respons, atau payload yang sensitif.# RUM_ADVANCED_NETWORK_CAPTURE=false
RUM_SAMPLE_RATEnumberTingkat 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.

KeyTypeDescriptionExample
CONFIG_PATHstringLokasi 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.

KeyTypeDescriptionExample
DEPLOYMENT_SKILLS_DIRstringDirektori 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.

KeyTypeDescriptionExample
CONFIG_BYPASS_VALIDATIONbooleanJika 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.

KeyTypeDescriptionExample
CONTINUE_ON_UNCAUGHT_EXCEPTIONbooleanJika 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.

KeyTypeDescriptionExample
ENDPOINTSstringDaftar endpoint yang tersedia, dipisahkan dengan koma.# ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom
PROXYstringProksi keluar untuk klien sisi server yang didukung. Berlaku untuk target HTTP maupun HTTPS.PROXY=
HTTP_PROXYstringFallback proxy HTTP yang digunakan oleh klien sisi server yang didukung saat PROXY tidak diatur.# HTTP_PROXY=
HTTPS_PROXYstringFallback proxy HTTPS yang digunakan oleh klien sisi server yang didukung saat PROXY tidak disetel.# HTTPS_PROXY=
NO_PROXYstringHost, 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_CONVObooleanAktifkan penamaan judul untuk semua endpoint.TITLE_CONVO=true

Endpoint yang Diketahui - librechat.yaml

KeyTypeDescriptionExample
ANYSCALE_API_KEYstringKunci API untuk Anyscale.# ANYSCALE_API_KEY=
APIPIE_API_KEYstringKunci API untuk Apipie.# APIPIE_API_KEY=
COHERE_API_KEYstringKunci API untuk Cohere.# COHERE_API_KEY=
FIREWORKS_API_KEYstringKunci API untuk Fireworks.# FIREWORKS_API_KEY=
GROQ_API_KEYstringKunci API untuk Groq.# GROQ_API_KEY=
MISTRAL_API_KEYstringKunci API untuk Mistral.# MISTRAL_API_KEY=
OPENROUTER_KEYstringKunci API untuk OpenRouter.# OPENROUTER_KEY=
PERPLEXITY_API_KEYstringKunci API untuk Perplexity.# PERPLEXITY_API_KEY=
SHUTTLEAI_API_KEYstringKunci API untuk ShuttleAI.# SHUTTLEAI_API_KEY=
TOGETHERAI_API_KEYstringKunci API untuk TogetherAI.# TOGETHERAI_API_KEY=
DEEPSEEK_API_KEYstringKunci API untuk Deepseek API# DEEPSEEK_API_KEY=

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

KeyTypeDescriptionExample
SERPER_API_KEYstringKunci API untuk penyedia pencarian Serper. Dapatkan kunci Anda dari https://serper.dev/api-keys# SERPER_API_KEY=
TAVILY_API_KEYstringAPI key untuk penyedia pencarian dan scraper Tavily. Dapatkan kunci Anda dari https://app.tavily.com/home# TAVILY_API_KEY=
TAVILY_SEARCH_URLstringURL API Pencarian Tavily Kustom (opsional). Hanya diperlukan untuk endpoint pencarian kustom atau proxy yang kompatibel dengan Tavily.# TAVILY_SEARCH_URL=
TAVILY_EXTRACT_URLstringURL API Ekstrak Tavily Kustom (opsional). Hanya diperlukan untuk endpoint ekstrak kustom atau proxy yang kompatibel dengan Tavily.# TAVILY_EXTRACT_URL=
FIRECRAWL_API_KEYstringKunci API untuk layanan scraper Firecrawl. Dapatkan kunci Anda dari https://docs.firecrawl.dev/introduction#api-key# FIRECRAWL_API_KEY=
FIRECRAWL_API_URLstringURL API Firecrawl kustom (opsional). Hanya diperlukan untuk instance Firecrawl kustom.# FIRECRAWL_API_URL=
FIRECRAWL_VERSIONstringVersi API Firecrawl (v0 atau v1).# FIRECRAWL_VERSION=v1
JINA_API_KEYstringKunci API untuk layanan Jina reranker. Dapatkan kunci Anda dari https://jina.ai/api-dashboard/# JINA_API_KEY=
JINA_API_URLstringURL API Jina kustom (opsional). Hanya diperlukan untuk instans Jina kustom.# JINA_API_URL=
COHERE_API_KEYstringKunci 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 dengan ANTHROPIC_REVERSE_PROXY=
    • biarkan kosong atau beri komentar untuk menggunakan base url default
KeyTypeDescriptionExample
ANTHROPIC_API_KEYstringKunci API Anthropic atau "user_provided" untuk mengizinkan pengguna menyediakan kunci API mereka sendiri.Defaults to an empty string.
ANTHROPIC_MODELSstringDaftar 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_PROXYstringProksi balik untuk Anthropic.# ANTHROPIC_REVERSE_PROXY=
ANTHROPIC_TITLE_MODELstringTIDAK LAGI DIGUNAKAN: Model yang digunakan untuk pemberian judul dengan Anthropic.# ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307
  • ANTHROPIC_TITLE_MODEL kini telah usang dan akan dihapus pada versi mendatang. Gunakan Pengaturan Endpoint titleModel sebagai gantinya di dalam konfigurasi librechat.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-haiku sebagai 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

KeyTypeDescriptionExample
ANTHROPIC_USE_VERTEXbooleanAtur ke true untuk menggunakan model Anthropic melalui Google Vertex AI alih-alih API langsung.ANTHROPIC_USE_VERTEX=true
ANTHROPIC_VERTEX_REGIONstringWilayah 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 peran Vertex AI User.

AWS Bedrock

Lihat: AWS Bedrock Setup

KeyTypeDescriptionExample
BEDROCK_AWS_DEFAULT_REGIONstringWilayah AWS default harus disediakan untuk Bedrock.BEDROCK_AWS_DEFAULT_REGION=us-east-1
BEDROCK_AWS_ACCESS_KEY_IDstringID 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_KEYstringAWS secret access key untuk Bedrock. Opsional jika menggunakan rantai kredensial AWS default.# BEDROCK_AWS_SECRET_ACCESS_KEY=your_secret_access_key
BEDROCK_AWS_SESSION_TOKENstringToken sesi AWS untuk kredensial sementara. Opsional.# BEDROCK_AWS_SESSION_TOKEN=your_session_token
BEDROCK_AWS_PROFILEstringNama profil konfigurasi bersama AWS untuk Bedrock. Opsional jika menggunakan rantai kredensial AWS default.# BEDROCK_AWS_PROFILE=your-profile-name
BEDROCK_AWS_BEARER_TOKENstringKunci 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_MODELSstringDaftar 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

KeyTypeDescriptionExample
BINGAI_TOKENstringToken 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_HOSTstringURL 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.

Google

Ikuti petunjuk ini untuk mengatur Google Endpoint

KeyTypeDescriptionExample
GOOGLE_KEYstringKunci API Google. Atur ke "user_provided" agar pengguna dapat memasukkan kunci API mereka sendiri melalui WebUI.GOOGLE_KEY=user_provided
GOOGLE_SERVICE_KEY_FILEstringJalur 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_PROXYstringURL reverse proxy Google.GOOGLE_REVERSE_PROXY=
GOOGLE_AUTH_HEADERbooleanGunakan header Authorization alih-alih X-goog-api-key. Beberapa reverse proxy memerlukan ini.# GOOGLE_AUTH_HEADER=true
GOOGLE_MODELSstringModel 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_MODELSstringModel 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_MODELstringTIDAK LAGI DIDUKUNG: Model yang digunakan untuk pemberian judul dengan Google.GOOGLE_TITLE_MODEL=gemini-pro
GOOGLE_LOCstringMenentukan lokasi Google Cloud untuk memproses permintaan APIGOOGLE_LOC=us-central1
GOOGLE_CLOUD_LOCATIONstringWilayah alternatif untuk Pembuatan Gambar Gemini (contoh: global).# GOOGLE_CLOUD_LOCATION=global
GOOGLE_EXCLUDE_SAFETY_SETTINGSstringHilangkan sepenuhnya pengaturan keamanan yang disertakan secara default, yang akan menggunakan pengaturan default penyediaGOOGLE_EXCLUDE_SAFETY_SETTINGS=true
GOOGLE_SAFETY_SEXUALLY_EXPLICITstringPengaturan 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_SPEECHstringPengaturan 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_HARASSMENTstringPengaturan keamanan untuk konten pelecehan. Opsinya adalah BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY, dan OFF.GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_DANGEROUS_CONTENTstringPengaturan 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_INTEGRITYstringPengaturan 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_MODEL kini telah usang dan akan dihapus di versi mendatang. Gunakan Pengaturan Endpoint titleModel sebagai gantinya di dalam konfigurasi librechat.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:

Pembuatan Gambar Gemini

Gemini Image Generation adalah alat untuk Agen yang mendukung Gemini API maupun Vertex AI. Lihat: Gemini Image Generation

KeyTypeDescriptionExample
GEMINI_API_KEYstringKunci API Gemini khusus untuk pembuatan gambar. Akan kembali menggunakan GOOGLE_KEY jika tidak diatur.# GEMINI_API_KEY=your_gemini_api_key
GEMINI_IMAGE_MODELstringModel 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 peran Vertex AI User.

OpenAI

Lihat: OpenAI Setup

KeyTypeDescriptionExample
OPENAI_API_KEYstringKunci 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_MODELSstringSesuaikan 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_OPENAIbooleanAktifkan mode debug untuk endpoint OpenAI.DEBUG_OPENAI=false
OPENAI_SUMMARIZEbooleanAktifkan peringkasan pesan. False secara default# OPENAI_SUMMARIZE=true
OPENAI_SUMMARY_MODELstringModel yang digunakan untuk peringkasan OpenAI.# OPENAI_SUMMARY_MODEL=gpt-3.5-turbo
OPENAI_FORCE_PROMPTbooleanPaksa API untuk dipanggil dengan payload prompt alih-alih payload messages.# OPENAI_FORCE_PROMPT=false
OPENAI_ORGANIZATIONstringTentukan organisasi mana yang akan digunakan untuk setiap permintaan API ke OpenAI. Opsional# OPENAI_ORGANIZATION=
OPENAI_REVERSE_PROXYstringTIDAK LAGI DIDUKUNG: Pengaturan reverse proxy untuk OpenAI.# OPENAI_REVERSE_PROXY=
OPENAI_TITLE_MODELstringDEPRECATED: Model yang digunakan untuk penamaan OpenAI.# OPENAI_TITLE_MODEL=gpt-3.5-turbo
  • OPENAI_TITLE_MODEL kini telah usang dan akan dihapus pada versi mendatang. Gunakan Pengaturan endpoint titleModel sebagai gantinya di dalam konfigurasi librechat.yaml.
  • OPENAI_REVERSE_PROXY kini sudah tidak digunakan lagi (deprecated) dan akan dihapus pada versi mendatang. Gunakan custom endpoint sebagai gantinya.

Assistants

Lihat: Assistants Setup

KeyTypeDescriptionExample
ASSISTANTS_API_KEYstringKunci 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_MODELSstringSesuaikan 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_URLstringURL 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:

KeyTypeDescriptionExample
TAVILY_API_KEYstringKunci 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:

KeyTypeDescriptionExample
TRAVERSAAL_API_KEYstringKunci API Traversaal.TRAVERSAAL_API_KEY=

WolframAlpha

Lihat instruksi mendetail di sini: Wolfram Alpha

Variabel Lingkungan:

KeyTypeDescriptionExample
WOLFRAM_APP_IDstringID 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:

KeyTypeDescriptionExample
ZAPIER_NLA_API_KEYstringKunci API Zapier NLA.ZAPIER_NLA_API_KEY=

OpenWeather

Lihat instruksi terperinci di sini: OpenWeather

KeyTypeDescriptionExample
OPENWEATHER_API_KEYstringKunci 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

KeyTypeDescriptionExample
LIBRECHAT_CODE_API_KEYstringKunci API untuk layanan Code Interpreter. Jika diatur secara global, memberikan akses ke semua pengguna.LIBRECHAT_CODE_API_KEY=your-api-key
LIBRECHAT_CODE_BASEURLstringURL 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

KeyTypeDescriptionExample
SANDPACK_BUNDLER_URLstringMenentukan URL bundler kustom untuk Sandpack, yang digunakan oleh ArtifactsSANDPACK_BUNDLER_URL=your-bundler-url

Pencarian (Meilisearch)

Mengaktifkan pencarian dalam pesan dan percakapan:

KeyTypeDescriptionExample
SEARCHbooleanMengaktifkan 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:

KeyTypeDescriptionExample
MEILI_NO_ANALYTICSbooleanMenonaktifkan 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.

KeyTypeDescriptionExample
MEILI_HOSTstringKoneksi 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.

KeyTypeDescriptionExample
MEILI_MASTER_KEYstringKunci 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.

KeyTypeDescriptionExample
MEILI_NO_SYNCstringAlihkan untuk menonaktifkan sinkronisasi indeks MeilisearchMEILI_NO_SYNC=true

RAG API

Konfigurasikan Retrieval-Augmented Generation untuk pengindeksan dokumen dan respons yang sadar konteks. Lihat: RAG API Configuration

KeyTypeDescriptionExample
RAG_API_URLstringURL layanan RAG API.RAG_API_URL=http://host.docker.internal:8000
RAG_OPENAI_API_KEYstringKunci API OpenAI untuk embedding RAG. Menggantikan OPENAI_API_KEY untuk RAG.# RAG_OPENAI_API_KEY=sk-your-openai-api-key
RAG_OPENAI_BASEURLstringURL dasar OpenAI kustom untuk penyematan RAG.# RAG_OPENAI_BASEURL=
RAG_USE_FULL_CONTEXTbooleanAmbil seluruh konteks file alih-alih 4 hasil teratas. Default: false.# RAG_USE_FULL_CONTEXT=true
EMBEDDINGS_PROVIDERstringPenyedia embeddings: openai, azure, huggingface, huggingfacetei, atau ollama. Default: openai.# EMBEDDINGS_PROVIDER=openai
EMBEDDINGS_MODELstringModel embeddings yang akan digunakan. Default bergantung pada penyedia.# EMBEDDINGS_MODEL=text-embedding-3-small

Catatan: Saat menggunakan pengaturan Docker default, file .env digunakan 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

KeyTypeDescriptionExample
STT_API_KEYstringKunci API untuk layanan Speech-to-Text (contoh: OpenAI Whisper).# STT_API_KEY=
TTS_API_KEYstringKunci API untuk layanan Text-to-Speech (contoh: OpenAI TTS).# TTS_API_KEY=

Catatan: STT dan TTS terutama dikonfigurasi melalui bagian speech: di dalam librechat.yaml. Variabel lingkungan ini direferensikan dalam konfigurasi tersebut. Lihat Speech Settings untuk opsi konfigurasi YAML selengkapnya.

Konfigurasikan fungsionalitas tautan percakapan yang dibagikan.

KeyTypeDescriptionExample
ALLOW_SHARED_LINKSbooleanAktifkan atau nonaktifkan tautan percakapan yang dibagikan. Default: true.ALLOW_SHARED_LINKS=true
ALLOW_SHARED_LINKS_PUBLICbooleanIzinkan tautan yang dibagikan untuk dapat diakses publik tanpa autentikasi. Default: false.ALLOW_SHARED_LINKS_PUBLIC=false
SHARED_LINKS_SNAPSHOT_FILESbooleanFile 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

KeyTypeDescriptionExample
OPENAI_MODERATIONbooleanApakah akan mengaktifkan moderasi OpenAI pada endpoint **OpenAI** dan **Plugins** atau tidak.OPENAI_MODERATION=false
OPENAI_MODERATION_API_KEYstringKunci API OpenAI Anda.OPENAI_MODERATION_API_KEY=
OPENAI_MODERATION_REVERSE_PROXYstringCatatan: Dinonaktifkan secara default, ini tidak berfungsi dengan semua reverse proxy.# OPENAI_MODERATION_REVERSE_PROXY=

Pengaturan Pemblokiran

KeyTypeDescriptionExample
BAN_VIOLATIONSbooleanApakah akan mengaktifkan pemblokiran pengguna karena pelanggaran atau tidak (mereka akan tetap dicatat).BAN_VIOLATIONS=true
BAN_DURATIONintegerBerapa lama pengguna dan IP terkait diblokir (dalam milidetik).BAN_DURATION=1000 * 60 * 60 * 2
BAN_INTERVALintegerPengguna 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.

KeyTypeDescriptionExample
LOGIN_MAXintegerJumlah maksimum login yang diizinkan per IP per LOGIN_WINDOW.LOGIN_MAX=7
LOGIN_WINDOWintegerDalam hitungan menit, menentukan jendela waktu untuk LOGIN_MAX login.LOGIN_WINDOW=5
REGISTER_MAXintegerJumlah maksimum pendaftaran yang diizinkan per IP per REGISTER_WINDOW.REGISTER_MAX=5
REGISTER_WINDOWintegerDalam hitungan menit, menentukan jendela waktu untuk pendaftaran REGISTER_MAX.REGISTER_WINDOW=60

Skor untuk setiap pelanggaran

KeyTypeDescriptionExample
LOGIN_VIOLATION_SCOREintegerSkor untuk pelanggaran login.LOGIN_VIOLATION_SCORE=1
REGISTRATION_VIOLATION_SCOREintegerSkor untuk pelanggaran pendaftaran.REGISTRATION_VIOLATION_SCORE=1
CONCURRENT_VIOLATION_SCOREintegerSkor untuk pelanggaran serentak.CONCURRENT_VIOLATION_SCORE=1
MESSAGE_VIOLATION_SCOREintegerSkor untuk pelanggaran pesan.MESSAGE_VIOLATION_SCORE=1
NON_BROWSER_VIOLATION_SCOREintegerSkor untuk pelanggaran non-browser.NON_BROWSER_VIOLATION_SCORE=20
ILLEGAL_MODEL_REQ_SCOREintegerSkor untuk permintaan model ilegal.ILLEGAL_MODEL_REQ_SCORE=5
IMPORT_VIOLATION_SCOREintegerSkor untuk pelanggaran impor percakapan.IMPORT_VIOLATION_SCORE=1
FORK_VIOLATION_SCOREintegerSkor untuk pelanggaran percabangan percakapan.FORK_VIOLATION_SCORE=1
TTS_VIOLATION_SCOREintegerSkor untuk pelanggaran text-to-speech.TTS_VIOLATION_SCORE=0
STT_VIOLATION_SCOREintegerSkor untuk pelanggaran speech-to-text.STT_VIOLATION_SCORE=0
FILE_UPLOAD_VIOLATION_SCOREintegerSkor untuk pelanggaran unggahan file.FILE_UPLOAD_VIOLATION_SCORE=0
RESET_PASSWORD_VIOLATION_SCOREintegerSkor untuk pelanggaran pengaturan ulang kata sandi.RESET_PASSWORD_VIOLATION_SCORE=0
VERIFY_EMAIL_VIOLATION_SCOREintegerSkor untuk pelanggaran verifikasi email.VERIFY_EMAIL_VIOLATION_SCORE=0
TOOL_CALL_VIOLATION_SCOREintegerSkor untuk pelanggaran pemanggilan tool.TOOL_CALL_VIOLATION_SCORE=0
CONVO_ACCESS_VIOLATION_SCOREintegerSkor 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)

KeyTypeDescriptionExample
LIMIT_CONCURRENT_MESSAGESbooleanApakah akan membatasi jumlah pesan yang dapat dikirim pengguna per permintaan.LIMIT_CONCURRENT_MESSAGES=true
CONCURRENT_MESSAGE_MAXintegerJumlah 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:
KeyTypeDescriptionExample
LIMIT_MESSAGE_IPbooleanApakah akan membatasi jumlah pesan yang dapat dikirim oleh sebuah IP per `MESSAGE_IP_WINDOW`.LIMIT_MESSAGE_IP=true
MESSAGE_IP_MAXintegerJumlah maksimum pesan yang dapat dikirim oleh sebuah IP per `MESSAGE_IP_WINDOW`.MESSAGE_IP_MAX=40
MESSAGE_IP_WINDOWintegerDalam hitungan menit, menentukan jendela waktu untuk `MESSAGE_IP_MAX` pesan.MESSAGE_IP_WINDOW=1
Pembatas Pengguna:
KeyTypeDescriptionExample
LIMIT_MESSAGE_USERbooleanApakah akan membatasi jumlah pesan yang dapat dikirim pengguna per `MESSAGE_USER_WINDOW`.LIMIT_MESSAGE_USER=false
MESSAGE_USER_MAXintegerJumlah maksimum pesan yang dapat dikirim pengguna per `MESSAGE_USER_WINDOW`.MESSAGE_USER_MAX=40
MESSAGE_USER_WINDOWintegerDalam 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:
KeyTypeDescriptionExample
LIMIT_IMPORT_IPbooleanApakah akan membatasi jumlah impor percakapan yang dapat dilakukan oleh sebuah IP per `IMPORT_IP_WINDOW`.LIMIT_IMPORT_IP=true
IMPORT_IP_MAXintegerJumlah maksimum impor percakapan yang dapat dilakukan oleh sebuah IP per `IMPORT_IP_WINDOW`.IMPORT_IP_MAX=100
IMPORT_IP_WINDOWintegerDalam hitungan menit, menentukan jendela waktu untuk impor `IMPORT_IP_MAX`.IMPORT_IP_WINDOW=1
Pembatas Pengguna:
KeyTypeDescriptionExample
LIMIT_IMPORT_USERbooleanApakah akan membatasi jumlah impor percakapan yang dapat dilakukan pengguna per `IMPORT_USER_WINDOW`.LIMIT_IMPORT_USER=false
IMPORT_USER_MAXintegerJumlah maksimum impor percakapan yang dapat dilakukan pengguna per `IMPORT_USER_WINDOW`.IMPORT_USER_MAX=50
IMPORT_USER_WINDOWintegerDalam 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:
KeyTypeDescriptionExample
LIMIT_FORK_IPbooleanApakah akan membatasi jumlah percabangan percakapan yang dapat dibuat oleh sebuah IP per `FORK_IP_WINDOW`.LIMIT_FORK_IP=true
FORK_IP_MAXintegerJumlah maksimum fork percakapan yang dapat dibuat oleh sebuah IP per `FORK_IP_WINDOW`.FORK_IP_MAX=30
FORK_IP_WINDOWintegerDalam hitungan menit, menentukan jendela waktu untuk fork `FORK_IP_MAX`.FORK_IP_WINDOW=1
Pembatas Pengguna:
KeyTypeDescriptionExample
LIMIT_FORK_USERbooleanApakah akan membatasi jumlah percabangan percakapan yang dapat dibuat pengguna per `FORK_USER_WINDOW`.LIMIT_FORK_USER=false
FORK_USER_MAXintegerJumlah maksimum percabangan percakapan yang dapat dibuat pengguna per `FORK_USER_WINDOW`.FORK_USER_MAX=7
FORK_USER_WINDOWintegerDalam 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.yaml di bagian rateLimits.fileUploads.

Pembatas IP:
KeyTypeDescriptionExample
FILE_UPLOAD_IP_MAXintegerBatas unggahan file per IP per `FILE_UPLOAD_IP_WINDOW`. Default: 100.# FILE_UPLOAD_IP_MAX=100
FILE_UPLOAD_IP_WINDOWintegerDalam hitungan menit, menentukan jendela waktu untuk `FILE_UPLOAD_IP_MAX`. Default: 15.# FILE_UPLOAD_IP_WINDOW=15
Pembatas Pengguna:
KeyTypeDescriptionExample
FILE_UPLOAD_USER_MAXintegerBatas unggahan file per pengguna per `FILE_UPLOAD_USER_WINDOW`. Default: 50.# FILE_UPLOAD_USER_MAX=50
FILE_UPLOAD_USER_WINDOWintegerDalam 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.yaml di bagian rateLimits.tts.

Pembatas IP:
KeyTypeDescriptionExample
TTS_IP_MAXintegerJumlah maksimum permintaan TTS per IP per `TTS_IP_WINDOW`. Default: 100.# TTS_IP_MAX=100
TTS_IP_WINDOWintegerDalam hitungan menit, menentukan jendela waktu untuk `TTS_IP_MAX`. Default: 1.# TTS_IP_WINDOW=1
Pembatas Pengguna:
KeyTypeDescriptionExample
TTS_USER_MAXintegerJumlah maksimum permintaan TTS per pengguna per `TTS_USER_WINDOW`. Default: 50.# TTS_USER_MAX=50
TTS_USER_WINDOWintegerDalam 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.yaml di bagian rateLimits.stt.

Pembatas IP:
KeyTypeDescriptionExample
STT_IP_MAXintegerMaksimum permintaan STT per IP per `STT_IP_WINDOW`. Default: 100.# STT_IP_MAX=100
STT_IP_WINDOWintegerDalam hitungan menit, menentukan rentang waktu untuk `STT_IP_MAX`. Default: 1.# STT_IP_WINDOW=1
Pembatas Pengguna:
KeyTypeDescriptionExample
STT_USER_MAXintegerMaksimum permintaan STT per pengguna per `STT_USER_WINDOW`. Default: 50.# STT_USER_MAX=50
STT_USER_WINDOWintegerDalam 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

KeyTypeDescriptionExample
CHECK_BALANCEbooleanAktifkan saldo kredit token untuk endpoint OpenAI/Plugins.CHECK_BALANCE=false
START_BALANCEintegerJika nilai diatur, token akan dikreditkan ke saldo pengguna setelah pendaftaran.START_BALANCE=20000

Mengelola Saldo

  • Jalankan npm run add-balance untuk menambahkan saldo secara manual.
    • Anda juga dapat menentukan email dan jumlah kredit token yang akan ditambahkan, contohnya: npm run add-balance [email protected] 1000
  • Jalankan npm run set-balance untuk mengatur saldo secara manual, mirip dengan add-balance.
  • Jalankan npm run list-balances untuk menampilkan saldo setiap pengguna.

Catatan: 1000 kredit = $0.001 (1 mill USD)

Pendaftaran dan Login

lihat: Sistem Autentikasi

Layar pendaftaran penggunaLayar pendaftaran pengguna

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:
KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINbooleanAktifkan atau nonaktifkan HANYA login email.ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONbooleanAktifkan atau nonaktifkan pendaftaran Email untuk pengguna baru.ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINbooleanIzinkan pengguna untuk terhubung ke LibreChat dengan berbagai jejaring sosial.ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONbooleanAktifkan atau nonaktifkan pendaftaran pengguna baru menggunakan berbagai jejaring sosial.ALLOW_SOCIAL_REGISTRATION=false
ALLOW_PASSWORD_RESETbooleanAktifkan atau nonaktifkan kemampuan bagi pengguna untuk mengatur ulang kata sandi mereka sendiriALLOW_PASSWORD_RESET=false
ALLOW_ACCOUNT_DELETIONbooleanAktifkan atau nonaktifkan kemampuan bagi pengguna untuk menghapus akun mereka sendiri. Diaktifkan secara default jika dihilangkan/dikomentariALLOW_ACCOUNT_DELETION=true
ALLOW_UNVERIFIED_EMAIL_LOGINbooleanAtur 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_LENGTHnumberPanjang 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):
KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)Waktu kedaluwarsa sesi.SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (milliseconds)Waktu kedaluwarsa refresh token.REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7
SESSION_COOKIE_SECUREbooleanMenimpa atribut Secure untuk cookie sesi/autentikasi. Biarkan tidak disetel untuk menggunakan heuristik NODE_ENV/DOMAIN_SERVER default.# SESSION_COOKIE_SECURE=false

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

KeyTypeDescriptionExample
JWT_SECRETstring (hex)Kunci rahasia JWT.JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (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

KeyTypeDescriptionExample
APPLE_CLIENT_IDstringID Layanan Apple Anda (contoh: com.yourdomain.librechat.services).APPLE_CLIENT_ID=com.yourdomain.librechat.services
APPLE_TEAM_IDstringID Tim Pengembang Apple Anda.APPLE_TEAM_ID=YOUR_TEAM_ID
APPLE_KEY_IDstringID Kunci Apple Anda dari kunci yang diunduh.APPLE_KEY_ID=YOUR_KEY_ID
APPLE_PRIVATE_KEY_PATHstringJalur absolut ke file .p8 yang telah Anda unduh.APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8
APPLE_CALLBACK_URLstringURL callback untuk autentikasi Apple.APPLE_CALLBACK_URL=/oauth/apple/callback

Autentikasi Discord

Untuk informasi lebih lanjut: Discord

KeyTypeDescriptionExample
DISCORD_CLIENT_IDstringID klien Discord Anda.DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRETstringClient secret Discord Anda.DISCORD_CLIENT_SECRET=
DISCORD_CALLBACK_URLstringURL callback untuk autentikasi Discord.DISCORD_CALLBACK_URL=/oauth/discord/callback

Autentikasi Facebook

Untuk informasi lebih lanjut: Facebook Authentication

KeyTypeDescriptionExample
FACEBOOK_CLIENT_IDstringID klien Facebook Anda.FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRETstringClient secret Facebook Anda.FACEBOOK_CLIENT_SECRET=
FACEBOOK_CALLBACK_URLstringURL callback untuk autentikasi Facebook.FACEBOOK_CALLBACK_URL=/oauth/facebook/callback

Autentikasi GitHub

Untuk informasi lebih lanjut: GitHub Authentication

KeyTypeDescriptionExample
GITHUB_CLIENT_IDstringID klien GitHub Anda.GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRETstringClient secret GitHub Anda.GITHUB_CLIENT_SECRET=
GITHUB_CALLBACK_URLstringURL callback untuk autentikasi GitHub.GITHUB_CALLBACK_URL=/oauth/github/callback
GITHUB_ENTERPRISE_BASE_URLstringOpsional: URL dasar untuk instans GitHub Enterprise Anda.GITHUB_ENTERPRISE_BASE_URL=
GITHUB_ENTERPRISE_USER_AGENTstringOpsional: User agent untuk permintaan GitHub Enterprise.GITHUB_ENTERPRISE_USER_AGENT=

Autentikasi Google

Untuk informasi lebih lanjut: Google Authentication

KeyTypeDescriptionExample
GOOGLE_CLIENT_IDstringID klien Google Anda.GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRETstringClient secret Google Anda.GOOGLE_CLIENT_SECRET=
GOOGLE_CALLBACK_URLstringURL callback untuk autentikasi Google.GOOGLE_CALLBACK_URL=/oauth/google/callback

OpenID Connect

Untuk informasi lebih lanjut:

KeyTypeDescriptionExample
OPENID_CLIENT_IDstringID klien OpenID Anda.OPENID_CLIENT_ID=
OPENID_CLIENT_SECRETstringClient secret OpenID Anda.OPENID_CLIENT_SECRET=
OPENID_ISSUERstringURL penerbit OpenID.OPENID_ISSUER=
OPENID_SESSION_SECRETstringRahasia untuk penyimpanan sesi OpenID.OPENID_SESSION_SECRET=
OPENID_SCOPEstringCakupan OpenID.OPENID_SCOPE="openid profile email"
OPENID_CALLBACK_URLstringURL callback untuk autentikasi OpenID.OPENID_CALLBACK_URL=/oauth/openid/callback
OPENID_AUDIENCEstringNilai 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_ROLEstringPeran 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_KINDstringJenis token untuk validasi peran yang diperlukan.OPENID_REQUIRED_ROLE_TOKEN_KIND=
OPENID_REQUIRED_ROLE_PARAMETER_PATHstringJalur parameter untuk validasi peran yang diperlukan.OPENID_REQUIRED_ROLE_PARAMETER_PATH=
OPENID_ADMIN_ROLEstringPeran yang harus dimiliki pengguna agar menjadi admin di LibreChat.OPENID_ADMIN_ROLE=
OPENID_ADMIN_ROLE_TOKEN_KINDstringSumber informasi untuk verifikasi peran admin. Nilai yang mungkin adalah: access, id atau userinfo.OPENID_ADMIN_ROLE_TOKEN_KIND=
OPENID_ADMIN_ROLE_PARAMETER_PATHstringJalur parameter untuk validasi peran yang diperlukan.OPENID_ADMIN_ROLE_PARAMETER_PATH=
OPENID_ROLE_SYNC_ENABLEDbooleanAktifkan 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_ENABLEDbooleanAktifkan helper sinkronisasi peran berbasis API. Memerlukan OPENID_ROLE_SYNC_ENABLED=true.OPENID_ROLE_SYNC_API_ENABLED=false
OPENID_ROLE_SYNC_SOURCEstringSumber token untuk klaim peran. Harus salah satu dari: access, id, userinfo. Default: id.OPENID_ROLE_SYNC_SOURCE=id
OPENID_ROLE_SYNC_CLAIMstringJalur klaim yang berisi peran atau grup penyedia. Diperlukan saat sinkronisasi peran diaktifkan.OPENID_ROLE_SYNC_CLAIM=
OPENID_ROLE_SYNC_ROLE_PRIORITYstringPeran 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_ROLEstringPeran LibreChat yang ditetapkan saat tidak ada peran prioritas yang cocok. Cadangan ini bersifat otoritatif jika dikonfigurasi.OPENID_ROLE_SYNC_FALLBACK_ROLE=USER
OPENID_BUTTON_LABELstringLabel untuk tombol login OpenID.OPENID_BUTTON_LABEL=
OPENID_IMAGE_URLstringURL gambar tombol login OpenID.OPENID_IMAGE_URL=
OPENID_USE_END_SESSION_ENDPOINTstringApakah akan menggunakan Issuer End Session Endpoint sebagai Pengalihan LogoutOPENID_USE_END_SESSION_ENDPOINT=TRUE
OPENID_MAX_LOGOUT_URL_LENGTHnumberPanjang URL logout maksimum sebelum menggunakan logout_hint alih-alih id_token_hint. Default: 2000.# OPENID_MAX_LOGOUT_URL_LENGTH=2000
OPENID_AUTO_REDIRECTbooleanApakah akan mengalihkan secara otomatis ke penyedia OpenID.OPENID_AUTO_REDIRECT=true
OPENID_USE_PKCEbooleanGunakan 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_URIstringURI pengalihan setelah logout OpenID. Defaultnya adalah ${DOMAIN_CLIENT}/login.# OPENID_POST_LOGOUT_REDIRECT_URI=
OPENID_CLOCK_TOLERANCEnumberToleransi waktu dalam detik untuk validasi token. Default: 300.# OPENID_CLOCK_TOLERANCE=300
OPENID_GENERATE_NONCEbooleanPaksa 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_REQUESTSbooleanAktifkan 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_CLAIMstringProperti info pengguna dari penyedia OpenID untuk disimpan sebagai nama pengguna.OPENID_USERNAME_CLAIM=
OPENID_NAME_CLAIMstringProperti info pengguna dari penyedia OpenID untuk disimpan sebagai nama tampilan pengguna.OPENID_NAME_CLAIM=
OPENID_EMAIL_CLAIMstringKlaim 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.

KeyTypeDescriptionExample
OPENID_REUSE_TOKENSbooleanAktifkan penggunaan kembali token penyedia OpenID untuk manajemen sesi.OPENID_REUSE_TOKENS=false
OPENID_SCOPEstringDaftar 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_AUDIENCEstringNilai 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_MSnumberUsia 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_ENABLEDbooleanAktifkan caching hasil verifikasi kunci penandatanganan.OPENID_JWKS_URL_CACHE_ENABLED=true
OPENID_JWKS_URL_CACHE_TIMEnumberDurasi cache dalam milidetik (default: 600000 ms / 10 menit).OPENID_JWKS_URL_CACHE_TIME=600000
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIREDbooleanAktifkan alur on-behalf-of untuk info pengguna.OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
OPENID_ON_BEHALF_FLOW_USERINFO_SCOPEstringCakupan untuk info pengguna dalam alur on-behalf-of.OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read
OPENID_USE_END_SESSION_ENDPOINTbooleanAktifkan penggunaan endpoint end session untuk logout.OPENID_USE_END_SESSION_ENDPOINT=true
OPENID_MAX_LOGOUT_URL_LENGTHnumberPanjang 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.

KeyTypeDescriptionExample
USE_ENTRA_ID_FOR_PEOPLE_SEARCHbooleanAktifkan 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_MEMBERSbooleanSaat diaktifkan, pemilik grup Entra ID akan dianggap sebagai anggota grup tersebut.ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=false
OPENID_GRAPH_SCOPESstringCakupan 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.

KeyTypeDescriptionExample
ENABLE_SHAREPOINT_FILEPICKERbooleanAktifkan 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_URLstringURL dasar tenant SharePoint. Diperlukan saat integrasi SharePoint diaktifkan.SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com
SHAREPOINT_PICKER_SHAREPOINT_SCOPEstringCakupan 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_SCOPEstringCakupan 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=true wajib digunakan (menggunakan alur token on-behalf-of)
  • OPENID_SCOPE harus menyertakan scope API aplikasi LibreChat Anda, sebagai contoh api://<client-id>/access_as_user
  • OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true diperlukan 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.

KeyTypeDescriptionExample
SAML_ENTRY_POINTstringURL titik masuk penyedia identitas (IdP) SAML.SAML_ENTRY_POINT=
SAML_ISSUERstringID entitas penyedia layanan (SP) SAML.SAML_ISSUER=
SAML_CERTstringSertifikat penandatanganan SAML, disediakan sebagai jalur file atau string PEM satu baris.SAML_CERT=
SAML_CALLBACK_URLstringURL callback untuk autentikasi SAML.SAML_CALLBACK_URL=/oauth/saml/callback
SAML_SESSION_SECRETstringRahasia untuk penyimpanan sesi SAML.SAML_SESSION_SECRET=
SAML_EMAIL_CLAIMstring<Optional>: Atribut dalam pernyataan SAML yang berisi email pengguna. (default: email)SAML_EMAIL_CLAIM=
SAML_USERNAME_CLAIMstring<Optional>: Atribut dalam pernyataan SAML yang berisi nama pengguna. (default: username)SAML_USERNAME_CLAIM=
SAML_GIVEN_NAME_CLAIMstring<Optional>: Atribut dalam pernyataan SAML yang berisi nama depan. (default: given_name)SAML_GIVEN_NAME_CLAIM=
SAML_FAMILY_NAME_CLAIMstring<Optional>: Atribut dalam pernyataan SAML yang berisi nama keluarga. (default: family_name)SAML_FAMILY_NAME_CLAIM=
SAML_PICTURE_CLAIMstring<Optional>: Atribut dalam pernyataan SAML yang berisi URL gambar profil. (default: picture)SAML_PICTURE_CLAIM=
SAML_NAME_CLAIMstring<Optional>: Atribut dalam pernyataan SAML yang berisi nama lengkap.SAML_NAME_CLAIM=
SAML_BUTTON_LABELstring<Optional>: Label untuk tombol login SAML.SAML_BUTTON_LABEL=
SAML_IMAGE_URLstring<Optional>: URL gambar tombol login SAML.SAML_IMAGE_URL=
SAML_USE_AUTHN_RESPONSE_SIGNEDboolean<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

KeyTypeDescriptionExample
LDAP_URLstringURL server LDAP.LDAP_URL=ldap://localhost:389
LDAP_BIND_DNstringDN PengikatanLDAP_BIND_DN=cn=root
LDAP_BIND_CREDENTIALSstringKata sandi untuk bindDNLDAP_BIND_CREDENTIALS=password
LDAP_USER_SEARCH_BASEstringBasis pencarian pengguna LDAPLDAP_USER_SEARCH_BASE=o=users,o=example.com
LDAP_SEARCH_FILTERstringFilter pencarian LDAPLDAP_SEARCH_FILTER=mail={{username}}
LDAP_CA_CERT_PATHstringJalur sertifikat CA.LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt
LDAP_TLS_REJECT_UNAUTHORIZEDstringVerifikasi TLS LDAPLDAP_TLS_REJECT_UNAUTHORIZED=true
LDAP_STARTTLSstringAktifkan LDAP StartTLS untuk meningkatkan koneksi ke TLS. Atur ke true untuk mengaktifkan fitur ini.LDAP_STARTTLS=true
LDAP_LOGIN_USES_USERNAMEbooleanGunakan nama pengguna alih-alih email untuk login LDAP.# LDAP_LOGIN_USES_USERNAME=true
LDAP_IDstringAtribut LDAP untuk ID pengguna unik. Default: uid atau sAMAccountName, mail.# LDAP_ID=uid
LDAP_USERNAMEstringAtribut LDAP untuk nama pengguna. Default: givenName atau mail.# LDAP_USERNAME=givenName
LDAP_EMAILstringAtribut LDAP untuk email. Default: mail.# LDAP_EMAIL=userPrincipalName
LDAP_FULL_NAMEstringAtribut 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!

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.

KeyTypeDescriptionExample
MAILGUN_API_KEYstringKunci API Mailgun Anda (diperlukan untuk Mailgun).MAILGUN_API_KEY=
MAILGUN_DOMAINstringDomain Mailgun Anda (diperlukan untuk Mailgun).MAILGUN_DOMAIN=mg.yourdomain.com
MAILGUN_HOSTstringHost API Mailgun kustom (opsional). Gunakan https://api.eu.mailgun.net untuk wilayah UE.MAILGUN_HOST=https://api.mailgun.net
EMAIL_FROMstringAlamat email pengirim. Wajib diisi.[email protected]
EMAIL_FROM_NAMEstringNama 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

KeyTypeDescriptionExample
EMAIL_SERVICEstringLayanan email (contoh: Gmail, Outlook).EMAIL_SERVICE=
EMAIL_HOSTstringHost server email.EMAIL_HOST=
EMAIL_PORTnumberPort server email.EMAIL_PORT=25
EMAIL_ENCRYPTIONstringMetode enkripsi (starttls, tls, dll.).EMAIL_ENCRYPTION=
EMAIL_ENCRYPTION_HOSTNAMEstringHostname untuk enkripsi.EMAIL_ENCRYPTION_HOSTNAME=
EMAIL_ALLOW_SELFSIGNEDbooleanIzinkan sertifikat yang ditandatangani sendiri (self-signed).EMAIL_ALLOW_SELFSIGNED=
EMAIL_USERNAMEstringNama pengguna untuk autentikasi.EMAIL_USERNAME=
EMAIL_PASSWORDstringKata sandi untuk autentikasi.EMAIL_PASSWORD=
EMAIL_FROM_NAMEstringDari nama.EMAIL_FROM_NAME=
EMAIL_FROMstringAlamat email pengirim. Wajib diisi.[email protected]

Firebase CDN

Lihat: Konfigurasi CDN Firebase

Penting

  • Jika Anda menggunakan Firebase sebagai strategi penyimpanan file Anda, atur fileStrategy atau fileStrategies ke firebase di dalam file konfigurasi librechat.yaml Anda. Untuk informasi lebih lanjut mengenai konfigurasi file librechat.yaml, silakan merujuk ke Panduan Konfigurasi YAML: Custom Endpoints & Configuration
KeyTypeDescriptionExample
FIREBASE_API_KEYstringKunci API untuk proyek Firebase Anda.FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAINstringDomain Firebase Auth untuk proyek Anda.FIREBASE_AUTH_DOMAIN=
FIREBASE_PROJECT_IDstringID proyek Firebase Anda.FIREBASE_PROJECT_ID=
FIREBASE_STORAGE_BUCKETstringBucket Firebase Storage untuk proyek Anda.FIREBASE_STORAGE_BUCKET=
FIREBASE_MESSAGING_SENDER_IDstringID pengirim Firebase Cloud Messaging.FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_APP_IDstringID 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.

KeyTypeDescriptionExample
AWS_ACCESS_KEY_IDstringID kunci akses pengguna IAM Anda. Opsional jika menggunakan IRSA.AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEYstringKunci akses rahasia pengguna IAM Anda. Opsional jika menggunakan IRSA.AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_REGIONstringWilayah AWS tempat bucket S3 Anda berada.AWS_REGION=us-east-1
AWS_BUCKET_NAMEstringNama bucket S3 untuk penyimpanan file.AWS_BUCKET_NAME=your_bucket_name
AWS_ENDPOINT_URLstringURL 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_STYLEbooleanAtur 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_IDstringID pasangan kunci publik CloudFront. Diperlukan untuk cookie bertanda tangan dan URL unduhan CloudFront bertanda tangan.# CLOUDFRONT_KEY_PAIR_ID=K1234567890ABC
CLOUDFRONT_PRIVATE_KEYstringKunci 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_REGION dan AWS_BUCKET_NAME yang 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.

KeyTypeDescriptionExample
AZURE_STORAGE_CONNECTION_STRINGstringConnection string Azure Blob Storage. Gunakan ini ATAU AZURE_STORAGE_ACCOUNT_NAME untuk Managed Identity.AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...
AZURE_STORAGE_ACCOUNT_NAMEstringNama akun Azure Storage. Gunakan untuk autentikasi Managed Identity (jangan atur connection string).# AZURE_STORAGE_ACCOUNT_NAME=yourAccountName
AZURE_STORAGE_PUBLIC_ACCESSbooleanAktifkan akses publik untuk blob. Default: false.AZURE_STORAGE_PUBLIC_ACCESS=false
AZURE_CONTAINER_NAMEstringNama kontainer untuk penyimpanan file. Default: files.AZURE_CONTAINER_NAME=files

Catatan: Gunakan salah satu dari AZURE_STORAGE_CONNECTION_STRING (Opsi A) atau AZURE_STORAGE_ACCOUNT_NAME dengan Managed Identity (Opsi B), jangan keduanya.

UI

Tombol Bantuan dan FAQ

KeyTypeDescriptionExample
HELP_AND_FAQ_URLstringURL 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_AGE untuk mengubah max-age bagi file statis. Secara default, ini diatur ke 4 minggu.
  • Hapus tanda komentar pada STATIC_CACHE_S_MAX_AGE untuk mengubah s-maxage bagi file statis. Secara default, ini diatur ke 1 minggu.
    • Ini ditujukan untuk shared cache, yang digunakan oleh CDN dan proksi.
KeyTypeDescriptionExample
APP_TITLEstringJudul aplikasi.APP_TITLE=LibreChat
CUSTOM_FOOTERstringCatatan kaki kustom.# CUSTOM_FOOTER="My custom footer"
TEMP_CHAT_RETENTION_HOURSnumber**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_FOOTER untuk menambahkan catatan kaki kustom.
  • Hapus tanda komentar dan biarkan CUSTOM_FOOTER kosong 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

KeyTypeDescriptionExample
SHOW_BIRTHDAY_ICONbooleanTampilkan 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_ICON ke false untuk menonaktifkan ikon topi ulang tahun.
  • Atur SHOW_BIRTHDAY_ICON ke true untuk 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

KeyTypeDescriptionExample
ANALYTICS_GTM_IDstringID Google Tag Manager.ANALYTICS_GTM_ID=

Impor Percakapan

Konfigurasikan batas untuk impor file percakapan guna mencegah masalah memori.

KeyTypeDescriptionExample
CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTESnumberUkuran 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.

KeyTypeDescriptionExample
FILE_PREVIEW_MAX_EXTRACT_BYTESnumberUkuran 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

KeyTypeDescriptionExample
MCP_OAUTH_ON_AUTH_ERRORbooleanAnggap respons 401/403 sebagai persyaratan OAuth jika tidak ada metadata oauth yang ditemukan.MCP_OAUTH_ON_AUTH_ERROR=true
MCP_OAUTH_DETECTION_TIMEOUTnumberBatas waktu untuk permintaan deteksi OAuth dalam milidetik.MCP_OAUTH_DETECTION_TIMEOUT=5000
MCP_OAUTH_HANDLING_TIMEOUTnumberBerapa lama LibreChat menunggu pengguna menyelesaikan alur OAuth MCP sebelum waktu habis. Default: 600000 ms (10 menit).MCP_OAUTH_HANDLING_TIMEOUT=600000
MCP_OAUTH_FLOW_TTLnumberBerapa 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_TTLnumberCache pemeriksaan status koneksi selama sekian milidetik untuk menghindari verifikasi yang memakan banyak sumber daya.MCP_CONNECTION_CHECK_TTL=30000
MCP_TOOLS_LIST_MAX_PAGESnumberJumlah 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_CHECKbooleanLewati validasi metode tantangan kode. Jika diatur ke true, memaksa penggunaan tantangan kode S256 meskipun tidak diiklankan di .well-known/openid-configurationMCP_SKIP_CODE_CHALLENGE_CHECK=false
MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTESnumberJumlah 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_BYTESnumberJumlah 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

KeyTypeDescriptionExample
USE_REDISbooleanAktifkan Redis untuk caching dan penyimpanan sesi. Jika true, REDIS_URI harus disediakan.USE_REDIS=true
USE_REDIS_STREAMSbooleanAktifkan 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_URIstringURI 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_CLUSTERbooleanAktifkan mode klaster Redis saat menggunakan URI tunggal# USE_REDIS_CLUSTER="true"
REDIS_CLUSTER_SAFE_DELETEbooleanHapus 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_USERNAMEstringNama pengguna Redis untuk autentikasi. Menggantikan nama pengguna di URI jika keduanya disediakan.# REDIS_USERNAME=your_redis_username
REDIS_PASSWORDstringKata sandi Redis untuk autentikasi. Menggantikan kata sandi di URI jika keduanya disediakan.# REDIS_PASSWORD=your_redis_password
REDIS_CAstringJalur ke sertifikat CA untuk verifikasi TLS saat menggunakan protokol rediss://.# REDIS_CA=/path/to/ca-cert.pem
REDIS_KEY_PREFIXstringAwalan statis untuk semua kunci Redis guna mencegah kontaminasi lintas penyebaran.# REDIS_KEY_PREFIX=librechat-prod-v2
REDIS_KEY_PREFIX_VARstringNama 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_LISTENERSnumberJumlah maksimum event listener per klien Redis. Mencegah kebocoran memori. Default: 40.# REDIS_MAX_LISTENERS=40
REDIS_PING_INTERVALnumberInterval ping dalam detik untuk menjaga koneksi. Default: 0 (dinonaktifkan). Hanya atur jika mengalami timeout.# REDIS_PING_INTERVAL=300
FORCED_IN_MEMORY_CACHE_NAMESPACESstringKunci cache yang dipisahkan koma untuk memaksa penyimpanan dalam memori meskipun Redis diaktifkan.# FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES
REDIS_USE_ALTERNATIVE_DNS_LOOKUPbooleanAktifkan 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 menyediakan REDIS_URI atau 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=false dan atur REDIS_CLUSTER_SAFE_DELETE=true jika pembersihan cache gagal dengan error CROSSSLOT.
  • Gunakan protokol rediss:// untuk koneksi TLS dan atur REDIS_CA jika CA Anda tidak dipercaya secara publik.
  • REDIS_KEY_PREFIX_VAR dan REDIS_KEY_PREFIX bersifat eksklusif satu sama lain.
  • AWS Elasticache dengan TLS: Elasticache mungkin perlu menggunakan dnsLookup alternatif untuk koneksi TLS. Atur REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true jika 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.

KeyTypeDescriptionExample
LEADER_LEASE_DURATIONnumberDurasi dalam detik agar sewa leader tetap berlaku sebelum kedaluwarsa. Default: 25.LEADER_LEASE_DURATION=25
LEADER_RENEW_INTERVALnumberInterval dalam detik di mana leader memperbarui lease-nya. Default: 10.LEADER_RENEW_INTERVAL=10
LEADER_RENEW_ATTEMPTSnumberJumlah maksimum percobaan ulang saat pembaruan sewa gagal. Default: 3.LEADER_RENEW_ATTEMPTS=3
LEADER_RENEW_RETRY_DELAYnumberJeda 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?

Di halaman ini

Konfigurasi ServerPortTrust proxyKonfigurasi KredensialPenanganan File StatisKontrol Cache HTML IndexBasis Data MongoDBKonfigurasi Kumpulan Koneksi MongoDBKonfigurasi Skema MongoDBDomain AplikasiMencegah Mesin Pencari Publik Melakukan PengindeksanLoggingFile LogVariabel LingkunganIzinOpenTelemetry TracingReal User Monitoring (Browser)Jalur Konfigurasi - librechat.yamlKeterampilan DeploymentValidasi KonfigurasiPenanganan Pengecualian yang Tidak Tertangkap (Uncaught Exception Handling)EndpointsKonfigurasi UmumEndpoint yang Diketahui - librechat.yamlPencarian WebAnthropicAnthropic melalui Vertex AIAWS BedrockBingAIGooglePembuatan Gambar GeminiOpenAIAssistantsTavilyTraversaalWolframAlphaZapierOpenWeatherCode InterpreterArtifactsPencarian (Meilisearch)RAG APISpeech to Text & Text to SpeechTautan BersamaSistem PenggunaModerasiPengaturan Moderasi DasarPengaturan PemblokiranPembatasan laju login dan pendaftaranSkor untuk setiap pelanggaranPembatasan kecepatan pesan (per pengguna & IP)PembatasPembatas IP:Pembatas Pengguna:Pembatasan laju impor percakapanPembatas IP:Pembatas Pengguna:Pembatasan laju forking percakapanPembatas IP:Pembatas Pengguna:Pembatasan laju unggah filePembatas IP:Pembatas Pengguna:Pembatasan laju (rate limiting) TTS (Text-to-Speech)Pembatas IP:Pembatas Pengguna:Pembatasan laju (rate limiting) STT (Speech-to-Text)Pembatas IP:Pembatas Pengguna:SaldoMengelola SaldoPendaftaran dan LoginLogin SosialAutentikasi AppleAutentikasi DiscordAutentikasi FacebookAutentikasi GitHubAutentikasi GoogleOpenID ConnectPenggunaan Kembali Token OpenID ConnectIntegrasi Microsoft Graph API / Entra IDIntegrasi SharePointSAMLAutentikasi LDAP/ADAtur Ulang Kata SandiKonfigurasi Mailgun (Direkomendasikan)Konfigurasi SMTPFirebase CDNAmazon S3 dan CloudFrontAzure Blob Storage CDNUITombol Bantuan dan FAQJudul Aplikasi dan FooterTopi Ulang TahunAnalitikGoogle Tag ManagerImpor PercakapanPratinjau File InlineMCP (Model Context Protocol)Konfigurasi Server MCPLainnyaRedisPemilihan Pemimpin (Leader Election)