環境変数
`.env` ファイルを使用してアプリケーションの環境を設定するための包括的なガイドです。このドキュメントは、さまざまなコンテキストでアプリケーションの動作を決定する環境変数を理解し、カスタマイズするためのワンストップリソースです。
.env ファイルを使用してアプリケーションの環境を設定するための包括的なガイドへようこそ。このドキュメントは、さまざまなコンテキストでアプリケーションの動作を決定する環境変数を理解し、カスタマイズするためのワンストップリソースです。
デフォルトの設定でも標準的な docker インストールには十分な基盤が提供されていますが、このガイドを読み進めることで LibreChat の可能性を最大限に引き出すことができます。このガイドでは、LibreChat をお客様のニーズに合わせてカスタマイズする方法を解説します。言語モデルの利用設定の調整、ソーシャルログインの統合、自動モデレーションシステムの管理など、さまざまな機能をご覧ください。LibreChat を微調整して最適なユーザーエクスペリエンスを実現するためのコントロールを、すべてお客様の手元に提供します。
注意: 設定変更を反映させるには、LibreChatを再起動してください
あるいは、LibreChatのメインの docker-compose.yml ファイルと同じディレクトリに docker-compose.override.yml という名前の新しいファイルを作成することもできます。このファイルでは、environment の下で必要に応じて .env 変数を設定したり、メインの docker-compose.yml で提供されているデフォルト設定を変更したりすることができ、ファイル全体を直接編集したり複製したりする必要はありません。
詳細については、以下を参照してください:
-
クイックガイド:
-
公式のDockerドキュメント:
-
LibreChat フォルダー内および GitHub 上で、LibreChat のオーバーライドファイルの例を確認することもできます:
サーバー設定
ポート
- サーバーは特定のポートでリッスンします。
PORT環境変数は、サーバーがリッスンするポートを設定します。デフォルトでは3080に設定されています。
| Key | Type | Description | Example |
|---|---|---|---|
| HOST | string | ホストを指定します。 | HOST=localhost |
| PORT | number | ポートを指定します。 | PORT=3080 |
Trust proxy
Expressアプリケーションから最大でnホップ離れたアドレスを使用します。
req.socket.remoteAddress が最初のホップとなり、残りは X-Forwarded-For ヘッダーを右から左へ順に検索します。
値が 0 の場合、最初の信頼できないアドレスが req.socket.remoteAddress であることを意味します。つまり、リバースプロキシが存在しない状態です。
TRUST_PROXY 環境変数のデフォルト値は 1 に設定されています。
これに関する詳細については、Express.js - trust proxy を参照してください。
| Key | Type | Description | Example |
|---|---|---|---|
| TRUST_PROXY | number | ホップ数を指定します。 | TRUST_PROXY=1 |
認証情報の構成
資格情報を安全に保存するには、固定のキーとIVが必要です。これらは、prodおよびdev環境向けにここで設定できます。
| Key | Type | Description | Example |
|---|---|---|---|
| CREDS_KEY | string | 認証情報を安全に保存するための32バイトのキー(16進数で64文字)。アプリの起動に必須です。 | CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0 |
| CREDS_IV | string | 認証情報を安全に保存するための16バイトのIV(16進数で32文字)。アプリの起動に必須です。 | CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb |
警告
警告: CREDS_KEY と CREDS_IV を設定しない場合、アプリは起動時にクラッシュします。 - こちらの Key Generator を使用すると、これらを素早く生成できます。
静的ファイルの処理
| Key | Type | Description | Example |
|---|---|---|---|
| STATIC_CACHE_MAX_AGE | string | Cache-Control max-age(秒単位) | STATIC_CACHE_MAX_AGE=172800 |
| STATIC_CACHE_S_MAX_AGE | string | 共有キャッシュ(CDNやプロキシ)向けのCache-Control s-maxage(秒単位) | STATIC_CACHE_S_MAX_AGE="86400" |
| DISABLE_COMPRESSION | boolean | 静的ファイルの圧縮を無効にします。 | DISABLE_COMPRESSION=false |
| ENABLE_IMAGE_OUTPUT_GZIP_SCAN | boolean | 同じフォルダー内に存在する場合、アップロードされた画像のgzippedバージョンを配信できるようにします。 | ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true |
| ENABLE_STATIC_ASSET_BROTLI | boolean | 利用可能な場合に、静的アプリ資産の事前圧縮されたBrotliバージョンを提供できるようにします。 | ENABLE_STATIC_ASSET_BROTLI=true |
動作:
静的ファイルに対する Cache-Control ヘッダーを設定します。これらの設定は、NODE_ENV が production に設定されている場合にのみ有効になります。
STATIC_CACHE_MAX_AGEのコメントアウトを解除すると、静的ファイルのローカルmax-ageを変更できます。デフォルトでは2日(172800秒)に設定されています。STATIC_CACHE_S_MAX_AGEのコメントアウトを解除して、共有キャッシュ(CDNやプロキシ)のs-maxageを設定します。デフォルトでは1日(86400秒)に設定されています。DISABLE_COMPRESSIONのコメントアウトを解除すると、静的ファイルの圧縮が無効になります。デフォルトでは、圧縮は有効になっています。- Uncomment
ENABLE_IMAGE_OUTPUT_GZIP_SCANto enable scanning and serving of gzipped version of images if they have been pre-compressed in the same folder, with the same name and a .gz extension. By default, gzip scan for uploaded images is disabled. ENABLE_STATIC_ASSET_BROTLIのコメントアウトを解除すると、静的アプリ資産の事前圧縮された.brバージョンが存在する場合にそれが提供されます。有効にすると、API経由で提供される静的ファイルに対して、gzipよりもBrotliが優先されます。
警告
- これはAPIサーバーによって提供される静的ファイルにのみ影響し、Firebase、NGINX、またはその他の構成には適用されません。
Index HTML キャッシュ制御
| Key | Type | Description | Example |
|---|---|---|---|
| INDEX_CACHE_CONTROL | string | index.html の Cache-Control ヘッダー | INDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate |
| INDEX_PRAGMA | string | index.html 用の Pragma ヘッダー | INDEX_PRAGMA=no-cache |
| INDEX_EXPIRES | string | index.html の Expires ヘッダー | INDEX_EXPIRES=0 |
動作:
index.html レスポンスのキャッシュヘッダーを制御します。デフォルトでは、ユーザーが常に最新バージョンのアプリケーションを取得できるように、これらの設定はキャッシュを無効化します。
注記
パフォーマンスのためにキャッシュされる静的アセットとは異なり、index.htmlファイルのキャッシュヘッダーは、ユーザーが常に最新のアプリケーションシェルを取得できるように個別に設定されています。
MongoDB データベース
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_URI | string | MongoDB URIを指定します。 | MONGO_URI=mongodb://127.0.0.1:27017/LibreChat |
これが異なる場合は、ご自身のMongoDB URIに変更してください。URI内のデータベース名として LibreChat または独自の APP_TITLE を追加する必要があります。
オンラインデータベースを使用している場合、URIの形式は mongodb+srv://<username>:<password>@<host>/<database>?<options> です。MONGO_URI は以下のようになります:
mongodb+srv://username:[email protected]/LibreChat?retryWrites=true(retryWritesはオンラインデータベースを使用する際に必要な唯一のオプションです。)
MongoDB接続プールの設定
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_MAX_POOL_SIZE | number | コネクションプール内の最大接続数。 | # MONGO_MAX_POOL_SIZE= |
| MONGO_MIN_POOL_SIZE | number | コネクションプール内の最小接続数。 | # MONGO_MIN_POOL_SIZE= |
| MONGO_MAX_CONNECTING | number | 接続プールによって同時に確立される可能性のある接続の最大数。 | # MONGO_MAX_CONNECTING= |
| MONGO_MAX_IDLE_TIME_MS | number | 接続がプール内でアイドル状態を維持できる最大ミリ秒数(これを超えると削除およびクローズされます)。 | # MONGO_MAX_IDLE_TIME_MS= |
| MONGO_WAIT_QUEUE_TIMEOUT_MS | number | スレッドが接続可能になるまで待機できる最大時間(ミリ秒単位)。 | # MONGO_WAIT_QUEUE_TIMEOUT_MS= |
MongoDB スキーマ設定
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_AUTO_INDEX | boolean | falseに設定すると、この接続に関連付けられたすべてのモデルの自動インデックス作成が無効になります。省略した場合、Mongooseのデフォルトの動作が使用されます。 | # MONGO_AUTO_INDEX= |
| MONGO_AUTO_CREATE | boolean | falseに設定すると、この接続で作成されるすべてのモデルに対してMongooseが自動的にcreateCollection()を呼び出す機能を無効にします。省略した場合、Mongooseのデフォルトの動作が使用されます。 | # MONGO_AUTO_CREATE= |
あるいは、mongoDbをエミュレートするdocumentDbを使用することもできますが、それには以下の点があります:
retryWritesはサポートされていません -retryWrites=falseを使用してください- TLS接続が必要です。そのため、
tls=trueパラメータを使用してTLSを有効にし、tlsCAFile=/path-to-ca/bundle.pemを使用してAWSが提供するCAバンドルファイルを指定してください。
documentDb の URI は以下のようになります:
mongodb+srv://username:password@domain/dbname?retryWrites=false&tls=true&tlsCAFile=/path-to-ca/bundle.pem
参照:
- MongoDB Atlas(Dockerを使用せずに利用する場合に便利な、オンラインのMongoDB Atlasデータベースを作成する手順についてはこちら)
- MongoDB Community Server(Dockerを使用せずにローカルのMongoDBデータベースを作成する方法についてはこちらを参照)
- MongoDB Authentication DockerでMongoDBの明示的な認証を有効にするため。
- Mongo Expressでデータベースを管理する(Docker上のMongoDBデータベースに安全にアクセスするため)
アプリケーションドメイン
LibreChatをローカル環境またはカスタムドメインでデプロイするように設定するには、以下の環境変数を設定してください:
| Key | Type | Description | Example |
|---|---|---|---|
| DOMAIN_CLIENT | string | クライアント側のドメインを指定します。 | DOMAIN_CLIENT=http://localhost:3080 |
| DOMAIN_SERVER | string | サーバーサイドのドメインを指定します。 | DOMAIN_SERVER=http://localhost:3080 |
| ADMIN_PANEL_URL | string | 管理パネルが別途ホストされている場合の管理用OAuth/SSOリダイレクトに使用される、外部管理パネルのベースURL。末尾にスラッシュを含めないでください。 | ADMIN_PANEL_URL=https://admin.example.com/admin |
| ADMIN_PANEL_SESSION_SECRET | string | バンドルされている管理パネルに必要なセッション暗号化キー(最小32文字)。docker-composeおよびdeploy-composeのadmin-panelサービスは、これをSESSION_SECRETとして読み取ります。スタックを起動する前に `openssl rand -hex 32` で生成してください。 | ADMIN_PANEL_SESSION_SECRET=<your-32-char-random-string> |
| ADMIN_PANEL_PORT | number | デフォルトのDocker Composeにおけるバンドルされた管理パネルのホストポート。deploy-composeでは、代わりにnginx経由で http://admin.localhost にてパネルが提供されます。 | ADMIN_PANEL_PORT=3000 |
LibreChatをカスタムドメインにデプロイする際は、http://localhost:3080 をデプロイ先のURLに置き換えてください。
- 例:
https://librechat.example.com
公開検索エンジンによるインデックス作成の防止
デフォルトでは、あなたのウェブサイトは公開検索エンジン(Google、Bingなど)によってインデックスされません。つまり、これらの検索エンジンを通じてあなたのウェブサイトを見つけることはできません。ウェブサイトの可視性を高め、検索可能にしたい場合は、以下の設定を false に変更してください。
| Key | Type | Description | Example |
|---|---|---|---|
| NO_INDEX | boolean | 公開検索エンジンがウェブサイトをインデックスすることを防ぎます。 | NO_INDEX=true |
❗注: この方法はすべての検索エンジンで機能することが保証されているわけではなく、一部の検索エンジンはキャッシュやアーカイブなど、他の目的でウェブサイトやウェブページをインデックスする可能性があります。したがって、ウェブサイトやウェブページ上の機密情報や極秘情報を保護するために、この方法だけに頼るべきではありません。
ログ出力
LibreChatには組み込みの中央ロギング機能があります。詳細については、Logging System を参照してください。
ログファイル
- デバッグログはデフォルトで有効になっており、開発において非常に重要です。
- 問題を報告するには、エラーを再現した上で
./api/logs/debug-%DATE%.logからログを取得し、LibreChat GitHub Issues に提出してください。 - エラーログも同じ場所に保存されます。
環境変数
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | デバッグログを有効に保つ。 | DEBUG_LOGGING=true |
| DEBUG_CONSOLE | boolean | ファイルデバッグログと同じ形式で、詳細なコンソール/stdoutログを有効にします。 | DEBUG_CONSOLE=false |
| LOG_TO_FILE | boolean | falseに設定すると、コンソールログを有効にしたまま、ファイルベースのWinstonトランスポートを無効にできます。 | LOG_TO_FILE=true |
| CONSOLE_JSON | boolean | GCPやAWSなどのクラウドデプロイに適した、詳細なJSON形式のコンソール/stdoutログを有効にします。 | CONSOLE_JSON=false |
| CONSOLE_JSON_STRING_LENGTH | number | JSONコンソール/stdoutログ内の文字列値の切り捨てサイズを設定します。デフォルト: 255。 | # CONSOLE_JSON_STRING_LENGTH=255 |
| LIBRECHAT_LOG_DIR | string | ログファイルのカスタムディレクトリ。デフォルトは /app/logs (Docker) または api/logs (ローカル開発) です。 | # LIBRECHAT_LOG_DIR=/custom/log/path |
| MEM_DIAG | boolean | メモリ診断を有効にする — 60秒ごとにヒープ/RSSスナップショットをログに記録します。--inspectで実行すると自動的に有効になります。 | # MEM_DIAG=true |
| AGENT_DEBUG_LOGGING | boolean | エージェントコントローラーでの詳細なデバッグログ(トークン数、コンテキスト剪定の診断など)を有効にします。 | # AGENT_DEBUG_LOGGING=true |
注:
DEBUG_LOGGINGはDEBUG_CONSOLEまたはCONSOLE_JSONのいずれかと併用できますが、両方を同時に使用することはできません。DEBUG_CONSOLEとCONSOLE_JSONは相互排他的です。CONSOLE_JSON: クラウド環境(GCPやAWSなど)でコンソールログを扱う際、これを有効にするとログがUTCタイムスタンプ付きのJSON形式で出力されます。
注: DEBUG_CONSOLE は出力が非常に冗長になる可能性があるため、推奨されません。そのため、デフォルトでは無効になっています。
権限
UIDとGIDは、システム上の各ユーザーとグループに割り当てられるLinuxの番号です。権限の問題が発生した場合は、Docker Composeコマンドを実行しているユーザーのUIDとGIDをここに設定してください。コンテナ内のアプリケーションは、これらのUID/GIDで実行されます。
| Key | Type | Description | Example |
|---|---|---|---|
| UID | number | ユーザーID。 | # UID=1000 |
| GID | number | グループID。 | # GID=1000 |
OpenTelemetry Tracing
LibreChatは、一般的なAPI、HTTP、MongoDB、Mongoose、Redis、およびアウトバウンドリクエストの可視化のために、バックエンドのOpenTelemetryトレースを出力できます。Redisコマンドレベルのスパンはオプトイン形式であるため、デフォルトのトレースは高レベルに保たれます。GenAI固有のプロンプトやモデルの可観測性については、Langfuseを使用してください。
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | バックエンドのOpenTelemetryトレースを有効にします。OTEL_SDK_DISABLED=trueの場合、トレースは無効のままとなります。 | # OTEL_TRACING_ENABLED=false |
| OTEL_SERVICE_NAME | string | OpenTelemetryに報告されるサービス名。デフォルト: librechat。 | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | OpenTelemetryに報告されるサービスバージョン。設定されていない場合はパッケージバージョンがデフォルトとなります。 | # OTEL_SERVICE_VERSION= |
| OTEL_EXPORTER_OTLP_ENDPOINT | string | ベース OTLP エクスポーター endpoint | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | トレース固有のOTLP endpoint。設定されている場合、トレースのベースendpointを上書きします。 | # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT= |
| OTEL_EXPORTER_OTLP_HEADERS | string | カンマ区切りのOTLPエクスポーターヘッダー(authorizationメタデータなど)。 | # OTEL_EXPORTER_OTLP_HEADERS= |
| OTEL_TRACES_EXPORTER | string | トレースエクスポーターの選択 | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | OpenTelemetry トレースサンプラー。デフォルトの例: parentbased_always_on。 | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | OpenTelemetry SDKのログレベル。 | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | トレーシングが有効な場合でも、OpenTelemetry SDKを無効にします。 | # OTEL_SDK_DISABLED=false |
| OTEL_IOREDIS_TRACING_ENABLED | boolean | Redisコマンドレベルのスパンを有効にします。バックエンドのトレースをハイレベルに保つため、デフォルトでは無効になっています。 | # OTEL_IOREDIS_TRACING_ENABLED=false |
リアルユーザーモニタリング (ブラウザ)
LibreChatは、ブラウザのReal User Monitoring (RUM) テレメトリをHyperDX互換のOTLPコレクターに公開できます。RUMはデフォルトで無効になっています。
| Key | Type | Description | Example |
|---|---|---|---|
| RUM_ENABLED | boolean | ブラウザのReal User Monitoringを有効にします。デフォルト: false。 | # RUM_ENABLED=false |
| RUM_PROVIDER | string | ブラウザRUMプロバイダー。現在は `hyperdx` をサポートしています。 | # RUM_PROVIDER=hyperdx |
| RUM_URL | string | public-tokenモードで使用されるパブリックコレクターURL。 | # RUM_URL=http://localhost:4318 |
| RUM_SERVICE_NAME | string | ブラウザSDKによって報告されるサービス名。デフォルト: librechat-web。 | # RUM_SERVICE_NAME=librechat-web |
| RUM_ENVIRONMENT | string | ブラウザのテレメトリで報告される環境ラベル。 | # RUM_ENVIRONMENT=development |
| RUM_AUTH_MODE | string | ブラウザテレメトリの認証モード。`publicToken` または `proxy` を使用します。 | # RUM_AUTH_MODE=publicToken |
| RUM_PUBLIC_TOKEN | string | public-tokenモード用のパブリックブラウザトークン。これを公開情報として扱い、コレクター側で取り込みを制限してください。 | # RUM_PUBLIC_TOKEN= |
| RUM_PROXY_TARGET_URL | string | 認証済みプロキシモードで使用されるコレクターのベースURL。`RUM_AUTH_MODE=proxy` の場合に必須です。 | # RUM_PROXY_TARGET_URL=http://otel-collector:4318 |
| RUM_PROXY_TIMEOUT_MS | number | プロキシリクエストのタイムアウト(ミリ秒)。デフォルト: 10000。 | # RUM_PROXY_TIMEOUT_MS=10000 |
| RUM_TRACE_PROPAGATION_TARGETS | string | traceparentヘッダーを受け取るべき、カンマ区切りのファーストパーティHTTPSオリジンまたはURL。 | # RUM_TRACE_PROPAGATION_TARGETS=https://api.example.com |
| RUM_DISABLE_REPLAY | boolean | ブラウザのセッションリプレイを無効にします。デフォルト: true。 | # RUM_DISABLE_REPLAY=true |
| RUM_CONSOLE_CAPTURE | boolean | ブラウザのコンソールログをキャプチャします。機密性の高いプロンプト、レスポンス、またはペイロードが収集される可能性があります。 | # RUM_CONSOLE_CAPTURE=false |
| RUM_ADVANCED_NETWORK_CAPTURE | boolean | 詳細なネットワークペイロードをキャプチャします。機密性の高いプロンプト、レスポンス、またはペイロードが収集される可能性があります。 | # RUM_ADVANCED_NETWORK_CAPTURE=false |
| RUM_SAMPLE_RATE | number | ブラウザテレメトリのサンプルレート(0から1)。デフォルト: 1。 | # RUM_SAMPLE_RATE=1 |
publicToken モードでは、ブラウザは RUM_PUBLIC_TOKEN を使用して RUM_URL に直接テレメトリを送信します。proxy モードでは、ブラウザは LibreChat を介してテレメトリを送信します。バックエンドはユーザーセッションを検証し、アプリの認証ヘッダーを除去した上で、テレメトリを RUM_PROXY_TARGET_URL に転送します。無効または期限切れのセッションは 204 レスポンスで破棄されるため、ブラウザのテレメトリ失敗が通常の API 認証エラーとして表面化することはありません。プロキシの結果は、LibreChat API の /metrics エンドポイントにおいて、endpoint および result ラベルが付いた rum_proxy_requests_total としてカウントされます。
設定パス - librechat.yaml
LibreChat設定ファイルの代替場所を指定します。
絶対パス、相対パス、またはURLを指定できます。パス内のファイル名は柔軟であり、librechat.yamlである必要はありません。有効な設定ファイルであればどれでも機能します。
Note: LibreChat がルートディレクトリで設定ファイルを検索するようにしたい場合(デフォルトの動作です)、このオプションはコメントアウトしたままにしてください。
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_PATH | string | LibreChat 設定ファイルの代替保存場所。 | # CONFIG_PATH=https://raw.githubusercontent.com/danny-avila/LibreChat/main/librechat.example.yaml |
デプロイのスキル
Deployment Skillsは、起動時にファイルシステムから読み取り専用で読み込まれ、Skills機能が有効になっているユーザーに対して公開されます。
| Key | Type | Description | Example |
|---|---|---|---|
| DEPLOYMENT_SKILLS_DIR | string | デプロイメントで提供されるスキルを含むディレクトリ。デフォルトはプロジェクトルートの `./skill` です。 | # DEPLOYMENT_SKILLS_DIR=./skill |
このディレクトリまたはその中のファイルを変更した後は、LibreChatを再起動してください。デプロイメントで提供されたSkillsは、同じ名前の永続化されたSkillsよりも優先されます。
設定の検証
デフォルトでは、librechat.yaml 設定ファイルに検証エラーが含まれている場合、LibreChat はエラー(終了コード 1)で終了します。このフェイルファスト(fail-fast)動作は、デプロイパイプラインの初期段階で設定の問題を検出し、意図しないデフォルト設定で実行されることを防ぐのに役立ちます。
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_BYPASS_VALIDATION | boolean | `true` に設定すると、`librechat.yaml` に検証エラーがある場合でも、サーバーは警告をログに記録し、デフォルト設定で起動を継続します。これは従来の動作を維持するものです。 | # CONFIG_BYPASS_VALIDATION=true |
警告
CONFIG_BYPASS_VALIDATION=true を本番環境で使用することは推奨されません。これは、設定の問題をデバッグする際の一時的な回避策として意図されています。設定ファイル内のバリデーションエラーは、必ず修正するようにしてください。
未キャッチ例外の処理
デフォルトでは、LibreChatは捕捉されない例外が発生するとプロセスを終了しますが、これはNode.jsの標準的な動作です。この動作を上書きして、捕捉されない例外が発生した後もアプリを継続して実行するように設定できます。
| Key | Type | Description | Example |
|---|---|---|---|
| CONTINUE_ON_UNCAUGHT_EXCEPTION | boolean | `true` に設定すると、アプリは捕捉されない例外が発生してもプロセスを終了せず、実行を継続します。 | # CONTINUE_ON_UNCAUGHT_EXCEPTION=false |
警告
必要な場合を除き、本番環境での使用は推奨されません。捕捉されない例外が発生した場合、アプリケーションが予期しない状態になる可能性があります。
Endpoints
このセクションでは、エンドポイントとモデルの選択、それらのAPIキー、およびそれをサポートするエンドポイントのプロキシとリバースプロキシ設定を構成できます。
一般設定
ENDPOINTS のコメントアウトを解除して、LibreChat で利用可能な endpoint をカスタマイズします。
| Key | Type | Description | Example |
|---|---|---|---|
| ENDPOINTS | string | 利用可能なendpointのカンマ区切りリスト。 | # ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom |
| PROXY | string | サポートされているサーバーサイドクライアント用の送信プロキシ。HTTPおよびHTTPSターゲットの両方に適用されます。 | PROXY= |
| HTTP_PROXY | string | PROXYが設定されていない場合に、サポートされているサーバーサイドクライアントによって使用されるHTTPプロキシフォールバック。 | # HTTP_PROXY= |
| HTTPS_PROXY | string | PROXYが設定されていない場合に、サポートされているサーバーサイドクライアントによって使用されるHTTPSプロキシフォールバック。 | # HTTPS_PROXY= |
| NO_PROXY | string | サポートされているサーバーサイドクライアントがバイパスすべきホスト、ドメイン、またはIP範囲をカンマ区切りで指定します。小文字の no_proxy も有効です。 | # NO_PROXY= |
| TITLE_CONVO | boolean | すべてのendpointでタイトル生成を有効にする。 | TITLE_CONVO=true |
既知の endpoint - librechat.yaml
| Key | Type | Description | Example |
|---|---|---|---|
| ANYSCALE_API_KEY | string | AnyscaleのAPIキー | # ANYSCALE_API_KEY= |
| APIPIE_API_KEY | string | ApipieのAPIキー | # APIPIE_API_KEY= |
| COHERE_API_KEY | string | CohereのAPIキー | # COHERE_API_KEY= |
| FIREWORKS_API_KEY | string | FireworksのAPIキー | # FIREWORKS_API_KEY= |
| GROQ_API_KEY | string | GroqのAPIキー | # GROQ_API_KEY= |
| MISTRAL_API_KEY | string | MistralのAPIキー | # MISTRAL_API_KEY= |
| OPENROUTER_KEY | string | OpenRouterのAPIキー | # OPENROUTER_KEY= |
| PERPLEXITY_API_KEY | string | PerplexityのAPIキー | # PERPLEXITY_API_KEY= |
| SHUTTLEAI_API_KEY | string | ShuttleAIのAPIキー | # SHUTTLEAI_API_KEY= |
| TOGETHERAI_API_KEY | string | TogetherAIのAPIキー | # TOGETHERAI_API_KEY= |
| DEEPSEEK_API_KEY | string | Deepseek APIのAPIキー | # DEEPSEEK_API_KEY= |
Web Search
Web検索機能により、LibreChat内でインターネット検索が可能になります。
重要: 以下に示されている環境変数名はデフォルトの参照値であり、librechat.yaml 設定ファイルを通じて、任意の変数名を使用するようにカスタマイズ可能です。
詳細な設定およびカスタマイズオプションについては、以下を参照してください:Web Search Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| SERPER_API_KEY | string | Serper検索プロバイダーのAPIキー。キーは https://serper.dev/api-keys から取得してください。 | # SERPER_API_KEY= |
| TAVILY_API_KEY | string | Tavily検索およびスクレイパープロバイダー用のAPIキー。https://app.tavily.com/home からキーを取得してください。 | # TAVILY_API_KEY= |
| TAVILY_SEARCH_URL | string | カスタムTavily Search API URL(オプション)。カスタムまたはプロキシのTavily互換検索エンドポイントを使用する場合にのみ必要です。 | # TAVILY_SEARCH_URL= |
| TAVILY_EXTRACT_URL | string | カスタムTavily Extract API URL(オプション)。カスタムまたはプロキシのTavily互換extractエンドポイントを使用する場合にのみ必要です。 | # TAVILY_EXTRACT_URL= |
| FIRECRAWL_API_KEY | string | FirecrawlスクレイパーサービスのAPIキー。キーは https://docs.firecrawl.dev/introduction#api-key から取得してください。 | # FIRECRAWL_API_KEY= |
| FIRECRAWL_API_URL | string | カスタム Firecrawl API URL(オプション)。カスタム Firecrawl インスタンスを使用する場合にのみ必要です。 | # FIRECRAWL_API_URL= |
| FIRECRAWL_VERSION | string | Firecrawl APIバージョン (v0 または v1)。 | # FIRECRAWL_VERSION=v1 |
| JINA_API_KEY | string | Jina rerankerサービスのAPIキー。https://jina.ai/api-dashboard/ からキーを取得してください。 | # JINA_API_KEY= |
| JINA_API_URL | string | カスタムJina API URL(オプション)。カスタムJinaインスタンスを使用する場合にのみ必要です。 | # JINA_API_URL= |
| COHERE_API_KEY | string | Cohere rerankerサービスのAPIキー。https://dashboard.cohere.com/welcome/login からキーを取得してください。 | # COHERE_API_KEY= |
注意: これらの変数名は librechat.yaml 設定ファイルでカスタマイズ可能です。例えば、ウェブ検索設定で設定することにより、SERPER_API_KEY の代わりに CUSTOM_SERPER_KEY を使用することができます。変数名のカスタマイズに関する詳細は、Web Search Configuration のドキュメントを参照してください。
Anthropic
- https://platform.claude.com/ からアクセスキーをリクエストできます。
ANTHROPIC_API_KEY=を空のままにすると、この endpoint は無効になります。ANTHROPIC_API_KEY=を "user_provided" に設定すると、ユーザーがWebUIから自身のAPIキーを入力できるようになります。Anthropicのリバースプロキシにアクセスできる場合は、ANTHROPIC_REVERSE_PROXY=で設定できます。- デフォルトのベースURLを使用する場合は、空白のままにするか、コメントアウトしてください。
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_API_KEY | string | Anthropic APIキー、またはユーザー自身がAPIキーを入力できるようにする場合は "user_provided" を指定します。 | Defaults to an empty string. |
| ANTHROPIC_MODELS | string | 使用するAnthropicモデルのカンマ区切りリスト。 | # ANTHROPIC_MODELS=claude-fable-5,claude-opus-4-8,claude-opus-4-7,claude-sonnet-4-6,claude-opus-4-6,claude-opus-4-20250514,claude-3-7-sonnet-20250219,claude-3-5-sonnet-20241022,claude-3-5-haiku-20241022 |
| ANTHROPIC_REVERSE_PROXY | string | Anthropic用リバースプロキシ | # ANTHROPIC_REVERSE_PROXY= |
| ANTHROPIC_TITLE_MODEL | string | 非推奨: Anthropicでタイトル生成に使用するモデル。 | # ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307 |
ANTHROPIC_TITLE_MODELは現在非推奨となっており、将来のバージョンで削除される予定です。代わりにlibrechat.yaml設定内のtitleModelエンドポイント設定 を使用してください。
注: Anthropic endpoint と互換性がある必要があります。また、Claude 2 および Claude 3 モデルがこのタスクに最適であり、
claude-3-haikuモデルが最も安価です。
Claude Fable 5は、デフォルトのAnthropicモデルリストに含まれています。Fable/Mythosクラスのモデルは、LibreChatにおける最新のAnthropicの動作(1Mのコンテキスト、適応型推論のサポート、プロンプトキャッシングのサポート、および要約または省略された推論出力に対するthinkingDisplayの処理)を使用します。
Vertex AI 経由の Anthropic
Google Cloud Vertex AI経由でAnthropic Claudeモデルを使用することもできます。YAML設定オプションの詳細については、以下を参照してください:Anthropic Vertex AI Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_USE_VERTEX | boolean | Anthropicモデルを直接のAPIではなくGoogle Vertex AI経由で使用する場合はtrueに設定します。 | ANTHROPIC_USE_VERTEX=true |
| ANTHROPIC_VERTEX_REGION | string | Vertex AIのGoogle Cloudリージョン。デフォルト: us-east5。 | ANTHROPIC_VERTEX_REGION=us-east5 |
注: Vertex AI を使用する場合は、
Vertex AI Userロールを持つサービスアカウントを使用してGOOGLE_SERVICE_KEY_FILE( Google Configuration を参照) も設定する必要があります。
AWS Bedrock
| Key | Type | Description | Example |
|---|---|---|---|
| BEDROCK_AWS_DEFAULT_REGION | string | BedrockにはデフォルトのAWSリージョンを指定する必要があります。 | BEDROCK_AWS_DEFAULT_REGION=us-east-1 |
| BEDROCK_AWS_ACCESS_KEY_ID | string | Bedrock用のAWSアクセスキーID。デフォルトのAWS認証情報チェーンを使用する場合は任意です。 | # BEDROCK_AWS_ACCESS_KEY_ID=your_access_key_id |
| BEDROCK_AWS_SECRET_ACCESS_KEY | string | Bedrock用のAWSシークレットアクセスキー。デフォルトのAWS認証情報チェーンを使用する場合は任意です。 | # BEDROCK_AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| BEDROCK_AWS_SESSION_TOKEN | string | 一時的な認証情報のためのAWSセッショントークン。オプション。 | # BEDROCK_AWS_SESSION_TOKEN=your_session_token |
| BEDROCK_AWS_PROFILE | string | Bedrock用のAWS共有設定プロファイル名。デフォルトのAWS認証情報チェーンを使用する場合は任意。 | # BEDROCK_AWS_PROFILE=your-profile-name |
| BEDROCK_AWS_BEARER_TOKEN | string | Bearer認証用のAmazon Bedrock APIキー、またはユーザーがUI上で独自のBedrock APIキーを入力できるようにする場合はuser_provided。 | # BEDROCK_AWS_BEARER_TOKEN=your_bedrock_api_key |
| BEDROCK_AWS_MODELS | string | BedrockモデルIDのカンマ区切りリスト。省略した場合は、サポートされている既知の全モデルが含まれます。 | # 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 |
注: アクセスキーを省略すると、デフォルトの AWS 認証情報チェーン(環境変数、SSO 認証情報、共有認証情報ファイル、または EC2/ECS インスタンスメタデータサービス)が使用されます。詳細は AWS Bedrock Setup を参照してください。
Bedrock上のClaude Fable/Mythosクラスのモデルは、推論プロファイル専用です。us.anthropic.claude-fable-5 のようなプロファイルIDを使用し、呼び出す前にBedrockコンソールまたはData Retention APIで必要なAnthropicデータ共有設定を有効にしてください。
BingAI
Bing(Sydney、ジェイルブレイク、Bing Image Creatorにも使用)
| Key | Type | Description | Example |
|---|---|---|---|
| BINGAI_TOKEN | string | Bingアクセストークン。無効にする場合は空欄にしてください。ユーザーがWebUIから独自のトークンを提供できるようにするには、"user_provided" に設定できます。 | BINGAI_TOKEN=user_provided |
| BINGAI_HOST | string | BingホストURL。デフォルトのサーバーを使用する場合はコメントアウトしたままにしてください。 | # BINGAI_HOST=https://cn.bing.com |
注: "user_provided" のままにして、WebUIからトークンを入力することを推奨します。
Google Endpoint をセットアップするには、以下の手順に従ってください。
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_KEY | string | Google APIキー。WebUIからユーザー自身がAPIキーを入力できるようにするには "user_provided" に設定してください。 | GOOGLE_KEY=user_provided |
| GOOGLE_SERVICE_KEY_FILE | string | GoogleサービスアカウントのJSONキーファイルへのパス、取得元のURL、または文字列化されたJSON。Vertex AI認証(OCR機能など)に使用されます。 | GOOGLE_SERVICE_KEY_FILE=/path/to/auth.json |
| GOOGLE_REVERSE_PROXY | string | GoogleリバースプロキシURL | GOOGLE_REVERSE_PROXY= |
| GOOGLE_AUTH_HEADER | boolean | X-goog-api-key の代わりに Authorization ヘッダーを使用します。一部のリバースプロキシで必要となります。 | # GOOGLE_AUTH_HEADER=true |
| GOOGLE_MODELS | string | 利用可能なGemini API Googleモデル(カンマ区切り)。 | GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash,gemini-2.0-flash-lite |
| GOOGLE_MODELS | string | 利用可能なVertex AI Googleモデル(カンマ区切り)。 | GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash-001,gemini-2.0-flash-lite-001 |
| GOOGLE_TITLE_MODEL | string | 非推奨: Googleでのタイトル生成に使用されるモデル。 | GOOGLE_TITLE_MODEL=gemini-pro |
| GOOGLE_LOC | string | APIリクエストを処理するためのGoogle Cloudのロケーションを指定します | GOOGLE_LOC=us-central1 |
| GOOGLE_CLOUD_LOCATION | string | Gemini画像生成の代替リージョン(例: global)。 | # GOOGLE_CLOUD_LOCATION=global |
| GOOGLE_EXCLUDE_SAFETY_SETTINGS | string | デフォルトで含まれている安全設定を完全に省略し、プロバイダーのデフォルト設定を使用します | GOOGLE_EXCLUDE_SAFETY_SETTINGS=true |
| GOOGLE_SAFETY_SEXUALLY_EXPLICIT | string | 性的に露骨なコンテンツに対する安全設定。オプションは BLOCK_ALL、BLOCK_ONLY_HIGH、WARN_ONLY、OFF です。 | GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_HATE_SPEECH | string | ヘイトスピーチコンテンツに対する安全設定。オプションは BLOCK_ALL、BLOCK_ONLY_HIGH、WARN_ONLY、OFF です。 | GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_HARASSMENT | string | ハラスメントコンテンツに対する安全設定。オプションは BLOCK_ALL、BLOCK_ONLY_HIGH、WARN_ONLY、OFF です。 | GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_DANGEROUS_CONTENT | string | 危険なコンテンツに対する安全設定。オプションは BLOCK_ALL、BLOCK_ONLY_HIGH、WARN_ONLY、OFF です。 | GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_CIVIC_INTEGRITY | string | 市民の誠実性に関するコンテンツの安全性設定。オプションは BLOCK_ALL、BLOCK_ONLY_HIGH、WARN_ONLY、OFF です。 | # GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH |
利用可能なモデルをカンマ区切りで指定します(スペースは含めないでください)。最初に指定したモデルがデフォルトになります。空欄にするかコメントアウトすると、内部設定が使用されます。
GOOGLE_TITLE_MODELは現在非推奨となっており、将来のバージョンで削除される予定です。代わりにlibrechat.yaml設定内のtitleModelEndpoint Setting を使用してください。
注: Vertex AI の GOOGLE_SAFETY 変数については、デフォルトでは BLOCK_NONE 設定にアクセスできません。この制限された HarmBlockThreshold 設定を使用するには、以下のいずれかを行う必要があります:
- (a) Googleアカウントチームを通じて許可リスト(allowlist)によるアクセス権を取得する
- (b) 以下の手順に従って、アカウントタイプを月次請求書払い(monthly invoiced billing)に切り替えてください: https://cloud.google.com/billing/docs/how-to/invoiced-billing
Gemini 画像生成
Gemini Image Generationは、Gemini APIとVertex AIの両方をサポートするAgents向けのツールです。詳細は以下を参照してください: Gemini Image Generation
| Key | Type | Description | Example |
|---|---|---|---|
| GEMINI_API_KEY | string | 画像生成専用のGemini APIキー。設定されていない場合はGOOGLE_KEYにフォールバックします。 | # GEMINI_API_KEY=your_gemini_api_key |
| GEMINI_IMAGE_MODEL | string | 画像生成用のGeminiモデル。デフォルト: gemini-2.5-flash-image。 | # GEMINI_IMAGE_MODEL=gemini-2.5-flash-image |
注: APIキーが設定されていない場合、ツールは自動的に
GOOGLE_SERVICE_KEY_FILEで指定されたサービスアカウントを使用して Vertex AI にフォールバックします。そのサービスアカウントにはVertex AI Userロールが付与されている必要があります。
OpenAI
参照: OpenAI Setup
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_API_KEY | string | OpenAI APIキー。このendpointを無効にする場合は空欄にするか、ユーザーがWebUIから独自のAPIキーを入力できるようにするには "user_provided" に設定してください。 | OPENAI_API_KEY=user_provided |
| OPENAI_MODELS | string | 利用可能なモデルをカンマ区切りで指定します(スペースは含めないでください)。最初のモデルがデフォルトになります。内部設定を使用する場合は、コメントアウトしたままにしてください。 | # OPENAI_MODELS=gpt-5,gpt-5-codex,gpt-5-mini,gpt-5-nano,o3-pro,o3,o4-mini,gpt-4.1,gpt-4.1-mini,gpt-4.1-nano,o3-mini,o1-pro,o1,gpt-4o,gpt-4o-mini |
| DEBUG_OPENAI | boolean | OpenAI endpointのデバッグモードを有効にします。 | DEBUG_OPENAI=false |
| OPENAI_SUMMARIZE | boolean | メッセージの要約を有効にします。デフォルトはFalseです。 | # OPENAI_SUMMARIZE=true |
| OPENAI_SUMMARY_MODEL | string | OpenAIの要約に使用されるモデル。 | # OPENAI_SUMMARY_MODEL=gpt-3.5-turbo |
| OPENAI_FORCE_PROMPT | boolean | APIをmessagesペイロードではなくpromptペイロードで呼び出すように強制します。 | # OPENAI_FORCE_PROMPT=false |
| OPENAI_ORGANIZATION | string | OpenAIへの各APIリクエストで使用する組織を指定します。任意。 | # OPENAI_ORGANIZATION= |
| OPENAI_REVERSE_PROXY | string | 非推奨: OpenAI 用のリバースプロキシ設定。 | # OPENAI_REVERSE_PROXY= |
| OPENAI_TITLE_MODEL | string | 非推奨: OpenAIのタイトル生成に使用されるモデル。 | # OPENAI_TITLE_MODEL=gpt-3.5-turbo |
OPENAI_TITLE_MODELは現在非推奨となっており、将来のバージョンで削除される予定です。代わりにlibrechat.yaml設定内のtitleModelエンドポイント設定 を使用してください。OPENAI_REVERSE_PROXYは現在非推奨となっており、将来のバージョンで削除される予定です。代わりに カスタムエンドポイント を使用してください。
Assistants
参照: Assistants Setup
| Key | Type | Description | Example |
|---|---|---|---|
| ASSISTANTS_API_KEY | string | Assistants API用のOpenAI APIキーです。このエンドポイントを無効にする場合は空欄にするか、ユーザーがWebUIから独自のAPIキーを入力できるようにするには「user_provided」に設定してください。 | ASSISTANTS_API_KEY=user_provided |
| ASSISTANTS_MODELS | string | 利用可能なモデルをカンマ区切りで指定します(スペースは含めないでください)。最初に入力したモデルがデフォルトになります。空欄にすると内部設定が使用されます。 | # ASSISTANTS_MODELS=gpt-3.5-turbo-0125,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-16k,gpt-3.5-turbo,gpt-4,gpt-4-0314,gpt-4-32k-0314,gpt-4-0613,gpt-3.5-turbo-0613,gpt-3.5-turbo-1106,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview |
| ASSISTANTS_BASE_URL | string | Assistants APIの代替ベースURL。 | # ASSISTANTS_BASE_URL= |
注: 利用可能なモデルをカンマ区切り(スペースなし)でカスタマイズできます。最初のモデルがデフォルトになります。空欄にするかコメントアウトすると、内部設定が使用されます。
Tavily
APIキーはこちらから取得してください: https://tavily.com/#api
環境変数:
| Key | Type | Description | Example |
|---|---|---|---|
| TAVILY_API_KEY | string | Tavily APIキー | TAVILY_API_KEY= |
Traversaal
説明: LLMで強化された検索ツール。
APIキーの取得はこちら: https://api.traversaal.ai/dashboard
環境変数:
| Key | Type | Description | Example |
|---|---|---|---|
| TRAVERSAAL_API_KEY | string | Traversaal APIキー | TRAVERSAAL_API_KEY= |
WolframAlpha
詳細な手順はこちらをご覧ください: Wolfram Alpha
環境変数:
| Key | Type | Description | Example |
|---|---|---|---|
| WOLFRAM_APP_ID | string | Wolfram Alpha App ID | WOLFRAM_APP_ID= |
Zapier
説明: - Zapierアカウントが必要です。APIキーはこちらから取得してください: Zapier
- 許可されたアクションを作成する - Zapierのこの入門ガイドのステップ3に従ってください
注: Zapierは特定のアクションにおいて扱いが難しいことで知られています。メールの下書き作成に使用するのが最も適しているでしょう。
環境変数:
| Key | Type | Description | Example |
|---|---|---|---|
| ZAPIER_NLA_API_KEY | string | Zapier NLA APIキー | ZAPIER_NLA_API_KEY= |
OpenWeather
詳細な手順はこちらをご覧ください: OpenWeather
| Key | Type | Description | Example |
|---|---|---|---|
| OPENWEATHER_API_KEY | string | One Call API 3.0用のOpenWeather APIキー。 | OPENWEATHER_API_KEY= |
Code Interpreter
Code Interpreter APIは、コードの実行とファイルの管理を行うための安全な環境を提供します。参照: Code Interpreter API
| Key | Type | Description | Example |
|---|---|---|---|
| LIBRECHAT_CODE_API_KEY | string | Code Interpreterサービス用のAPIキー。グローバルに設定すると、すべてのユーザーがアクセスできるようになります。 | LIBRECHAT_CODE_API_KEY=your-api-key |
| LIBRECHAT_CODE_BASEURL | string | Code Interpreter APIのカスタムベースURL(Enterpriseプランのみ)。 | # LIBRECHAT_CODE_BASEURL=https://your-custom-domain.com |
Artifacts
Artifactsは、HTML/JSコードを安全にレンダリングするためにCodeSandboxライブラリを活用しています。デフォルトでは、CodeSandboxがホストするパブリックCDNが使用されます。
幸いなことに、内部ネットワークの要件がある場合は、フロントエンドコードをコンパイルするバンドラーをセルフホストし、Sandpack用にカスタムバンドラーURLを指定することができます。
メトリクスリクエストが削除されたセルフホスト用の事前構築済みコンテナイメージなど、詳細については以下を参照してください: https://github.com/LibreChat-AI/codesandbox-client
| Key | Type | Description | Example |
|---|---|---|---|
| SANDPACK_BUNDLER_URL | string | Artifactsで使用されるSandpack用のカスタムバンドラーURLを指定します | SANDPACK_BUNDLER_URL=your-bundler-url |
検索 (Meilisearch)
メッセージと会話内の検索を有効にします:
| Key | Type | Description | Example |
|---|---|---|---|
| SEARCH | boolean | メッセージと会話の検索を有効にします。 | SEARCH=true |
注: Dockerを使用していない場合、無料のセルフホスト型Meilisearchのインストール、または有料のリモートプランが必要です。
MeiliSearchの匿名化されたテレメトリ分析を無効にして完全なプライバシーを確保するには、以下をtrueに設定します:
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_ANALYTICS | boolean | MeiliSearchの匿名化されたテレメトリ分析を無効にします。 | MEILI_NO_ANALYTICS=true |
APIサーバーが検索サーバーに接続するためです。Docker ComposeでMeiliSearchを運用している場合は、'0.0.0.0'を'meilisearch'に置き換えてください。
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_HOST | string | 検索サーバーへのAPIサーバー接続。 | MEILI_HOST=http://0.0.0.0:7700 |
このマスターキーは、有効なUTF-8文字で構成された16バイト以上のものである必要があります。マスターキーが提供されていない場合、または16バイト未満の場合、MeiliSearchはエラーをスローし、起動を拒否します。MeiliSearchは、安全な自動生成マスターキーを提案します。これはdocker-compose用の既製の安全なキーですが、独自のキーに置き換えることも可能です。
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_MASTER_KEY | string | MeiliSearchのマスターキー。 | MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt |
LibreChatがMeilisearchとのデータベースインデックス同期を試みるのを防ぐには、以下の環境変数を true に設定します。これは、ノードクラスターやマルチノード構成において、1つのインスタンスのみがインデックス作成を担当すべき場合に便利です。
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_SYNC | string | Meilisearchインデックス同期を無効にするためのトグル | MEILI_NO_SYNC=true |
RAG API
ドキュメントのインデックス作成とコンテキストを考慮した応答のために、Retrieval-Augmented Generation(RAG)を設定します。詳細は以下を参照してください:RAG API Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | RAG APIサービスのURL。 | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | RAG埋め込み用のOpenAI APIキー。RAGのOPENAI_API_KEYを上書きします。 | # RAG_OPENAI_API_KEY=sk-your-openai-api-key |
| RAG_OPENAI_BASEURL | string | RAG埋め込み用のカスタムOpenAIベースURL。 | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | 上位4件の結果ではなく、ファイルコンテキスト全体を取得します。デフォルト: false。 | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Embeddingsプロバイダー: openai、azure、huggingface、huggingfacetei、または ollama。デフォルト: openai。 | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | 使用するEmbeddingsモデル。デフォルトはプロバイダーによって異なります。 | # EMBEDDINGS_MODEL=text-embedding-3-small |
注: デフォルトの Docker セットアップを使用する場合、
.envファイルは LibreChat と RAG API 間で共有されます。設定オプションの詳細については、RAG API documentation を参照してください。
音声認識 (Speech to Text) & 音声合成 (Text to Speech)
Speech-to-Text (STT) および Text-to-Speech (TTS) サービスを設定します。詳細は以下を参照してください: Speech Settings
| Key | Type | Description | Example |
|---|---|---|---|
| STT_API_KEY | string | Speech-to-Textサービス(例:OpenAI Whisper)のAPIキー | # STT_API_KEY= |
| TTS_API_KEY | string | Text-to-Speechサービス用のAPIキー(例: OpenAI TTS)。 | # TTS_API_KEY= |
注: STT および TTS は、主に
librechat.yaml内のspeech:セクションを通じて設定されます。これらの環境変数は、その設定内で参照されます。YAML 設定オプションの詳細については、Speech Settings を参照してください。
共有リンク
共有会話リンク機能を設定します。
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_SHARED_LINKS | boolean | 共有会話リンクの有効/無効を切り替えます。デフォルト: true。 | ALLOW_SHARED_LINKS=true |
| ALLOW_SHARED_LINKS_PUBLIC | boolean | 共有リンクを認証なしで公開アクセスできるようにします。デフォルト: false。 | ALLOW_SHARED_LINKS_PUBLIC=false |
| SHARED_LINKS_SNAPSHOT_FILES | boolean | 共有チャットで参照されるスナップショットファイル。閲覧者は共有リンクを通じてそれらをプレビューまたはダウンロードできます。設定されている場合、interface.sharedLinks.snapshotFiles を上書きします。 | SHARED_LINKS_SNAPSHOT_FILES=true |
ALLOW_SHARED_LINKS は機能全体のスイッチです。共有リンクを作成できるユーザー、認証済みユーザーと共有できるユーザー、または誰でも閲覧可能にできるユーザーは、ロール権限によって制御されるようになりました。詳細は interface.sharedLinks を参照してください。ALLOW_SHARED_LINKS_PUBLIC は、公開共有リンクを認証なしで閲覧できるかどうかのみを制御します。SHARED_LINKS_SNAPSHOT_FILES は共有リンクのファイルスナップショットに対するグローバルなオーバーライドであり、false に設定するとすべてのリンクに対してスナップショットの提供を無効にできます。
ユーザーシステム
このセクションには、以下の設定が含まれています:
モデレーション
自動モデレーションシステムは、ユーザーの違反を追跡するためにスコアリングメカニズムを使用します。ユーザーが過度なログイン、登録、メッセージ送信などの行為を行うと、違反スコアが蓄積されます。設定されたしきい値に達すると、そのユーザーおよびIPアドレスは一時的にBAN(禁止)されます。このシステムは、急激な活動や疑わしい活動を監視およびペナルティを課すことで、プラットフォームのセキュリティを確保します。
基本的なモデレーション設定
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | **OpenAI** および **Plugins** エンドポイントで OpenAI モデレーションを有効にするかどうか。 | OPENAI_MODERATION=false |
| OPENAI_MODERATION_API_KEY | string | OpenAI APIキー。 | OPENAI_MODERATION_API_KEY= |
| OPENAI_MODERATION_REVERSE_PROXY | string | 注: デフォルトではコメントアウトされています。すべてのリバースプロキシで動作するわけではありません。 | # OPENAI_MODERATION_REVERSE_PROXY= |
Banning Settings
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | 違反によるユーザーの禁止を有効にするかどうか(禁止してもログは記録されます)。 | BAN_VIOLATIONS=true |
| BAN_DURATION | integer | ユーザーおよび関連するIPを禁止する期間(ミリ秒単位)。 | BAN_DURATION=1000 * 60 * 60 * 2 |
| BAN_INTERVAL | integer | ユーザーのスコアが間隔のしきい値に達するか超えるたびに、そのユーザーはBANされます。 | BAN_INTERVAL=20 |
ログインおよび登録のレート制限
ログイン試行回数や新規アカウント登録数を制限することで、ブルートフォース攻撃やスパム登録を防止します。
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | integer | LOGIN_WINDOW ごとのIPあたりの最大ログイン試行回数。 | LOGIN_MAX=7 |
| LOGIN_WINDOW | integer | LOGIN_MAX回のログイン試行を判定する時間枠を分単位で指定します。 | LOGIN_WINDOW=5 |
| REGISTER_MAX | integer | REGISTER_WINDOW ごとに許可される IP あたりの最大登録数。 | REGISTER_MAX=5 |
| REGISTER_WINDOW | integer | REGISTER_MAX回の登録に対する時間枠を分単位で決定します。 | REGISTER_WINDOW=60 |
各違反のスコア
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | ログイン違反のスコア。 | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | 登録違反に対するスコア。 | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | 同時違反に対するスコア | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | メッセージ違反のスコア。 | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | ブラウザ以外の違反に対するスコア。 | NON_BROWSER_VIOLATION_SCORE=20 |
| ILLEGAL_MODEL_REQ_SCORE | integer | 不正なモデルリクエストのスコア。 | ILLEGAL_MODEL_REQ_SCORE=5 |
| IMPORT_VIOLATION_SCORE | integer | インポートされた会話の違反に対するスコア。 | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | 会話フォーク違反のスコア。 | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | テキスト読み上げ違反のスコア。 | TTS_VIOLATION_SCORE=0 |
| STT_VIOLATION_SCORE | integer | 音声テキスト変換違反のスコア。 | STT_VIOLATION_SCORE=0 |
| FILE_UPLOAD_VIOLATION_SCORE | integer | ファイルアップロード違反のスコア。 | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | パスワードリセット違反のスコア。 | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | メール認証違反のスコア。 | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | ツール呼び出し違反のスコア | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | 会話アクセス違反のスコア。 | CONVO_ACCESS_VIOLATION_SCORE=0 |
注: ブラウザ以外からのアクセスや不正なモデルリクエストは、サードパーティが自動化されたスクリプトを通じてサーバーにアクセスしようとしていることを意味するため、ほとんどの場合、悪意のあるものです。
メッセージレート制限(ユーザーおよびIPごと)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | 1リクエストあたりにユーザーが送信できるメッセージ数を制限するかどうか。 | LIMIT_CONCURRENT_MESSAGES=true |
| CONCURRENT_MESSAGE_MAX | integer | ユーザーが1リクエストあたりに送信できる最大メッセージ数。 | CONCURRENT_MESSAGE_MAX=2 |
リミッター
注: 両方の制限機能を利用することも可能ですが、デフォルトではIPによる制限のみが適用されます。
IP Limiter:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | IPアドレスが `MESSAGE_IP_WINDOW` ごとに送信できるメッセージ数を制限するかどうか。 | LIMIT_MESSAGE_IP=true |
| MESSAGE_IP_MAX | integer | `MESSAGE_IP_WINDOW` ごとに1つのIPが送信できるメッセージの最大数。 | MESSAGE_IP_MAX=40 |
| MESSAGE_IP_WINDOW | integer | `MESSAGE_IP_MAX` メッセージの制限時間を分単位で指定します。 | MESSAGE_IP_WINDOW=1 |
ユーザー制限機能:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | `MESSAGE_USER_WINDOW` ごとにユーザーが送信できるメッセージ数を制限するかどうか。 | LIMIT_MESSAGE_USER=false |
| MESSAGE_USER_MAX | integer | `MESSAGE_USER_WINDOW` ごとにユーザーが送信できるメッセージの最大数。 | MESSAGE_USER_MAX=40 |
| MESSAGE_USER_WINDOW | integer | `MESSAGE_USER_MAX` メッセージの期間を分単位で決定します。 | MESSAGE_USER_WINDOW=1 |
会話インポートのレート制限
ユーザーが会話をインポートできる頻度を制限し、悪用を防ぎます。
注: 両方の制限機能を利用することも可能ですが、デフォルトではIPによる制限のみが適用されます。
IP Limiter:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | `IMPORT_IP_WINDOW` ごとに1つのIPが実行できる会話インポートの回数を制限するかどうか。 | LIMIT_IMPORT_IP=true |
| IMPORT_IP_MAX | integer | `IMPORT_IP_WINDOW` ごとに1つのIPが実行できる会話インポートの最大数。 | IMPORT_IP_MAX=100 |
| IMPORT_IP_WINDOW | integer | `IMPORT_IP_MAX` インポートの期間を分単位で決定します。 | IMPORT_IP_WINDOW=1 |
ユーザー制限機能:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | `IMPORT_USER_WINDOW` ごとにユーザーが実行できる会話インポートの回数を制限するかどうか。 | LIMIT_IMPORT_USER=false |
| IMPORT_USER_MAX | integer | ユーザーが `IMPORT_USER_WINDOW` ごとに実行できる会話インポートの最大数。 | IMPORT_USER_MAX=50 |
| IMPORT_USER_WINDOW | integer | `IMPORT_USER_MAX` インポートの時間枠を分単位で指定します。 | IMPORT_USER_WINDOW=1 |
会話のフォーク(分岐)に関するレート制限
ユーザーが会話をフォークできる頻度を制限し、悪用を防ぎます。
注: 両方の制限機能を利用することも可能ですが、デフォルトではIPによる制限のみが適用されます。
IP Limiter:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | IPアドレスごとに `FORK_IP_WINDOW` 内で作成できる会話フォークの数を制限するかどうか。 | LIMIT_FORK_IP=true |
| FORK_IP_MAX | integer | `FORK_IP_WINDOW` ごとに1つのIPが作成できる会話フォークの最大数。 | FORK_IP_MAX=30 |
| FORK_IP_WINDOW | integer | `FORK_IP_MAX` フォークの期間を分単位で決定します。 | FORK_IP_WINDOW=1 |
ユーザー制限機能:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | `FORK_USER_WINDOW` ごとにユーザーが作成できる会話フォークの数を制限するかどうか。 | LIMIT_FORK_USER=false |
| FORK_USER_MAX | integer | ユーザーが `FORK_USER_WINDOW` ごとに作成できる会話フォークの最大数。 | FORK_USER_MAX=7 |
| FORK_USER_WINDOW | integer | `FORK_USER_MAX` フォークの時間枠を分単位で指定します。 | FORK_USER_WINDOW=1 |
ファイルアップロードのレート制限
ユーザーがファイルをアップロードできる頻度を制限し、悪用を防ぎます。
注: これらは
librechat.yamlのrateLimits.fileUploadsセクションを通じて設定することも可能です。
IP Limiter:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_IP_MAX | integer | `FILE_UPLOAD_IP_WINDOW` ごとのIPあたりの最大ファイルアップロード数。デフォルト: 100。 | # FILE_UPLOAD_IP_MAX=100 |
| FILE_UPLOAD_IP_WINDOW | integer | `FILE_UPLOAD_IP_MAX` の時間枠を分単位で指定します。デフォルト: 15。 | # FILE_UPLOAD_IP_WINDOW=15 |
ユーザー制限機能:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_USER_MAX | integer | `FILE_UPLOAD_USER_WINDOW` ごとのユーザーあたりの最大ファイルアップロード数。デフォルト: 50。 | # FILE_UPLOAD_USER_MAX=50 |
| FILE_UPLOAD_USER_WINDOW | integer | `FILE_UPLOAD_USER_MAX` の時間枠を分単位で指定します。デフォルト: 15。 | # FILE_UPLOAD_USER_WINDOW=15 |
TTS (Text-to-Speech) レート制限
悪用を防ぐため、ユーザーがText-to-Speechを使用できる頻度を制限します。
注: これらは
librechat.yamlのrateLimits.ttsセクションを通じて設定することも可能です。
IP Limiter:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_IP_MAX | integer | `TTS_IP_WINDOW` ごとのIPあたりの最大TTSリクエスト数。デフォルト: 100。 | # TTS_IP_MAX=100 |
| TTS_IP_WINDOW | integer | `TTS_IP_MAX` の時間枠を分単位で指定します。デフォルト: 1。 | # TTS_IP_WINDOW=1 |
ユーザー制限機能:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_USER_MAX | integer | ユーザーごとの `TTS_USER_WINDOW` あたりの最大TTSリクエスト数。デフォルト: 50。 | # TTS_USER_MAX=50 |
| TTS_USER_WINDOW | integer | `TTS_USER_MAX`の期間を分単位で指定します。デフォルト: 1。 | # TTS_USER_WINDOW=1 |
STT (Speech-to-Text) のレート制限
悪用を防ぐため、ユーザーがSpeech-to-Textを使用できる頻度を制限します。
注: これらは
librechat.yamlのrateLimits.sttセクション経由で設定することも可能です。
IP Limiter:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_IP_MAX | integer | `STT_IP_WINDOW` あたりのIPごとの最大STTリクエスト数。デフォルト: 100。 | # STT_IP_MAX=100 |
| STT_IP_WINDOW | integer | `STT_IP_MAX` の時間枠を分単位で指定します。デフォルト: 1。 | # STT_IP_WINDOW=1 |
ユーザー制限機能:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_USER_MAX | integer | `STT_USER_WINDOW` あたりのユーザーごとの最大STTリクエスト数。デフォルト: 50。 | # STT_USER_MAX=50 |
| STT_USER_WINDOW | integer | `STT_USER_MAX` の時間枠を分単位で指定します。デフォルト: 1。 | # STT_USER_WINDOW=1 |
バランス
以下の機能により、システム内の各endpointにおけるユーザー残高を管理できます。残高を手動で追加するオプションがあるほか、ユーザーの残高を自動的に蓄積するシステムを実装することも可能です。設定で特定の初期残高が定義されている場合、ユーザーが登録した際にトークンが自動的にユーザーの残高へ付与されます。
参照: Token Usage
| Key | Type | Description | Example |
|---|---|---|---|
| CHECK_BALANCE | boolean | OpenAI/Plugins エンドポイントのトークンクレジット残高を有効にします。 | CHECK_BALANCE=false |
| START_BALANCE | integer | 値が設定されている場合、登録後にトークンがユーザーの残高に付与されます。 | START_BALANCE=20000 |
残高の管理
npm run add-balanceを実行して、手動で残高を追加します。- また、追加するメールアドレスとトークンクレジットの量を指定することもできます。例:
npm run add-balance [email protected] 1000
- また、追加するメールアドレスとトークンクレジットの量を指定することもできます。例:
npm run set-balanceを実行して、add-balanceと同様に手動で残高を設定します。npm run list-balancesを実行して、すべてのユーザーの残高を一覧表示します。
注: 1000クレジット = $0.001 (0.001米ドル)
登録とログイン
設定ファイルの明確化
このセクションのすべての認証設定は、librechat.yaml ファイルや docker-compose.override.yml ではなく、.env ファイルで構成する必要があります。docker-compose.override.yml ファイルは Docker のボリュームマウントと環境変数の設定にのみ使用され、librechat.yaml ファイルはカスタム endpoint やその他のアプリケーション設定に使用されます。
- 一般設定:
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | メールログインのみを有効または無効にします。 | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | 新規ユーザーのメール登録を有効または無効にします。 | ALLOW_REGISTRATION=true |
| ALLOW_SOCIAL_LOGIN | boolean | ユーザーがさまざまなソーシャルネットワークを使用してLibreChatに接続できるようにします。 | ALLOW_SOCIAL_LOGIN=false |
| ALLOW_SOCIAL_REGISTRATION | boolean | さまざまなソーシャルネットワークを使用した新規ユーザーの登録を有効または無効にします。 | ALLOW_SOCIAL_REGISTRATION=false |
| ALLOW_PASSWORD_RESET | boolean | ユーザーが自分でパスワードをリセットできる機能を有効または無効にします | ALLOW_PASSWORD_RESET=false |
| ALLOW_ACCOUNT_DELETION | boolean | ユーザーが自身でアカウントを削除できる機能を有効または無効にします。省略またはコメントアウトされた場合はデフォルトで有効になります。 | ALLOW_ACCOUNT_DELETION=true |
| ALLOW_UNVERIFIED_EMAIL_LOGIN | boolean | trueに設定すると、ユーザーはメールアドレスを認証せずにログインできるようになります。falseに設定すると、ユーザーはログイン前にメールアドレスの認証が必要になります。 | ALLOW_UNVERIFIED_EMAIL_LOGIN=true |
| MIN_PASSWORD_LENGTH | number | ユーザー認証の最小パスワード長。LDAP認証を使用する場合、LDAPサーバー側でパスワードポリシーが管理されるため、ローカルのパスワード検証をバイパスするにはこれを1に設定することをお勧めします。 | MIN_PASSWORD_LENGTH=8 |
Quick Tip: 登録が無効な場合でも、
npm run create-userを使用してデータベースに直接ユーザーを追加できます。
Quick Tip: 登録が無効な場合、
npm run delete-user [email protected]を使用してユーザーを削除できます。
- セッションおよびリフレッシュトークンの設定:
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | セッションの有効期限。 | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (milliseconds) | リフレッシュトークンの有効期限。 | REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7 |
| SESSION_COOKIE_SECURE | boolean | セッション/認証クッキーのSecure属性を上書きします。未設定の場合は、デフォルトのNODE_ENV/DOMAIN_SERVERヒューリスティックが使用されます。 | # SESSION_COOKIE_SECURE=false |
-
詳細については、こちらをご覧ください:Refresh Token
-
JWT設定:
新しい安全な値を使用する必要があります。提供されている例は32バイトのキー(16進数で64文字)です。 これらを素早く生成するには、このreplitを使用してください: JWT Keys
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | JWTシークレットキー | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (hex) | JWTリフレッシュシークレットキー | JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418 |
ソーシャルログイン
詳細については、こちらを参照してください: OAuth2-OIDC
Apple認証
詳細については、以下を参照してください: Apple Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| APPLE_CLIENT_ID | string | Apple Services ID(例: com.yourdomain.librechat.services) | APPLE_CLIENT_ID=com.yourdomain.librechat.services |
| APPLE_TEAM_ID | string | あなたのApple Developer Team ID。 | APPLE_TEAM_ID=YOUR_TEAM_ID |
| APPLE_KEY_ID | string | ダウンロードしたキーに含まれるApple Key ID。 | APPLE_KEY_ID=YOUR_KEY_ID |
| APPLE_PRIVATE_KEY_PATH | string | ダウンロードした .p8 ファイルへの絶対パス。 | APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8 |
| APPLE_CALLBACK_URL | string | Apple認証用のコールバックURL。 | APPLE_CALLBACK_URL=/oauth/apple/callback |
Discord認証
詳細については、以下を参照してください:Discord
| Key | Type | Description | Example |
|---|---|---|---|
| DISCORD_CLIENT_ID | string | DiscordクライアントID。 | DISCORD_CLIENT_ID= |
| DISCORD_CLIENT_SECRET | string | Discordクライアントシークレット。 | DISCORD_CLIENT_SECRET= |
| DISCORD_CALLBACK_URL | string | Discord認証用のコールバックURL。 | DISCORD_CALLBACK_URL=/oauth/discord/callback |
Facebook認証
詳細については、こちらをご覧ください: Facebook Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| FACEBOOK_CLIENT_ID | string | FacebookクライアントID。 | FACEBOOK_CLIENT_ID= |
| FACEBOOK_CLIENT_SECRET | string | Facebookクライアントシークレット。 | FACEBOOK_CLIENT_SECRET= |
| FACEBOOK_CALLBACK_URL | string | Facebook認証用のコールバックURL。 | FACEBOOK_CALLBACK_URL=/oauth/facebook/callback |
GitHub認証
詳細については、以下を参照してください:GitHub Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| GITHUB_CLIENT_ID | string | GitHubクライアントID。 | GITHUB_CLIENT_ID= |
| GITHUB_CLIENT_SECRET | string | GitHubクライアントシークレット。 | GITHUB_CLIENT_SECRET= |
| GITHUB_CALLBACK_URL | string | GitHub認証用のコールバックURL。 | GITHUB_CALLBACK_URL=/oauth/github/callback |
| GITHUB_ENTERPRISE_BASE_URL | string | オプション: GitHub EnterpriseインスタンスのベースURL。 | GITHUB_ENTERPRISE_BASE_URL= |
| GITHUB_ENTERPRISE_USER_AGENT | string | オプション: GitHub Enterpriseリクエスト用のユーザーエージェント。 | GITHUB_ENTERPRISE_USER_AGENT= |
Google認証
詳細については、以下を参照してください: Google Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_CLIENT_ID | string | GoogleクライアントID。 | GOOGLE_CLIENT_ID= |
| GOOGLE_CLIENT_SECRET | string | Googleクライアントシークレット。 | GOOGLE_CLIENT_SECRET= |
| GOOGLE_CALLBACK_URL | string | Google認証用のコールバックURL。 | GOOGLE_CALLBACK_URL=/oauth/google/callback |
OpenID Connect
詳細については、以下を参照してください:
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_CLIENT_ID | string | OpenIDクライアントID。 | OPENID_CLIENT_ID= |
| OPENID_CLIENT_SECRET | string | OpenIDクライアントシークレット。 | OPENID_CLIENT_SECRET= |
| OPENID_ISSUER | string | OpenIDプロバイダーのURL。 | OPENID_ISSUER= |
| OPENID_SESSION_SECRET | string | OpenIDセッションストレージ用のシークレット。 | OPENID_SESSION_SECRET= |
| OPENID_SCOPE | string | OpenIDスコープ。 | OPENID_SCOPE="openid profile email" |
| OPENID_CALLBACK_URL | string | OpenID認証用のコールバックURL。 | OPENID_CALLBACK_URL=/oauth/openid/callback |
| OPENID_AUDIENCE | string | OpenID JWT検証および認可リクエストのAudience値。JWT検証にはカンマ区切りの値が使用でき、認可リクエストには最初の空でない値が使用されます。OPENID_REUSE_TOKENS=trueを使用する際に、不透明トークンではなくJWTアクセストークンを受け取るためのAuth0で必須となります。 | OPENID_AUDIENCE=https://api.librechat.com |
| OPENID_REQUIRED_ROLE | string | 検証に必要なロール。単一のロール、またはカンマ区切りで複数のロールを指定できます。複数のロールが指定された場合、ユーザーはいずれかのロール(OR論理)を持っている必要があります。 | OPENID_REQUIRED_ROLE=admin or OPENID_REQUIRED_ROLE=role1,role2,admin |
| OPENID_REQUIRED_ROLE_TOKEN_KIND | string | 必須ロール検証のためのトークン種別。 | OPENID_REQUIRED_ROLE_TOKEN_KIND= |
| OPENID_REQUIRED_ROLE_PARAMETER_PATH | string | 必須ロール検証のためのパラメータパス。 | OPENID_REQUIRED_ROLE_PARAMETER_PATH= |
| OPENID_ADMIN_ROLE | string | LibreChatで管理者となるためにユーザーが持つべきロール。 | OPENID_ADMIN_ROLE= |
| OPENID_ADMIN_ROLE_TOKEN_KIND | string | 管理者ロール検証のための情報源。指定可能な値は access、id、または userinfo です。 | OPENID_ADMIN_ROLE_TOKEN_KIND= |
| OPENID_ADMIN_ROLE_PARAMETER_PATH | string | 必須ロール検証のためのパラメータパス。 | OPENID_ADMIN_ROLE_PARAMETER_PATH= |
| OPENID_ROLE_SYNC_ENABLED | boolean | 管理者以外のロールに対して、汎用的なOpenIDロール同期を有効にします。ADMINはロール同期によって割り当てることはできません。管理者権限の昇格にはOPENID_ADMIN_ROLEを使用してください。 | OPENID_ROLE_SYNC_ENABLED=false |
| OPENID_ROLE_SYNC_API_ENABLED | boolean | APIベースのロール同期ヘルパーを有効にします。OPENID_ROLE_SYNC_ENABLED=trueが必要です。 | OPENID_ROLE_SYNC_API_ENABLED=false |
| OPENID_ROLE_SYNC_SOURCE | string | ロールクレームのトークンソース。access、id、userinfoのいずれかである必要があります。デフォルト: id。 | OPENID_ROLE_SYNC_SOURCE=id |
| OPENID_ROLE_SYNC_CLAIM | string | プロバイダーのロールまたはグループを含むクレームパス。ロール同期が有効な場合に必須です。 | OPENID_ROLE_SYNC_CLAIM= |
| OPENID_ROLE_SYNC_ROLE_PRIORITY | string | 最も重要な順に並べた、カンマ区切りのLibreChatロール。最初に一致したロールが割り当てられます。 | OPENID_ROLE_SYNC_ROLE_PRIORITY=Support,User |
| OPENID_ROLE_SYNC_FALLBACK_ROLE | string | 優先されるロールが一致しない場合に割り当てられるLibreChatロール。設定されている場合、このフォールバックが優先されます。 | OPENID_ROLE_SYNC_FALLBACK_ROLE=USER |
| OPENID_BUTTON_LABEL | string | OpenIDログインボタンのラベル。 | OPENID_BUTTON_LABEL= |
| OPENID_IMAGE_URL | string | OpenIDログインボタン画像のURL。 | OPENID_IMAGE_URL= |
| OPENID_USE_END_SESSION_ENDPOINT | string | ログアウトのリダイレクト先としてIssuer End Session Endpointを使用するかどうか | OPENID_USE_END_SESSION_ENDPOINT=TRUE |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | id_token_hintの代わりにlogout_hintを使用する前の最大ログアウトURL長。デフォルト: 2000。 | # OPENID_MAX_LOGOUT_URL_LENGTH=2000 |
| OPENID_AUTO_REDIRECT | boolean | OpenIDプロバイダーへ自動的にリダイレクトするかどうか。 | OPENID_AUTO_REDIRECT=true |
| OPENID_USE_PKCE | boolean | OpenID認証にはPKCE (Proof Key for Code Exchange) を使用します。クライアントシークレットを持たないパブリッククライアントの場合は、OPENID_CLIENT_SECRETを空のままにし、これをtrueに設定してください。 | # OPENID_USE_PKCE=true |
| OPENID_POST_LOGOUT_REDIRECT_URI | string | OpenIDログアウト後のリダイレクトURI。デフォルトは ${DOMAIN_CLIENT}/login です。 | # OPENID_POST_LOGOUT_REDIRECT_URI= |
| OPENID_CLOCK_TOLERANCE | number | トークン検証のためのクロック許容時間(秒)。デフォルト: 300。 | # OPENID_CLOCK_TOLERANCE=300 |
| OPENID_GENERATE_NONCE | boolean | OpenIDクライアントにnonceパラメータの生成を強制します。AWS Cognito(特にフェデレーション利用時)やAuthentikなど、一部のアイデンティティプロバイダーで必要となります。 | OPENID_GENERATE_NONCE=true |
| DEBUG_OPENID_REQUESTS | boolean | OpenIDリクエストヘッダーの詳細ログ出力を有効にします。無効(デフォルト)の場合、デバッグレベルではリクエストURLのみが記録されます。有効にすると、認証問題のより詳細なデバッグのために、リクエストヘッダーも(機密データはマスクされた状態で)記録されます。 | DEBUG_OPENID_REQUESTS=false |
| OPENID_USERNAME_CLAIM | string | ユーザーのユーザー名として保存するOpenIDプロバイダーのユーザー情報プロパティ。 | OPENID_USERNAME_CLAIM= |
| OPENID_NAME_CLAIM | string | ユーザーの表示名として保存するOpenIDプロバイダーのユーザー情報プロパティ。 | OPENID_NAME_CLAIM= |
| OPENID_EMAIL_CLAIM | string | ユーザー照合のためのメールアドレス/識別子として使用するユーザー情報クレーム(例:Entra IDの場合は "upn")。設定されていない場合、デフォルトは email → preferred_username → upn の順になります。 | OPENID_EMAIL_CLAIM= |
OpenIDロール同期
OPENID_ROLE_SYNC_CLAIM は、ロール同期が有効な場合に必須です。
OPENID_ROLE_SYNC_API_ENABLED=true を使用する場合、OPENID_ROLE_SYNC_ENABLED=true も必要です。汎用的なロール同期では ADMIN を割り当てることはできません。管理者権限への昇格には OPENID_ADMIN_ROLE を使用してください。
OpenID Connect トークンの再利用
LibreChatは、ユーザー認証状態を管理するために、OpenID Connectプロバイダー(Azure Entra IDやAuth0など)によって発行されたアクセストークンおよびリフレッシュトークンの再利用をサポートしています。この機能が有効な場合、クッキーとしてユーザーに渡されるリフレッシュトークンは、LibreChatではなく、お使いのOpenIDプロバイダーによって発行されます。
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_REUSE_TOKENS | boolean | セッション管理のためにOpenIDプロバイダーのトークンの再利用を有効にします。 | OPENID_REUSE_TOKENS=false |
| OPENID_SCOPE | string | OpenIDスコープのスペース区切りリスト。トークンを再利用するには offline_access を含める必要があります。 | OPENID_SCOPE=api://librechat/.default openid profile email offline_access |
| OPENID_AUDIENCE | string | OpenID JWT検証および認可リクエストのためのAudience値。JWT検証にはカンマ区切りの値が使用でき、認可リクエストには最初の空でない値が使用されます。OPENID_REUSE_TOKENS=trueの場合、Auth0には必須です。上記のメインOpenIDセクションの注記を参照してください。 | OPENID_AUDIENCE=https://api.librechat.com |
| OPENID_REUSE_MAX_SESSION_AGE_MS | number | LibreChatがIdPの更新を強制するまでに、再利用されたOpenIDセッショントークンが提供される最大有効期間。デフォルト:900000ミリ秒 / 15分。 | OPENID_REUSE_MAX_SESSION_AGE_MS=900000 |
| OPENID_JWKS_URL_CACHE_ENABLED | boolean | 署名キー検証結果のキャッシュを有効にする。 | OPENID_JWKS_URL_CACHE_ENABLED=true |
| OPENID_JWKS_URL_CACHE_TIME | number | キャッシュの有効期間(ミリ秒単位)(デフォルト: 600000 ms / 10分) | OPENID_JWKS_URL_CACHE_TIME=600000 |
| OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED | boolean | ユーザー情報に対してon-behalf-ofフローを有効にする。 | OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true |
| OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE | string | オン・ビハーフ・オブ(on-behalf-of)フローにおけるユーザー情報のスコープ。 | OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read |
| OPENID_USE_END_SESSION_ENDPOINT | boolean | ログアウト用にセッション終了 endpoint の使用を有効にします。 | OPENID_USE_END_SESSION_ENDPOINT=true |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | logout_hintに切り替える前のログアウトURLの最大文字数。id_token_hintがサーバーの制限を超えた場合にURIが長すぎるエラーを防ぐのに役立ちます。デフォルト: 2000。 | OPENID_MAX_LOGOUT_URL_LENGTH=2000 |
OPENID_REUSE_MAX_SESSION_AGE_MS は SESSION_EXPIRY と同様に算術式を受け付けます。プロバイダーがリフレッシュ時に以前のアクセストークンを無効化する場合、MCPサーバーなどのダウンストリームのコンシューマーが有効なベアラートークンを使い終えられるよう、IdPのアクセストークンの有効期間に合わせてこの値を増やしてください。
注記
詳細な設定手順と前提条件については、Re-use OpenID Tokens for Login Session を参照してください。
Microsoft Graph API / Entra ID 統合
Azure Entra ID (旧 Azure AD) を OpenID プロバイダーとして使用する場合、権限および共有システム内での高度なユーザーおよびグループ検索機能のために、追加の Microsoft Graph API 機能を有効にすることができます。
| Key | Type | Description | Example |
|---|---|---|---|
| USE_ENTRA_ID_FOR_PEOPLE_SEARCH | boolean | 権限/共有システムでEntra IDのユーザー検索統合を有効にします。有効にすると、ユーザーピッカーはローカルデータベースとEntra IDの両方を検索するようになります。 | USE_ENTRA_ID_FOR_PEOPLE_SEARCH=false |
| ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS | boolean | 有効にすると、Entra IDグループの所有者はグループのメンバーとして扱われます。 | ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=false |
| OPENID_GRAPH_SCOPES | string | ユーザーやグループの検索に必要なMicrosoft Graph APIスコープ。デフォルトのスコープにより、ユーザープロファイルおよびグループメンバーシップへのアクセスが可能になります。 | OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All |
重要な前提条件
- Azure Entra IDをOpenIDプロバイダーとして構成する必要があります。OpenIDトークンの再利用を有効にする必要があります (
OPENID_REUSE_TOKENS=true)。この機能は、これが有効でないと動作しません。Azureアプリの登録には、適切なMicrosoft Graph API権限が必要です。グループ検索機能については、特定のGraph APIスコープに対して管理者の同意が必要になる場合があります。
SharePoint 統合
LibreChatは、SharePoint OnlineおよびOneDrive for Businessとの直接統合をサポートしており、ユーザーはSharePointライブラリ内のファイルを会話内で直接選択して添付することができます。このエンタープライズ機能は、既存のAzure Entra ID認証を活用します。
| Key | Type | Description | Example |
|---|---|---|---|
| ENABLE_SHAREPOINT_FILEPICKER | boolean | チャットおよびエージェントパネルでSharePointファイルピッカーを有効にします。有効にすると、ファイル添付メニューに「SharePointから」オプションが追加されます。 | ENABLE_SHAREPOINT_FILEPICKER=true |
| SHAREPOINT_BASE_URL | string | SharePointテナントのベースURL。SharePoint統合が有効な場合に必須です。 | SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com |
| SHAREPOINT_PICKER_SHAREPOINT_SCOPE | string | ファイルピッカー用のSharePoint固有のOAuthスコープ。SharePointファイルピッカーインターフェースを開く際の認証に使用されます。 | SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read |
| SHAREPOINT_PICKER_GRAPH_SCOPE | string | ファイルダウンロード用のMicrosoft Graph APIスコープ。選択後にSharePointからファイルをダウンロードするために使用されます。 | SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All |
重要な要件
SharePoint統合を機能させるには、以下のすべてを設定する必要があります:
- Azure Entra ID認証が完全に設定されている必要があります
OPENID_REUSE_TOKENS=trueは必須です(on-behalf-of トークンフローを使用します)OPENID_SCOPEには LibreChat アプリの API スコープを含める必要があります。例:api://<client-id>/access_as_user- Azure Entra IDでそのapp-audienceスコープを使用する場合は、
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=trueが必要です。 - Azureアプリ登録には、SharePointおよびGraph APIの権限が必要です。
- Azure アプリ登録では、
OPENID_SCOPEで使用される LibreChat API スコープを公開する必要があります。 - 4つのSharePoint環境変数はすべて設定する必要があります
- 本番環境ではHTTPSが必須です。
機能の能力
有効にすると、ユーザーは以下のことが可能になります:
- SharePointドキュメントライブラリおよびOneDrive for Businessからファイルにアクセスする
- 一度に複数のファイルを選択する(デフォルトの最大数:10ファイル)
- リアルタイムのダウンロード進捗状況を確認する
- ファイルはダウンロードされ、通常のアップロードと同様に会話に添付されます。
SharePointの構成に関する詳細な手順については、SharePoint Integration Guide を参照してください。
SAML
詳細については、以下を参照してください:
OpenIDとSAMLの相互排他
OpenID が有効な場合、SAML 認証は自動的に無効になります。
一度に有効にできる認証方法は1つだけです。
| Key | Type | Description | Example |
|---|---|---|---|
| SAML_ENTRY_POINT | string | SAML IDプロバイダー(IdP)のエントリーポイントURL。 | SAML_ENTRY_POINT= |
| SAML_ISSUER | string | SAMLサービスプロバイダー(SP)エンティティID。 | SAML_ISSUER= |
| SAML_CERT | string | SAML署名証明書。ファイルパスまたは1行のPEM文字列として指定します。 | SAML_CERT= |
| SAML_CALLBACK_URL | string | SAML認証用のコールバックURL。 | SAML_CALLBACK_URL=/oauth/saml/callback |
| SAML_SESSION_SECRET | string | SAMLセッションストレージ用のシークレット。 | SAML_SESSION_SECRET= |
| SAML_EMAIL_CLAIM | string | <Optional>: SAMLアサーション内でユーザーのメールアドレスを含む属性。(デフォルト: email) | SAML_EMAIL_CLAIM= |
| SAML_USERNAME_CLAIM | string | <Optional>: SAMLアサーション内でユーザー名を含む属性。(デフォルト: username) | SAML_USERNAME_CLAIM= |
| SAML_GIVEN_NAME_CLAIM | string | <Optional>: SAMLアサーション内で名(given name)を含む属性。(デフォルト: given_name) | SAML_GIVEN_NAME_CLAIM= |
| SAML_FAMILY_NAME_CLAIM | string | <Optional>: SAMLアサーション内で姓(family name)を含む属性。(デフォルト: family_name) | SAML_FAMILY_NAME_CLAIM= |
| SAML_PICTURE_CLAIM | string | <Optional>: SAMLアサーション内でプロフィール画像のURLを含む属性。(デフォルト: picture) | SAML_PICTURE_CLAIM= |
| SAML_NAME_CLAIM | string | <Optional>: SAMLアサーション内でフルネームを含む属性。 | SAML_NAME_CLAIM= |
| SAML_BUTTON_LABEL | string | <Optional>: SAMLログインボタンのラベル。 | SAML_BUTTON_LABEL= |
| SAML_IMAGE_URL | string | <Optional>: SAMLログインボタン画像のURL。 | SAML_IMAGE_URL= |
| SAML_USE_AUTHN_RESPONSE_SIGNED | boolean | <Optional>: 「true」の場合、SAML Response全体に署名します。それ以外の場合は、Assertionのみが署名されます(デフォルト)。 | SAML_USE_AUTHN_RESPONSE_SIGNED= |
LDAP/AD 認証
詳細については、LDAP/AD Authentication を参照してください。
| Key | Type | Description | Example |
|---|---|---|---|
| LDAP_URL | string | LDAPサーバーのURL | LDAP_URL=ldap://localhost:389 |
| LDAP_BIND_DN | string | バインドDN | LDAP_BIND_DN=cn=root |
| LDAP_BIND_CREDENTIALS | string | bindDNのパスワード | LDAP_BIND_CREDENTIALS=password |
| LDAP_USER_SEARCH_BASE | string | LDAPユーザー検索ベース | LDAP_USER_SEARCH_BASE=o=users,o=example.com |
| LDAP_SEARCH_FILTER | string | LDAP検索フィルター | LDAP_SEARCH_FILTER=mail={{username}} |
| LDAP_CA_CERT_PATH | string | CA証明書のパス | LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt |
| LDAP_TLS_REJECT_UNAUTHORIZED | string | LDAP TLS検証 | LDAP_TLS_REJECT_UNAUTHORIZED=true |
| LDAP_STARTTLS | string | LDAP StartTLSを有効にして接続をTLSにアップグレードします。この機能を有効にするにはtrueに設定してください。 | LDAP_STARTTLS=true |
| LDAP_LOGIN_USES_USERNAME | boolean | LDAPログインにメールアドレスではなくユーザー名を使用します。 | # LDAP_LOGIN_USES_USERNAME=true |
| LDAP_ID | string | 一意のユーザーIDに使用するLDAP属性。デフォルト: uid または sAMAccountName, mail。 | # LDAP_ID=uid |
| LDAP_USERNAME | string | ユーザー名のLDAP属性。デフォルト: givenName または mail。 | # LDAP_USERNAME=givenName |
| LDAP_EMAIL | string | メールアドレスのLDAP属性。デフォルト: mail。 | # LDAP_EMAIL=userPrincipalName |
| LDAP_FULL_NAME | string | フルネームに使用するLDAP属性。カンマ区切りで指定可能です。デフォルト: givenName + surname。 | # LDAP_FULL_NAME=givenName,surname |
パスワードのリセット
メールはアカウントの認証およびパスワードのリセットに使用されます。LibreChatは、Mailgun APIと従来のSMTPサービスの両方をサポートしています。参照: Email setup
重要な注意: メール機能を動作させるには、Mailgun(SMTPをブロックするサーバーに推奨)またはSMTPのいずれかを設定する必要があります。
警告: Mailgun または SMTP に有効な値を設定しなかった場合、LibreChat はセキュリティで保護されていないパスワードリセットを使用することになります!
Mailgun 設定 (推奨)
Mailgunは、SMTPポートをブロックしているサーバーへのデプロイにおいて特に有用です。MAILGUN_API_KEY と MAILGUN_DOMAIN の両方が設定されている場合、LibreChatはSMTPの代わりにMailgunを使用します。
| Key | Type | Description | Example |
|---|---|---|---|
| MAILGUN_API_KEY | string | Mailgun APIキー(Mailgunに必須)。 | MAILGUN_API_KEY= |
| MAILGUN_DOMAIN | string | Mailgunドメイン(Mailgunに必須) | MAILGUN_DOMAIN=mg.yourdomain.com |
| MAILGUN_HOST | string | カスタムMailgun APIホスト(オプション)。EUリージョンの場合は https://api.eu.mailgun.net を使用してください。 | MAILGUN_HOST=https://api.mailgun.net |
| EMAIL_FROM | string | 送信元メールアドレス。必須。 | [email protected] |
| EMAIL_FROM_NAME | string | 送信者名(設定されていない場合は APP_TITLE がデフォルトとして使用されます)。 | EMAIL_FROM_NAME= |
SMTP設定
Mailgunが設定されていない場合、LibreChatはSMTP設定にフォールバックします。
警告:
EMAIL_SERVICEを使用する場合、以下の拡張接続パラメータは設定しないでください: HOST, PORT, ENCRYPTION, ENCRYPTION_HOSTNAME, ALLOW_SELFSIGNED.
参照: nodemailer well-known-services
| Key | Type | Description | Example |
|---|---|---|---|
| EMAIL_SERVICE | string | メールサービス(例:Gmail、Outlook) | EMAIL_SERVICE= |
| EMAIL_HOST | string | メールサーバーホスト | EMAIL_HOST= |
| EMAIL_PORT | number | メールサーバーのポート。 | EMAIL_PORT=25 |
| EMAIL_ENCRYPTION | string | 暗号化方式 (starttls, tls など)。 | EMAIL_ENCRYPTION= |
| EMAIL_ENCRYPTION_HOSTNAME | string | 暗号化用のホスト名。 | EMAIL_ENCRYPTION_HOSTNAME= |
| EMAIL_ALLOW_SELFSIGNED | boolean | 自己署名証明書を許可する。 | EMAIL_ALLOW_SELFSIGNED= |
| EMAIL_USERNAME | string | 認証用のユーザー名。 | EMAIL_USERNAME= |
| EMAIL_PASSWORD | string | 認証用のパスワード。 | EMAIL_PASSWORD= |
| EMAIL_FROM_NAME | string | 送信者名 | EMAIL_FROM_NAME= |
| EMAIL_FROM | string | 送信元メールアドレス。必須。 | [email protected] |
Firebase CDN
参照: Firebase CDN Configuration
重要
- Firebaseをファイルストレージ戦略として使用している場合は、
librechat.yaml設定ファイルでfileStrategyまたはfileStrategiesをfirebaseに設定してください。librechat.yamlファイルの設定に関する詳細については、YAML設定ガイドを参照してください:カスタムエンドポイントと設定
| Key | Type | Description | Example |
|---|---|---|---|
| FIREBASE_API_KEY | string | FirebaseプロジェクトのAPIキー。 | FIREBASE_API_KEY= |
| FIREBASE_AUTH_DOMAIN | string | プロジェクトのFirebase Authドメイン。 | FIREBASE_AUTH_DOMAIN= |
| FIREBASE_PROJECT_ID | string | FirebaseプロジェクトのID。 | FIREBASE_PROJECT_ID= |
| FIREBASE_STORAGE_BUCKET | string | プロジェクトのFirebase Storageバケット。 | FIREBASE_STORAGE_BUCKET= |
| FIREBASE_MESSAGING_SENDER_ID | string | Firebase Cloud Messagingの送信者ID。 | FIREBASE_MESSAGING_SENDER_ID= |
| FIREBASE_APP_ID | string | プロジェクトのFirebase App ID。 | FIREBASE_APP_ID= |
Amazon S3 および CloudFront
参照: Amazon S3 Configuration および CloudFront with S3
重要
S3をファイルストレージ戦略として使用している場合は、librechat.yaml設定ファイルでfileStrategyまたはfileStrategiesを設定してください。CloudFrontを使用する場合でも、ストレージのオリジンとしてS3が必要です。
| Key | Type | Description | Example |
|---|---|---|---|
| AWS_ACCESS_KEY_ID | string | IAMユーザーのアクセスキーID。IRSAを使用する場合は任意です。 | AWS_ACCESS_KEY_ID=your_access_key_id |
| AWS_SECRET_ACCESS_KEY | string | IAMユーザーのシークレットアクセスキー。IRSAを使用する場合は任意です。 | AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| AWS_REGION | string | S3バケットが配置されているAWSリージョン。 | AWS_REGION=us-east-1 |
| AWS_BUCKET_NAME | string | ファイルストレージ用のS3バケット名。 | AWS_BUCKET_NAME=your_bucket_name |
| AWS_ENDPOINT_URL | string | カスタムAWSエンドポイントURL(オプション)。S3互換サービス用。https://a7g8.da.idrivee2-32.com のように、URLスキームを含めてください。 | # AWS_ENDPOINT_URL=https://your_endpoint_url |
| AWS_FORCE_PATH_STYLE | boolean | パス形式のURLを必要とするS3互換プロバイダー(例: MinIO、Hetzner、Backblaze B2)の場合はtrueに設定します。AWS S3では不要です。デフォルト: false。 | # AWS_FORCE_PATH_STYLE=false |
| CLOUDFRONT_KEY_PAIR_ID | string | CloudFront公開鍵ペアID。署名付きCookieおよび署名付きCloudFrontダウンロードURLに必要です。 | # CLOUDFRONT_KEY_PAIR_ID=K1234567890ABC |
| CLOUDFRONT_PRIVATE_KEY | string | CloudFrontプライベートキーPEM。署名付きCookieおよび署名付きCloudFrontダウンロードURLに必要です。このシークレットを注入する際は、PEMの改行を保持してください。 | # CLOUDFRONT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----" |
注: Kubernetes デプロイメント(EKS など)の場合、明示的な認証情報を提供する代わりに IRSA (IAM Roles for Service Accounts) を使用できます。その場合、必要なのは
AWS_REGIONとAWS_BUCKET_NAMEのみです。
Azure Blob Storage CDN
参照: Azure Blob Storage CDN Configuration
重要
Azure Blob Storageをファイルストレージ戦略として使用している場合は、librechat.yaml設定ファイル内のfileStrategyまたはfileStrategiesをazure_blobに設定してください。
| Key | Type | Description | Example |
|---|---|---|---|
| AZURE_STORAGE_CONNECTION_STRING | string | Azure Blob Storage接続文字列。Managed Identityを使用する場合は、これまたはAZURE_STORAGE_ACCOUNT_NAMEのいずれかを使用してください。 | AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=... |
| AZURE_STORAGE_ACCOUNT_NAME | string | Azure Storageアカウント名。マネージドID認証に使用します(接続文字列は設定しないでください)。 | # AZURE_STORAGE_ACCOUNT_NAME=yourAccountName |
| AZURE_STORAGE_PUBLIC_ACCESS | boolean | BLOBのパブリックアクセスを有効にします。デフォルト: false。 | AZURE_STORAGE_PUBLIC_ACCESS=false |
| AZURE_CONTAINER_NAME | string | ファイルストレージのコンテナ名。デフォルト: files。 | AZURE_CONTAINER_NAME=files |
注:
AZURE_STORAGE_CONNECTION_STRING(オプション A) またはAZURE_STORAGE_ACCOUNT_NAMEと Managed Identity (オプション B) のいずれかを使用してください。両方を同時に使用しないでください。
UI
ヘルプとFAQボタン
| Key | Type | Description | Example |
|---|---|---|---|
| HELP_AND_FAQ_URL | string | ヘルプおよびFAQのURL。空またはコメントアウトされている場合、ボタンは有効になります。ヘルプおよびFAQボタンを無効にするには、"/"に設定してください。 | HELP_AND_FAQ_URL=https://librechat.ai |
動作:
静的ファイルに対する Cache-Control ヘッダーを設定します。これらの設定は、NODE_ENV が production に設定されている場合にのみ有効になります。
キャッシュヘッダーを適切に設定することは、Webアプリケーションのパフォーマンスと効率を最適化するために不可欠です。ブラウザやCDNが静的ファイルのコピーを保持する期間を制御することで、サーバー負荷を大幅に軽減し、ページ読み込み時間を短縮し、全体的なユーザーエクスペリエンスを向上させることができます。
STATIC_CACHE_MAX_AGEのコメントアウトを解除すると、静的ファイルのmax-ageを変更できます。デフォルトでは4週間に設定されています。STATIC_CACHE_S_MAX_AGEのコメントアウトを解除すると、静的ファイルのs-maxageを変更できます。デフォルトでは1週間に設定されています。- これは、CDNやプロキシによって使用される_shared cache_(共有キャッシュ)のためのものです。
アプリのタイトルとフッター
| Key | Type | Description | Example |
|---|---|---|---|
| APP_TITLE | string | アプリのタイトル | APP_TITLE=LibreChat |
| CUSTOM_FOOTER | string | カスタムフッター | # CUSTOM_FOOTER="My custom footer" |
| TEMP_CHAT_RETENTION_HOURS | number | **非推奨:** 代わりに librechat.yaml 内の `interface.temporaryChatRetention` を使用してください。一時的なチャットを保持する時間(時間単位)。デフォルト: 720(30日間)。 | # TEMP_CHAT_RETENTION_HOURS=168 |
動作:
CUSTOM_FOOTERのコメントアウトを解除して、カスタムフッターを追加します。CUSTOM_FOOTERのコメントアウトを解除し、値を空にするとフッターが削除されます。- You can now add one or more links in the CUSTOM_FOOTER value using the following format:
[Anchor text](URL). Each link should be delineated with a pipe (|).
Markdownの例:
CUSTOM_FOOTER=[Link 1](http://example1.com) | [Link 2](http://example2.com)
バースデーハット
| Key | Type | Description | Example |
|---|---|---|---|
| SHOW_BIRTHDAY_ICON | boolean | 誕生日ハットのアイコンを表示する。 | # SHOW_BIRTHDAY_ICON=true |
動作:
- 2月11日(LibreChatの誕生日)になると、バースデーハットのアイコンが自動的に表示されます。
SHOW_BIRTHDAY_ICONをfalseに設定すると、バースデーハットを無効にできます。SHOW_BIRTHDAY_ICONをtrueに設定すると、常にバースデーハットを表示できます。
分析
Google Tag Manager
LibreChatは、分析のためにGoogle Tag Managerをサポートしています。LibreChatで有効にするには、Google Tag Manager IDが必要です。こちらのガイドに従ってGoogle Tag Manager IDを生成し、Google Analyticsを設定してください。その後、ANALYTICS_GTM_ID環境変数をあなたのGoogle Tag Manager IDに設定します。
注意: ANALYTICS_GTM_ID が設定されていない場合、Google Tag Manager は有効になりません。設定が正しくない場合、gtm.js へのリクエストが失敗しているのが確認されます。
| Key | Type | Description | Example |
|---|---|---|---|
| ANALYTICS_GTM_ID | string | Google Tag Manager ID | ANALYTICS_GTM_ID= |
会話のインポート
メモリの問題を防ぐため、会話ファイルのインポート制限を設定します。
| Key | Type | Description | Example |
|---|---|---|---|
| CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES | number | 会話インポート時の最大ファイルサイズ(バイト単位)。デフォルト: 0(制限なし)。例: 262144000(250 MiB)。 | # CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES=262144000 |
インラインファイルプレビュー
LibreChatがインラインプレビュー抽出をスキップしてダウンロードのみにする、生成ファイルの最大サイズを制御します。
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_PREVIEW_MAX_EXTRACT_BYTES | number | コード実行アーティファクトのインラインプレビューにおけるソースファイルの最大サイズ(バイト単位)。デフォルト: 2097152 (2 MiB)。レンダリングされたHTMLプレビューには別途上限が設けられているため、この値を下回るファイルであっても、非常にリッチなファイルはプレビューがスキップされる場合があります。 | # FILE_PREVIEW_MAX_EXTRACT_BYTES=2097152 |
MCP (Model Context Protocol)
拡張されたサーバー管理とOAuthサポートのために、Model Context Protocol設定を構成します。
MCP Server Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| MCP_OAUTH_ON_AUTH_ERROR | boolean | OAuthメタデータが見つからない場合、401/403レスポンスをOAuth要件として扱う。 | MCP_OAUTH_ON_AUTH_ERROR=true |
| MCP_OAUTH_DETECTION_TIMEOUT | number | OAuth検出リクエストのタイムアウト(ミリ秒)。 | MCP_OAUTH_DETECTION_TIMEOUT=5000 |
| MCP_OAUTH_HANDLING_TIMEOUT | number | LibreChatがMCP OAuthフローの完了を待機してからタイムアウトするまでの時間。デフォルト: 600000 ms(10分)。 | MCP_OAUTH_HANDLING_TIMEOUT=600000 |
| MCP_OAUTH_FLOW_TTL | number | MCP OAuthフローの状態が保持される期間。LibreChatはこれをMCP_OAUTH_HANDLING_TIMEOUT以上に制限するため、期限に近いコールバックも完了させることができます。デフォルト:900000 ms(15分)。 | MCP_OAUTH_FLOW_TTL=900000 |
| MCP_CONNECTION_CHECK_TTL | number | 高コストな検証を避けるため、このミリ秒数だけ接続ステータスのチェックをキャッシュします。 | MCP_CONNECTION_CHECK_TTL=30000 |
| MCP_TOOLS_LIST_MAX_PAGES | number | MCPサーバーがツールリストをページネーション(カーソルページネーション)する際に要求するツール/リストページの最大数。ページネーションループに制限を設け、動作不良のサーバーによってツール検出が停止するのを防ぎます。最小値は1に固定されています。デフォルト:50。 | MCP_TOOLS_LIST_MAX_PAGES=50 |
| MCP_SKIP_CODE_CHALLENGE_CHECK | boolean | コードチャレンジメソッドの検証をスキップします。trueに設定すると、.well-known/openid-configurationで通知されていない場合でも、強制的にS256コードチャレンジを使用します。 | MCP_SKIP_CODE_CHALLENGE_CHECK=false |
| MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES | number | 拒否される前に非GETストリーム可能HTTP MCPレスポンスで許可される最大バイト数。0に設定すると無効になります。デフォルト: 16777216 (16 MiB)。 | # MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES=16777216 |
| MCP_STREAMABLE_HTTP_MAX_LINE_BYTES | number | GET以外のストリーミング可能なHTTP MCPレスポンスにおいて、1つのSSE行で許可される最大バイト数。0に設定すると無効になります。デフォルト:5242880 (5 MiB)。 | # MCP_STREAMABLE_HTTP_MAX_LINE_BYTES=5242880 |
その他
Redis
Redisは、LibreChatに大幅なパフォーマンスの向上をもたらし、水平スケーリング機能を実現します。
注: Redis のサポートは実験的なものであり、使用中に問題が発生する可能性があります。
重要: Redisを使用している場合、LibreChatの設定を変更した後はキャッシュをフラッシュする必要があります。
詳細な設定と例については、以下を参照してください:Redis Configuration Guide
| Key | Type | Description | Example |
|---|---|---|---|
| USE_REDIS | boolean | キャッシュおよびセッションストレージにRedisを有効にします。trueの場合、REDIS_URIの指定が必須です。 | USE_REDIS=true |
| USE_REDIS_STREAMS | boolean | 再開可能なLLMストリームのためにRedisを有効にします。設定されていない場合はUSE_REDISの値がデフォルトとなります。ストリームにインメモリストレージを使用するにはfalseに設定してください。 | # USE_REDIS_STREAMS=true |
| REDIS_URI | string | Redis接続URI。シングルインスタンスの場合: `redis://host:port`。クラスターの場合: カンマ区切りのURI。 | REDIS_URI=redis://127.0.0.1:6379 |
| USE_REDIS_CLUSTER | boolean | 単一のURIを使用する際にRedisクラスターモードを有効にする | # USE_REDIS_CLUSTER="true" |
| REDIS_CLUSTER_SAFE_DELETE | boolean | 内部でキーをシャードするシングルエンドポイント管理型RedisサービスでCROSSSLOTエラーを回避するため、Redisキャッシュキーを個別に削除します。 | # REDIS_CLUSTER_SAFE_DELETE=true |
| REDIS_USERNAME | string | 認証用のRedisユーザー名。URIと両方指定された場合は、URI内のユーザー名よりも優先されます。 | # REDIS_USERNAME=your_redis_username |
| REDIS_PASSWORD | string | 認証用のRedisパスワード。両方が指定されている場合、URI内のパスワードよりも優先されます。 | # REDIS_PASSWORD=your_redis_password |
| REDIS_CA | string | rediss://プロトコルを使用する際のTLS検証用CA証明書へのパス。 | # REDIS_CA=/path/to/ca-cert.pem |
| REDIS_KEY_PREFIX | string | デプロイメント間の競合を防ぐための、すべてのRedisキーに対する静的プレフィックス。 | # REDIS_KEY_PREFIX=librechat-prod-v2 |
| REDIS_KEY_PREFIX_VAR | string | 動的プレフィックスを含む環境変数名(例:Cloud RunのK_REVISION)。REDIS_KEY_PREFIXとは併用できません。 | # REDIS_KEY_PREFIX_VAR=K_REVISION |
| REDIS_MAX_LISTENERS | number | Redisクライアントあたりの最大イベントリスナー数。メモリリークを防ぎます。デフォルト: 40。 | # REDIS_MAX_LISTENERS=40 |
| REDIS_PING_INTERVAL | number | 接続を維持するためのPing間隔(秒)。デフォルト:0(無効)。タイムアウトが発生する場合のみ設定してください。 | # REDIS_PING_INTERVAL=300 |
| FORCED_IN_MEMORY_CACHE_NAMESPACES | string | Redisが有効な場合でもインメモリストレージを強制する、カンマ区切りのキャッシュキー。 | # FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES |
| REDIS_USE_ALTERNATIVE_DNS_LOOKUP | boolean | AWS ElasticacheでのTLS接続用に代替のdnsLookupを有効にします。TLSを使用するElasticacheクラスターで必要です。 | # REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true |
注記:
USE_REDIS=trueの場合、REDIS_URIを指定する必要があります。指定しない場合、アプリケーションはエラーをスローします。- Redis Clusterモードの場合は、複数のURIを指定してください:
redis://node1:7001,redis://node2:7002,redis://node3:7003(クラスターモードは自動的に検出されます)。 - 内部でキーをシャードするシングルエンドポイントのマネージドRedisサービスを使用する場合は、
USE_REDIS_CLUSTER=falseを維持し、キャッシュのクリア時にCROSSSLOTエラーが発生する場合はREDIS_CLUSTER_SAFE_DELETE=trueを設定してください。 - TLS接続には
rediss://プロトコルを使用し、CAがパブリックに信頼されていない場合はREDIS_CAを設定してください。 REDIS_KEY_PREFIX_VARとREDIS_KEY_PREFIXは相互に排他的です。- AWS Elasticache with TLS: Elasticacheでは、TLS接続のために代替の dnsLookup を使用する必要がある場合があります。Elasticache with TLSを使用している場合は、
REDIS_USE_ALTERNATIVE_DNS_LOOKUP=trueを設定してください。詳細については、ioredis documentation を参照してください。
リーダー選出
Redisを使用したマルチインスタンスデプロイメント向けに、分散リーダー選出を設定します。リーダー選出により、スケジュールされたタスクなどの特定の操作を確実に1つのインスタンスのみが実行するようにします。
| Key | Type | Description | Example |
|---|---|---|---|
| LEADER_LEASE_DURATION | number | リーダーリースが期限切れになるまでの有効期間(秒)。デフォルト: 25。 | LEADER_LEASE_DURATION=25 |
| LEADER_RENEW_INTERVAL | number | リーダーがリースを更新する間隔(秒単位)。デフォルト: 10。 | LEADER_RENEW_INTERVAL=10 |
| LEADER_RENEW_ATTEMPTS | number | リース更新に失敗した際の最大リトライ回数。デフォルト: 3。 | LEADER_RENEW_ATTEMPTS=3 |
| LEADER_RENEW_RETRY_DELAY | number | リース更新時の再試行間隔(秒)。デフォルト: 0.5。 | LEADER_RENEW_RETRY_DELAY=0.5 |
注記:
- リーダー選出にはRedisを有効にする必要があります(
USE_REDIS=true)。 - これらの設定は、マルチインスタンスデプロイメントの場合にのみ関連します。
- リーダーシップを維持するためには、有効期限が切れる前にリーダーリースを更新する必要があります。
- 最大試行回数後にリース更新が失敗した場合、インスタンスはリーダーシップを放棄します。
このガイドはいかがでしたか?