はじめに
こんにちは、久保(賢)です。
Dify(ディフィ)は、生成AIアプリを開発するためのオープンソースプラットフォームです。
最大の特徴は、GUIによる直感的な操作で、誰でも簡単にAIアプリを作れる点かと思います。
弊社の過去ブログ記事:
DifyはOSSとして公開されているため、セルフホストとして自分でインフラを用意して運用することもできます。
AWSでDifyを構築して利用することで、AWSの各種マネージドサービスの恩恵を受けながら、柔軟にDifyを運用することが可能になります。
Difyは多機能な分、環境変数が多岐にわたります。
特に本番環境で重要と考えられる設定を中心に、カテゴリ別に整理したリストを作成しました。
特に [必ず変更] が付いている項目については、セキュリティ上の理由から本番環境で必ず変更することを推奨いたします。
対象読者
- Difyをセルフホストで運用したい/運用している方
- Difyの環境変数設定について全体像を把握したい方
- Difyのセキュリティに関わる重要な設定を理解したい方
- とりあえずdocker-composeで起動したが
.env.exampleのままでよいのか不安な方
公式の情報
公式の環境変数についてのドキュメントはこちらですが、
This document may be outdated. Please refer to the latest configuration files: docker-compose.yaml .env.example
と記載されている通り、本記事の執筆時点では最新の情報はGitHubの以下ファイルを参照する必要があります。
また、これらのファイルでも説明されていない設定もあるため、そのような設定についてはDifyのソースコードを元に確認しています。
各種URLについての補足
Difyでは複数のURL関連の環境変数があり柔軟にカスタマイズできるようになっています。
ただわかりにくい箇所でもあるため、以下に主なURLについての整理を記載します。
これらは単一のサーバでホストする場合はすべて同じでも問題ありません。
| 変数名 | 説明 |
|---|---|
CONSOLE_WEB_URL |
WebブラウザでDifyの管理画面にアクセスする際のURL |
CONSOLE_API_URL |
WebブラウザでDifyの管理画面にアクセスしている際に、フロントエンドのアプリがアクセスするバックエンドのAPI用URL |
SERVICE_API_URL |
Difyで作成したアプリを公開した際に、APIキーでDify外からアクセスする際のURL |
APP_WEB_URL |
Difyで作成したアプリにWebブラウザでアクセスする際のURL |
APP_API_URL |
Difyで作成したアプリにWebブラウザでアクセスしている際に、フロントエンドのアプリがアクセスするバックエンドのAPI用URL |
※本図はURL変数の役割イメージです。実運用では“単一ドメイン+パス振り分け”でも“サブドメイン分離”でも成立します。

Difyの主な設定リスト
※下表はすべての設定ではありません。
※全設定については前述した公式情報を参照ください。
※2026/2/13時点の情報に基づいています。
[必ず変更] が付いている項目については、
本番では 平文で .env ファイルに置かず、AWSであればSecrets Manager/Parameter Store 等で注入する運用を推奨します。
1) URL / セキュリティ / 実行環境関連の設定
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| URL | CONSOLE_WEB_URL |
空 | https://dify.example.com |
Console(管理画面)のフロントエンドURLです。認証コールバックの連結やCORS設定に使用されます。基本構成では以下のURL設定すべて同じ値で問題ありません(AWS公式サンプルでは全て同じALBのURLを設定)。本番環境では明示的に設定することを推奨します。 |
| URL | CONSOLE_API_URL |
空 | https://dify.example.com |
Console APIのバックエンドURLです。フロントエンドがAPIを呼び出す際に使用されます。基本構成ではCONSOLE_WEB_URLと同じ値を設定で問題ありません。サブドメイン分離構成(例:https://api.example.com)を採用する場合に異なる値を設定します。 |
| URL | SERVICE_API_URL |
空 | https://dify.example.com |
APIキーを利用して、Difyで作成したアプリにAPIでアクセスする際のベース URLです。基本構成では他のURL設定と同じ値で問題ありません。 |
| URL | APP_WEB_URL |
空 | https://dify.example.com |
作成したWebアプリのフロントエンドURLです。基本構成では他のURL設定と同じ値で問題ありません。 |
| URL | APP_API_URL |
空 | https://dify.example.com |
作成したWebアプリ用APIバックエンドURLです。基本構成では他のURL設定と同じ値で問題ありません。 |
| URL | FILES_URL |
空 | https://dify.example.com |
ファイルプレビュー・ダウンロード用の署名付きURLのベースURLです。画像プレビューURLなどは偽造防止のため署名され、デフォルトで5分後に期限切れとなります。基本構成では他のURL設定と同じ値で問題ありません。 |
| URL | TRIGGER_URL |
空 | https://dify.example.com |
ワークフローのWebhookトリガーURLを生成する際のベースURLです。外部システムからワークフローを実行する際に使用されるため、外部からアクセス可能なエンドポイントを公開する場合は、外部到達可能なURLを設定する必要があります。基本構成では他のURL設定と同じ値で問題ありません。 |
| セキュリティ(重要) | SECRET_KEY |
指定あり |
[必ず変更](例: openssl rand -base64 42 で生成) |
セッションCookieの署名とデータベース内の機密情報(APIキーなど)の暗号化に使用されます。.env.exampleのデフォルト値を本番で使用するのは危険です。必ず変更し、漏洩や使い回しを避けてください。 |
| セキュリティ(重要) | PLUGIN_DAEMON_KEY |
指定あり |
[必ず変更](例: openssl rand -base64 42 で生成) |
プラグインデーモンとAPIサーバー間の通信認証に使用される共有キーです。.env.exampleのデフォルト値を本番で使用するのは危険です。プラグイン機能を使用する場合は必ず変更してください。SECRET_KEYとは異なる値を設定してください。 |
| 環境 | DEPLOY_ENV |
PRODUCTION |
PRODUCTION |
デプロイ環境の種別を指定します。TESTINGに設定すると、フロントエンドに検証環境を示す色付きラベルが表示されます。本番環境ではPRODUCTIONを設定します。 |
| 起動 | MIGRATION_ENABLED |
true |
true |
アプリケーション起動前にデータベースマイグレーションを自動実行するかを制御します。trueに設定すると、起動時にマイグレーションが完了してからアプリケーションが開始されます。通常はtrueが推奨です。 |
| ログ | LOG_LEVEL |
INFO |
INFO(調査時のみ DEBUG) |
アプリケーションのログレベルを設定します。DEBUG、INFO、WARNING、ERROR、CRITICALから選択できます。本番環境ではINFOが基本です。DEBUGは詳細な情報を出力しますが、機密情報漏洩リスクやログ量増加によるコスト増につながる可能性があります。 |
| 開発向け | DEBUG |
false |
false |
デバッグモードの有効/無効を設定します。trueにすると開発時のトラブルシュートに有効なため、ローカル開発では有効にすることを推奨します。本番は情報露出リスクがあるため必ずfalseにします。 |
2) 認証・ブラウザ周り(CORS / Cookie)の設定
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| CORS | CONSOLE_CORS_ALLOW_ORIGINS |
* |
https://console.example.com(複数はカンマ) |
Console APIへのクロスオリジンリクエストを許可するオリジンを指定します。デフォルトは*(全オリジン許可)ですが、セキュリティのため本番環境ではConsoleの実際のオリジンに絞ることを推奨します。複数指定する場合はカンマ区切りで記載します。 |
| CORS | WEB_API_CORS_ALLOW_ORIGINS |
* |
https://app.example.com(複数はカンマ) |
Web APIへのクロスオリジンリクエストを許可するオリジンを指定します。公開WebAppを別オリジンで運用する場合に設定します。デフォルトは*です。 |
| Cookie | COOKIE_DOMAIN |
空 | example.com(サブドメイン共有時) |
Cookieを共有するドメインを指定します。フロントエンドとバックエンドが異なるサブドメイン(例:console.example.comとapi.example.com)で運用する場合、トップレベルドメイン(example.com)を設定すると、サブドメイン間でCookieが共有されます。 |
| Cookie | NEXT_PUBLIC_COOKIE_DOMAIN |
空 | 1(サブドメイン共有時) |
COOKIE_DOMAINと併せて設定します。フロントエンドとバックエンドが異なるサブドメインで動作する場合、1を設定することでCookie共有が有効になります。 |
3) DB / Redis 関連の設定
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| DB | DB_TYPE |
postgresql |
postgresql |
データベースの種類を指定します。postgresql、mysql、oceanbase、seekdbがサポートされています。 |
| DB | DB_HOST |
db_postgres |
your-rds-endpoint |
データベースのホスト名またはIPアドレスです。マネージドDB(AWS RDS等)を使用する場合は最初に変更します。docker-composeの同梱構成ではdb_postgresを使用します。 |
| DB | DB_PORT |
5432 |
5432 |
データベースの接続ポート番号です。PostgreSQLのデフォルトは5432、MySQLは3306です。外部DBで非標準ポートを使用している場合のみ変更します。 |
| DB | DB_USERNAME |
postgres |
dify |
データベースの接続ユーザー名です。本番環境ではセキュリティのため専用ユーザーを作成し、最小限の権限のみを付与することを推奨します。 |
| DB(重要) | DB_PASSWORD |
指定あり |
[必ず変更](例: 32文字以上のランダム文字列) | データベースユーザーのパスワードです。.env.exampleのデフォルト値を本番環境で使用するのは危険です。必ず強固なパスワードに変更してください。 |
| DB | DB_DATABASE |
dify |
dify |
使用するデータベース名です。複数の環境(本番、ステージング等)で分離する場合は環境ごとに異なる名前を設定します。 |
| Redis | REDIS_HOST |
redis |
外部Redisならエンドポイント / 同梱なら redis |
Redisのホスト名またはIPアドレスです。Redisは会話中のキャッシュとPub/Subに使用されます。マネージドRedis(AWS ElastiCache等)を使用する場合は変更します。 |
| Redis | REDIS_PORT |
6379 |
6379 |
Redisの接続ポート番号です。 |
| Redis(重要) | REDIS_PASSWORD |
指定あり |
[必ず変更](強固なパスワード or マネージドサービスの認証情報) | Redisの認証パスワードです。.env.exampleのデフォルト値を本番環境で使用するのは危険です。必ず変更してください。マネージドサービスの場合は発行された認証情報を使用します。 |
| Celery | CELERY_BROKER_URL |
redis://:************@redis:6379/1 |
例: redis://:***@redis:6379/1 |
Celeryのメッセージブローカー接続URLです。形式はredis://:<パスワード>@<ホスト>:<ポート>/です。DB番号1を使用することで、メインのアプリ用Redis(DB番号0)とタスクキューを分離し、データの衝突を回避しています。 |
4) ファイルストレージ関連の設定
デフォルト(opendalを利用する場合)
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| ストレージ | STORAGE_TYPE |
opendal |
opendal / s3 / azure-blob / etc |
ユーザーがアップロードしたファイルや秘密鍵などを保存するオブジェクトストレージのバックエンド種別を選択します。デフォルトはopendalで、OPENDAL_SCHEMEでストレージ方式を指定します。本番環境では各クラウドのストレージサービス(S3、Azure Blob、Google Cloud Storage等)の使用を推奨します。 |
| OpenDAL | OPENDAL_SCHEME |
fs |
fs |
OpenDALで使用するストレージスキームを指定します。fsはローカルファイルシステム、s3、azblob、gcs等のクラウドストレージも指定できます。本番環境でクラウドストレージに切り替える場合はこの値を変更します。 |
| OpenDAL | OPENDAL_FS_ROOT |
storage |
storage |
ローカルファイルシステム使用時のルートディレクトリパスです。APIコンテナとWorkerコンテナの両方から同じストレージにアクセスできるよう、docker volumeで適切にマウントする必要があります。本番環境では永続化されるパス/ボリュームを指定してください。 |
Amazon S3(またはS3互換)
STORAGE_TYPEを s3 にする場合の主要な環境変数は以下の通りです。
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| S3 | S3_ENDPOINT |
空 | AWS S3なら空 | S3互換APIのエンドポイントURLです。AWS S3を使用する場合は空(デフォルトエンドポイントを使用)で構いません。MinIO、Cloudflare R2、その他S3互換ストレージを使用する場合は、そのエンドポイントURLを指定する必要があります。 |
| S3 | S3_REGION |
us-east-1 |
ap-northeast-1 |
S3バケットが存在するAWSリージョンを指定します。バケット作成時に指定したリージョンに合わせてください。 |
| S3 | S3_BUCKET_NAME |
difyai |
dify-prod-uploads-bucket |
使用するS3バケットの名前です。バケットは事前に作成しておく必要があります。環境ごとに異なるバケットを使用することを推奨します。 |
| S3 | S3_USE_AWS_MANAGED_IAM |
false |
true |
AWS環境でIAMロールを使用して認証する場合はtrueに設定します。falseの場合は、アクセスキーとシークレットキーによる認証が必要になります。セキュリティの観点からtrueを推奨します。 |
5) ベクトルDB関連の設定
共通
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| ベクトルDB | VECTOR_STORE |
weaviate |
weaviate / qdrant / milvus / opensearch / pgvector |
ナレッジベースのベクトルデータを保存するベクトルデータベースの種類を選択します。docker-composeのデフォルトはweaviateで、初めて動かす場合は同梱の既定構成が最も簡単です。将来的にはパフォーマンス要件やコスト、運用体制に応じて変更を検討します。 |
| ベクトルDB | VECTOR_INDEX_NAME_PREFIX |
Vector_index |
Vector_index(そのままでOK) |
ベクトルインデックスの名前に付けるプレフィックスです。複数の環境(dev、staging、production等)で同じベクトルDBインスタンスを共有する場合、このプレフィックスを環境ごとに変えることでインデックス名の衝突を回避できます。 |
デフォルト(Weaviate)
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| Weaviate | WEAVIATE_ENDPOINT |
http://weaviate:8080 |
http://weaviate:8080 |
WeaviateのHTTPエンドポイントURLです。外部のマネージドWeaviateや別サーバーのWeaviateを使用する場合は、そのエンドポイントURLに差し替えます。 |
| Weaviate(重要) | WEAVIATE_API_KEY |
指定あり |
[必ず変更](ランダムな文字列) | Weaviateへの認証に使用するAPIキーです。.env.exampleの例の値を本番環境で使用しないでください。Weaviate側の設定(AUTHENTICATION_APIKEY_ALLOWED_KEYS等)とも整合させる必要があります。 |
OpenSearch
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| OpenSearch | OPENSEARCH_HOST |
opensearch |
opensearch.example.com |
OpenSearchのホスト名またはエンドポイントです。AWS OpenSearch Service、自前構築のOpenSearch、OpenSearch Service Serverless等に接続する際に設定します。 |
| OpenSearch | OPENSEARCH_PORT |
9200 |
443 |
OpenSearchの接続ポート番号です。HTTPSの場合は443、HTTPの場合は9200が一般的です。 |
| OpenSearch | OPENSEARCH_SECURE |
true |
true |
HTTPSプロトコルを使用するかどうかを設定します。本番環境ではtrue(HTTPS使用)が推奨です。 |
| OpenSearch | OPENSEARCH_VERIFY_CERTS |
true |
true |
HTTPS接続時にSSL証明書を検証するかどうかを設定します。セキュリティのため本番環境ではtrueが推奨です。検証を回避するためのfalse設定は極力避けてください。 |
| OpenSearch | OPENSEARCH_AUTH_METHOD |
basic |
aws_managed_iam |
認証方式を指定します。basicはユーザー名/パスワード認証、aws_managed_iamはAWS IAMロール認証です。AWS環境ではaws_managed_iamでIAMロールを利用する方がセキュアです。 |
| OpenSearch | OPENSEARCH_USER / OPENSEARCH_PASSWORD |
admin / admin |
[必ず変更](ユーザー名とパスワード) | OPENSEARCH_AUTH_METHOD=basicの場合に設定します。OpenSearchにアクセス可能なユーザーのクレデンシャルを指定してください。 |
| OpenSearch | OPENSEARCH_AWS_REGION |
ap-southeast-1 |
ap-northeast-1 |
OPENSEARCH_AUTH_METHOD=aws_managed_iamの場合に必要です。OpenSearchクラスターが存在するAWSリージョンを指定します。 |
| OpenSearch | OPENSEARCH_AWS_SERVICE |
aoss |
es or aoss |
OPENSEARCH_AUTH_METHOD=aws_managed_iam の場合に必要です。通常のAWS OpenSearch Serviceの場合は es、OpenSearch Service Serverlessの場合は aoss を指定します。 |
pgvector
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| pgvector | PGVECTOR_HOST |
pgvector |
your-rds-endpoint |
pgvector拡張をインストールしたPostgreSQLのホスト名です。既存のPostgreSQLインスタンスにベクトルデータも統合したい場合や、運用を一元化したい場合に有力な選択肢です。AWS RDS for PostgreSQL等のマネージドサービスでもpgvector拡張は利用可能です。 |
| pgvector | PGVECTOR_PORT |
5432 |
5432 |
pgvector用PostgreSQLの接続ポート番号です。PostgreSQLのデフォルトポートは5432で、通常は変更不要です。 |
| pgvector | PGVECTOR_USER |
postgres |
dify_vector |
pgvector用PostgreSQLの接続ユーザー名です。セキュリティのため、必要最小限の権限(ベクトルデータ用スキーマへのアクセスのみ)を持つ専用ユーザーを作成することを推奨します。 |
| pgvector(重要) | PGVECTOR_PASSWORD |
difyai123456 |
[必ず変更](強固なパスワード、Secrets管理推奨) | pgvector用PostgreSQLユーザーのパスワードです。.env.exampleの例の値を本番環境で使用しないでください。環境変数ファイルへの直接記載ではなく、Secrets管理サービスの使用を推奨します。 |
| pgvector | PGVECTOR_DATABASE |
dify |
dify(分離するなら別DB名) |
pgvectorで使用するデータベース名です。メインのDifyデータベースと同じでも構いませんが、運用上分離したい場合は別のデータベース名を指定できます。 |
6) ファイル処理とナレッジ抽出関連の設定
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| 制限 | UPLOAD_FILE_SIZE_LIMIT |
15 |
15 |
ナレッジベースにアップロード可能な1ファイルあたりの最大サイズ(MB単位)です。大きいPDFやOfficeドキュメントを扱う場合は、この値を増やす必要があります。 |
| 制限 | UPLOAD_FILE_BATCH_LIMIT |
5 |
5 |
一度にアップロード可能なファイル数の上限です。一括投入が多い運用シナリオでは増やすことができますが、サーバー負荷に注意してください。 |
| 制限 | MAX_VARIABLE_SIZE |
204800 |
204800 |
ワークフロー変数の最大サイズ(バイト単位)です。ワークフロー内で大きなデータ(大きなJSON、長いテキスト等)を変数として扱う場合に、この値を増やす必要があります。 |
| セキュリティ | UPLOAD_FILE_EXTENSION_BLACKLIST |
空 | exe,bat,cmd,com,scr,vbs,ps1,msi,dll |
セキュリティ上の理由でアップロードをブロックするファイル拡張子のリストです。カンマ区切りで指定します(ドットなし、小文字)。デフォルトは空(全ファイルタイプ許可)ですが、明示することで実行可能ファイル等の危険な拡張子をブロックすることが可能です。推奨値:exe,bat,cmd,com,scr,vbs,ps1,msi,dll |
7) メール(招待・通知を使う場合のみ)関連の設定
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| メール | MAIL_TYPE |
resend |
smtp等 |
メール送信方式を指定します。ユーザー招待やパスワードリセット等でメール送信機能を使用する場合に設定します。現在はresend、smtp、sendgridがサポートされています。 |
| From | MAIL_DEFAULT_SEND_FROM |
空 | no-reply@example.com |
メールの送信元(From)アドレスです。ドメインの送信者認証(SPF、DKIM、DMARC)も併せて設定することで、メールの到達率向上やなりすまし防止につながります。 |
| SMTP | SMTP_SERVER |
空 | smtp.example.com |
MAIL_TYPE=smtpの場合に必要です。使用するSMTPサーバーのホスト名またはIPアドレスを指定します。 |
| SMTP | SMTP_PORT |
465 |
465(SSL/TLS)または 587(STARTTLS) |
SMTPサーバーの接続ポート番号です。465はSMTP over SSL/TLS、587はSTARTTLSを使用する場合に一般的です。使用するSMTPサーバーの仕様に合わせて設定してください。 |
| SMTP | SMTP_USERNAME / SMTP_PASSWORD |
空 / 空 | (SMTPサーバーの認証情報) | SMTPサーバーへの認証に使用するユーザー名とパスワードです。メールサービスプロバイダから発行された認証情報を使用してください。パスワードは機密情報なので、Secrets管理サービスの使用を推奨します。 |
8) 同梱Nginx・Sandbox(使う場合のみ)関連の設定
| 分類 | 環境変数 | デフォルト値 | 設定例 | 説明 |
|---|---|---|---|---|
| Nginx | NGINX_SERVER_NAME |
_ |
dify.example.com |
docker-compose同梱のNginxをリバースプロキシとして使用する場合に設定するサーバー名(ドメイン名)です。同梱Nginxを使用しない場合(独自のリバースプロキシやALB等を使用する場合)は不要です。 |
| Nginx | NGINX_HTTPS_ENABLED |
false |
false |
同梱NginxでHTTPS(TLS終端)を有効にするかを設定します。 |
| 公開ポート | EXPOSE_NGINX_PORT |
80 |
80 |
同梱Nginxが公開するHTTPポート番号です。デフォルトは80で、通常は変更不要です。他のサービスとポートが競合する場合のみ変更します。 |
| 公開ポート | EXPOSE_NGINX_SSL_PORT |
443 |
443 |
同梱Nginxが公開するHTTPSポート番号です。デフォルトは443で、通常は変更不要です。他のサービスとポートが競合する場合のみ変更します。 |
| Sandbox | SANDBOX_ENABLE_NETWORK |
true |
true |
コード実行サンドボックスからの外部ネットワーク通信を許可するかを設定します。デフォルトはtrue(許可)ですが、セキュリティやガバナンス要件で外部通信を禁止する必要がある場合はfalseに設定します。 |
| SSRF | SSRF_PROXY_HTTP_URL / SSRF_PROXY_HTTPS_URL |
http://ssrf_proxy:3128 |
http://ssrf_proxy:3128 |
SSRF(Server-Side Request Forgery)攻撃対策用のプロキシURLです。外部通信を許可する場合でも、SSRF対策プロキシを経由させることでセキュリティを維持できます。デフォルト設定のまま維持することを推奨します。 |
おわりに
以上がDifyの主要な環境変数のリストと説明になります。
これらの設定を適切に構成することで、Difyを安全かつ効率的に運用することができます。
セキュリティに関わる設定(SECRET_KEY、PLUGIN_DAEMON_KEY、DB_PASSWORDなど)は特に慎重に管理し、漏洩や使い回しを避けるようにご注意ください。
久保 賢二(執筆記事の一覧)
猫とAWSが好きです。