> ## Documentation Index
> Fetch the complete documentation index at: https://dify-6c0370d8-codex-ee313-ce-unified-tracing.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 環境変数

> Dify セルフホストデプロイで使用されるすべての環境変数のリファレンス

> このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/self-host/deploy/configuration/environments) を参照してください。

Dify はデフォルト設定でそのまま動作します。デプロイをカスタマイズするには、関連するファイルの環境変数を編集します：

* **必須の起動値** は `docker/.env` にあります（デプロイ時に `docker/.env.example` からコピーして作成したファイル）。直接編集します。

* **オプションまたはプロバイダー固有の設定** は `docker/envs/` にテンプレートとして用意されています。デフォルト値を上書きするには、対応するテンプレートをコピーし（`.example` 拡張子を外す）、コピーを編集します。例：

  ```bash theme={null}
  cd dify/docker
  cp envs/vectorstores/milvus.env.example envs/vectorstores/milvus.env
  ```

`docker/.env` の値は、`docker/envs/*.env` ファイルの値より優先されます。

<Tip>
  Dify をアップグレードした後、各 `.env.example` を対応する `.env` と比較し、新規または変更された変数を確認してください。
</Tip>

## 共通変数

これらの URL 変数は、Dify の各サービスのアドレスを設定します。

Nginx 背後のシングルドメインデプロイ（デフォルトの Docker Compose 構成）の場合、これらは空のままで構いません。システムがリクエストから自動検出します。カスタムドメイン、マルチドメインデプロイ、またはリバースプロキシを使用する場合に設定してください。

### CONSOLE\_API\_URL

デフォルト値：（空）

Dify バックエンド API の公開 URL。OAuth ログイン（GitHub、Google）、Notion 連携、または OAuth を必要とするプラグインを使用する場合に設定してください。これらの機能は、認証後にユーザーをリダイレクトするための絶対コールバック URL を必要とします。また、セキュア（HTTPS のみ）Cookie を使用するかどうかも決定します。

例：`https://api.console.dify.ai`

### SERVER\_CONSOLE\_API\_URL

デフォルト値：`http://api:5001`

Web フロントエンドコンテナがサーバーサイドでリクエストを送信する際に使用する Console API のアドレスです。公開ドメインを経由せず、Docker 内部ネットワークから API に直接アクセスします。この変数は Web フロントエンドコンテナでのみ使用され、Python バックエンドには影響しません。ブラウザからのリクエストは引き続き `CONSOLE_API_URL` を使用します。空の場合は `CONSOLE_API_URL` にフォールバックします。API サービスの内部アドレスが異なる場合にのみ変更してください。

### CONSOLE\_WEB\_URL

デフォルト値：（空）

Dify コンソールフロントエンドの公開 URL。すべてのシステムメール（招待、パスワードリセット、通知）のリンク構築、および OAuth ログイン後のコンソールへのリダイレクトに使用されます。`CONSOLE_CORS_ALLOW_ORIGINS` が設定されていない場合、デフォルトの CORS 許可オリジンとしても機能します。

空の場合、メールリンクが正しく機能しません。シングルドメインデプロイでも、メール機能を使用する場合はこの変数を設定してください。

例：`https://console.dify.ai`

### SERVICE\_API\_URL

デフォルト値：（空）

Dify コンソールで Developer に表示される API Base URL。Developer が Dify API を呼び出すためにコードにコピーする URL です。空の場合、現在のリクエストから自動検出されます（例：`http://localhost/v1`）。サーバーが複数のアドレスでアクセス可能な場合、この変数を設定して一貫した URL を確保してください。

例：`https://api.dify.ai`

### APP\_API\_URL

デフォルト値：（空）

Web アプリフロントエンド（公開アプリ）のバックエンド API URL。この変数は Web フロントエンドコンテナでのみ使用され、Python バックエンドには影響しません。空の場合、Docker イメージのデフォルトは `http://127.0.0.1:5001`です。

例：`https://api.app.dify.ai`

### APP\_WEB\_URL

デフォルト値：（空）

公開 Web アプリのアクセス URL。ワークフローの **人間の入力ノード** に必要です。メール通知のフォームリンクは `{APP_WEB_URL}/form/{token}` 形式で構築されます。空の場合、人間の入力メールに有効なフォームリンクが含まれません。

例：`https://app.dify.ai`

### TRIGGER\_URL

デフォルト値：`http://localhost`

Webhook およびインテグレーショントリガーエンドポイントのアクセス URL。外部システムがこのアドレスを使用してワークフローを呼び出します。Dify はトリガーコールバック URL を `{TRIGGER_URL}/triggers/webhook/{id}` の形式で構築し、コンソールに表示します。

外部システムからトリガーが動作するようにするには、それらがアクセスできるパブリックドメインまたは IP アドレスを指定する必要があります。

### FILES\_URL

デフォルト値：（空；`CONSOLE_API_URL` にフォールバック）

ファイルプレビューおよびダウンロードリンクのベース URL です。Dify はすべてのファイル（アップロードされたドキュメント、ツール出力、ワークスペースロゴ）に対して、署名付きの時間制限 URL を生成します。生成された URL はフロントエンドとマルチモーダルモデルに提供されます。

ファイル処理プラグインを使用する場合、またはファイル URL を専用ドメインで使用したい場合に設定してください。`FILES_URL`と `CONSOLE_API_URL` の両方が空の場合、ファイルプレビューが機能しません。

例：`https://upload.example.com`または`http://<your-ip>:5001`

### INTERNAL\_FILES\_URL

デフォルト値：（空；`FILES_URL` にフォールバック）

Docker ネットワーク内のサービス間通信で使用されるファイルアクセス URL（例：プラグインデーモン、PDF/Word 抽出器）。これらの内部サービスは、Nginx やパブリックドメインを Nginx 経由する外部 `FILES_URL` にアクセスできない場合があります。

空の場合、内部サービスは `FILES_URL` を使用します。内部サービスが外部 URL にアクセスできない場合に設定してください。

例：`http://api:5001`

### FILES\_ACCESS\_TIMEOUT

デフォルト値：`300`（5 分）

署名付きファイル URL の有効期間（秒）。この時間を過ぎると URL は拒否され、ファイルを再リクエストする必要があります。長時間実行プロセスの場合は増加し、セキュリティを強化する場合は減少させてください。

### ENABLE\_COLLABORATION\_MODE

デフォルト値：`true`

ワークフローキャンバスのリアルタイム共同編集（同時編集、キャンバス上のコメント、@メンション）を有効化します。

`localhost` 以外のホストから Dify にアクセスする場合、`NEXT_PUBLIC_SOCKET_URL` をブラウザから到達できる WebSocket URL に設定してください（[CORS 設定](#cors-設定) を参照）。デフォルトの `ws://localhost` はローカル専用環境でのみ動作します。

共同編集機能を無効化するには、この値を `false` に設定します。Docker Compose を使用している場合は、`COMPOSE_PROFILES` から `collaboration` も削除してください。削除しないと、専用の `api_websocket` コンテナはトラフィックを受け取らないまま起動し続けます。

独自のリバースプロキシを使用する場合は `/socket.io/` パスで `Upgrade` および `Connection` ヘッダーを転送してください（同梱の nginx テンプレートにはこの設定が含まれています）。API を複数レプリカで運用する場合はスティッキーセッションが必要です。

大きなワークフローの共同編集中にエディタが切断と再接続を繰り返す場合は、`WEBSOCKET_MAX_HTTP_BUFFER_SIZE` を上げてください。

### システムエンコーディング

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `LANG` | `C.UTF-8` | システムロケール設定。UTF-8 エンコーディングを保証します。 |
| `LC_ALL` | `C.UTF-8` | すべてのカテゴリのロケールオーバーライド。 |
| `PYTHONIOENCODING` | `utf-8` | Python I/O エンコーディング。 |
| `UV_CACHE_DIR` | `/tmp/.uv-cache` | UV パッケージマネージャーのキャッシュディレクトリ。存在しないホームディレクトリによる権限問題を回避します。 |

## サーバー設定

### ログ

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `LOG_LEVEL` | `INFO` | 最小ログレベル。すべてのハンドラー（ファイル＋コンソール）のログ記録内容を制御します。レベル（低→高）：`DEBUG`、`INFO`、`WARNING`、`ERROR`、`CRITICAL`。 |
| `LOG_OUTPUT_FORMAT` | `text` | `text`はタイムスタンプ、レベル、スレッド、トレース ID を含む人間可読な形式を出力します。`json` はログ集約ツール（ELK、Datadog など）向けの構造化 JSON を出力します。 |
| `LOG_FILE` | `/app/logs/server.log` | ログファイルパス。設定するとファイルベースのログ記録が有効になり、自動ローテーションされます。ディレクトリは自動作成されます。空の場合はコンソールにのみ出力されます。 |
| `LOG_FILE_MAX_SIZE` | `20` | ローテーション前のログファイル最大サイズ（MB）。超過すると現在のファイルが `.1` にリネームされ、新しいファイルが作成されます。 |
| `LOG_FILE_BACKUP_COUNT` | `5` | 保持するローテーションログファイル数。デフォルト設定では最大 6 ファイル（現在のファイル＋5 バックアップ）が存在します。 |
| `LOG_DATEFORMAT` | `%Y-%m-%d %H:%M:%S` | テキスト形式ログのタイムスタンプフォーマット（strftime コード）。JSON 形式では無視されます。 |
| `LOG_TZ` | `UTC` | ログタイムスタンプのタイムゾーン（pytz 形式、例：`Asia/Shanghai`）。テキスト形式にのみ適用されます。JSON は常に UTC を使用します。Celery のタスクスケジューリングタイムゾーンも設定します。 |

### 一般

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `DEBUG` | `false` | 詳細ログを有効化：ワークフローノードの入出力、ツール実行の詳細、完全な LLM プロンプトとレスポンス、アプリ起動時間。ローカル開発に有用です。ログに機密データが出力される可能性があるため、本番環境では推奨しません。 |
| `FLASK_DEBUG` | `false` | 標準 Flask デバッグモードフラグ。Dify では積極的に使用されていません。`DEBUG` が主要な制御変数です。 |
| `ENABLE_REQUEST_LOGGING` | `false` | すべての HTTP リクエストに対してコンパクトなアクセスログ（`METHOD PATH STATUS DURATION TRACE_ID`）を記録します。`LOG_LEVEL`が `DEBUG` に設定されている場合、完全なリクエストとレスポンスボディも JSON 形式で記録されます。 |
| `DEPLOY_ENV` | `PRODUCTION` | Sentry と OpenTelemetry の監視データにタグ付けし、環境別にエラーとトレースをフィルタリングできるようにします。`X-Env` レスポンスヘッダーとしても送信されます。アプリケーションの動作は変更しません。 |
| `DEPLOYMENT_EDITION` | `COMMUNITY` | デプロイのエディション（`COMMUNITY`、`ENTERPRISE`、`CLOUD`）。デフォルトのまま使用してください。<br /><br />従来の `EDITION`、`ENTERPRISE_ENABLED`、`BILLING_ENABLED` を置き換えるものです。これらの旧変数は 1.17.0 以降無視されます。 |
| `MIGRATION_ENABLED` | `true` | `true`の場合、コンテナ起動時にデータベーススキーママイグレーション（`flask upgrade-db`）を自動実行します。Docker のみ。マイグレーションを別途実行する場合は `false`に設定してください。ソースコードからの起動では、`flask db upgrade` を手動で実行してください。 |
| `CHECK_UPDATE_URL` | `https://updates.dify.ai` | コンソールがこの URL で Dify の新バージョンを確認します。空に設定すると無効化されます。エアギャップ環境や外部 HTTP コールを防止したい場合に有用です。 |
| `OPENAI_API_BASE` | `https://api.openai.com/v1` | レガシー変数。Dify 自身のコードでは積極的に使用されていません。環境に存在する場合、OpenAI Python SDK に読み取られる可能性があります。 |

### SECRET\_KEY

デフォルト値：（`.env.example` にプリセット；本番環境では必ず置き換えてください）

セッション Cookie 署名、JWT 認証トークンに使用されます。さらに、ファイル URL 署名（HMAC-SHA256）とサードパーティ OAuth 資格情報の暗号化（AES-256）にも使用されます。初回起動前に、強力なキーを生成してください：

```bash theme={null}
openssl rand -base64 42
```

<Warning>
  デプロイ後にこのキーを変更すると、すべてのユーザーが即座にログアウトされ、すべてのファイル URL が無効になり、OAuth を使用するプラグイン連携が壊れます。暗号化された資格情報は復元できなくなります。
</Warning>

### KEY\_PROVIDER\_TYPE

デフォルト値：`local`

保存された資格情報（モデルプロバイダーの API キー、ツール資格情報などワークスペースの機密情報）を暗号化する、ワークスペースごとの鍵の保管場所を選択します。

* `local`：ワークスペースごとに RSA 鍵ペアを生成し、秘密鍵を `STORAGE_TYPE` のストレージバックエンドに保存します。

* `azure-keyvault`：各ワークスペースの RSA 鍵を Azure Key Vault に保管し、秘密鍵が Key Vault の外に出ることはありません。認証には `DefaultAzureCredential`（マネージド ID、環境変数、または Azure CLI ログイン）を使用します。

<Warning>
  プロバイダーは最初のワークスペースを作成する前に決めてください。一方のプロバイダーで暗号化した資格情報はもう一方では復号できません。資格情報が保存済みのデプロイで切り替えると、再入力するまで読み取れなくなります。
</Warning>

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `AZURE_KEYVAULT_VAULT_URL` | （空） | Key Vault インスタンスの URL。`KEY_PROVIDER_TYPE` が `azure-keyvault` の場合は必須で、未設定だと API サービスが起動しません。例：`https://your-vault-name.vault.azure.net` |
| `AZURE_KEYVAULT_KEY_SIZE` | `2048` | Dify が Key Vault にワークスペース用の鍵を新規作成する際の RSA 鍵長（ビット）。新規作成時のみ適用され、既存の鍵のサイズは変わりません。 |
| `AZURE_KEYVAULT_ROTATION_INTERVAL_DAYS` | （空） | 設定すると（最小 7）、新規作成されるワークスペース鍵に N 日ごとの Key Vault 自動ローテーションポリシーが付与されます。古いバージョンの鍵は使用可能なまま残るため、ローテーション前に暗号化した資格情報も再暗号化なしで復号できます。空のままにすると、ローテーションは Azure 側で手動管理します。 |

### INIT\_PASSWORD

デフォルト値：（空）

初回セットアップ時のオプションのセキュリティゲート。設定すると、`/install` ページで管理者アカウント作成前にこのパスワードの入力が必要になります。サーバーが公開されている場合の不正なセットアップを防止します。セットアップ完了後、この変数は効力を失います。最大長：30 文字。

### トークンとリクエスト制限

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `ACCESS_TOKEN_EXPIRE_MINUTES` | `60` | ログインセッションのアクセストークンの有効期間（分）。期限切れ後、ブラウザがリフレッシュトークンを使用してサイレントに更新します。ユーザーはログアウトされません。 |
| `REFRESH_TOKEN_EXPIRE_DAYS` | `30` | 資格情報を再入力せずにログイン状態を維持できる期間（日）。この期間内にアクセスがない場合、再ログインが必要です。 |
| `APP_MAX_EXECUTION_TIME` | `3600` | アプリ実行の最大実行時間（秒）。超過すると終了されます。`WORKFLOW_MAX_EXECUTION_TIME` と連動する外側の制限で、両方ともデフォルトは 1 時間です。これはアプリキューレベル、もう一方はワークフローエンジンレベルで適用されます。ワークフローにより多くの時間が必要な場合は、両方を増やしてください。<br /><br />Agent を利用する場合は、この 2 つの外側の制限を Agent の実行期限（`DIFY_AGENT_RUN_TIMEOUT_SECONDS`）以上に保ってください。下回ると Agent の実行が途中で打ち切られます。 |
| `APP_DEFAULT_ACTIVE_REQUESTS` | `0` | アプリごとのデフォルト同時リクエスト制限。UI でカスタム制限が設定されていないアプリに使用されます。`0`は無制限を意味します。有効な制限はこの値と `APP_MAX_ACTIVE_REQUESTS` の小さい方になります。 |
| `APP_MAX_ACTIVE_REQUESTS` | `0` | アプリごとのグローバル同時リクエスト上限。アプリのカスタム設定がこの値を超える場合、オーバーライドされます。`0` は無制限を意味します。 |
| `WEBSOCKET_MAX_HTTP_BUFFER_SIZE` | `10485760` | 共同編集用 WebSocket が受け付ける 1 メッセージの最大バイト数（デフォルトは 10 MiB）。大きなワークフローの保存時にグラフが上限を超え、切断が繰り返される場合は値を上げる。<br /><br />`/socket.io/` を処理する API プロセスに設定する。Docker Compose では `api_websocket` コンテナが該当する。 |

### コンテナ起動設定

Docker イメージまたは Docker Compose で起動する場合にのみ有効です。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `DIFY_BIND_ADDRESS` | `0.0.0.0` | API サーバーがバインドするネットワークインターフェース。`0.0.0.0`はすべてのインターフェースでリッスンします。`127.0.0.1` に設定するとローカルホストのみに制限されます。 |
| `DIFY_PORT` | `5001` | API サーバーのリッスンポート。 |
| `SERVER_WORKER_AMOUNT` | `1` | Gunicorn ワーカープロセス数。gevent（デフォルト）使用時は各ワーカーが greenlet で複数の同時接続を処理するため、通常 1 で十分です。同期ワーカーの場合は `(2 x CPUコア数) + 1`を使用してください。[参考ドキュメント](https://gunicorn.org/design/#how-many-workers)。 |
| `SERVER_WORKER_CLASS` | `gevent` | Gunicorn ワーカータイプ。デフォルト値のままにしてください。他の値は psycopg2 と gRPC のパッチを壊します。 |
| `SERVER_WORKER_CONNECTIONS` | `10` | ワーカーごとの最大同時接続数。非同期ワーカー（gevent）にのみ適用されます。高負荷時に接続拒否やレスポンス遅延が発生する場合は、この値を増加してください。 |
| `GUNICORN_TIMEOUT` | `360` | ワーカーがこの秒数以内に応答しない場合、Gunicorn はそのワーカーを終了して再起動します。ストリーミング LLM レスポンスに使用される長時間 SSE 接続をサポートするため、360（6 分）に設定されています。 |
| `API_WEBSOCKET_WORKER_AMOUNT` | `1` | Docker Compose のみ。リアルタイムコラボレーションを担う専用 `api_websocket` コンテナの Gunicorn ワーカー数です。コラボレーションのイベントは Redis 経由でワーカー間に同期されます。編集トラフィックが多く、1 つのワーカーが CPU コアを使い切る場合は安心して増やせます。 |
| `API_WEBSOCKET_WORKER_CLASS` | `geventwebsocket.gunicorn.workers.GeventWebSocketWorker` | Docker Compose のみ。専用の `api_websocket` コンテナのワーカークラスです。デフォルト値のままにしてください。他の値は WebSocket サポートを壊します。 |
| `API_WEBSOCKET_WORKER_CONNECTIONS` | `1000` | Docker Compose のみ。`api_websocket` ワーカー 1 つあたりが同時に受け付ける WebSocket 接続の最大数です。開いているワークフローエディタタブごとに 1 接続を使用するため、デフォルトではワーカー 1 つあたり最大 1000 の同時編集セッションを処理できます。それ以上が見込まれる場合は、値を増やすかワーカーを追加してください。 |
| `API_WEBSOCKET_GUNICORN_TIMEOUT` | `360` | Docker Compose のみ。`api_websocket` ワーカーがこの秒数内に応答しない場合、Gunicorn が再起動します。デフォルトの 360 秒（6 分）は長時間保持される WebSocket 接続に適しています。 |
| `CELERY_WORKER_CLASS` | （空；デフォルトは gevent） | Celery ワーカータイプ。`SERVER_WORKER_CLASS` と同じ gevent パッチ要件があります。変更は強く非推奨です。 |
| `CELERY_WORKER_AMOUNT` | `4` | Celery ワーカープロセス数。オートスケーリング無効時のみ使用されます。リソースの限られた VM では下げてください。スループットを柔軟に調整したい場合は、この値を上げるより `CELERY_AUTO_SCALE` を有効化するほうが適切です。 |
| `CELERY_AUTO_SCALE` | `false` | 動的オートスケーリングを有効化。有効時、Celery はキュー深度を監視し、`CELERY_MIN_WORKERS`から `CELERY_MAX_WORKERS` の間でワーカーを動的に生成/終了します。 |
| `CELERY_MAX_WORKERS` | （空；デフォルトは CPU 数） | オートスケーリング有効時の最大ワーカー数。 |
| `CELERY_MIN_WORKERS` | （空；デフォルトは 1） | オートスケーリング有効時の最小ワーカー数。 |
| `COMPOSE_WORKER_HEALTHCHECK_DISABLED` | `true` | Docker Compose による Celery Worker コンテナのヘルスチェックを無効化します。繁忙な Worker 上での `celery inspect ping` はコストが高いため、デフォルトで無効です。`false` に設定すると有効化されます。Docker Compose デプロイメントにのみ適用されます。 |
| `COMPOSE_WORKER_HEALTHCHECK_INTERVAL` | `30s` | Celery Worker ヘルスチェックの実行間隔。`COMPOSE_WORKER_HEALTHCHECK_DISABLED=false` の場合にのみ有効です。Docker Compose の期間書式（例：`30s`、`1m`）を受け付けます。 |
| `COMPOSE_WORKER_HEALTHCHECK_TIMEOUT` | `30s` | 1 回の Celery Worker ヘルスチェックのタイムアウト。`COMPOSE_WORKER_HEALTHCHECK_DISABLED=false` の場合にのみ有効です。 |

### MODE

デフォルト値：`worker`（worker サービスの env ファイルに設定された値。変数が未設定の場合、コンテナは API サーバーを起動）

`dify-api` イメージがコンテナ起動時に実行するプロセスを選択します。3 つの env サンプルファイルがそれぞれのサービス向けの値を設定しています：`worker.env.example` は `worker`、`api.env.example` は `api`、`worker-beat.env.example` は `beat`。指定できる値：

* `api`（空または認識されない値も同様）：API サーバー
* `worker`：Celery タスクコンシューマー
* `beat`：定期タスクディスパッチャー
* `job`：Flask CLI コマンドを 1 つ実行して終了
* `migration`：`MIGRATION_ENABLED=true` と併用し、データベース移行後に終了

付属の Compose ファイルはサービスごとに適切な値を設定済みのため、変更が必要なのは Kubernetes などのカスタム構成のみです。誤った値ではコンテナが別のプロセスを実行します。worker がないと、インデックス作成やメールのタスクが処理されずに滞留します。

### API ツール設定

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `API_TOOL_DEFAULT_CONNECT_TIMEOUT` | `10` | API ツールノードが外部 API を呼び出す際の TCP 接続確立の最大待機時間（秒）。 |
| `API_TOOL_DEFAULT_READ_TIMEOUT` | `60` | API ツールノードが外部 API からレスポンスデータを受信する最大待機時間（秒）。 |

### データベース設定

データベースはデフォルトで PostgreSQL を使用します。OceanBase、MySQL、seekdb もサポートされています。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `DB_TYPE` | `postgresql` | データベースタイプ。サポートされる値：`postgresql`、`mysql`、`oceanbase`、`seekdb`。TiDB などの MySQL 互換データベースは `mysql` を使用できます。 |
| `DB_USERNAME` | `postgres` | データベースユーザー名。接続文字列で URL エンコードされるため、特殊文字も安全に使用できます。 |
| `DB_PASSWORD` | `difyai123456` | データベースパスワード。接続文字列で URL エンコードされるため、`@`、`:`、`%` などの文字も安全に使用できます。 |
| `DB_HOST` | `db_postgres` | データベースサーバーのホスト名。 |
| `DB_PORT` | `5432` | データベースサーバーのポート。MySQL を使用する場合は `3306` に設定してください。 |
| `DB_DATABASE` | `dify` | データベース名。 |

#### コネクションプール

Dify がデータベースコネクションプールを管理する方法を制御します。デフォルト設定はほとんどのデプロイで問題なく動作します。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `SQLALCHEMY_POOL_SIZE` | `30` | プール内に保持する永続接続数。 |
| `SQLALCHEMY_MAX_OVERFLOW` | `10` | プールが満杯の場合に許可される追加の一時接続数。デフォルト設定では、最大 40 接続（30 + 10）が同時に存在できます。 |
| `SQLALCHEMY_POOL_RECYCLE` | `3600` | この秒数の後に接続をリサイクルし、古い接続を防止します。 |
| `SQLALCHEMY_POOL_TIMEOUT` | `30` | プールが枯渇した場合の接続待機時間。この時間内に接続が解放されない場合、リクエストはタイムアウトエラーで失敗します。 |
| `SQLALCHEMY_POOL_RESET_ON_RETURN` | `rollback` | 接続がプールに返却された際の SQLAlchemy の動作です。`rollback` は再利用前に未コミットのトランザクション状態をクリアし、`commit` はコミットします。 |
| `SQLALCHEMY_POOL_PRE_PING` | `false` | 使用前に軽量クエリで接続をテストします。「接続切断」エラーを防止しますが、わずかなレイテンシーが追加されます。不安定なネットワークの本番環境で推奨されます。 |
| `SQLALCHEMY_POOL_USE_LIFO` | `false` | 均等ローテーション（FIFO）の代わりに、最後に返却された接続を再利用します（LIFO）。LIFO はより少ない接続を「ウォーム」状態に保ち、オーバーヘッドを削減できます。 |
| `SQLALCHEMY_ECHO` | `false` | すべての SQL 文をログに出力します。クエリ問題のデバッグに有用です。 |

#### PostgreSQL パフォーマンスチューニング

これらは PostgreSQL コンテナへの起動引数として渡されます。Dify アプリケーションではなく、データベースサーバーの設定です。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `POSTGRES_MAX_CONNECTIONS` | `200` | 最大データベース接続数。API と Celery ワーカーが同時に接続プールを開くため、`too many connections` エラーを避けるには、少なくとも `SERVER_WORKER_AMOUNT × SERVER_WORKER_CONNECTIONS + CELERY_WORKER_AMOUNT + 余裕` の接続数を確保してください。[参考ドキュメント](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS) |
| `POSTGRES_SHARED_BUFFERS` | `128MB` | バッファ用共有メモリ。推奨値：利用可能メモリの 25%。[参考ドキュメント](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-SHARED-BUFFERS) |
| `POSTGRES_WORK_MEM` | `4MB` | データベースワーカーごとの作業メモリ。[参考ドキュメント](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM) |
| `POSTGRES_MAINTENANCE_WORK_MEM` | `64MB` | メンテナンス作業用に予約されるメモリ。[参考ドキュメント](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM) |
| `POSTGRES_EFFECTIVE_CACHE_SIZE` | `4096MB` | プランナーの有効キャッシュサイズの推定値。[参考ドキュメント](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-EFFECTIVE-CACHE-SIZE) |
| `POSTGRES_STATEMENT_TIMEOUT` | `0` | ステートメント終了前の最大実行時間（ミリ秒）。`0`はタイムアウトなし。[参考ドキュメント](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-STATEMENT-TIMEOUT) |
| `POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT` | `0` | トランザクション内アイドルセッションの最大時間（ミリ秒）。`0`はタイムアウトなし。[参考ドキュメント](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-IDLE-IN-TRANSACTION-SESSION-TIMEOUT) |

#### MySQL パフォーマンスチューニング

これらは MySQL コンテナへの起動引数として渡されます。Dify アプリケーションではなく、データベースサーバーの設定です。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `MYSQL_MAX_CONNECTIONS` | `1000` | 最大 MySQL 接続数。 |
| `MYSQL_INNODB_BUFFER_POOL_SIZE` | `512M` | InnoDB バッファプールサイズ。推奨値：専用 MySQL サーバーの利用可能メモリの 70-80%。[参考ドキュメント](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_buffer_pool_size) |
| `MYSQL_INNODB_LOG_FILE_SIZE` | `128M` | InnoDB ログファイルサイズ。[参考ドキュメント](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_log_file_size) |
| `MYSQL_INNODB_FLUSH_LOG_AT_TRX_COMMIT` | `2` | トランザクションコミット時の InnoDB ログフラッシュ方式。オプション：`0`（フラッシュなし）、`1`（フラッシュ＆同期）、`2`（OS キャッシュへフラッシュ）。[参考ドキュメント](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit) |

### Redis 設定

これらの変数を設定して、Dify を Redis インスタンスに接続します。Dify はスタンドアロン（デフォルト）、Sentinel、Cluster の 3 つのデプロイモードをサポートしています。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `REDIS_HOST` | `redis` | Redis サーバーのホスト名。スタンドアロンモードでのみ使用されます。Sentinel または Cluster モード有効時は無視されます。 |
| `REDIS_PORT` | `6379` | Redis サーバーのポート。スタンドアロンモードでのみ使用されます。 |
| `REDIS_USERNAME` | （空） | Redis 6.0+ ACL ユーザー名。すべてのモード（スタンドアロン、Sentinel、Cluster）に適用されます。 |
| `REDIS_PASSWORD` | `difyai123456` | Redis 認証パスワード。Cluster モードの場合は、代わりに `REDIS_CLUSTERS_PASSWORD` を使用してください。 |
| `REDIS_DB` | `0` | Redis データベース番号（0-15）。スタンドアロンおよび Sentinel モードにのみ適用されます。Celery のデータベース（`CELERY_BROKER_URL` で設定；デフォルトは DB 1）と衝突しないようにしてください。 |
| `REDIS_KEY_PREFIX` | （空） | Redis キーに適用されるグローバルプレフィックス。Pub/Sub チャネル、Redis Streams 名、Celery のキューと結果バックエンドキーにも適用されます。Dify はプレフィックスとキーの間にコロンを自動挿入します。たとえば `staging` を設定すると、実際のキーは `staging:session:abc` の形式になります。複数の Dify インスタンスが同一の Redis を共有する場合（例：staging と production）、キー衝突の回避に有効です。空のままにすると、プレフィックスなしのデフォルト動作を維持します。既存のデプロイで後から有効化すると、以前のプレフィックス（または空）で書き込まれたキーは参照できなくなります。 |
| `REDIS_USE_SSL` | `false` | Redis 接続の SSL/TLS を有効化。Sentinel プロトコルには自動適用されません。 |
| `REDIS_MAX_CONNECTIONS` | （空） | Redis プール内の最大接続数。空のままでライブラリのデフォルトを使用します。必要に応じて Redis サーバーの `maxclients` に合わせて設定してください。 |
| `REDIS_KEEPALIVE` | `true` | Redis 接続で TCP keepalive を有効にします。ファイアウォールやロードバランサーに静かに切断されたアイドル接続を検知し、次回使用時に失敗する前に再確立します。 |
| `REDIS_KEEPALIVE_IDLE` | `30` | 最初の TCP keepalive プローブを送信するまでの接続アイドル秒数（`TCP_KEEPIDLE`）。`REDIS_KEEPALIVE=true` のときに適用されます。 |
| `REDIS_KEEPALIVE_INTERVAL` | `10` | TCP keepalive プローブの送信間隔（秒）（`TCP_KEEPINTVL`）。`REDIS_KEEPALIVE=true` のときに適用されます。 |
| `REDIS_KEEPALIVE_COUNT` | `10` | 接続が切断されたと判断するまでに許容する未確認プローブの回数（`TCP_KEEPCNT`）。`REDIS_KEEPALIVE=true` のときに適用されます。 |

#### Redis SSL 設定

`REDIS_USE_SSL=true`の場合にのみ適用されます。Celery broker の URL が `rediss://` スキームを使用する場合、これらの設定は Celery broker にも適用されます。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `REDIS_SSL_CERT_REQS` | `CERT_NONE` | 証明書検証レベル：`CERT_NONE`（検証なし）、`CERT_OPTIONAL`（オプション検証）、または `CERT_REQUIRED`（完全検証）。 |
| `REDIS_SSL_CA_CERTS` | （空） | Redis サーバー検証用の CA 証明書ファイルパス。 |
| `REDIS_SSL_CERTFILE` | （空） | 相互 TLS 認証用のクライアント証明書パス。 |
| `REDIS_SSL_KEYFILE` | （空） | 相互 TLS 認証用のクライアント秘密鍵パス。 |

#### Redis Sentinel モード

Sentinel は高可用性のための自動マスター検出とフェイルオーバーを提供します。Cluster モードとは相互に排他的です。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `REDIS_USE_SENTINEL` | `false` | Redis Sentinel モードを有効化。有効時、`REDIS_HOST`/`REDIS_PORT` は無視されます。Dify は Sentinel ノードに接続し、現在のマスターを問い合わせます。 |
| `REDIS_SENTINELS` | （空） | Sentinel ノードのアドレス。形式：`<ip1>:<port1>,<ip2>:<port2>,<ip3>:<port3>`。これらは Sentinel インスタンスであり、Redis サーバーではありません。 |
| `REDIS_SENTINEL_SERVICE_NAME` | （空） | Sentinel が監視する論理サービス名（`sentinel.conf`で設定）。Dify は `master_for(service_name)` を呼び出して現在のマスターを検出します。 |
| `REDIS_SENTINEL_USERNAME` | （空） | Sentinel ノードの認証ユーザー名。`REDIS_USERNAME` とは別です。後者は Redis マスター/レプリカの認証に使用されます。 |
| `REDIS_SENTINEL_PASSWORD` | （空） | Sentinel ノードの認証パスワード。`REDIS_PASSWORD` とは別です。 |
| `REDIS_SENTINEL_SOCKET_TIMEOUT` | `0.1` | Sentinel ノードとの通信の Socket タイムアウト（秒）。デフォルトの 0.1 秒は高速なローカルネットワークを想定しています。クラウド/WAN デプロイでは、断続的なタイムアウトを防止するために 1.0-5.0 秒に増加してください。 |

#### Redis Cluster モード

Cluster モードは複数の Redis ノード間での自動シャーディングを提供します。Sentinel モードとは相互に排他的です。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `REDIS_USE_CLUSTERS` | `false` | Redis Cluster モードを有効化。 |
| `REDIS_CLUSTERS` | （空） | Cluster ノード。形式：`<ip1>:<port1>,<ip2>:<port2>,<ip3>:<port3>` |
| `REDIS_CLUSTERS_PASSWORD` | （空） | Redis Cluster のパスワード。 |

#### Redis 接続の堅牢性設定

これらの変数は、Redis 接続のクライアント側リトライ、タイムアウト、ヘルスチェックの動作を調整します。デフォルト値は控えめに設定されています。ネットワークレイテンシが高いクラウド/WAN デプロイでは、タイムアウト値を増やしてください。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `REDIS_RETRY_RETRIES` | `3` | 一時的な障害（`ConnectionError`、`TimeoutError`、`socket.timeout`）発生時の、Redis コマンドごとの最大リトライ回数。`0` に設定するとリトライを無効化します。ジッター付き指数バックオフを使用します。 |
| `REDIS_RETRY_BACKOFF_BASE` | `1.0` | リトライ間の指数バックオフのベース遅延（秒）。 |
| `REDIS_RETRY_BACKOFF_CAP` | `10.0` | リトライ間のバックオフ遅延の上限（秒）。 |
| `REDIS_SOCKET_TIMEOUT` | `5.0` | Redis 読み取り/書き込み操作の Socket タイムアウト（秒）。高負荷下で断続的なコマンドタイムアウトが発生する場合は増やしてください。 |
| `REDIS_SOCKET_CONNECT_TIMEOUT` | `5.0` | Redis 接続確立の Socket タイムアウト（秒）。 |
| `REDIS_HEALTH_CHECK_INTERVAL` | `30` | アイドル接続に対するクライアント側ヘルスチェックの間隔（秒）。`0`に設定すると無効化します。Cluster モードでは適用されません（`redis-py` が該当パラメータを静かに削除します）。 |

### Celery 設定

データセットインデックス作成、メール送信、定期ジョブに使用されるバックグラウンドタスクキューを設定します。

### CELERY\_BROKER\_URL

デフォルト値：`redis://:difyai123456@redis:6379/1`

Celery メッセージブローカーの Redis 接続 URL。

直接接続形式：

```text theme={null}
redis://<redis_username>:<redis_password>@<redis_host>:<redis_port>/<redis_database>
```

Sentinel モード形式（複数ノードはセミコロンで区切り）：

```text theme={null}
sentinel://<redis_username>:<redis_password>@<sentinel_host>:<sentinel_port>/<redis_database>
```

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `CELERY_BACKEND` | `redis` | Celery がタスク結果を保存する場所。オプション：`redis`（高速、インメモリ）または `database`（メインデータベースに保存）。 |
| `BROKER_USE_SSL` | `false` | `CELERY_BROKER_URL`が `rediss://` スキームを使用する場合に自動有効化。Redis SSL 証明書設定を broker 接続に適用します。 |
| `CELERY_USE_SENTINEL` | `false` | Celery broker の Redis Sentinel モードを有効化。 |
| `CELERY_SENTINEL_MASTER_NAME` | （空） | Sentinel サービス名（Master Name）。 |
| `CELERY_SENTINEL_PASSWORD` | （空） | Sentinel 認証パスワード。`REDIS_SENTINEL_PASSWORD` とは別です。キャッシュとタスクキューで異なる Sentinel クラスターを使用する場合に異なる値を設定できます。 |
| `CELERY_SENTINEL_SOCKET_TIMEOUT` | `0.1` | Sentinel への接続タイムアウト（秒）。 |
| `CELERY_TASK_ANNOTATIONS` | `null` | 特定のタスクにランタイム設定（例：レート制限）を適用します。形式：JSON 辞書。例：`{"tasks.add": {"rate_limit": "10/s"}}`。ほとんどのユーザーはこの設定を必要としません。 |

### CORS 設定

フロントエンドのクロスドメインアクセスポリシーを制御します。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `WEB_API_CORS_ALLOW_ORIGINS` | `*` | Web API へのクロスオリジンリクエストの許可オリジン。例：`https://dify.app` |
| `CONSOLE_CORS_ALLOW_ORIGINS` | `*` | コンソール API へのクロスオリジンリクエストの許可オリジン。設定されていない場合、`CONSOLE_WEB_URL` にフォールバックします。 |
| `COOKIE_DOMAIN` | （空） | フロントエンドとバックエンドが異なるサブドメインで実行される場合、共有トップレベルドメイン（例：`example.com`）に設定します。これにより認証 Cookie をサブドメイン間で共有できます。空の場合、Cookie は最もセキュアな `__Host-` プレフィックスを使用し、単一ドメインにロックされます。 |
| `NEXT_PUBLIC_COOKIE_DOMAIN` | （空） | クロスサブドメイン Cookie のフロントエンドフラグ。`1`（または任意の非空値）に設定して有効化します。実際のドメインはバックエンドで `COOKIE_DOMAIN` から読み取られます。 |
| `NEXT_PUBLIC_SOCKET_URL` | `ws://localhost` | リアルタイム共同編集のためのブラウザ側 WebSocket エンドポイント。スキーム + ホスト + ポートのみを指定します（パス `/socket.io/` は固定）。`http(s)://` を `ws(s)://` に置き換えてください。例：`wss://dify.example.com`。デフォルトは同梱 nginx の 80 番ポートに対応します。ランタイムで適用されるため、コンテナ再起動で反映されます。 |
| `NEXT_PUBLIC_BATCH_CONCURRENCY` | `5` | フロントエンドのみ。バッチ操作時に UI が発行する同時 API コール数を制御します。 |

### Dify CLI とプログラマティック API

`/openapi/v1/*` は、[Dify CLI](/ja/cli/quick-start)（`difyctl`）などのクライアントが OAuth ベアラートークンで利用する、ユーザー単位のプログラマティック API です。デフォルトでは無効です。CLI を使うには `OPENAPI_ENABLED` と `ENABLE_OAUTH_BEARER` の両方を `true` にします。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `OPENAPI_ENABLED` | `false` | Dify CLI（`difyctl`）が利用する `/openapi/v1/*` プログラマティック API のマスタースイッチ。<br />`false` の間はすべての `/openapi/v1/*` エンドポイントが 404 を返し、`difyctl login` を開始できません。`ENABLE_OAUTH_BEARER` と併せて有効にします。 |
| `ENABLE_OAUTH_BEARER` | `false` | `/openapi/v1/*` の OAuth ベアラー認証を有効にし、デバイスフローのログイン承認も制御します。<br />`OPENAPI_ENABLED=true` でもこれが `false` だと、`difyctl login` は承認時に 503 で失敗します。CLI には両方の `true` が必要です。 |
| `OPENAPI_KNOWN_CLIENT_IDS` | `difyctl` | デバイスフローのログインを開始できる OAuth クライアント ID（カンマ区切り）。<br />ID を追加すればコード変更なしで他のクライアントを許可できます。`difyctl` を外すと CLI ログインが `unsupported_client` で失敗します。 |
| `OPENAPI_CORS_ALLOW_ORIGINS` | （空） | `/openapi/v1/*` をクロスオリジンで呼び出せるブラウザオリジン（カンマ区切り）。<br />空の場合はすべて拒否します。標準デプロイでは影響がなく、CLI などブラウザ以外のクライアントは CORS の対象外です。 |
| `OPENAPI_RATE_LIMIT_PER_TOKEN` | `60` | OAuth ベアラートークンごとの `/openapi/v1/*` に対する 1 分あたりのリクエスト上限。Redis 経由でレプリカ間に共有されます。<br />超過すると 429 と `Retry-After` ヘッダーを返します。`0` で無効化できます。 |
| `DEVICE_FLOW_APPROVE_RATE_LIMIT_PER_HOUR` | `10` | 1 つのブラウザセッションが 1 時間に承認・拒否できるデバイスフローログインの回数。<br />超えると承認が 429 を返し、ウィンドウのリセット待ちになります。`0` は指定できません。 |

### ファイルストレージ設定

Dify がアップロードファイル、データセットドキュメント、暗号化キーを保存する場所を設定します。各ストレージタイプには独自の資格情報変数があります。使用するもののみを設定してください。

### STORAGE\_TYPE

デフォルト値：`opendal`

ファイルストレージバックエンドを選択します。サポートされる値：`opendal`、`s3`、`azure-blob`、`aliyun-oss`、`google-storage`、`huawei-obs`、`volcengine-tos`、`tencent-cos`、`baidu-obs`、`oci-storage`、`supabase`、`clickzetta-volume`、`local`（非推奨；内部的に OpenDAL のファイルシステムスキームを使用）。

<AccordionGroup>
  <Accordion title="OpenDAL（デフォルト）">
    [Apache OpenDAL](https://opendal.apache.org/) を使用するデフォルトのストレージバックエンド。多くのストレージサービスをサポートする統一インターフェースです。Dify は `OPENDAL_<SCHEME>_*` に一致する環境変数を自動スキャンし、OpenDAL に渡します。例えば、`OPENDAL_SCHEME=s3` の場合、`OPENDAL_S3_ACCESS_KEY_ID`、`OPENDAL_S3_SECRET_ACCESS_KEY` などを設定します。

    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `OPENDAL_SCHEME` | `fs` | 使用するストレージサービス。例：`fs`（ローカルファイルシステム）、`s3`、`gcs`、`azblob`。 |

    デフォルトの `fs` スキームの場合：

    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `OPENDAL_FS_ROOT` | `storage` | ローカルファイルシステムストレージのルートディレクトリ。存在しない場合は自動作成されます。 |

    利用可能なすべてのスキームとその設定オプションについては、 [OpenDAL サービスドキュメント](https://github.com/apache/opendal/tree/main/core/services) を参照してください。
  </Accordion>

  <Accordion title="S3">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `S3_ENDPOINT` | （空） | S3 エンドポイントアドレス。AWS 以外の S3 互換サービス（MinIO など）では必須です。 |
    | `S3_REGION` | `us-east-1` | S3 リージョン。 |
    | `S3_BUCKET_NAME` | `difyai` | S3 バケット名。 |
    | `S3_ACCESS_KEY` | （空） | S3 Access Key。IAM ロール使用時は不要です。 |
    | `S3_SECRET_KEY` | （空） | S3 Secret Key。IAM ロール使用時は不要です。 |
    | `S3_ADDRESS_STYLE` | `auto` | S3 アドレッシングスタイル：`auto`、`path`、または `virtual`。バケット名を URL パスに含める（`path`）か、サブドメインとして使用する（`virtual`）かを制御します。`S3_USE_AWS_MANAGED_IAM` が `false` の場合のみ有効です。 |
    | `S3_USE_AWS_MANAGED_IAM` | `false` | 明示的な access key や secret key の代わりに AWS IAM ロールを使用します。対象は EC2 インスタンスプロファイルや ECS タスクロールです。有効時はインスタンスメタデータから資格情報を自動検出します。 |
  </Accordion>

  <Accordion title="Azure Blob">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `AZURE_BLOB_ACCOUNT_NAME` | `difyai` | Azure ストレージアカウント名。 |
    | `AZURE_BLOB_ACCOUNT_KEY` | `difyai` | Azure ストレージアカウントキー。 |
    | `AZURE_BLOB_CONTAINER_NAME` | `difyai-container` | Azure Blob コンテナ名。 |
    | `AZURE_BLOB_ACCOUNT_URL` | `https://<your_account_name>.blob.core.windows.net` | Azure Blob アカウント URL。 |
  </Accordion>

  <Accordion title="Google Cloud Storage">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `GOOGLE_STORAGE_BUCKET_NAME` | （空） | Google Cloud Storage バケット名。 |
    | `GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64` | （空） | Base64 エンコードされたサービスアカウント JSON キー。 |
  </Accordion>

  <Accordion title="Alibaba Cloud OSS">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `ALIYUN_OSS_BUCKET_NAME` | （空） | OSS バケット名。 |
    | `ALIYUN_OSS_ACCESS_KEY` | （空） | OSS access key。 |
    | `ALIYUN_OSS_SECRET_KEY` | （空） | OSS secret key。 |
    | `ALIYUN_OSS_ENDPOINT` | `https://oss-ap-southeast-1-internal.aliyuncs.com` | OSS エンドポイント。[リージョンとエンドポイントのリファレンス](https://www.alibabacloud.com/help/en/oss/user-guide/regions-and-endpoints)。 |
    | `ALIYUN_OSS_REGION` | `ap-southeast-1` | OSS リージョン。 |
    | `ALIYUN_OSS_AUTH_VERSION` | `v4` | OSS 認証バージョン。 |
    | `ALIYUN_OSS_PATH` | （空） | オブジェクトパスプレフィックス。`/`で始めないでください。[参考ドキュメント](https://www.alibabacloud.com/help/en/oss/support/0016-00000005)。 |
    | `ALIYUN_CLOUDBOX_ID` | （空） | CloudBox ベースの OSS デプロイ用の CloudBox ID。 |
  </Accordion>

  <Accordion title="Tencent Cloud COS">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `TENCENT_COS_BUCKET_NAME` | （空） | COS バケット名。 |
    | `TENCENT_COS_SECRET_KEY` | （空） | COS secret key。 |
    | `TENCENT_COS_SECRET_ID` | （空） | COS secret ID。 |
    | `TENCENT_COS_REGION` | （空） | COS リージョン（例：`ap-guangzhou`）。[参考ドキュメント](https://cloud.tencent.com/document/product/436/6224)。 |
    | `TENCENT_COS_SCHEME` | （空） | COS アクセス用プロトコル（`http`または `https`）。 |
    | `TENCENT_COS_CUSTOM_DOMAIN` | （空） | COS アクセス用カスタムドメイン。 |
  </Accordion>

  <Accordion title="OCI Object Storage">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `OCI_ENDPOINT` | （空） | OCI エンドポイント URL。 |
    | `OCI_BUCKET_NAME` | （空） | OCI バケット名。 |
    | `OCI_ACCESS_KEY` | （空） | OCI access key。 |
    | `OCI_SECRET_KEY` | （空） | OCI secret key。 |
    | `OCI_REGION` | `us-ashburn-1` | OCI リージョン。 |
  </Accordion>

  <Accordion title="Huawei OBS">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `HUAWEI_OBS_BUCKET_NAME` | （空） | OBS バケット名。 |
    | `HUAWEI_OBS_ACCESS_KEY` | （空） | OBS access key。 |
    | `HUAWEI_OBS_SECRET_KEY` | （空） | OBS secret key。 |
    | `HUAWEI_OBS_SERVER` | （空） | OBS サーバー URL。[参考ドキュメント](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0500.html)。 |
    | `HUAWEI_OBS_PATH_STYLE` | `false` | 仮想ホスト型の代わりにパス型 URL を使用。 |
  </Accordion>

  <Accordion title="Volcengine TOS">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `VOLCENGINE_TOS_BUCKET_NAME` | （空） | TOS バケット名。 |
    | `VOLCENGINE_TOS_ACCESS_KEY` | （空） | TOS access key。 |
    | `VOLCENGINE_TOS_SECRET_KEY` | （空） | TOS secret key。 |
    | `VOLCENGINE_TOS_ENDPOINT` | （空） | TOS エンドポイント URL。[参考ドキュメント](https://www.volcengine.com/docs/6349/107356)。 |
    | `VOLCENGINE_TOS_REGION` | （空） | TOS リージョン（例：`cn-guangzhou`）。 |
  </Accordion>

  <Accordion title="Baidu OBS">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `BAIDU_OBS_BUCKET_NAME` | （空） | Baidu OBS バケット名。 |
    | `BAIDU_OBS_ACCESS_KEY` | （空） | Baidu OBS access key。 |
    | `BAIDU_OBS_SECRET_KEY` | （空） | Baidu OBS secret key。 |
    | `BAIDU_OBS_ENDPOINT` | （空） | Baidu OBS サーバー URL。 |
  </Accordion>

  <Accordion title="Supabase">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `SUPABASE_BUCKET_NAME` | （空） | Supabase ストレージバケット名。 |
    | `SUPABASE_API_KEY` | （空） | Supabase API キー。 |
    | `SUPABASE_URL` | （空） | Supabase サーバー URL。 |
  </Accordion>

  <Accordion title="ClickZetta Volume">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `CLICKZETTA_VOLUME_TYPE` | `user` | ボリュームタイプ。オプション：`user`（個人/小規模チーム）、`table`（エンタープライズマルチテナント）、`external`（データレイク統合）。 |
    | `CLICKZETTA_VOLUME_NAME` | （空） | 外部ボリューム名（`TYPE=external` の場合のみ必要）。 |
    | `CLICKZETTA_VOLUME_TABLE_PREFIX` | `dataset_` | テーブルボリュームのテーブルプレフィックス（`TYPE=table` の場合のみ使用）。 |
    | `CLICKZETTA_VOLUME_DIFY_PREFIX` | `dify_km` | 他のアプリから分離するための Dify ファイルディレクトリプレフィックス。 |

    ClickZetta Volume は、ベクトルデータベースセクションで設定された `CLICKZETTA_*` 接続パラメータを再利用します。
  </Accordion>
</AccordionGroup>

#### アーカイブストレージ

ワークフロー実行ログをアーカイブするための独立した S3 互換ストレージ。`archive-workflow-runs` メンテナンスコマンドが、指定した期限より古いワークフロー実行を月単位の Parquet バンドルにまとめます。アーカイブから生成される CSV エクスポートはエクスポート用バケットに一時保存されます。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `ARCHIVE_STORAGE_ENABLED` | `false` | ワークフローログアーカイブ用のアーカイブストレージを有効化。 |
| `ARCHIVE_STORAGE_ENDPOINT` | （空） | S3 互換エンドポイント URL。 |
| `ARCHIVE_STORAGE_ARCHIVE_BUCKET` | （空） | アーカイブされたワークフロー実行ログ用バケット。 |
| `ARCHIVE_STORAGE_EXPORT_BUCKET` | （空） | アーカイブされたログから生成される一時的な CSV エクスポート ZIP 用バケット。バケットのライフサイクルルールで自動削除できます。 |
| `ARCHIVE_STORAGE_ACCESS_KEY` | （空） | Access key。 |
| `ARCHIVE_STORAGE_SECRET_KEY` | （空） | Secret key。 |
| `ARCHIVE_STORAGE_REGION` | `auto` | ストレージリージョン。 |

### ベクトルデータベース設定

ナレッジベースのエンベディング保存と類似検索に使用するベクトルデータベースを設定します。各プロバイダーには独自の資格情報変数があります。使用するもののみを設定してください。

### VECTOR\_STORE

デフォルト値：`weaviate`

ベクトルデータベースバックエンドを選択します。データセットに既にインデックスがある場合、データセットに保存されたタイプがこの設定より優先されます。Docker Compose でプロバイダーを切り替える場合、`COMPOSE_PROFILES` がこの値に基づいて対応するコンテナを自動起動します。

サポートされる値：`weaviate`、`oceanbase`、`seekdb`、`qdrant`、`milvus`、`myscale`、`relyt`、`pgvector`、`pgvecto-rs`、`chroma`、`opensearch`、`oracle`、`tencent`、`elasticsearch`、`elasticsearch-ja`、`analyticdb`、`couchbase`、`vikingdb`、`opengauss`、`tablestore`、`vastbase`、`tidb`、`tidb_on_qdrant`、`baidu`、`lindorm`、`huawei_cloud`、`upstash`、`matrixone`、`clickzetta`、`alibabacloud_mysql`、`iris`、`hologres`。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `VECTOR_INDEX_NAME_PREFIX` | `Vector_index` | ベクトルデータベースのコレクション名に追加されるプレフィックス。複数の Dify デプロイでベクトルデータベースインスタンスを共有する場合に変更してください。 |

<AccordionGroup>
  <Accordion title="Weaviate">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `WEAVIATE_ENDPOINT` | `http://weaviate:8080` | Weaviate REST API エンドポイント。 |
    | `WEAVIATE_API_KEY` | （空） | Weaviate 認証用 API キー。 |
    | `WEAVIATE_GRPC_ENDPOINT` | `grpc://weaviate:50051` | 高性能バイナリプロトコル用の別の gRPC エンドポイント。バッチ操作が大幅に高速になります。未設定の場合、HTTP エンドポイントから推測されます。 |
    | `WEAVIATE_TOKENIZATION` | `word` | テキストフィールドのトークン化方法。オプション：`word`（空白と句読点で分割）、`whitespace`（空白のみで分割）、`character`（文字レベル、CJK 言語に適しています）。 |
  </Accordion>

  <Accordion title="OceanBase / seekdb">
    seekdb は OceanBase のライト版であり、同じ接続設定を共有します。

    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `OCEANBASE_VECTOR_HOST` | `oceanbase` | ホスト名または IP アドレス。 |
    | `OCEANBASE_VECTOR_PORT` | `2881` | ポート番号。 |
    | `OCEANBASE_VECTOR_USER` | `root@test` | データベースユーザー名。 |
    | `OCEANBASE_VECTOR_PASSWORD` | `difyai123456` | データベースパスワード。 |
    | `OCEANBASE_VECTOR_DATABASE` | `test` | データベース名。 |
    | `OCEANBASE_CLUSTER_NAME` | `difyai` | クラスター名（Docker デプロイのみ）。 |
    | `OCEANBASE_MEMORY_LIMIT` | `6G` | OceanBase のメモリ制限（Docker デプロイのみ）。 |
    | `SEEKDB_MEMORY_LIMIT` | `2G` | seekdb のメモリ制限（Docker デプロイのみ）。 |
    | `OCEANBASE_ENABLE_HYBRID_SEARCH` | `false` | ベクトル検索と併用する BM25 クエリ用の全文インデックスを有効化。OceanBase >= 4.3.5.1 が必要です。有効化後にコレクションを再作成する必要があります。 |
    | `OCEANBASE_FULLTEXT_PARSER` | `ik` | 全文パーサー。組み込み：`ngram`、`beng`、`space`、`ngram2`、`ik`。外部（プラグインが必要）：`japanese_ftparser`、`thai_ftparser`。 |
  </Accordion>

  <Accordion title="Qdrant">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `QDRANT_URL` | `http://qdrant:6333` | Qdrant エンドポイントアドレス。 |
    | `QDRANT_API_KEY` | `difyai123456` | Qdrant 用 API キー。 |
    | `QDRANT_CLIENT_TIMEOUT` | `20` | クライアントタイムアウト（秒）。 |
    | `QDRANT_GRPC_ENABLED` | `false` | gRPC 通信を有効化。 |
    | `QDRANT_GRPC_PORT` | `6334` | gRPC ポート。 |
    | `QDRANT_REPLICATION_FACTOR` | `1` | シャードごとのレプリカ数。 |
  </Accordion>

  <Accordion title="Milvus">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `MILVUS_URI` | `http://host.docker.internal:19530` | Milvus URI。 [Zilliz Cloud](https://docs.zilliz.com/docs/free-trials) の場合は Public Endpoint を使用してください。 |
    | `MILVUS_DATABASE` | （空） | データベース名。 |
    | `MILVUS_TOKEN` | （空） | 認証トークン。Zilliz Cloud の場合は API Key を使用してください。 |
    | `MILVUS_USER` | （空） | ユーザー名。 |
    | `MILVUS_PASSWORD` | （空） | パスワード。 |
    | `MILVUS_ENABLE_HYBRID_SEARCH` | `false` | ベクトル類似検索と併用する BM25 スパースインデックスによる全文検索を有効化。Milvus >= 2.5.0 が必要です。この機能を有効にせずに作成されたコレクションは再作成が必要です。 |
    | `MILVUS_ANALYZER_PARAMS` | （空） | テキストフィールドのアナライザーパラメータ。 |
    | `MILVUS_SECURE` | `false` | Milvus 接続で一方向 TLS を有効にします。有効にすると、クライアントは TLS で暗号化された gRPC で接続し、サーバー証明書を検証します。 |
    | `MILVUS_SERVER_PEM_PATH` | （空） | コンテナ内の Milvus サーバー証明書（PEM）のパス。`MILVUS_SECURE` が有効な場合にサーバーの検証に使用されます。 |
    | `MILVUS_SERVER_NAME` | （空） | 検証対象のサーバー名（TLS SNI、証明書の CN または SAN と一致）。`MILVUS_SERVER_PEM_PATH` を設定する場合は必須です。 |
  </Accordion>

  <Accordion title="MyScale">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `MYSCALE_HOST` | `myscale` | MyScale ホスト。 |
    | `MYSCALE_PORT` | `8123` | MyScale ポート。 |
    | `MYSCALE_USER` | `default` | ユーザー名。 |
    | `MYSCALE_PASSWORD` | （空） | パスワード。 |
    | `MYSCALE_DATABASE` | `dify` | データベース名。 |
    | `MYSCALE_FTS_PARAMS` | （空） | 全文検索パラメータ。[多言語サポートリファレンス](https://myscale.com/docs/en/text-search/#understanding-fts-index-parameters)。 |
  </Accordion>

  <Accordion title="Couchbase">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `COUCHBASE_CONNECTION_STRING` | `couchbase://couchbase-server` | Couchbase クラスターの接続文字列。 |
    | `COUCHBASE_USER` | `Administrator` | ユーザー名。 |
    | `COUCHBASE_PASSWORD` | `password` | パスワード。 |
    | `COUCHBASE_BUCKET_NAME` | `Embeddings` | バケット名。 |
    | `COUCHBASE_SCOPE_NAME` | `_default` | スコープ名。 |
  </Accordion>

  <Accordion title="Hologres">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `HOLOGRES_HOST` | （空） | ホスト名。 |
    | `HOLOGRES_PORT` | `80` | ポート番号。 |
    | `HOLOGRES_DATABASE` | （空） | データベース名。 |
    | `HOLOGRES_ACCESS_KEY_ID` | （空） | Access Key ID（PG ユーザー名として使用）。 |
    | `HOLOGRES_ACCESS_KEY_SECRET` | （空） | Access Key Secret（PG パスワードとして使用）。 |
    | `HOLOGRES_SCHEMA` | `public` | スキーマ名。 |
    | `HOLOGRES_TOKENIZER` | `jieba` | テキストフィールドのトークナイザー。 |
    | `HOLOGRES_DISTANCE_METHOD` | `Cosine` | 距離メソッド。 |
    | `HOLOGRES_BASE_QUANTIZATION_TYPE` | `rabitq` | 量子化タイプ。 |
    | `HOLOGRES_MAX_DEGREE` | `64` | HNSW の最大次数。 |
    | `HOLOGRES_EF_CONSTRUCTION` | `400` | HNSW の ef\_construction パラメータ。 |
  </Accordion>

  <Accordion title="PGVector">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `PGVECTOR_HOST` | `pgvector` | ホスト名。 |
    | `PGVECTOR_PORT` | `5432` | ポート番号。 |
    | `PGVECTOR_USER` | `postgres` | ユーザー名。 |
    | `PGVECTOR_PASSWORD` | `difyai123456` | パスワード。 |
    | `PGVECTOR_DATABASE` | `dify` | データベース名。 |
    | `PGVECTOR_MIN_CONNECTION` | `1` | 最小プール接続数。 |
    | `PGVECTOR_MAX_CONNECTION` | `5` | 最大プール接続数。 |
    | `PGVECTOR_PG_BIGM` | `false` | 全文検索用の pg\_bigm 拡張を有効化。 |
  </Accordion>

  <Accordion title="Vastbase">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `VASTBASE_HOST` | `vastbase` | ホスト名。 |
    | `VASTBASE_PORT` | `5432` | ポート番号。 |
    | `VASTBASE_USER` | `dify` | ユーザー名。 |
    | `VASTBASE_PASSWORD` | `Difyai123456` | パスワード。 |
    | `VASTBASE_DATABASE` | `dify` | データベース名。 |
    | `VASTBASE_MIN_CONNECTION` | `1` | 最小プール接続数。 |
    | `VASTBASE_MAX_CONNECTION` | `5` | 最大プール接続数。 |
  </Accordion>

  <Accordion title="PGVecto.RS">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `PGVECTO_RS_HOST` | `pgvecto-rs` | ホスト名。 |
    | `PGVECTO_RS_PORT` | `5432` | ポート番号。 |
    | `PGVECTO_RS_USER` | `postgres` | ユーザー名。 |
    | `PGVECTO_RS_PASSWORD` | `difyai123456` | パスワード。 |
    | `PGVECTO_RS_DATABASE` | `dify` | データベース名。 |
  </Accordion>

  <Accordion title="AnalyticDB">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `ANALYTICDB_KEY_ID` | （空） | Aliyun access key ID。[AccessKey の作成](https://help.aliyun.com/zh/analyticdb/analyticdb-for-postgresql/support/create-an-accesskey-pair)。 |
    | `ANALYTICDB_KEY_SECRET` | （空） | Aliyun access key secret。 |
    | `ANALYTICDB_REGION_ID` | `cn-hangzhou` | リージョン識別子。 |
    | `ANALYTICDB_INSTANCE_ID` | （空） | インスタンス ID（例：`gp-xxxxxx`）。[インスタンスの作成](https://help.aliyun.com/zh/analyticdb/analyticdb-for-postgresql/getting-started/create-an-instance-1)。 |
    | `ANALYTICDB_ACCOUNT` | （空） | アカウント名。[アカウントの作成](https://help.aliyun.com/zh/analyticdb/analyticdb-for-postgresql/getting-started/createa-a-privileged-account)。 |
    | `ANALYTICDB_PASSWORD` | （空） | アカウントパスワード。 |
    | `ANALYTICDB_NAMESPACE` | `dify` | 名前空間（スキーマ）。存在しない場合は自動作成されます。 |
    | `ANALYTICDB_NAMESPACE_PASSWORD` | （空） | 名前空間パスワード。新しい名前空間作成時に使用されます。 |
    | `ANALYTICDB_HOST` | （空） | 直接接続ホスト（API ベースのアクセスの代替）。 |
    | `ANALYTICDB_PORT` | `5432` | 直接接続ポート。 |
    | `ANALYTICDB_MIN_CONNECTION` | `1` | 最小プール接続数。 |
    | `ANALYTICDB_MAX_CONNECTION` | `5` | 最大プール接続数。 |
  </Accordion>

  <Accordion title="TiDB Vector">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `TIDB_VECTOR_HOST` | `tidb` | ホスト名。 |
    | `TIDB_VECTOR_PORT` | `4000` | ポート番号。 |
    | `TIDB_VECTOR_USER` | （空） | ユーザー名。 |
    | `TIDB_VECTOR_PASSWORD` | （空） | パスワード。 |
    | `TIDB_VECTOR_DATABASE` | `dify` | データベース名。 |
    | `TIDB_VECTOR_ENABLE_FULLTEXT_SEARCH` | `false` | TiDB Vector 上のナレッジベースで全文検索とハイブリッド検索を利用できるようにします。<br /><br />新規のナレッジベーステーブルには多言語対応の全文インデックスが付与され、既存テーブルには次回ドキュメントをインデックスする際に追加されます。<br /><br />全文インデックスをサポートする TiDB デプロイが必要です。 |
  </Accordion>

  <Accordion title="MatrixOne">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `MATRIXONE_HOST` | `matrixone` | ホスト名。 |
    | `MATRIXONE_PORT` | `6001` | ポート番号。 |
    | `MATRIXONE_USER` | `dump` | ユーザー名。 |
    | `MATRIXONE_PASSWORD` | `111` | パスワード。 |
    | `MATRIXONE_DATABASE` | `dify` | データベース名。 |
  </Accordion>

  <Accordion title="Chroma">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `CHROMA_HOST` | `127.0.0.1` | Chroma サーバーホスト。 |
    | `CHROMA_PORT` | `8000` | Chroma サーバーポート。 |
    | `CHROMA_TENANT` | `default_tenant` | テナント名。 |
    | `CHROMA_DATABASE` | `default_database` | データベース名。 |
    | `CHROMA_AUTH_PROVIDER` | `chromadb.auth.token_authn.TokenAuthClientProvider` | 認証プロバイダークラス。 |
    | `CHROMA_AUTH_CREDENTIALS` | （空） | 認証資格情報。 |
  </Accordion>

  <Accordion title="Oracle">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `ORACLE_USER` | `dify` | Oracle ユーザー名。 |
    | `ORACLE_PASSWORD` | `dify` | Oracle パスワード。 |
    | `ORACLE_DSN` | `oracle:1521/FREEPDB1` | データソース名。 |
    | `ORACLE_CONFIG_DIR` | `/app/api/storage/wallet` | Oracle 設定ディレクトリ。 |
    | `ORACLE_WALLET_LOCATION` | `/app/api/storage/wallet` | Autonomous DB 用ウォレットの場所。 |
    | `ORACLE_WALLET_PASSWORD` | `dify` | ウォレットパスワード。 |
    | `ORACLE_IS_AUTONOMOUS` | `false` | Oracle Autonomous Database を使用するかどうか。 |
  </Accordion>

  <Accordion title="AlibabaCloud MySQL">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `ALIBABACLOUD_MYSQL_HOST` | `127.0.0.1` | ホスト名。 |
    | `ALIBABACLOUD_MYSQL_PORT` | `3306` | ポート番号。 |
    | `ALIBABACLOUD_MYSQL_USER` | `root` | ユーザー名。 |
    | `ALIBABACLOUD_MYSQL_PASSWORD` | `difyai123456` | パスワード。 |
    | `ALIBABACLOUD_MYSQL_DATABASE` | `dify` | データベース名。 |
    | `ALIBABACLOUD_MYSQL_MAX_CONNECTION` | `5` | 最大プール接続数。 |
    | `ALIBABACLOUD_MYSQL_HNSW_M` | `6` | HNSW M パラメータ。 |
  </Accordion>

  <Accordion title="Relyt">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `RELYT_HOST` | `db` | ホスト名。 |
    | `RELYT_PORT` | `5432` | ポート番号。 |
    | `RELYT_USER` | `postgres` | ユーザー名。 |
    | `RELYT_PASSWORD` | `difyai123456` | パスワード。 |
    | `RELYT_DATABASE` | `postgres` | データベース名。 |
  </Accordion>

  <Accordion title="OpenSearch">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `OPENSEARCH_HOST` | `opensearch` | ホスト名。 |
    | `OPENSEARCH_PORT` | `9200` | ポート番号。 |
    | `OPENSEARCH_SECURE` | `true` | HTTPS を使用。 |
    | `OPENSEARCH_VERIFY_CERTS` | `true` | SSL 証明書を検証。 |
    | `OPENSEARCH_AUTH_METHOD` | `basic` | `basic`はユーザー名/パスワードを使用。`aws_managed_iam` は Boto3 資格情報による AWS SigV4 リクエスト署名を使用（AWS Managed OpenSearch または Serverless 用）。 |
    | `OPENSEARCH_USER` | `admin` | ユーザー名。`basic` 認証でのみ使用。 |
    | `OPENSEARCH_PASSWORD` | `admin` | パスワード。`basic` 認証でのみ使用。 |
    | `OPENSEARCH_AWS_REGION` | `ap-southeast-1` | AWS リージョン。`aws_managed_iam` 認証でのみ使用。 |
    | `OPENSEARCH_AWS_SERVICE` | `aoss` | AWS サービスタイプ：`es`（Managed Cluster）または `aoss`（OpenSearch Serverless）。`aws_managed_iam` 認証でのみ使用。 |
  </Accordion>

  <Accordion title="Tencent Cloud VectorDB">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `TENCENT_VECTOR_DB_URL` | `http://127.0.0.1` | アクセスアドレス。[コンソール](https://console.cloud.tencent.com/vdb)。 |
    | `TENCENT_VECTOR_DB_API_KEY` | `dify` | API キー。[キー管理](https://cloud.tencent.com/document/product/1709/95108)。 |
    | `TENCENT_VECTOR_DB_TIMEOUT` | `30` | リクエストタイムアウト（秒）。 |
    | `TENCENT_VECTOR_DB_USERNAME` | `dify` | アカウント名。[アカウント管理](https://cloud.tencent.com/document/product/1709/115833)。 |
    | `TENCENT_VECTOR_DB_DATABASE` | `dify` | データベース名。[データベースの作成](https://cloud.tencent.com/document/product/1709/95822)。 |
    | `TENCENT_VECTOR_DB_SHARD` | `1` | シャード数。 |
    | `TENCENT_VECTOR_DB_REPLICAS` | `2` | レプリカ数。 |
    | `TENCENT_VECTOR_DB_ENABLE_HYBRID_SEARCH` | `false` | ハイブリッド検索を有効化。[スパースベクトルドキュメント](https://cloud.tencent.com/document/product/1709/110110)。 |
  </Accordion>

  <Accordion title="Elasticsearch">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `ELASTICSEARCH_HOST` | `0.0.0.0` | ホスト名。 |
    | `ELASTICSEARCH_PORT` | `9200` | ポート番号。 |
    | `ELASTICSEARCH_USERNAME` | `elastic` | ユーザー名。 |
    | `ELASTICSEARCH_PASSWORD` | `elastic` | パスワード。 |
    | `ELASTICSEARCH_USE_CLOUD` | `false` | Elastic Cloud モードに切り替え。`true`の場合、host/port/username/password の代わりに `ELASTICSEARCH_CLOUD_URL`と `ELASTICSEARCH_API_KEY` を使用します。 |
    | `ELASTICSEARCH_CLOUD_URL` | （空） | Elastic Cloud エンドポイント URL。`ELASTICSEARCH_USE_CLOUD=true` の場合に必要です。 |
    | `ELASTICSEARCH_API_KEY` | （空） | Elastic Cloud API キー。`ELASTICSEARCH_USE_CLOUD=true` の場合に必要です。 |
    | `ELASTICSEARCH_VERIFY_CERTS` | `false` | SSL 証明書を検証。 |
    | `ELASTICSEARCH_CA_CERTS` | （空） | CA 証明書のパス。 |
    | `ELASTICSEARCH_REQUEST_TIMEOUT` | `100000` | リクエストタイムアウト（ミリ秒）。 |
    | `ELASTICSEARCH_RETRY_ON_TIMEOUT` | `true` | タイムアウト時にリトライ。 |
    | `ELASTICSEARCH_MAX_RETRIES` | `10` | 最大リトライ回数。 |
  </Accordion>

  <Accordion title="Baidu Vector DB">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `BAIDU_VECTOR_DB_ENDPOINT` | `http://127.0.0.1:5287` | エンドポイント URL。 |
    | `BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS` | `30000` | 接続タイムアウト（ミリ秒）。 |
    | `BAIDU_VECTOR_DB_ACCOUNT` | `root` | アカウント名。 |
    | `BAIDU_VECTOR_DB_API_KEY` | `dify` | API キー。 |
    | `BAIDU_VECTOR_DB_DATABASE` | `dify` | データベース名。 |
    | `BAIDU_VECTOR_DB_SHARD` | `1` | シャード数。 |
    | `BAIDU_VECTOR_DB_REPLICAS` | `3` | レプリカ数。 |
    | `BAIDU_VECTOR_DB_INVERTED_INDEX_ANALYZER` | `DEFAULT_ANALYZER` | 転置インデックスアナライザー。 |
    | `BAIDU_VECTOR_DB_INVERTED_INDEX_PARSER_MODE` | `COARSE_MODE` | 転置インデックスパーサーモード。 |
    | `BAIDU_VECTOR_DB_AUTO_BUILD_ROW_COUNT_INCREMENT` | `500` | Baidu Vector DB 側で自動インデックス再構築をトリガーする絶対行数増分のしきい値。`_RATIO` と併せて機能し、いずれかのしきい値を先に超えた時点で有効になります。 |
    | `BAIDU_VECTOR_DB_AUTO_BUILD_ROW_COUNT_INCREMENT_RATIO` | `0.05` | 自動インデックス再構築をトリガーする相対増加率のしきい値（新規行数/既存行数）。上記の絶対しきい値と合わせ、先に達した条件が適用されます。 |
    | `BAIDU_VECTOR_DB_REBUILD_INDEX_TIMEOUT_IN_SECONDS` | `300` | インデックス再構築の完了をクライアントが待機する最大時間（秒）。タイムアウト時、クライアント側の呼び出しは失敗しますが、サーバー側の再構築は完了する可能性があります。しばらく経ってから再度クエリを投げれば成功することが多いです。 |
  </Accordion>

  <Accordion title="VikingDB">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `VIKINGDB_ACCESS_KEY` | （空） | Access key。 |
    | `VIKINGDB_SECRET_KEY` | （空） | Secret key。 |
    | `VIKINGDB_REGION` | `cn-shanghai` | リージョン。 |
    | `VIKINGDB_HOST` | `api-vikingdb.xxx.volces.com` | API ホスト。リージョン固有のエンドポイントに置き換えてください。 |
    | `VIKINGDB_SCHEME` | `http` | プロトコルスキーム（`http`または `https`）。 |
    | `VIKINGDB_CONNECTION_TIMEOUT` | `30` | 接続タイムアウト（秒）。 |
    | `VIKINGDB_SOCKET_TIMEOUT` | `30` | Socket タイムアウト（秒）。 |
  </Accordion>

  <Accordion title="Lindorm">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `LINDORM_URL` | `http://localhost:30070` | Lindorm 検索エンジン URL。[コンソール](https://lindorm.console.aliyun.com/)。 |
    | `LINDORM_USERNAME` | `admin` | ユーザー名。 |
    | `LINDORM_PASSWORD` | `admin` | パスワード。 |
    | `LINDORM_USING_UGC` | `true` | UGC モードを使用。 |
    | `LINDORM_QUERY_TIMEOUT` | `1` | クエリタイムアウト（秒）。 |
  </Accordion>

  <Accordion title="OpenGauss">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `OPENGAUSS_HOST` | `opengauss` | ホスト名。 |
    | `OPENGAUSS_PORT` | `6600` | ポート番号。 |
    | `OPENGAUSS_USER` | `postgres` | ユーザー名。 |
    | `OPENGAUSS_PASSWORD` | `Dify@123` | パスワード。 |
    | `OPENGAUSS_DATABASE` | `dify` | データベース名。 |
    | `OPENGAUSS_MIN_CONNECTION` | `1` | 最小プール接続数。 |
    | `OPENGAUSS_MAX_CONNECTION` | `5` | 最大プール接続数。 |
    | `OPENGAUSS_ENABLE_PQ` | `false` | PQ アクセラレーションを有効化。 |
  </Accordion>

  <Accordion title="Huawei Cloud Search">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `HUAWEI_CLOUD_HOSTS` | `https://127.0.0.1:9200` | クラスターエンドポイント URL。 |
    | `HUAWEI_CLOUD_USER` | `admin` | ユーザー名。 |
    | `HUAWEI_CLOUD_PASSWORD` | `admin` | パスワード。 |
  </Accordion>

  <Accordion title="Upstash Vector">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `UPSTASH_VECTOR_URL` | （空） | Upstash Vector エンドポイント URL。 |
    | `UPSTASH_VECTOR_TOKEN` | （空） | Upstash Vector API トークン。 |
  </Accordion>

  <Accordion title="TableStore">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `TABLESTORE_ENDPOINT` | `https://instance-name.cn-hangzhou.ots.aliyuncs.com` | エンドポイントアドレス。`instance-name` をインスタンス名に置き換えてください。 |
    | `TABLESTORE_INSTANCE_NAME` | （空） | インスタンス名。 |
    | `TABLESTORE_ACCESS_KEY_ID` | （空） | Access Key ID。 |
    | `TABLESTORE_ACCESS_KEY_SECRET` | （空） | Access Key Secret。 |
    | `TABLESTORE_NORMALIZE_FULLTEXT_BM25_SCORE` | `false` | 全文 BM25 スコアを正規化。 |
  </Accordion>

  <Accordion title="ClickZetta">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `CLICKZETTA_USERNAME` | （空） | ユーザー名。 |
    | `CLICKZETTA_PASSWORD` | （空） | パスワード。 |
    | `CLICKZETTA_INSTANCE` | （空） | インスタンス名。 |
    | `CLICKZETTA_SERVICE` | `api.clickzetta.com` | サービスエンドポイント。 |
    | `CLICKZETTA_WORKSPACE` | `quick_start` | ワークスペース名。 |
    | `CLICKZETTA_VCLUSTER` | `default_ap` | 仮想クラスター。 |
    | `CLICKZETTA_SCHEMA` | `dify` | スキーマ名。 |
    | `CLICKZETTA_BATCH_SIZE` | `100` | 操作のバッチサイズ。 |
    | `CLICKZETTA_ENABLE_INVERTED_INDEX` | `true` | 転置インデックスを有効化。 |
    | `CLICKZETTA_ANALYZER_TYPE` | `chinese` | アナライザータイプ。 |
    | `CLICKZETTA_ANALYZER_MODE` | `smart` | アナライザーモード。 |
    | `CLICKZETTA_VECTOR_DISTANCE_FUNCTION` | `cosine_distance` | 距離関数。 |
  </Accordion>

  <Accordion title="InterSystems IRIS">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `IRIS_HOST` | `iris` | ホスト名。 |
    | `IRIS_SUPER_SERVER_PORT` | `1972` | スーパーサーバーポート。 |
    | `IRIS_USER` | `_SYSTEM` | ユーザー名。 |
    | `IRIS_PASSWORD` | `Dify@1234` | パスワード。 |
    | `IRIS_DATABASE` | `USER` | データベース名。 |
    | `IRIS_SCHEMA` | `dify` | スキーマ名。 |
    | `IRIS_CONNECTION_URL` | （空） | 完全な接続 URL（個別設定をオーバーライド）。 |
    | `IRIS_MIN_CONNECTION` | `1` | 最小プール接続数。 |
    | `IRIS_MAX_CONNECTION` | `3` | 最大プール接続数。 |
    | `IRIS_TEXT_INDEX` | `true` | テキストインデックスを有効化。 |
    | `IRIS_TEXT_INDEX_LANGUAGE` | `en` | テキストインデックスの言語。 |
  </Accordion>
</AccordionGroup>

### ナレッジベース設定

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `UPLOAD_FILE_SIZE_LIMIT` | `15` | ドキュメントアップロード（PDF、Word ドキュメントなど）の最大ファイルサイズ（MB）。超過するとユーザーに「ファイルが大きすぎます」エラーが表示されます。画像、動画、音声には適用されません。それらには下記の別の制限があります。 |
| `UPLOAD_FILE_BATCH_LIMIT` | `5` | フロントエンドがアップロードバッチごとに許可する最大ファイル数。 |
| `UPLOAD_FILE_EXTENSION_BLACKLIST` | （空） | アップロードできないファイル拡張子のセキュリティブロックリスト。カンマ区切り、小文字、ドットなし。例：`exe,bat,cmd,com,scr,vbs,ps1,msi,dll`。空の場合はすべてのタイプを許可します。 |
| `SINGLE_CHUNK_ATTACHMENT_LIMIT` | `10` | 単一のナレッジベースセグメント（チャンク）に埋め込める最大画像数。 |
| `IMAGE_FILE_BATCH_LIMIT` | `10` | アップロードバッチごとの最大画像ファイル数。 |
| `ATTACHMENT_IMAGE_FILE_SIZE_LIMIT` | `2` | ナレッジベースインデックス作成時に外部 URL から取得する画像の最大サイズ（MB）。これを超える画像はスキップされます。直接アップロードに適用される `UPLOAD_IMAGE_FILE_SIZE_LIMIT` とは異なります。 |
| `ATTACHMENT_IMAGE_DOWNLOAD_TIMEOUT` | `60` | ナレッジベースインデックス作成時に外部 URL から画像をダウンロードする際のタイムアウト（秒）。低速または応答しない画像サーバーはこのタイムアウト後に放棄されます。 |
| `ETL_TYPE` | `dify` | ドキュメント抽出ライブラリ。`dify`は txt、md、pdf、html、xlsx、docx、csv をサポートします。`Unstructured`は doc、msg、eml、ppt、pptx、xml、epub のサポートを追加します（`UNSTRUCTURED_API_URL` が必要）。 |
| `UNSTRUCTURED_API_URL` | （空） | Unstructured.io API エンドポイント。`ETL_TYPE`が `Unstructured`の場合に必要です。`.ppt`ファイルのサポートにも必要です。例：`http://unstructured:8000/general/v0/general`。 |
| `UNSTRUCTURED_API_KEY` | （空） | Unstructured.io 認証用 API キー。 |
| `SCARF_NO_ANALYTICS` | `true` | Unstructured ライブラリのテレメトリ/分析収集を無効化。 |
| `TOP_K_MAX_VALUE` | `10` | ナレッジベース検索で `top_k` パラメータ（検索ごとの結果返却数）にユーザーが設定できる最大値。 |
| `DATASET_MAX_SEGMENTS_PER_REQUEST` | `0` | データセット API リクエストごとの最大セグメント数。`0` は無制限を意味します。 |

#### アノテーションインポート

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `ANNOTATION_IMPORT_FILE_SIZE_LIMIT` | `2` | アノテーションインポート用 CSV ファイルの最大サイズ（MB）。超過すると HTTP 413 が返されます。 |
| `ANNOTATION_IMPORT_MAX_RECORDS` | `10000` | アノテーションインポートごとの最大レコード数。レコードが多いファイルはバッチに分割する必要があります。 |
| `ANNOTATION_IMPORT_MIN_RECORDS` | `1` | アノテーションインポートごとに必要な最小有効レコード数。 |
| `ANNOTATION_IMPORT_RATE_LIMIT_PER_MINUTE` | `5` | ワークスペースごとの 1 分あたりの最大アノテーションインポートリクエスト数。超過すると HTTP 429 が返されます。 |
| `ANNOTATION_IMPORT_RATE_LIMIT_PER_HOUR` | `20` | ワークスペースごとの 1 時間あたりの最大アノテーションインポートリクエスト数。 |
| `ANNOTATION_IMPORT_MAX_CONCURRENT` | `5` | ワークスペースごとの最大同時アノテーションインポートタスク数。古いタスクは 2 分後に自動クリーンアップされます。 |

### モデル設定

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `PLUGIN_BASED_TOKEN_COUNTING_ENABLED` | `false` | 正確な使用量追跡のためにプラグインベースのトークンカウントを使用。無効の場合、トークンカウントは 0 を返します（高速ですがコスト追跡の精度が低下します）。 |

### マルチモーダル設定

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `MULTIMODAL_SEND_FORMAT` | `base64` | マルチモーダル LLM にファイルを送信する方法。`base64`はリクエストにファイルデータを埋め込みます（互換性が高く、オフラインで動作、ペイロードが大きい）。`url`は署名付き URL を送信してモデルに取得させます（高速、リクエストが小さいですが、モデルが `FILES_URL` にアクセスできる必要があります）。 |
| `UPLOAD_IMAGE_FILE_SIZE_LIMIT` | `10` | 直接アップロードの最大画像ファイルサイズ（MB）（jpg、png、webp、gif、svg）。 |
| `UPLOAD_VIDEO_FILE_SIZE_LIMIT` | `100` | 直接アップロードの最大動画ファイルサイズ（MB）（mp4、mov、mpeg、webm）。 |
| `UPLOAD_AUDIO_FILE_SIZE_LIMIT` | `50` | 直接アップロードの最大音声ファイルサイズ（MB）（mp3、m4a、wav、amr、mpga）。 |

<Note>
  すべてのアップロードサイズ制限は `NGINX_CLIENT_MAX_BODY_SIZE`（デフォルト `100M`）によっても制限されます。アップロード制限を 100 MB を超えて増加する場合は、`NGINX_CLIENT_MAX_BODY_SIZE` も同様に増加してください。そうしないと、Nginx が 413 エラーでアップロードを拒否します。
</Note>

### Sentry 設定

Sentry はエラー追跡とパフォーマンス監視を提供します。各サービスにはエラーレポートを分離するための独自の DSN があります。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `SENTRY_DSN` | （空） | サービス間で共有される Sentry DSN。 |
| `API_SENTRY_DSN` | （空） | API サービス用の Sentry DSN。設定されている場合、`SENTRY_DSN` をオーバーライドします。空の場合、バックエンドの Sentry が無効になります。 |
| `API_SENTRY_TRACES_SAMPLE_RATE` | `1.0` | パフォーマンストレーシングに含めるリクエストの割合（0.01 = 1%、1.0 = 100%）。トレースはサービス間のリクエストフローを追跡します。 |
| `API_SENTRY_PROFILES_SAMPLE_RATE` | `1.0` | CPU/メモリプロファイリングに含めるリクエストの割合（0.01 = 1%）。プロファイルはコード内で時間が費やされている箇所を表示します。 |
| `SENTRY_TRACES_SAMPLE_RATE` | `1.0` | `API_SENTRY_TRACES_SAMPLE_RATE` の直接名で、`docker/envs/core-services/` 配下の設定ファイルが使用します。<br />Compose 構成では `API_SENTRY_*` の値が優先されます。Sentry DSN が空の間は無効です。 |
| `SENTRY_PROFILES_SAMPLE_RATE` | `1.0` | `API_SENTRY_PROFILES_SAMPLE_RATE` の直接名で、用途は上と同じです。<br />プロファイリングはトレース対象に選ばれたリクエストからのみ採取されるため、実際の量はおおよそ両レートの積になります。 |
| `WEB_SENTRY_DSN` | （空） | Web フロントエンド（Next.js）用の Sentry DSN。フロントエンドのみ。 |
| `PLUGIN_SENTRY_ENABLED` | `false` | プラグインデーモンサービスの Sentry を有効化。 |
| `PLUGIN_SENTRY_DSN` | （空） | プラグインデーモン用の Sentry DSN。 |

### Notion 連携設定

ナレッジベースデータソースとして Dify を Notion に接続します。 [https://www.notion.so/my-integrations](https://www.notion.so/my-integrations) で連携資格情報を取得してください。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `NOTION_INTEGRATION_TYPE` | `public` | `public`は標準 OAuth 2.0 を使用します（HTTPS リダイレクト URL が必要、CLIENT\_ID + CLIENT\_SECRET が必要）。`internal`は直接連携トークンを使用します（HTTP で動作）。ローカルデプロイには `internal` を使用してください。 |
| `NOTION_CLIENT_SECRET` | （空） | OAuth クライアントシークレット。`public` 連携に必要です。 |
| `NOTION_CLIENT_ID` | （空） | OAuth クライアント ID。`public` 連携に必要です。 |
| `NOTION_INTERNAL_SECRET` | （空） | Notion からの直接連携トークン。`internal` 連携に必要です。 |

### メール設定

Dify はアカウント招待、パスワードリセット、ログインコード、人間の入力ノード通知のメールを送信します。サポートされる 3 つのプロバイダーのいずれかを設定してください。メールリンクには `CONSOLE_WEB_URL` の設定が必要です。 [共通変数](#console_web_url) を参照してください。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `MAIL_TYPE` | `resend` | メールプロバイダー：`resend`、`smtp`、または `sendgrid`。 |
| `MAIL_DEFAULT_SEND_FROM` | （空） | すべての送信メールのデフォルト「From」アドレス。必須です。 |

<AccordionGroup>
  <Accordion title="Resend">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `RESEND_API_URL` | `https://api.resend.com` | Resend API エンドポイント。セルフホスト Resend またはプロキシ用にオーバーライドします。 |
    | `RESEND_API_KEY` | （空） | Resend API キー。`MAIL_TYPE=resend` の場合に必要です。 |
  </Accordion>

  <Accordion title="SMTP">
    3 つの TLS モード：暗黙的 TLS（`SMTP_USE_TLS=true`、`SMTP_OPPORTUNISTIC_TLS=false`、ポート 465）、STARTTLS（`SMTP_USE_TLS=true`、`SMTP_OPPORTUNISTIC_TLS=true`、ポート 587）、またはプレーン（`SMTP_USE_TLS=false`、ポート 25）。

    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `SMTP_SERVER` | （空） | SMTP サーバーアドレス。 |
    | `SMTP_PORT` | `465` | SMTP サーバーポート。STARTTLS モードの場合は `587` を使用してください。 |
    | `SMTP_USERNAME` | （空） | SMTP ユーザー名。IP ホワイトリストされたサーバーでは空にできます。 |
    | `SMTP_PASSWORD` | （空） | SMTP パスワード。IP ホワイトリストされたサーバーでは空にできます。 |
    | `SMTP_USE_TLS` | `true` | TLS を有効化。`true`で `SMTP_OPPORTUNISTIC_TLS=false`の場合、暗黙的 TLS（`SMTP_SSL`）を使用します。 |
    | `SMTP_OPPORTUNISTIC_TLS` | `false` | 暗黙的 TLS の代わりに STARTTLS（明示的 TLS）を使用。`SMTP_USE_TLS=true` と併用する必要があります。 |
    | `SMTP_LOCAL_HOSTNAME` | （空） | SMTP HELO/EHLO で送信されるホスト名をオーバーライド。SMTP サーバーがコンテナホスト名を拒否する場合に Docker で必要です（Google Workspace、Microsoft 365 でよく発生）。ドメインに設定してください（例：`mail.yourdomain.com`）。 |
  </Accordion>

  <Accordion title="SendGrid">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `SENDGRID_API_KEY` | （空） | SendGrid API キー。`MAIL_TYPE=sendgrid` の場合に必要です。 |

    詳細については、 [SendGrid ドキュメント](https://www.twilio.com/docs/sendgrid/for-developers/sending-email/api-getting-started) を参照してください。
  </Accordion>
</AccordionGroup>

### その他の設定

#### コンソール機能

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `ENABLE_LEARN_APP` | `true` | Learn Dify セクションの表示を切り替えます。対象は探索ページのチュートリアルテンプレート、スタジオにアプリがないときの入門パネル、ヘルプメニューの表示切り替えです。<br /><br />`false` で 3 か所とも非表示になります。 |
| `ENABLE_SKILL` | `true` | メインナビゲーションに [Skills](/ja/self-host/use-dify/build/skills) を表示します。<br /><br />`false` にすると、ワークスペースの UI からスキルが非表示になります。 |

#### 認証とアカウント

デフォルトでは、サインインはメールアドレスとパスワードで行い、新しいアカウントはワークスペースへの招待または初期セットアップウィザードで作成します。以下のトグルでこの方針を調整できます。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `ENABLE_EMAIL_PASSWORD_LOGIN` | `true` | メールアドレスとパスワードでコンソールにサインインします。無効にすると、サインインページからパスワードフォームが消え、パスワードログイン、パスワードリセット、セルフサービス登録の各エンドポイントが 403 を返します。サインイン方法は必ず 1 つ以上有効にしてください。すべて無効にすると、認証方式が未設定である旨が表示され、設定を戻すまで誰もログインできません。 |
| `ENABLE_EMAIL_CODE_LOGIN` | `false` | パスワードの代わりに、メールで届く 6 桁のワンタイムコードでサインインします。メール送信の設定が必要です（[メール設定](#メール設定) を参照）。未設定ではコードが届きません。`ALLOW_REGISTER=true` の場合、未登録のメールアドレスでコードを入力するとアカウントも作成されるため、セルフサービス登録の経路にもなります。 |
| `EMAIL_CODE_LOGIN_TOKEN_EXPIRY_MINUTES` | `5` | サインインコードの有効時間（分）。期限切れのコードは拒否され、再取得が必要です。 |
| `EMAIL_CODE_LOGIN_MAX_ATTEMPTS` | `5` | 1 つのサインインコードで許容される入力ミスの最大回数。超えるとコードが無効になり、再取得が必要です。 |
| `ENABLE_SOCIAL_OAUTH_LOGIN` | `false` | コンソールのサインインページに GitHub と Google のサインインボタンを表示します。ボタンが機能するのは、対応する GitHub または Google の OAuth アプリ認証情報を API サービスに設定した場合だけです。フラグだけ有効にして認証情報が未設定だと、サインインは失敗します。初回の OAuth サインインでアカウントが作成されるのは `ALLOW_REGISTER=true` のときだけです。 |
| `ALLOW_REGISTER` | `false` | アカウントの自己作成を許可します。サインインページに新規登録リンクを表示し（パスワードログインが有効な場合）、初回のメールコードまたは OAuth サインインでのアカウント作成を許可します。招待制にするには `false` のままにします。ワークスペースへの招待と初期セットアップウィザードは常に利用できます。 |
| `ALLOW_CREATE_WORKSPACE` | `false` | どのワークスペースにも属さないアカウントに対して、セルフサービス登録時やメールコード、OAuth サインイン時にワークスペースを自動作成します。`false` の場合、こうしたアカウントはワークスペースへの招待を待つ必要があります。セットアップウィザードが作成する管理者ワークスペースには影響しません。 |
| `ENABLE_CHANGE_EMAIL` | `true` | アカウント設定ページからメールアドレスを変更できるようにします。変更はメールの確認コードで検証されるため、メール送信の設定が必要です。外部ディレクトリと一致させる必要がある場合など、メールアドレスを固定したいときは `false` に設定します。 |

#### LLMOps トレース配信

アプリ実行のトレースは、バックグラウンドタスクが LLMOps プロバイダーへ配信します。対象のプロバイダーは Langfuse、LangSmith、Arize/Phoenix などです。Docker Compose でデプロイする場合は、`docker/envs/core-services/shared.env` にこれらの変数を設定します。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `OPS_TRACE_UNIFIED_ENABLED` | `false` | `true` にすると、LangSmith と Arize/Phoenix のトレースに共通の構造を使います。ワークフロー実行、ノード、それらの親子関係を記録します。デフォルトの `false` では、各プロバイダーの従来のトレース実装を使います。他のプロバイダーには影響しません。<br /><br />各アプリで LLMOps を有効にし、プロバイダーを設定する必要があります。 |
| `OPS_TRACE_RETRYABLE_DISPATCH_MAX_RETRIES` | `780` | 一時的な失敗後にトレース配信をリトライする最大回数。超えるとそのトレースは破棄されます。<br /><br />デフォルトのリトライ時間（回数 × `OPS_TRACE_RETRYABLE_DISPATCH_DELAY_SECONDS`）は、1 時間のワークフロー上限とエクスポート猶予期間を上回るよう設定されています。<br /><br />現在この経路に入るのは、Arize/Phoenix でネストしたワークフローをトレースする場合のみです。子トレースが親のコンテキストより先に届くと発生します。`0` は指定できません。 |
| `OPS_TRACE_RETRYABLE_DISPATCH_DELAY_SECONDS` | `5` | リトライの間隔（秒）。許容ウィンドウは間隔 × 最大回数（デフォルトで約 65 分）です。<br /><br />小さくするとネストしたトレースが早く届く一方、リトライ回数を早く使い切ります。`0` は指定できません。 |
| `OPS_TRACE_PARENT_CONTEXT_TTL_SECONDS` | `3900` | 親ワークフローのトレースコンテキストを保持する時間（秒）。保持中は、後から届くネストした子トレースが親に接続できます。<br /><br />`OPS_TRACE_UNIFIED_ENABLED` が `true` の場合、リトライ時間（回数 × 間隔）以上に設定してください。これより小さいと、Dify は設定を読み込めません。 |

#### インデックス作成

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH` | `4000` | ナレッジベース用にドキュメントをチャンク化する際のテキストセグメントごとの最大トークン長。大きい値はチャンクあたりのコンテキストを多く保持し、小さい値はより細かい粒度を提供します。 |

#### 新規ユーザーのデフォルト設定

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `NEW_USER_DEFAULT_PLUGIN_IDS` | （空） | 新しいワークスペースの作成時に自動インストールされるマーケットプレイスのプラグイン ID（カンマ区切り）。 |
| `NEW_USER_DEFAULT_MODELS` | （空） | 新しいワークスペースに設定されるデフォルトモデル。`model_type:provider:model` 形式のカンマ区切り。 |

#### ワークフロー生成

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `WORKFLOW_GENERATION_TIMEOUT_MS` | `180000` | `/create` または `/refine` によるアプリ生成 1 回を UI が待つ時間。web コンテナが読み込む。 |
| `WORKFLOW_GENERATOR_NODE_BUILDER_MAX_WORKERS` | `6` | `/create`／`/refine` の生成リクエスト 1 回あたりの、ノード構成を組み立てる LLM 呼び出しの最大並列数。 |

#### トークンと招待

すべてのトークン有効期限変数は、Redis に保存されるワンタイムトークンの有効期間を制御します。期限切れ後、ユーザーは新しいトークンをリクエストする必要があります。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `INVITE_EXPIRY_HOURS` | `72` | ワークスペース招待リンクの有効期間（時間）。 |
| `RESET_PASSWORD_TOKEN_EXPIRY_MINUTES` | `5` | パスワードリセットトークンの有効期間（分）。 |
| `EMAIL_REGISTER_TOKEN_EXPIRY_MINUTES` | `5` | メール登録トークンの有効期間（分）。 |
| `CHANGE_EMAIL_TOKEN_EXPIRY_MINUTES` | `5` | メール変更トークンの有効期間（分）。 |
| `OWNER_TRANSFER_TOKEN_EXPIRY_MINUTES` | `5` | ワークスペースオーナー移譲トークンの有効期間（分）。 |

#### コード実行サンドボックス

以下の設定は、API と Worker がサンドボックスに接続する方法を指定します。サンドボックスは、コードノード（Python、JavaScript）とテンプレート変換ノード（Jinja2）を分離して実行する独立したサービスです。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `CODE_EXECUTION_ENDPOINT` | `http://sandbox:8194` | サンドボックスサービスエンドポイント。 |
| `CODE_EXECUTION_API_KEY` | `dify-sandbox` | サンドボックス認証用 API キー。サンドボックスサービスの `SANDBOX_API_KEY` と一致する必要があります。 |
| `CODE_EXECUTION_SSL_VERIFY` | `true` | サンドボックス接続の SSL を検証。自己署名証明書での開発時は無効化してください。 |
| `CODE_EXECUTION_CONNECT_TIMEOUT` | `10` | 接続タイムアウト（秒）。 |
| `CODE_EXECUTION_READ_TIMEOUT` | `60` | 読み取りタイムアウト（秒）。 |
| `CODE_EXECUTION_WRITE_TIMEOUT` | `10` | 書き込みタイムアウト（秒）。 |
| `CODE_EXECUTION_POOL_MAX_CONNECTIONS` | `100` | サンドボックスサービスへの最大同時 HTTP 接続数。 |
| `CODE_EXECUTION_POOL_MAX_KEEPALIVE_CONNECTIONS` | `20` | サンドボックスコネクションプールで維持する最大アイドル接続数。 |
| `CODE_EXECUTION_POOL_KEEPALIVE_EXPIRY` | `5.0` | アイドルなサンドボックス接続が閉じられるまでの秒数。 |

#### コードとテンプレートの出力制限

API と Worker は、コードノードとテンプレート変換ノードの出力にこれらの制限を適用します。サンドボックスサービスはこれらの変数を読み取りません。変更を反映するには、サンドボックスではなく API と Worker を再起動してください。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `CODE_MAX_NUMBER` | `9223372036854775807` | コードノード出力で許可される最大数値（最大 64 ビット符号付き整数）。 |
| `CODE_MIN_NUMBER` | `-9223372036854775808` | コードノード出力で許可される最小数値（最小 64 ビット符号付き整数）。 |
| `CODE_MAX_STRING_LENGTH` | `400000` | コードノード出力の最大文字列長。無制限の文字列生成によるメモリ枯渇を防止します。 |
| `CODE_MAX_DEPTH` | `5` | 出力データ構造の最大ネスト深度。 |
| `CODE_MAX_PRECISION` | `20` | 出力の浮動小数点数の最大小数桁数。 |
| `CODE_MAX_STRING_ARRAY_LENGTH` | `30` | 文字列配列出力の最大要素数。 |
| `CODE_MAX_OBJECT_ARRAY_LENGTH` | `30` | オブジェクト配列出力の最大要素数。 |
| `CODE_MAX_NUMBER_ARRAY_LENGTH` | `1000` | 数値配列出力の最大要素数。 |
| `TEMPLATE_TRANSFORM_MAX_LENGTH` | `400000` | テンプレート変換ノード出力の最大文字数。 |

#### ワークフローランタイム

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `WORKFLOW_MAX_EXECUTION_STEPS` | `500` | ワークフロー実行ごとの最大ノード実行回数。超過するとワークフローが終了されます。 |
| `WORKFLOW_MAX_EXECUTION_TIME` | `3600` | ワークフロー実行ごとの最大実行時間（秒）。超過するとワークフローが終了されます。<br /><br />`APP_MAX_EXECUTION_TIME` と対になる外側の制限です（両方ともデフォルトは 1 時間）。両方を一緒に増やしてください。Agent を利用する場合は、Agent の実行期限（`DIFY_AGENT_RUN_TIMEOUT_SECONDS`）以上に保ちます。 |
| `WORKFLOW_CALL_MAX_DEPTH` | `5` | ネストされたワークフロー呼び出しの最大深度。無限再帰を防止します。 |
| `MAX_VARIABLE_SIZE` | `204800` | 単一のワークフロー変数の最大サイズ（バイト、200 KB）。 |
| `WORKFLOW_FILE_UPLOAD_LIMIT` | `10` | 1 つのファイルアップロードフィールド（ユーザー入力ノードのファイル変数など）における最大ファイル数設定の上限です。ノードパネルの最大ファイル数スライダーはこの値で制限されます。フィールドごとの設定をより大きくするには、この値を上げます。 |
| `WORKFLOW_NODE_EXECUTION_STORAGE` | `rdbms` | ワークフローノード実行レコードの保存先。`rdbms`はすべてをデータベースに保存します。`hybrid` は新しいデータをオブジェクトストレージに保存し、両方から読み取ります。 |
| `DSL_EXPORT_ENCRYPT_DATASET_ID` | `true` | DSL ファイルエクスポート時にデータセット ID を暗号化。クロス環境インポートを容易にするためにプレーン ID をエクスポートする場合は `false` に設定してください。 |

#### ワークフローストレージリポジトリ

ワークフロー実行データを処理するバックエンド実装を選択します。デフォルトの `SQLAlchemy` リポジトリはすべてをデータベースに保存します。代替実装（例：Celery、Logstore）は異なるストレージ戦略に使用できます。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `CORE_WORKFLOW_EXECUTION_REPOSITORY` | `core.repositories.sqlalchemy_workflow_execution_repository.SQLAlchemyWorkflowExecutionRepository` | ワークフロー実行レコードのリポジトリ実装。 |
| `CORE_WORKFLOW_NODE_EXECUTION_REPOSITORY` | `core.repositories.sqlalchemy_workflow_node_execution_repository.SQLAlchemyWorkflowNodeExecutionRepository` | ワークフローノード実行レコードのリポジトリ実装。 |
| `API_WORKFLOW_RUN_REPOSITORY` | `repositories.sqlalchemy_api_workflow_run_repository.DifyAPISQLAlchemyWorkflowRunRepository` | ワークフロー実行 API 操作のサービスレイヤーリポジトリ。 |
| `API_WORKFLOW_NODE_EXECUTION_REPOSITORY` | `repositories.sqlalchemy_api_workflow_node_execution_repository.DifyAPISQLAlchemyWorkflowNodeExecutionRepository` | ワークフローノード実行 API 操作のサービスレイヤーリポジトリ。 |
| `LOOP_NODE_MAX_COUNT` | `100` | ループノードの最大反復回数。無限ループを防止します。 |
| `MAX_PARALLEL_LIMIT` | `10` | ワークフロー内の最大並列ブランチ数。 |

#### GraphEngine ワーカープール

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `GRAPH_ENGINE_MIN_WORKERS` | `3` | GraphEngine インスタンスごとの最小ワーカー数。 |
| `GRAPH_ENGINE_MAX_WORKERS` | `10` | GraphEngine インスタンスごとの最大ワーカー数。 |
| `GRAPH_ENGINE_SCALE_UP_THRESHOLD` | `0` | 空きワーカーを待つタスクをいくつまで許容するか。超えると `GRAPH_ENGINE_MAX_WORKERS` を上限にワーカーが追加されます。<br /><br />デフォルトの `0` では、待ちタスクが発生した時点で即座に追加されます。値を上げると、短い滞留を許容してからスケールアップします。 |
| `GRAPH_ENGINE_SCALE_DOWN_IDLE_TIME` | `5.0` | 余剰ワーカーが削除されるまでのアイドル時間（秒）。 |

#### ワークフローログクリーンアップ

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `WORKFLOW_LOG_CLEANUP_ENABLED` | `false` | 毎日午前 2:00 にワークフロー実行ログの自動クリーンアップを有効化。 |
| `WORKFLOW_LOG_RETENTION_DAYS` | `30` | クリーンアップ前にワークフローログを保持する日数。 |
| `WORKFLOW_LOG_CLEANUP_BATCH_SIZE` | `100` | クリーンアップバッチごとに処理するログエントリ数。システムパフォーマンスに基づいて調整してください。 |
| `WORKFLOW_LOG_CLEANUP_SPECIFIC_WORKFLOW_IDS` | （空） | クリーンアップを制限するワークフロー ID のカンマ区切りリスト。空の場合、すべてのワークフローログがクリーンアップされます。 |

#### HTTP リクエストノード

ワークフローで外部 API を呼び出すために使用される HTTP リクエストノードの設定です。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `HTTP_REQUEST_NODE_MAX_TEXT_SIZE` | `1048576` | テキストレスポンスの最大サイズ（バイト、1 MB）。これを超えるレスポンスは切り詰められます。 |
| `HTTP_REQUEST_NODE_MAX_BINARY_SIZE` | `10485760` | バイナリレスポンスの最大サイズ（バイト、10 MB）。 |
| `HTTP_REQUEST_NODE_SSL_VERIFY` | `true` | SSL 証明書を検証。自己署名証明書でのテスト時に無効化します。 |
| `HTTP_REQUEST_MAX_CONNECT_TIMEOUT` | `10` | ワークフローエディターでユーザーが設定できる最大接続タイムアウト（秒）。ノードごとのタイムアウトはこれを超えられません。 |
| `HTTP_REQUEST_MAX_READ_TIMEOUT` | `600` | 読み取りタイムアウトの上限（秒）。 |
| `HTTP_REQUEST_MAX_WRITE_TIMEOUT` | `600` | 書き込みタイムアウトの上限（秒）。 |

#### Webhook

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `WEBHOOK_REQUEST_BODY_MAX_SIZE` | `10485760` | Webhook ペイロードの最大サイズ（バイト、10 MB）。これを超えるペイロードは 413 エラーで拒否されます。 |

#### SSRF 保護

Dify からのすべてのアウトバウンド HTTP リクエスト（HTTP ノード、画像ダウンロードなど）は、プロキシを経由します。このプロキシは内部/プライベート IP 範囲へのリクエストをブロックし、Server-Side Request Forgery（SSRF）攻撃を防止します。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `SSRF_PROXY_HTTP_URL` | `http://ssrf_proxy:3128` | HTTP リクエスト用 SSRF プロキシ URL。 |
| `SSRF_PROXY_HTTPS_URL` | `http://ssrf_proxy:3128` | HTTPS リクエスト用 SSRF プロキシ URL。 |
| `SSRF_POOL_MAX_CONNECTIONS` | `100` | SSRF HTTP クライアントプール内の最大同時接続数。 |
| `SSRF_POOL_MAX_KEEPALIVE_CONNECTIONS` | `20` | SSRF プールで維持する最大アイドル接続数。 |
| `SSRF_POOL_KEEPALIVE_EXPIRY` | `5.0` | アイドルな SSRF 接続が閉じられるまでの秒数。 |
| `RESPECT_XFORWARD_HEADERS_ENABLED` | `false` | リバースプロキシからの X-Forwarded-For/Proto/Port ヘッダーを信頼。単一の信頼されたリバースプロキシの背後でのみ有効化してください。それ以外では IP スプーフィングが可能になります。 |

#### エージェント設定

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `MAX_TOOLS_NUM` | `10` | エージェントが同時に使用できる最大ツール数。 |
| `MAX_ITERATIONS_NUM` | `99` | エージェント実行ごとの最大推論イテレーション数。無限エージェントループを防止します。 |

## Web フロントエンドサービス

これらの変数は Next.js Web フロントエンドコンテナのみで使用されます。Python バックエンドには影響しません。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `TEXT_GENERATION_TIMEOUT_MS` | `60000` | ストリーミングテキスト生成 UI のフロントエンドタイムアウト。ストリームがこの時間以上停止した場合、UI はレンダリングを一時停止します。 |
| `ALLOW_INLINE_STYLES` | `false` | ユーザー生成の Markdown コンテンツでインライン `style` 属性と `<style>` ブロックの使用を許可します。セキュリティ上の理由（インラインスタイルはフィッシングに悪用される可能性があります）から、デフォルトでは無効です。信頼できるソースからのリッチなスタイリングが必要な場合にのみ有効化してください。 |
| `ALLOW_UNSAFE_DATA_SCHEME` | `false` | `data:` スキームの URL レンダリングを許可。セキュリティのためデフォルトでは無効です。 |
| `MAX_TREE_DEPTH` | `50` | 1 つの実行パスの最大ノード数。上限を超えるワークフローは公開できません。変更は新たに公開するワークフローにのみ適用されます。 |
| `MARKDOWN_FORM_FIELD_NAME_EXTRA_CHARS` | （空） | チャット応答内の Markdown からアプリがレンダリングするフォームで、フィールドの `name` 属性に追加で許可する文字。<br /><br />デフォルトでは、フィールド名は文字で始まり、文字・数字・アンダースコア・ハイフンのみ使用できます。それ以外の文字を名前に含むフィールドはレンダリングされません。<br /><br />追加する文字は 1 つの文字列として設定します。半角と全角のどちらも使用できます。例：`()！？` |
| `MARKDOWN_FORM_FIELD_NAME_MAX_LENGTH` | `128` | チャット応答内の Markdown からアプリがレンダリングするフォームで、フィールドの `name` 属性に許可する最大長。これより長い名前のフィールドはレンダリングされません。名前に使える文字は `MARKDOWN_FORM_FIELD_NAME_EXTRA_CHARS` で決まり、この変数は長さを制限します。<br /><br />生成されたフィールド名が上限を超え、レンダリングされたフォームにフィールドが欠ける場合は、この値を上げてください。正の整数を指定します。 |

### NEXT\_PUBLIC\_ENABLE\_FEATURE\_PREVIEW

デフォルト値：`true`

Go to Anything コマンドパレットの `/create` と `/refine` コマンドを有効にします。これらは自然言語の説明から Workflow や Chatflow アプリを生成・修正します。`false` に設定すると非表示になります。

## 新しい Agent

新しい Agent は、Docker Compose デプロイで追加サービス（Agent バックエンド、サンドボックス、サンドボックス専用の外向きプロキシ）として動作します。いずれも `docker compose up` で自動的に起動します。この機能はデフォルトで有効で、設定の大部分は既存の Compose の値から導出されるため、通常は以下の変数だけを確認すれば十分です。

### DIFY\_AGENT\_SERVER\_SECRET\_KEY

デフォルト値：（`.env.example` に開発用キーを設定済み。本番環境では必ず置き換えてください）

Agent バックエンドが内部トークンの鍵を導出するためのルートシークレットです。サンドボックス内の Agent がバックエンドを呼び出す際のトークンもここから導出されます。

デフォルトは公開された開発用キーのため、デプロイはそのまま起動しますが、このキーを知っていれば誰でもトークンを偽造できます。本番環境で使用する前に置き換えてください。

値はパディングなしの base64url テキストで、デコードするとちょうど 32 バイトになる必要があります。値が不正な場合、Agent バックエンドは起動しません。次のコマンドで生成できます：

```bash theme={null}
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
```

### DIFY\_AGENT\_API\_TOKEN

デフォルト値：（`.env.example` に開発用トークンを設定済み。本番環境では必ず置き換えてください）

Dify API が Agent バックエンドの実行 API を呼び出す際に提示する Bearer トークンです。Compose は同じ値を両方のサービスに渡すため、一度設定するだけで一致が保たれます。

デフォルトは公開された開発用トークンのため、デプロイはそのまま起動します。ただし、Agent バックエンドに到達でき、トークンを知っていれば誰でも実行を開始できます。本番環境で使用する前に、独自のランダムな値に置き換えてください。

### NEXT\_PUBLIC\_ENABLE\_AGENT\_V2

デフォルト値：`true`

新しい Agent を Web UI に表示します。メインナビゲーションの **Agents** 項目と、ワークフローのノード一覧の新しい Agent ノードです。`false` にすると非表示になり、クラシック Agent ノードにフォールバックします。`ENABLE_AGENT_V2` を置き換えるもので、こちらは引き続きフォールバックとして機能します。

### UPLOAD\_SKILL\_FILE\_SIZE\_LIMIT

デフォルト値：`50`

スキルパッケージ（`.zip` または `.skill`）の最大サイズを MB 単位で指定します。Agent に埋め込みスキルとしてアップロードする場合と、スキルライブラリへインポートする場合の両方に適用されます。上限を超えるパッケージはサイズエラーで拒否されます。

展開後の内容には、200 MB と 5000 ファイルという別の上限があります。スキルライブラリへインポートする場合、フォルダーも 5000 件の上限に含まれます。この環境変数では、どちらの上限も変更できません。100 より大きくする場合は、`NGINX_CLIENT_MAX_BODY_SIZE` も同じ値以上に設定してください。設定しないと、Nginx が 413 エラーでアップロードを拒否します。

### AGENT\_BACKEND\_BASE\_URL

デフォルト値：`http://agent_backend:5050`

API が Agent バックエンドにアクセスするためのアドレスです。Docker Compose ではデフォルトのままにします。

その他の変数は、同梱のサービスを設定するか、既存の Compose 値から導出されるため、通常は変更不要です。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `DIFY_AGENT_REDIS_URL` | （空。`REDIS_PASSWORD` から導出） | Agent バックエンドが実行状態を保存する Redis 接続。Compose のデフォルトは同梱の `redis` のデータベース 2。 |
| `DIFY_AGENT_REDIS_PREFIX` | `dify-agent` | Agent バックエンドの Redis キーのプレフィックス。 |
| `DIFY_AGENT_SHUTDOWN_GRACE_SECONDS` | `30` | Agent バックエンドの停止時に、進行中の実行の完了を待つ秒数。 |
| `DIFY_AGENT_RUN_RETENTION_SECONDS` | `7200` | 各 Agent 実行のレコードとイベントストリームを Redis に保持する秒数。最後の書き込みから数える（デフォルトは 2 時間）。値を下げると Redis メモリを早く解放できるが、切断後にイベントを再生できる期間も短くなる。 |
| `DIFY_AGENT_RUN_EVENT_STREAM_MAX_LENGTH` | `5000` | 各 Agent 実行の Redis ストリームに保持するイベント数の上限（概算）。値を下げると、1 回の実行が使う Redis メモリを減らせる。<br /><br />上限に達すると、新しいイベントの書き込み時に古いイベントから削除する。削除したイベントは切断後に再生できない。 |
| `DIFY_AGENT_STREAM_TEXT_DELTA_COALESCING_ENABLED` | `true` | モデルが連続して出力するテキスト差分をまとめて、Redis に書き込み、配信する。有効のままにすると、Redis への書き込み回数とイベント数を減らせる。<br /><br />差分を個別に配信するには `false` に設定する。ツール呼び出しなど、テキスト以外のイベントの内容と順序は変わらない。 |
| `DIFY_AGENT_STREAM_TEXT_DELTA_FLUSH_INTERVAL_MS` | `100` | まとめたテキスト差分を配信する間隔の目安（ミリ秒）。値を下げるとテキストの更新頻度が上がる。上げると、1 回の配信量が増え、配信回数が減る。<br /><br />厳密な時間制限ではない。`DIFY_AGENT_STREAM_TEXT_DELTA_MAX_CHARS` に達すると早めに配信する。最小値は 1。結合を無効にするには `DIFY_AGENT_STREAM_TEXT_DELTA_COALESCING_ENABLED` を `false` にする。 |
| `DIFY_AGENT_STREAM_TEXT_DELTA_MAX_CHARS` | `4096` | まとめたテキスト差分を、フラッシュ間隔を待たずに配信する文字数のしきい値。値を下げると、小さなまとまりで早めに配信できる。<br /><br />差分は分割せずに追加するため、文字数がこの値を超える場合がある。最小値は 1。 |
| `DIFY_AGENT_RUN_TIMEOUT_SECONDS` | `3600` | Agent 実行 1 回のモデルとツール処理に適用される制限時間。超過した実行は `agent_run_limit_exceeded` で失敗する。旧 `AGENT_BACKEND_RUN_TIMEOUT_SECONDS` を置き換える。<br /><br />API 側の `APP_MAX_EXECUTION_TIME` と `WORKFLOW_MAX_EXECUTION_TIME`（デフォルト `3600`）をこの値より低く設定すると、実行が先に停止される。<br /><br />`e2b` バックエンドではサンドボックス側の `DIFY_AGENT_E2B_ACTIVE_TIMEOUT_SECONDS`（上限 3600）も適用されるため、1 時間を超える値が効くのは `local` バックエンドのみ。 |
| `AGENT_BACKEND_STREAM_READ_TIMEOUT_SECONDS` | `30` | Agent バックエンドへの SSE 接続 1 本あたりの読み取りタイムアウト。 |
| `AGENT_BACKEND_STREAM_MAX_RECONNECTS` | `3` | ストリーム切断時、実行を失敗と判定するまでに API が再接続を試みる回数。 |
| `DIFY_AGENT_PLUGIN_DAEMON_URL` | （空。`PLUGIN_DAEMON_URL` から導出） | Agent バックエンドがツール呼び出しに使うプラグインデーモンのアドレス。 |
| `DIFY_AGENT_PLUGIN_DAEMON_API_KEY` | （空。`PLUGIN_DAEMON_KEY` から導出） | プラグインデーモンの認証情報。 |
| `DIFY_AGENT_OUTBOUND_HTTP_CONNECT_TIMEOUT` | `10` | Agent サービスの外向き HTTP 呼び出し（ツールやプラグインの通信など）の接続タイムアウト（秒）。 |
| `DIFY_AGENT_OUTBOUND_HTTP_READ_TIMEOUT` | `600` | 読み取りタイムアウト（秒）。遅いツール応答や大きなダウンロードが完了できるように、デフォルトは長めに設定されている。 |
| `DIFY_AGENT_OUTBOUND_HTTP_WRITE_TIMEOUT` | `30` | 外向きリクエストの書き込みタイムアウト（秒）。 |
| `DIFY_AGENT_OUTBOUND_HTTP_POOL_TIMEOUT` | `10` | 接続プールの空き接続を待つ時間（秒）。 |
| `DIFY_AGENT_OUTBOUND_HTTP_MAX_CONNECTIONS` | `100` | Agent サービスの外向き HTTP の接続プールサイズ。 |
| `DIFY_AGENT_OUTBOUND_HTTP_MAX_KEEPALIVE_CONNECTIONS` | `20` | 再利用のために保持するアイドル接続数。 |
| `DIFY_AGENT_OUTBOUND_HTTP_KEEPALIVE_EXPIRY` | `30` | アイドル接続を閉じるまで保持する秒数。 |
| `DIFY_AGENT_INNER_API_URL` | （空。`PLUGIN_DIFY_INNER_API_URL` から導出） | Agent バックエンドの内部呼び出し用 Dify API アドレス。 |
| `DIFY_AGENT_INNER_API_KEY` | （空。`PLUGIN_DIFY_INNER_API_KEY` から導出） | API サービスの `INNER_API_KEY_FOR_PLUGIN` と一致させる（`INNER_API_KEY` ではない）。 |
| `DIFY_AGENT_LOCAL_SANDBOX_ENDPOINT` | `http://local_sandbox:5004` | 同梱のサンドボックスサービスのアドレス。旧 `DIFY_AGENT_SHELLCTL_ENTRYPOINT` を置き換える。旧名も互換エイリアスとして引き続き使える。 |
| `DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN` | （空） | Agent バックエンドからサンドボックスへの呼び出しを保護する任意の Bearer トークン。Compose は同じ値を両サービスに渡す。<br /><br />旧 `DIFY_AGENT_SHELLCTL_AUTH_TOKEN` を置き換える。旧名も互換エイリアスとして引き続き使える。 |
| `EXPOSE_LOCAL_SANDBOX_PORT` | `5004` | [ソースコードからのデプロイ](/ja/self-host/deploy/advanced-deployments/local-source-code) で使うミドルウェアスタックが Agent サンドボックスを公開するホスト側のポート。ソースから起動した Agent バックエンドは `http://localhost:5004` でサンドボックスに到達できる。設定はそのスタックの `middleware.env` で行う。変更した場合は、Agent バックエンドの `.env` にある `DIFY_AGENT_LOCAL_SANDBOX_ENDPOINT` を新しいポートに合わせる。<br /><br />ミドルウェアスタック専用。フル構成の Compose スタックでは、サンドボックスは内部ネットワークに留まる。 |
| `DIFY_AGENT_STUB_API_BASE_URL` | `http://agent_backend:5050/agent-stub` | サンドボックス内の Agent が Agent バックエンドを呼び出すためのアドレス。 |
| `DIFY_AGENT_SANDBOX_FILES_BASE_URL` | `http://api:5001` | サンドボックス内の Agent がファイル転送に使う Dify API アドレス。Docker Compose ではデフォルトのまま使う。リモートサンドボックスバックエンドでは、公開されている Dify アドレスを指定する。 |
| `AGENT_BACKEND_BINDING_FILE_DOWNLOAD_TIMEOUT_SECONDS` | `240` | API が Agent のサンドボックスからファイルを取得する際の待ち時間。超過すると転送は失敗する。Agent 側の `DIFY_AGENT_BINDING_FILE_DOWNLOAD_COMMAND_TIMEOUT_SECONDS` より高く保つこと。 |
| `AGENT_BACKEND_HOME_SNAPSHOT_TIMEOUT_SECONDS` | `45` | home snapshot の転送を伴う Agent バックエンド呼び出し（スナップショットの取得・削除、スナップショットを復元する実行の開始）を API が待つ時間。<br /><br />home 環境が大きい Agent でビルドの適用や実行開始が失敗する場合は、値を大きくしてください。 |
| `DIFY_AGENT_BINDING_FILE_DOWNLOAD_COMMAND_TIMEOUT_SECONDS` | `210` | そのファイルを出力するサンドボックスコマンドの実行時間の上限。デフォルトは API 側のタイムアウトより低く、Agent 自身のエラーが先に表面化するようにしている。 |
| `DIFY_AGENT_STUB_UPLOAD_FILE_SIZE_LIMIT` | `50` | サンドボックス内の Agent が Dify にアップロードする 1 ファイルの上限サイズ（MiB）。返信のために生成したファイルなどが対象。 |
| `SHELLCTL_ENABLE_PATH_ISOLATION` | `true` | カーネルレベルの Landlock でサンドボックスが読み書きできるパスを制限する。Linux 5.13 以降が必要。未対応のカーネルでは警告を記録し、分離なしで実行される。`docker/envs/core-services/local-sandbox.env` で設定する。`.env` の値はサンドボックスコンテナには渡されない。 |
| `DIFY_AGENT_SHELL_REDACT_PATTERNS` | （空） | シェル出力を Agent が読む前にマスクする正規表現の JSON 配列。API キーなどの機密を保護する。Agent の内部トークンは常にマスクされる。 |

### DIFY\_AGENT\_RUNTIME\_BACKEND

デフォルト値：`local`

Agent のサンドボックスをどこで実行するかを選択します。デフォルトの `local` は同梱のサンドボックスコンテナを使います。`e2b` に設定すると、各 Agent のサンドボックスを [E2B](https://e2b.dev) のクラウド VM で実行でき、同梱コンテナより強い分離が得られます。

`e2b` バックエンドには専用の変数グループがあり、`docker/docker-compose.e2b.yaml` オーバーレイが Compose 構成を調整します：

| 変数 | デフォルト | 説明 |
| - | - | - |
| `DIFY_AGENT_E2B_API_KEY` | （空；`E2B_API_KEY`/`E2B_API_TOKEN` にフォールバック） | E2B アカウントキー。`e2b` バックエンドでは必須。 |
| `DIFY_AGENT_E2B_TEMPLATE` | `difys-default-team/dify-agent-local-sandbox` | Agent が実行される E2B サンドボックステンプレート。 |
| `EXPOSE_AGENT_BACKEND_PORT` | `15050` | `docker-compose.e2b.yaml` オーバーレイが Agent バックエンド（コンテナポート `5050`）を公開するホスト側のポート。ホスト側で 15050 が使用中の場合は別のポートに変更する。 |
| `DIFY_AGENT_E2B_ACTIVE_TIMEOUT_SECONDS` | `3600` | 1 つの E2B サンドボックスがアクティブでいられる時間。Agent の 1 回の実行全体に及ぶ。3600 が上限で、それより大きい値は拒否される。<br /><br />`DIFY_AGENT_RUN_TIMEOUT_SECONDS` 以上に設定すること。サンドボックスのアクティブ時間が実行の許容時間より短いと、実行は制限内であってもサンドボックスを失う。 |
| `DIFY_AGENT_E2B_SHELLCTL_PORT` | `5004` | E2B VM 内でサンドボックス制御サービスが待ち受けるポート。 |

## データベースサービス

Docker Compose でデータベースと Redis のコンテナを直接設定します。「ミドルウェアスタック」と記した行は、[ソースコードからのデプロイ](/ja/self-host/deploy/advanced-deployments/local-source-code) で起動するスタックにのみ適用され、そのスタックの `middleware.env` で設定します。フル構成の Compose スタックでは、これらのサービスは内部ネットワークに留まります。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `PGDATA` | `/var/lib/postgresql/data/pgdata` | コンテナ内の PostgreSQL データディレクトリ。 |
| `MYSQL_HOST_VOLUME` | `./volumes/mysql/data` | MySQL データボリュームとしてマウントされるホストパス。 |
| `PGDATA_HOST_VOLUME` | `./volumes/db/data` | PostgreSQL データボリュームとしてマウントされるホストパス。ミドルウェアスタック。フル構成の Compose スタックは `./volumes/db/data` を直接マウントする。 |
| `REDIS_HOST_VOLUME` | `./volumes/redis/data` | Redis データボリュームとしてマウントされるホストパス。ミドルウェアスタック。 |
| `EXPOSE_POSTGRES_PORT` | `5432` | ミドルウェアスタックが PostgreSQL を公開するホスト側のポート。 |
| `EXPOSE_MYSQL_PORT` | `3306` | ミドルウェアスタックが MySQL を公開するホスト側のポート。 |
| `EXPOSE_REDIS_PORT` | `6379` | ミドルウェアスタックが Redis を公開するホスト側のポート。 |

## サンドボックスサービス

サンドボックスは、コードノード（Python、JavaScript、Jinja2）を実行するための隔離されたサービスです。セキュリティのためにネットワークアクセスを無効化できます。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `SANDBOX_API_KEY` | `dify-sandbox` | サンドボックス認証用 API キー。API サービスの `CODE_EXECUTION_API_KEY` と一致する必要があります。 |
| `SANDBOX_GIN_MODE` | `release` | サンドボックスサービスモード：`release`または `debug`。 |
| `SANDBOX_WORKER_TIMEOUT` | `15` | 単一コード実行の最大実行時間（秒）。 |
| `SANDBOX_ENABLE_NETWORK` | `true` | コードからのアウトバウンド HTTP リクエストを許可。コードノードが外部サービスにアクセスすることを防止するには無効化してください。 |
| `SANDBOX_HTTP_PROXY` | `http://ssrf_proxy:3128` | ネットワーク有効時の SSRF 保護用 HTTP プロキシ。 |
| `SANDBOX_HTTPS_PROXY` | `http://ssrf_proxy:3128` | SSRF 保護用 HTTPS プロキシ。 |
| `SANDBOX_PORT` | `8194` | サンドボックスサービスのポート。 |

## Nginx リバースプロキシ

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `NGINX_SERVER_NAME` | `_` | Nginx サーバー名。`_` は任意のホスト名に一致します。 |
| `NGINX_HTTPS_ENABLED` | `false` | HTTPS を有効化。`true`の場合、SSL 証明書と鍵を `./nginx/ssl/` に配置してください。 |
| `NGINX_PORT` | `80` | HTTP ポート。 |
| `NGINX_SSL_PORT` | `443` | HTTPS ポート（`NGINX_HTTPS_ENABLED=true` の場合のみ使用）。 |
| `NGINX_SSL_CERT_FILENAME` | `dify.crt` | `./nginx/ssl/` 内の SSL 証明書ファイル名。 |
| `NGINX_SSL_CERT_KEY_FILENAME` | `dify.key` | `./nginx/ssl/` 内の SSL 秘密鍵ファイル名。 |
| `NGINX_SSL_PROTOCOLS` | `TLSv1.2 TLSv1.3` | 許可される TLS プロトコルバージョン。 |
| `NGINX_WORKER_PROCESSES` | `auto` | Nginx ワーカープロセス数。`auto` は CPU コア数に一致します。 |
| `NGINX_CLIENT_MAX_BODY_SIZE` | `100M` | 最大リクエストボディサイズ。プロキシレベルのファイルアップロード制限に影響します。 |
| `NGINX_KEEPALIVE_TIMEOUT` | `65` | キープアライブタイムアウト（秒）。 |
| `NGINX_PROXY_READ_TIMEOUT` | `3600s` | プロキシ読み取りタイムアウト。長時間の SSE ストリームをサポートするため高く設定（1 時間）されています。 |
| `NGINX_PROXY_SEND_TIMEOUT` | `3600s` | プロキシ送信タイムアウト。 |
| `NGINX_ENABLE_CERTBOT_CHALLENGE` | `false` | `/.well-known/acme-challenge/` で Let's Encrypt ACME チャレンジリクエストを受け入れます。自動証明書更新のために有効化してください。 |
| `NGINX_SOCKET_IO_UPSTREAM` | `api_websocket:5001` | Nginx が `/socket.io/` トラフィックを転送する上流（upstream）です。デフォルトでは `collaboration` プロファイルで起動する専用の `api_websocket` コンテナを指します。Docker Compose の外で WebSocket サービスを実行する場合のみ変更してください。 |

<Note>
  HTTPS を有効化した後、 [共通変数](#共通変数) の URL 変数（例：`CONSOLE_API_URL`、`CONSOLE_WEB_URL`）も `https://` を使用するように更新してください。
</Note>

### Certbot 設定

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `CERTBOT_EMAIL` | （空） | Let's Encrypt の証明書通知に必要なメールアドレス。 |
| `CERTBOT_DOMAIN` | （空） | SSL 証明書のドメイン名。 |
| `CERTBOT_OPTIONS` | （空） | 追加の certbot CLI オプション（例：`--force-renewal`、`--dry-run`）。 |

## SSRF プロキシ

内部/プライベートネットワークへのリクエストをブロックする Squid ベースの SSRF プロキシコンテナの設定です。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `SSRF_HTTP_PORT` | `3128` | プロキシのリッスンポート。 |
| `EXPOSE_SSRF_PROXY_PORT` | `3128` | [ソースコードからのデプロイ](/ja/self-host/deploy/advanced-deployments/local-source-code) で使うミドルウェアスタックがプロキシの `SSRF_HTTP_PORT` を公開するホスト側のポート。そのスタックの `middleware.env` で設定する。フル構成の Compose スタックではプロキシは内部ネットワークに留まる。 |
| `EXPOSE_SANDBOX_PORT` | `8194` | ミドルウェアスタックがプロキシのサンドボックス用ポート（`SSRF_SANDBOX_PROXY_PORT`）を公開するホスト側のポート。ソースから起動したコードはプロキシ経由でサンドボックスに到達する。 |
| `SSRF_COREDUMP_DIR` | `/var/spool/squid` | コアダンプディレクトリ。 |
| `SSRF_SANDBOX_PROXY_PORT` | `8194` | SSRF プロキシがサンドボックスサービスへの送信トラフィックをリバースプロキシするためにリッスンするポート。 |
| `SSRF_SANDBOX_PROXY_HOST` | `sandbox` | SSRF プロキシの転送先となるサンドボックスサービスのホスト名。 |
| `SSRF_PROXY_ALLOW_PRIVATE_IPS` | （空） | プロキシ経由を許可する非公開 IP または CIDR 範囲のリスト（カンマまたはスペース区切り）。プライベートネットワークへのデフォルトのブロックを上書きします。HTTP またはツールのリクエストが特定の内部ホストへ到達する必要がある場合に使用します。 |
| `SSRF_PROXY_ALLOW_PRIVATE_DOMAINS` | （空） | プロキシ経由を許可する内部ドメインのリスト（カンマまたはスペース区切り）。プライベートネットワークへのデフォルトのブロックを上書きします。 |
| `SSRF_DEFAULT_TIME_OUT` | `5` | プロキシされたリクエストのデフォルト全体タイムアウト（秒）。 |
| `SSRF_DEFAULT_CONNECT_TIME_OUT` | `5` | デフォルト接続タイムアウト（秒）。 |
| `SSRF_DEFAULT_READ_TIME_OUT` | `5` | デフォルト読み取りタイムアウト（秒）。 |
| `SSRF_DEFAULT_WRITE_TIME_OUT` | `5` | デフォルト書き込みタイムアウト（秒）。 |

## Docker Compose

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `COMPOSE_PROFILES` | `${VECTOR_STORE:-weaviate},${DB_TYPE:-postgresql},collaboration` | 起動するサービスコンテナを選びます。デフォルトでは、ベクトルストア、データベース、`collaboration` プロファイルを起動します。`DB_TYPE=mysql` なら MySQL を使います。`collaboration` を削除すると、`api_websocket` コンテナを起動しません。 |
| `EXPOSE_NGINX_PORT` | `80` | Nginx HTTP にマッピングされるホストポート。 |
| `EXPOSE_NGINX_SSL_PORT` | `443` | Nginx HTTPS にマッピングされるホストポート。 |

## モデルプロバイダーとツールの表示順設定

アプリインターフェースで利用可能なツールとモデルプロバイダーおよびその表示順をカスタマイズします。カンマ区切りの値を使用し、項目間にスペースを入れないでください。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `POSITION_TOOL_PINS` | （空） | 特定のツールをリストの先頭に固定。例：`bing,google`。 |
| `POSITION_TOOL_INCLUDES` | （空） | リストされたツールのみ表示。未設定の場合、すべてのツールが利用可能です。 |
| `POSITION_TOOL_EXCLUDES` | （空） | 特定のツールを非表示（固定されたツールには影響しません）。 |
| `POSITION_PROVIDER_PINS` | （空） | 特定のモデルプロバイダーを先頭に固定。例：`openai,anthropic`。 |
| `POSITION_PROVIDER_INCLUDES` | （空） | リストされたプロバイダーのみ表示。未設定の場合、すべてのプロバイダーが利用可能です。 |
| `POSITION_PROVIDER_EXCLUDES` | （空） | 特定のプロバイダーを非表示（固定されたプロバイダーには影響しません）。 |

## プラグインデーモン設定

プラグインデーモンは、プラグインのライフサイクル（インストール、実行、アップグレード）を管理する独立したサービスです。API は HTTP 経由で通信します。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `PLUGIN_DAEMON_URL` | `http://plugin_daemon:5002` | プラグインデーモンサービス URL。 |
| `PLUGIN_DAEMON_KEY` | （自動生成） | プラグインデーモンの認証キー。 |
| `PLUGIN_DAEMON_PORT` | `5002` | プラグインデーモンのリッスンポート。 |
| `DB_SSL_MODE` | `disable` | プラグインデーモンが PostgreSQL に接続する際の `sslmode`。データベースが TLS を必須とする場合は `require` にする。`.env.example` には項目がない。フル構成の Compose スタックでは `docker/.env`、ミドルウェアスタックでは `middleware.env` で設定する。 |
| `PLUGIN_DAEMON_TIMEOUT` | `600.0` | すべてのプラグインデーモンリクエスト（インストール、実行、リスト表示）のタイムアウト（秒）。 |
| `PLUGIN_MAX_PACKAGE_SIZE` | `52428800` | プラグインパッケージの最大サイズ（バイト、50 MB）。マーケットプレイスダウンロード時に検証されます。 |
| `PLUGIN_MAX_FILE_SIZE` | `52428800` | プラグインが Dify に返す単一ファイルの最大サイズ（バイト、50 MB）。ツールプラグインが生成した画像やドキュメントの出力などが対象です。上限を超えるファイルは「file is too large」エラーで呼び出しが失敗します。 |
| `PLUGIN_MODEL_SCHEMA_CACHE_TTL` | `3600` | プラグインモデルスキーマのキャッシュ期間（秒）。繰り返しの参照を削減します。 |
| `PLUGIN_MODEL_PROVIDERS_CACHE_ENABLED` | `true` | 各テナントのプラグインモデルプロバイダー一覧を Redis にキャッシュするかどうか。プラグインを外部システムからインストールしていて、テナントのプラグイン変更時にこのデプロイのキャッシュを無効化できない場合は無効にします。 |
| `PLUGIN_MODEL_PROVIDERS_CACHE_TTL` | `86400` | 各テナントのプラグインモデルプロバイダー一覧を Redis にキャッシュする期間（秒）。デフォルトは 24 時間。テナントがプラグインをインストール、アンインストール、またはアップグレードすると、Dify はこのキャッシュを無効化します。 |
| `PLUGIN_DIFY_INNER_API_KEY` | （自動生成） | プラグインデーモンが Dify API にコールバックする際に使用する API キー。プラグインデーモンサービス設定の `DIFY_INNER_API_KEY` と一致する必要があります。 |
| `INNER_API_KEY_FOR_PLUGIN` | （env サンプルにデフォルト値あり。本番では必ず変更） | 同じシークレットの API サービス側の直接名（`docker/envs/core-services/` 由来）。Compose 構成では `PLUGIN_DIFY_INNER_API_KEY` が両側に反映されます。<br />API はプラグインからのコールバック（モデル呼び出し、ツール呼び出し、ファイル転送）ごとにこのキーを検証します。不一致だとこれらの呼び出しは失敗しますが、プラグインのインストールは動作します。<br />デフォルト値は Dify リポジトリで公開されており、コールバック API の唯一の認証手段のため、必ず変更してください。 |
| `PLUGIN_DIFY_INNER_API_URL` | `http://api:5001` | プラグインデーモンがコールバックする内部 API URL。 |
| `PLUGIN_DEBUGGING_HOST` | `0.0.0.0` | プラグインリモートデバッグ接続のホスト。 |
| `PLUGIN_DEBUGGING_PORT` | `5003` | プラグインリモートデバッグ接続のポート。 |
| `PLUGIN_REMOTE_INSTALL_HOST` | `localhost` | コンソールがプラグイン開発者に提示するリモートデバッグ接続先。表示専用で、デーモンの待ち受けには影響しません。<br />開発者が到達できるホスト名を設定してください（Compose 構成では `EXPOSE_PLUGIN_DEBUGGING_HOST`）。デフォルトの `localhost` は Docker ホスト上で開発する場合のみ有効です。 |
| `PLUGIN_REMOTE_INSTALL_PORT` | `5003` | 提示されるデバッグ接続先のポート部分。<br />デーモンが公開するデバッグポート（`EXPOSE_PLUGIN_DEBUGGING_PORT`）と一致している必要があります。Compose 構成では同じ変数から両方が設定されます。 |
| `MARKETPLACE_ENABLED` | `true` | Dify Marketplace のプラグイン機能を有効または無効にします。無効にすると、Marketplace プラグインの閲覧・インストール画面への導線が非表示になります。API は Marketplace からのプラグインのインストールとアップグレードを拒否します。定期アップグレードチェック（`ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK`）も停止します。<br /><br />テンプレートのインポート処理自体には影響しません。ただし、インポートしたテンプレートが未インストールの Marketplace プラグインに依存する場合があります。Marketplace が無効な間は、その依存プラグインをインストールできません。インストール済みのプラグインはそのまま動作します。インストールポリシーで許可されている場合は、GitHub やローカルパッケージからも引き続きインストールできます。 |
| `MARKETPLACE_API_URL` | `https://marketplace.dify.ai` | プラグインとテンプレートの閲覧・ダウンロード、プラグインのアップグレード確認に使う Marketplace API エンドポイント。<br /><br />Dify API サービス、バックグラウンドワーカー、Web サービス、ユーザーのブラウザでこの URL を使用します。各実行環境からアクセスできる必要があります。 |
| `MARKETPLACE_URL` | （空。Compose 構成では `https://marketplace.dify.ai` にフォールバック） | Marketplace リンクのベース URL。プラグイン詳細ページや「統合」ページの Marketplace 入口に使用します。Dify は Creator Center のガイドリンク生成にもこの値を使用します。<br /><br />`MARKETPLACE_API_URL` とは用途が異なり、後者は Marketplace のデータとパッケージを提供する API エンドポイントです。 |
| `FORCE_VERIFYING_SIGNATURE` | `true` | プラグインインストール前に有効な署名を要求。改ざんまたは未署名のパッケージのインストールを防止します。 |
| `PLUGIN_MAX_EXECUTION_TIMEOUT` | `600` | プラグイン実行タイムアウト（秒、プラグインデーモン側）。API 側の `PLUGIN_DAEMON_TIMEOUT` と一致させる必要があります。 |
| `PIP_MIRROR_URL` | （空） | プラグインデーモンがプラグインの依存関係をインストールする際に使用するカスタム PyPI ミラー URL。高速インストールやエアギャップ環境に有用です。 |

## Creator Center 設定

Creator Center（`creators.dify.ai`）は、Dify アプリをテンプレートとして提出する窓口です。提出されたテンプレートはレビューを経て Dify マーケットプレイスに掲載されます。Dify コンソールから Creator Center を開くと、新しいブラウザタブに表示されます。

コンソールの **マーケットプレイスに公開** アクションは、アプリの DSL（YAML 形式のアプリ定義）を Creator Center にアップロードします。ユーザーは Creator Center で提出を完了します。手順は [アプリをマーケットプレイスに公開](/ja/self-host/use-dify/publish/publish-to-marketplace) を参照してください。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `CREATORS_PLATFORM_FEATURES_ENABLED` | `true` | アプリの「公開する」パネルに **マーケットプレイスに公開** アクションを表示するかどうかを制御します。`false` に設定するとアクションが非表示になり、対応するコンソール API は 403 を返します。テンプレートを外部に提出する一発経路をユーザーに提供したくないデプロイで有用です。 |
| `CREATORS_PLATFORM_API_URL` | `https://creators.dify.ai` | Creator Center サービスのベース URL。**マーケットプレイスに公開** は、API サービスからこのアドレスへアプリの DSL をアップロードします。ユーザーのブラウザも同じアドレスにアクセスして提出を完了するため、どちらからも到達できる必要があります。 |
| `CREATORS_PLATFORM_OAUTH_CLIENT_ID` | （空） | Creator Center へのパスワードレス SSO に使用する OAuth クライアント ID。セルフホスト環境では空のままにしてください。空でも公開できますが、ログインしていないユーザーは Creator Center に手動でログインする必要があります。デプロイの OAuth サーバーに未登録の ID を設定すると、**マーケットプレイスに公開** が失敗します。 |

## OTLP / OpenTelemetry 設定

OpenTelemetry は分散トレーシングとメトリクス収集を提供します。有効時、Dify は Flask を計装し、テレメトリデータを OTLP コレクターにエクスポートします。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `ENABLE_OTEL` | `false` | OpenTelemetry 計装のマスタースイッチ。 |
| `OTLP_TRACE_ENDPOINT` | （空） | 専用トレースエンドポイント URL。未設定の場合、`{OTLP_BASE_ENDPOINT}/v1/traces` にフォールバックします。 |
| `OTLP_METRIC_ENDPOINT` | （空） | 専用メトリクスエンドポイント URL。未設定の場合、`{OTLP_BASE_ENDPOINT}/v1/metrics` にフォールバックします。 |
| `OTLP_BASE_ENDPOINT` | `http://localhost:4318` | ベース OTLP コレクター URL。特定のトレース/メトリクスエンドポイントが設定されていない場合のフォールバックとして使用されます。 |
| `OTLP_API_KEY` | （空） | OTLP 認証用 API キー。`Authorization: Bearer` ヘッダーとして送信されます。 |
| `OTEL_EXPORTER_TYPE` | `otlp` | エクスポータータイプ。`otlp` はコレクターにエクスポートします。その他の値はコンソールエクスポーター（デバッグ用）を使用します。 |
| `OTEL_EXPORTER_OTLP_PROTOCOL` | （空） | OTLP エクスポートのプロトコル。`grpc` は gRPC エクスポーターを使用します。それ以外は HTTP を使用します。 |
| `OTEL_SAMPLING_RATE` | `0.1` | トレースするリクエストの割合（0.1 = 10%）。高トラフィックの本番環境ではオーバーヘッドを削減するために値を小さくします。 |
| `OTEL_BATCH_EXPORT_SCHEDULE_DELAY` | `5000` | バッチエクスポート間の遅延（ミリ秒）。 |
| `OTEL_MAX_QUEUE_SIZE` | `2048` | ドロップ前のキューに入れられる最大スパン数。 |
| `OTEL_MAX_EXPORT_BATCH_SIZE` | `512` | エクスポートバッチごとの最大スパン数。 |
| `OTEL_METRIC_EXPORT_INTERVAL` | `60000` | メトリクスエクスポート間隔（ミリ秒）。 |
| `OTEL_BATCH_EXPORT_TIMEOUT` | `10000` | バッチスパンエクスポートのタイムアウト（ミリ秒）。 |
| `OTEL_METRIC_EXPORT_TIMEOUT` | `30000` | メトリクスエクスポートのタイムアウト（ミリ秒）。 |

## その他

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `CSP_WHITELIST` | （空） | Content Security Policy ヘッダーで許可する追加ドメイン。 |
| `NEXT_TELEMETRY_DISABLED` | `0` | `1` にすると Next.js の匿名テレメトリを無効にする。Compose スタックではデフォルトで有効のまま。 |
| `ALLOW_EMBED` | `false` | Dify ページの iframe 埋め込みを許可。`false`の場合、クリックジャッキングを防止するため `X-Frame-Options: DENY` を設定します。 |
| `SWAGGER_UI_ENABLED` | `false` | `SWAGGER_UI_PATH` で Swagger UI を公開し、API ドキュメントをブラウジングできるようにします。Swagger エンドポイントは認証をバイパスします。 |
| `SWAGGER_UI_PATH` | `/swagger-ui.html` | Swagger UI の URL パス。 |
| `MAX_SUBMIT_COUNT` | `100` | 並列ワークフローノード実行に使用されるスレッドプール内の最大同時タスク送信数。 |
| `TENANT_ISOLATED_TASK_CONCURRENCY` | `1` | テナントごとに同時処理されるドキュメントインデックスまたは RAG パイプラインタスク数。高速なインデックス作成のために増加できますが、データベース負荷が増加します。 |
| `DIFY_ENV_NACOS_REQUEST_TIMEOUT` | `10.0` | Nacos 設定サーバーへの HTTP リクエストのタイムアウト（秒）。 |
| `DIFY_ENV_NACOS_CONNECT_TIMEOUT` | `3.0` | Nacos 設定サーバーへの接続確立のタイムアウト（秒）。 |

### 定期タスク設定

Dify は Celery Beat を使用して、設定可能なスケジュールでバックグラウンドメンテナンスタスクを実行します。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `ENABLE_CLEAN_EMBEDDING_CACHE_TASK` | `false` | 毎日午前 2:00 に期限切れのエンベディングキャッシュレコードをデータベースから削除します。データベースサイズを管理します。 |
| `ENABLE_CLEAN_UNUSED_DATASETS_TASK` | `false` | 保持期間内にアクティビティがなかったナレッジベースのドキュメントを無効化します。毎日午前 3:00 に実行されます。 |
| `ENABLE_CLEAN_MESSAGES` | `false` | 毎日午前 4:00 に `SANDBOX_EXPIRED_RECORDS_RETENTION_DAYS` の保持期間を超えた会話メッセージを削除します。 |
| `ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK` | `false` | クリーンアップタスクによりドキュメントが自動無効化されたナレッジベースのリストをワークスペースオーナーにメールで送信します。毎週月曜日午前 10:00 に実行されます。 |
| `ENABLE_DATASETS_QUEUE_MONITOR` | `false` | Redis 内のデータセット処理キューのバックログを監視します。キューがしきい値を超えるとメールアラートを送信します。 |
| `QUEUE_MONITOR_INTERVAL` | `30` | キューを確認する頻度（分）。 |
| `QUEUE_MONITOR_THRESHOLD` | `200` | アラートメールをトリガーするキューサイズ。 |
| `QUEUE_MONITOR_ALERT_EMAILS` | （空） | キューアラートを受信するメールアドレス（カンマ区切り）。 |
| `ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK` | `true` | 15 分ごとにマーケットプレイスで新しいプラグインバージョンを確認します。各テナントの自動アップグレードスケジュールに基づいてアップグレードタスクをディスパッチします。 |
| `ENABLE_WORKFLOW_SCHEDULE_POLLER_TASK` | `true` | スケジュールされたワークフロー実行を確認してトリガーするワークフロースケジュールポーラーを有効化。 |
| `WORKFLOW_SCHEDULE_POLLER_INTERVAL` | `1` | 期日のスケジュール済みワークフローを確認する頻度（分）。 |
| `WORKFLOW_SCHEDULE_POLLER_BATCH_SIZE` | `100` | ポーリングサイクルごとに取得する最大期日スケジュール数。 |
| `WORKFLOW_SCHEDULE_MAX_DISPATCH_PER_TICK` | `0` | サーキットブレーカー：ティックごとにディスパッチされる最大スケジュール数。`0` は無制限を意味します。 |
| `ENABLE_WORKFLOW_RUN_CLEANUP_TASK` | `false` | ワークフロー実行レコードの自動クリーンアップを有効化。 |
| `ENABLE_CREATE_TIDB_SERVERLESS_TASK` | `false` | ベクトルデータベースプーリング用に TiDB Serverless クラスターを事前作成。 |
| `ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK` | `false` | TiDB Serverless クラスターのステータスを定期的に更新。 |
| `ENABLE_HUMAN_INPUT_TIMEOUT_TASK` | `true` | 期限切れの人間の入力フォームを確認し、タイムアウトしたワークフローを再開または停止します。 |
| `HUMAN_INPUT_TIMEOUT_TASK_INTERVAL` | `1` | 期限切れの人間の入力フォームを確認する頻度（分）。 |
| `ENABLE_CONVERSATION_CLEANUP_TASK` | `true` | 会話削除のセーフティネット。削除された会話は即座に見えなくなり、メッセージと会話中にツールが生成したファイルはバックグラウンドジョブが削除します。エンドユーザーがアップロードしたファイルは保持されます。<br /><br />このタスクは、クリーンアップが実行されなかった会話を定期的に再処理し、データの残留を防ぎます。 |
| `CONVERSATION_CLEANUP_TASK_INTERVAL` | `5` | タスクの実行頻度（分）。 |
| `CONVERSATION_CLEANUP_BATCH_SIZE` | `100` | 1 回のスイープで再処理する会話の最大数。 |

#### レコード保持とクリーンアップ

古いメッセージとワークフロー実行レコードの定期クリーンアップを制御します。保持期間を超えたレコードはバッチ単位で削除されます。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `SANDBOX_EXPIRED_RECORDS_RETENTION_DAYS` | `30` | この日数を超えたレコードが削除対象になります。 |
| `SANDBOX_EXPIRED_RECORDS_CLEAN_BATCH_SIZE` | `1000` | クリーンアップバッチごとに処理されるレコード数。 |
| `SANDBOX_EXPIRED_RECORDS_CLEAN_BATCH_MAX_INTERVAL` | `200` | データベース負荷を軽減するためのクリーンアップバッチ間の最大ランダム遅延（ミリ秒）。 |
| `SANDBOX_EXPIRED_RECORDS_CLEAN_TASK_LOCK_TTL` | `90000` | 同時クリーンアップタスク実行を防止する Redis ロック TTL（秒、約 25 時間）。 |

## Aliyun SLS ログストア設定

データベースの代わりにワークフロー実行ログを外部に保存するための Aliyun Simple Log Service とのオプション統合。ログストア実装を使用するようにリポジトリ設定変数を設定して有効化します。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `ALIYUN_SLS_ACCESS_KEY_ID` | （空） | SLS 認証用 Aliyun access key ID。 |
| `ALIYUN_SLS_ACCESS_KEY_SECRET` | （空） | SLS 認証用 Aliyun access key secret。 |
| `ALIYUN_SLS_ENDPOINT` | （空） | SLS サービスエンドポイント URL（例：`cn-hangzhou.log.aliyuncs.com`）。 |
| `ALIYUN_SLS_REGION` | （空） | Aliyun リージョン（例：`cn-hangzhou`）。 |
| `ALIYUN_SLS_PROJECT_NAME` | （空） | ワークフローログ保存用 SLS プロジェクト名。 |
| `ALIYUN_SLS_LOGSTORE_TTL` | `365` | SLS ログストアのデータ保持期間（日）。永久保存には `3650` を使用してください。 |
| `LOGSTORE_DUAL_WRITE_ENABLED` | `false` | ワークフローデータを SLS と PostgreSQL の両方に同時書き込み。SLS への移行時に有用です。 |
| `LOGSTORE_DUAL_READ_ENABLED` | `true` | SLS が結果を返さない場合に PostgreSQL にフォールバック。履歴データがデータベースにのみ存在する移行時に有用です。 |
| `LOGSTORE_ENABLE_PUT_GRAPH_FIELD` | `true` | SLS ログに完全なワークフローグラフ定義を含めます。大きなグラフデータを省略してストレージを削減するには `false` に設定してください。 |

## イベントバス設定

API と Celery ワーカー間の Redis ベースのイベント転送です。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `EVENT_BUS_REDIS_URL` | （空） | イベントストリーミング用 Redis 接続 URL。空の場合、メイン Redis 接続設定を使用します。 |
| `EVENT_BUS_REDIS_CHANNEL_TYPE` | `pubsub` | トランスポートタイプ。`pubsub` は at-most-once 配信、`sharded` はシャード Pub/Sub、`streams` は Redis Streams（at-least-once 配信）です。 |
| `EVENT_BUS_REDIS_USE_CLUSTERS` | `false` | イベントバスの Redis Cluster モードを有効化。大規模デプロイメントに推奨されます。 |

## ベクトルデータベースサービス設定

ベクトルデータベースコンテナ自体の設定です（Dify クライアント接続ではありません）。選択した `VECTOR_STORE` の変数のみが関連します。

<AccordionGroup>
  <Accordion title="Weaviate サービス">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `WEAVIATE_PERSISTENCE_DATA_PATH` | `/var/lib/weaviate` | コンテナ内のデータ永続化ディレクトリ。 |
    | `WEAVIATE_QUERY_DEFAULTS_LIMIT` | `25` | デフォルトのクエリ結果制限。 |
    | `WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED` | `true` | 匿名アクセスを許可。 |
    | `WEAVIATE_DEFAULT_VECTORIZER_MODULE` | `none` | デフォルトのベクトライザーモジュール。 |
    | `WEAVIATE_CLUSTER_HOSTNAME` | `node1` | クラスターノードのホスト名。 |
    | `WEAVIATE_AUTHENTICATION_APIKEY_ENABLED` | `true` | API キー認証を有効化。 |
    | `WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS` | （自動生成） | 許可される API キー。クライアント設定の `WEAVIATE_API_KEY` と一致する必要があります。 |
    | `WEAVIATE_AUTHENTICATION_APIKEY_USERS` | `hello@dify.ai` | API キーに関連付けられたユーザー。 |
    | `WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED` | `true` | 管理者リスト認可を有効化。 |
    | `WEAVIATE_AUTHORIZATION_ADMINLIST_USERS` | `hello@dify.ai` | 管理者ユーザー。 |
    | `WEAVIATE_DISABLE_TELEMETRY` | `false` | Weaviate テレメトリを無効化。 |
    | `WEAVIATE_ENABLE_TOKENIZER_GSE` | `false` | GSE トークナイザーを有効化（中国語）。 |
    | `WEAVIATE_ENABLE_TOKENIZER_KAGOME_JA` | `false` | Kagome トークナイザーを有効化（日本語）。 |
    | `WEAVIATE_ENABLE_TOKENIZER_KAGOME_KR` | `false` | Kagome トークナイザーを有効化（韓国語）。 |
    | `WEAVIATE_HOST_VOLUME` | `./volumes/weaviate` | Weaviate データボリュームとしてマウントされるホストパス。ミドルウェアスタック（[ソースコードからのデプロイ](/ja/self-host/deploy/advanced-deployments/local-source-code)）。そのスタックの `middleware.env` で設定する。フル構成の Compose スタックは `./volumes/weaviate` を直接マウントする。 |
    | `EXPOSE_WEAVIATE_PORT` | `8080` | [ソースコードからのデプロイ](/ja/self-host/deploy/advanced-deployments/local-source-code) で使うミドルウェアスタックが Weaviate REST API を公開するホスト側のポート。ソースから起動した Dify は `http://localhost:8080` で到達できる。<br /><br />ホスト側で 8080 が使用中の場合は別のポートに変更し、[`WEAVIATE_ENDPOINT`](#ベクトルデータベース設定) を新しいポートに合わせる。ミドルウェアスタック専用。フル構成の Compose スタックでは Weaviate は内部ネットワークに留まる。 |
    | `EXPOSE_WEAVIATE_GRPC_PORT` | `50051` | ミドルウェアスタックが Weaviate gRPC を公開するホスト側のポート。`grpc://localhost:50051` で到達できる。<br /><br />変更した場合は [`WEAVIATE_GRPC_ENDPOINT`](#ベクトルデータベース設定) を新しいポートに合わせる。 |
  </Accordion>

  <Accordion title="Milvus サービス（ETCD + MinIO）">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `ETCD_AUTO_COMPACTION_MODE` | `revision` | ETCD 自動コンパクションモード。 |
    | `ETCD_AUTO_COMPACTION_RETENTION` | `1000` | リビジョン数での自動コンパクション保持。 |
    | `ETCD_QUOTA_BACKEND_BYTES` | `4294967296` | バックエンドクォータ（バイト、4 GB）。 |
    | `ETCD_SNAPSHOT_COUNT` | `50000` | スナップショットをトリガーする変更数。 |
    | `ETCD_ENDPOINTS` | `etcd:2379` | ETCD サービスエンドポイント。 |
    | `MINIO_ACCESS_KEY` | `minioadmin` | MinIO access key。 |
    | `MINIO_SECRET_KEY` | `minioadmin` | MinIO secret key。 |
    | `MINIO_ADDRESS` | `minio:9000` | MinIO サービスアドレス。 |
    | `MILVUS_AUTHORIZATION_ENABLED` | `true` | Milvus セキュリティ認可を有効化。 |
  </Accordion>

  <Accordion title="OpenSearch サービス">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `OPENSEARCH_DISCOVERY_TYPE` | `single-node` | クラスター形成のディスカバリタイプ。 |
    | `OPENSEARCH_BOOTSTRAP_MEMORY_LOCK` | `true` | 起動時にメモリをロックしてスワッピングを防止。 |
    | `OPENSEARCH_JAVA_OPTS_MIN` | `512m` | 最小 JVM ヒープサイズ。 |
    | `OPENSEARCH_JAVA_OPTS_MAX` | `1024m` | 最大 JVM ヒープサイズ。 |
    | `OPENSEARCH_INITIAL_ADMIN_PASSWORD` | `Qazwsxedc!@#123` | OpenSearch サービスの初期管理者パスワード。 |
    | `OPENSEARCH_MEMLOCK_SOFT` | `-1` | ソフトメモリロック制限（`-1` は無制限）。 |
    | `OPENSEARCH_MEMLOCK_HARD` | `-1` | ハードメモリロック制限（`-1` は無制限）。 |
    | `OPENSEARCH_NOFILE_SOFT` | `65536` | ソフトファイルディスクリプタ制限。 |
    | `OPENSEARCH_NOFILE_HARD` | `65536` | ハードファイルディスクリプタ制限。 |
  </Accordion>

  <Accordion title="PGVector / PGVecto.RS サービス">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `PGVECTOR_PGUSER` | `postgres` | PGVector コンテナの PostgreSQL ユーザー。 |
    | `PGVECTOR_POSTGRES_PASSWORD` | （自動生成） | PGVector コンテナの PostgreSQL パスワード。 |
    | `PGVECTOR_POSTGRES_DB` | `dify` | PGVector コンテナ内のデータベース名。 |
    | `PGVECTOR_PGDATA` | `/var/lib/postgresql/data/pgdata` | コンテナ内のデータディレクトリ。 |
    | `PGVECTOR_PG_BIGM_VERSION` | `1.2-20240606` | pg\_bigm 拡張のバージョン。 |
  </Accordion>

  <Accordion title="Oracle / Chroma / Elasticsearch サービス">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `ORACLE_PWD` | `Dify123456` | コンテナの Oracle データベースパスワード。 |
    | `ORACLE_CHARACTERSET` | `AL32UTF8` | Oracle 文字セット。 |
    | `CHROMA_SERVER_AUTHN_CREDENTIALS` | （自動生成） | Chroma サーバーコンテナの認証資格情報。 |
    | `CHROMA_SERVER_AUTHN_PROVIDER` | `chromadb.auth.token_authn.TokenAuthenticationServerProvider` | Chroma サーバーの認証プロバイダー。 |
    | `CHROMA_IS_PERSISTENT` | `TRUE` | Chroma の永続ストレージを有効化。 |
    | `KIBANA_PORT` | `5601` | Kibana ポート（Elasticsearch UI）。 |
  </Accordion>

  <Accordion title="IRIS / その他のサービス">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `IRIS_WEB_SERVER_PORT` | `52773` | IRIS Web サーバー管理ポート。 |
    | `IRIS_TIMEZONE` | `UTC` | IRIS コンテナのタイムゾーン。 |
    | `DB_PLUGIN_DATABASE` | `dify_plugin` | プラグインデータ用の別データベース名。 |
  </Accordion>
</AccordionGroup>

## プラグインデーモンストレージ設定

プラグインデーモンは異なるストレージバックエンドにプラグインパッケージを保存できます。`PLUGIN_STORAGE_TYPE` に一致するプロバイダーのみを設定してください。

| 変数 | デフォルト値 | 説明 |
| - | - | - |
| `PLUGIN_STORAGE_TYPE` | `local` | プラグインストレージバックエンド：`local`、`aws_s3`、`tencent_cos`、`azure_blob`、`aliyun_oss`、`volcengine_tos`。 |
| `PLUGIN_STORAGE_LOCAL_ROOT` | `/app/storage` | ローカルプラグインストレージのルートディレクトリ。 |
| `PLUGIN_WORKING_PATH` | `/app/storage/cwd` | プラグイン実行の作業ディレクトリ。 |
| `PLUGIN_INSTALLED_PATH` | `plugin` | インストール済みプラグインのサブディレクトリ。 |
| `PLUGIN_PACKAGE_CACHE_PATH` | `plugin_packages` | キャッシュされたプラグインパッケージのサブディレクトリ。 |
| `PLUGIN_MEDIA_CACHE_PATH` | `assets` | キャッシュされたメディアアセットのサブディレクトリ。 |
| `PLUGIN_STORAGE_OSS_BUCKET` | （空） | オブジェクトストレージバケット名（S3/COS/OSS/TOS プロバイダー間で共有）。 |
| `PLUGIN_PPROF_ENABLED` | `false` | プラグインデーモンの Go pprof プロファイリングを有効化。 |
| `PLUGIN_PYTHON_ENV_INIT_TIMEOUT` | `120` | プラグインの Python 環境初期化のタイムアウト（秒）。 |
| `PLUGIN_STDIO_BUFFER_SIZE` | `1024` | プラグイン stdio 通信のバッファサイズ（バイト）。 |
| `PLUGIN_STDIO_MAX_BUFFER_SIZE` | `5242880` | プラグイン stdio 通信の最大バッファサイズ（バイト、5 MB）。 |
| `ENDPOINT_URL_TEMPLATE` | `http://localhost/e/{hook_id}` | プラグインエンドポイントの URL テンプレート。`{hook_id}` は実際のフック ID に置き換えられます。 |
| `EXPOSE_PLUGIN_DAEMON_PORT` | `5002` | プラグインデーモンにマッピングされるホストポート。 |
| `EXPOSE_PLUGIN_DEBUGGING_HOST` | `localhost` | プラグインリモートデバッグのホスト。 |
| `EXPOSE_PLUGIN_DEBUGGING_PORT` | `5003` | プラグインリモートデバッグのホストポート。 |

<AccordionGroup>
  <Accordion title="プラグイン S3 ストレージ">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `PLUGIN_S3_USE_AWS` | `false` | AWS S3 を使用（S3 互換サービスとの対比）。 |
    | `PLUGIN_S3_USE_AWS_MANAGED_IAM` | `false` | 明示的な資格情報の代わりに IAM ロールを使用。 |
    | `PLUGIN_S3_ENDPOINT` | （空） | S3 エンドポイント URL。 |
    | `PLUGIN_S3_USE_PATH_STYLE` | `false` | 仮想ホスト型の代わりにパス型 URL を使用。 |
    | `PLUGIN_AWS_ACCESS_KEY` | （空） | AWS access key。 |
    | `PLUGIN_AWS_SECRET_KEY` | （空） | AWS secret key。 |
    | `PLUGIN_AWS_REGION` | （空） | AWS リージョン。 |
  </Accordion>

  <Accordion title="プラグイン Azure Blob ストレージ">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `PLUGIN_AZURE_BLOB_STORAGE_CONTAINER_NAME` | （空） | Azure Blob コンテナ名。 |
    | `PLUGIN_AZURE_BLOB_STORAGE_CONNECTION_STRING` | （空） | Azure Blob 接続文字列。 |
  </Accordion>

  <Accordion title="プラグイン Tencent COS ストレージ">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `PLUGIN_TENCENT_COS_SECRET_KEY` | （空） | Tencent COS secret key。 |
    | `PLUGIN_TENCENT_COS_SECRET_ID` | （空） | Tencent COS secret ID。 |
    | `PLUGIN_TENCENT_COS_REGION` | （空） | Tencent COS リージョン。 |
  </Accordion>

  <Accordion title="プラグイン Aliyun OSS ストレージ">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `PLUGIN_ALIYUN_OSS_REGION` | （空） | Aliyun OSS リージョン。 |
    | `PLUGIN_ALIYUN_OSS_ENDPOINT` | （空） | Aliyun OSS エンドポイント。 |
    | `PLUGIN_ALIYUN_OSS_ACCESS_KEY_ID` | （空） | Aliyun OSS access key ID。 |
    | `PLUGIN_ALIYUN_OSS_ACCESS_KEY_SECRET` | （空） | Aliyun OSS access key secret。 |
    | `PLUGIN_ALIYUN_OSS_AUTH_VERSION` | `v4` | Aliyun OSS 認証バージョン。 |
    | `PLUGIN_ALIYUN_OSS_PATH` | （空） | Aliyun OSS パスプレフィックス。 |
  </Accordion>

  <Accordion title="プラグイン Volcengine TOS ストレージ">
    | 変数 | デフォルト値 | 説明 |
    | - | - | - |
    | `PLUGIN_VOLCENGINE_TOS_ENDPOINT` | （空） | Volcengine TOS エンドポイント。 |
    | `PLUGIN_VOLCENGINE_TOS_ACCESS_KEY` | （空） | Volcengine TOS access key。 |
    | `PLUGIN_VOLCENGINE_TOS_SECRET_KEY` | （空） | Volcengine TOS secret key。 |
    | `PLUGIN_VOLCENGINE_TOS_REGION` | （空） | Volcengine TOS リージョン。 |
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.