MENU

Dify運用トラブル解決!停止・更新・エラー対処法

当ページのリンクには広告が含まれています。

Difyコミュニティエディション(ローカル版)を運用していると、「起動しない」「アップデートでエラーが出た」「処理がタイムアウトする」といったトラブルに遭遇することがあります。

この記事では、Difyの日常的な運用操作(停止・再起動・更新)から、よくあるトラブルの具体的な解決手順までを体系的に解説します。

目次

日常の運用操作:Dockerコマンド集

Difyの運用は基本的にDocker Composeコマンドで行います。まずは基本操作を押さえましょう。

基本操作:停止と再起動

設定変更後や調子が悪い時は、まず再起動を試すのが基本です。

# 停止 docker compose down

バックグラウンドで起動(再起動)
docker compose up -d

特定のコンテナ(例:api)だけ再起動
docker compose restart api

完全リセット(データ削除)

※注意:全てのデータが消えます!
必ずデータのバックアップを取ってから行いましょう。

検証環境などを初期化したい場合にのみ使用してください。

docker-compose down --rmi all --volumes --remove-orphans

別名、《滅びの呪文》と言うそうです(汗)
《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド

オプション意味
downupコマンドと真逆のことをするコマンドということになる。つまり、upコマンドで作られうるもの(イメージ、コンテナ、ボリューム、ネットワーク)をすべて削除する。
--rmi削除するイメージの種類を指定する。allはすべてのイメージ。localはフィールドにカスタムタグのないイメージのみを削除する。--rmiオプションを省略すると、イメージは消されない。
--volumesdocker-compose.ymlvolumesセクションに書かれた名前付きボリュームとコンテナにアタッチされたanonymous volumeが削除される。
--remove-orphansdocker-compose.ymlで定義から削除されたサービス用の未定義コンテナも削除される。

これら3つのオプションをつけないと、削除されるのはコンテナとネットワークだけとなる

トラブルシューティング:よくあるエラーと対処法

Case 1: アップデート時に「git pull」でエラーが出る

git pull origin main を実行した際に、以下のようなエラーが出ることがあります。

error: Your local changes to the following files would be overwritten by merge: docker/docker-compose.yaml Please commit your changes or stash them before you merge.

原因: ローカルで設定ファイル(docker-compose.yamlなど)を書き換えているため、更新ファイルと競合しています。

対処法: 変更を一時的に退避(stash)させてから更新します。

# 1. 変更を退避 git stash

2. 更新を実行
git pull origin main

3. 退避した変更を戻す(設定を復元)
git stash pop

git stash pop 時にコンフリクト(競合)が発生した場合は、ファイルを開いて<<<<<<< 等のマーカーを確認し、手動で正しい設定に修正してください。

Case 2: 起動したのにブラウザで「404 Not Found」になる

Dockerコンテナは起動しているのに、http://localhost/install にアクセスすると404エラーになる場合。

原因: Windows等のホスト側でポート80番が既に使用されている可能性があります(SkypeやIISなど)。

対処法: .env ファイルでNginxのポートを変更します。

  1. dify/docker/.env を開く
  2. EXPOSE_NGINX_PORT=80 を探す
  3. 空いているポート(例:8888)に変更する EXPOSE_NGINX_PORT=8888
  4. コンテナを再起動:docker compose down && docker compose up -d
  5. ブラウザで http://localhost:8888/install にアクセス

Case 3: ワークフロー実行中にタイムアウトエラーになる

処理の長いワークフローを実行すると、途中で止まって以下のエラーが表示される場合。

Results are not displayed due to timeout.

原因: デフォルトのタイムアウト設定が短いため、生成AIの回答待ち時間などで制限を超えてしまっています。

対処法: .env ファイルにタイムアウト延長の設定を追記します。

  1. dify/docker/.env を開く
  2. ファイルの末尾に以下を追記(または既存項目を修正)
# タイムアウト時間を延長(例:5分~10分) 
TEXT_GENERATION_TIMEOUT_MS=300000 
WORKFLOW_MAX_EXECUTION_TIME=600000 
APP_MAX_EXECUTION_TIME=600000 
GUNICORN_TIMEOUT=720 
NGINX_PROXY_READ_TIMEOUT=3600s 
NGINX_PROXY_SEND_TIMEOUT=3600s

3. コンテナを再起動して設定を反映させます。

まとめ

Difyコミュニティ版は自由度が高い反面、トラブル時は自分でログを見て解決する必要があります。

困ったときは、まずはdocker compose logs でログを確認し、本記事の対処法を試してみてください。

してみる

純ですが、私は原因の特定にハマってしまい時間がかかってしまったので、同じ症状の方の助けになればと思います。

Difyのワークフローでエラーが生じるときの解消法

起きた現象

EC2サーバー上にセルフホスティングしたDifyにおいて以下のようなエラーが生じる。

Results are not displayed due to timeout.
Please refer to the logs to gather complete results.

解決策

.envの内容を編集すると可能。
どうやらサーバー内の設定でワークフローの実行時間が長くなるとタイムアウトエラーになってしまうらしい。

やることは 3 つだけ

Dify でワークフローの実行中にタイムアウトが発生してしまう場合、以下の 3 つの手順を行うだけで解決できる可能性が高い。

1. .env ファイルを開く

まず、.env ファイルを開く必要がある。以下のコマンドを実行する。

cd ~/dify/docker  # docker compose を実行するディレクトリへ移動
nano .env         # 環境変数ファイルを編集

このとき、画面上部に ~/dify/docker/.env と表示されていれば、正しいファイルを開けていることが確認できる。

なお、.envファイルが見つけられない場合には以下を実行してみる

# 1) 隠しファイルを含めて一覧 
ls -a ~/dify/docker | grep -E '^\.env

2. タイムアウト関連の設定を追記する

.env ファイルの一番下に、以下の設定をコピー&ペーストする。そして、保存する。

# --- Dify ワークフロー長時間実行対策 ---
TEXT_GENERATION_TIMEOUT_MS=300000          # 5 分
WORKFLOW_MAX_EXECUTION_TIME=600000         # 10 分
APP_MAX_EXECUTION_TIME=600000              # 10 分
GUNICORN_TIMEOUT=720                       # 12 分
NGINX_PROXY_READ_TIMEOUT=3600s
NGINX_PROXY_SEND_TIMEOUT=3600s
NGINX_KEEPALIVE_TIMEOUT=3600s

すでに同じような項目が存在する場合は、上書きすること。また、重複して記載しないよう注意が必要である。


3. Docker コンテナを再起動する

設定を反映させるためには、Docker コンテナを再起動する必要がある。以下のコマンドを使用する。

docker compose down && docker compose up -d

その後、次のコマンドで全てのサービスが正常に起動しているかを確認する。

docker compose ps

各サービスのステータスが healthy と表示されていれば、再起動は正常に完了している。


補足

  • .env が複数あった場合でも、Compose を叩いたディレクトリ直下の .env が最優先 です。
  • ほかの階層に .env があって紛らわしい場合は、リネームするか削除して一本化するとトラブルを防げます。

終わりに

これで Dify が動く状態までたどり着けました。
次回は初期設定を行い、アプリ作成が可能な状態にしていきます。

どの LLM を利用するのか迷っていますが、コスト面を考えて 最初は Gemini にするかもしれません。(応答も早いので、ストレスも少なそうです)

# 2) 見つからなければ env_file 指定を探す grep -nR –max-depth=1 -E ‘env_file’ ~/dify/docker/docker-compose*.yml


2. タイムアウト関連の設定を追記する

.env ファイルの一番下に、以下の設定をコピー&ペーストする。そして、保存する。


すでに同じような項目が存在する場合は、上書きすること。また、重複して記載しないよう注意が必要である。


3. Docker コンテナを再起動する

設定を反映させるためには、Docker コンテナを再起動する必要がある。以下のコマンドを使用する。


その後、次のコマンドで全てのサービスが正常に起動しているかを確認する。


各サービスのステータスが healthy と表示されていれば、再起動は正常に完了している。


補足

  • .env が複数あった場合でも、Compose を叩いたディレクトリ直下の .env が最優先 です。
  • ほかの階層に .env があって紛らわしい場合は、リネームするか削除して一本化するとトラブルを防げます。

終わりに

これで Dify が動く状態までたどり着けました。
次回は初期設定を行い、アプリ作成が可能な状態にしていきます。

どの LLM を利用するのか迷っていますが、コスト面を考えて 最初は Gemini にするかもしれません。(応答も早いので、ストレスも少なそうです)

【推奨】業務システム化に有効なアイテム

生成AIを学ぶ

システム化のパートナー

VPSサーバの選定

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次