まず、以下の手順で段階的にトラブルシューティングと「停止」を行い、Authorization を必要とするPOSTインターフェースはできるだけ使用しないようにしてください。
1. まずプラグインデーモンが繰り返しリトライしているか確認する
デプロイサーバーで実行します(一度通知されています):
docker logs docker-plugin_daemon-1 -n 200
最近のログで以下のような繰り返しがないか確認してください:
- 特定のプラグインのインストールタスク
- 常に
Task timed out but not properly terminatedと報告されている
もしそうであれば:
- おそらく「インストール中」のタスクがスタックしており、プラグインデーモンが繰り返しリトライしています。
まず「停止させる」ために、このコンテナを一時的に停止できます:
docker stop docker-plugin_daemon-1
これにより、失敗したインストール記録が更新され続けるのを一時的に阻止できます。
(その後再起動するには:docker start docker-plugin_daemon-1)
2. POSTインターフェースを使用せずに、ローカルのAuthorizationをどのように取得するか?
ローカルデプロイであっても、フロントエンドがDifyにアクセスする際にはBearerトークンが送信されますが、これはブラウザが自動的に行っています。
このトークンを次のように取得し、別のスレッドで見たPOSTインターフェース(「プラグインインストール中ステータスのクリア」インターフェース)を呼び出すために使用できます:
- ブラウザでDifyのウェブページ(例:
http://localhost:3000またはご自身のドメイン)を開き、通常通りログインします。 - ブラウザの開発者ツールを開きます:
- Chrome/Edge:
F12→ 「Network / ネットワーク」タブを選択します。
- Chrome/Edge:
- ページ上でバックエンドにアクセスする任意のページ(例:「スタジオ」「アプリ」など)をクリックします。
- Networkパネルで、リクエストパスが
/console/api/...のようなインターフェースを見つけてクリックします。 - 「Headers / リクエストヘッダー」で
Authorizationフィールドを見つけます。通常は次のようになります:Authorization: Bearer xxxxxxx... Bearerの後ろにあるこの長いトークンをコピーします。(他人に漏洩しないよう注意してください)
これで、ローカルデプロイの Authorization 値が手に入り、クラウドと同様にその修復インターフェースを呼び出すことができます。
3. 取得したトークンを使用して「インストール中タスクのクリア」インターフェースを呼び出す
参照したスレッドで、具体的なインターフェースパスとメソッドはすでに確認されているはずです。通常は POST リクエストです。
curl(サーバー上で)を使用して送信できます:
curl -X POST "http://<あなたのバックエンドアドレス>/xxx/xxx" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <あなたが先ほどコピーしたトークン>" \
-d '{
// そのスレッドのbodyに従って入力
}'
いくつか注意点があります:
<あなたのバックエンドアドレス>:デフォルトのdocker-composeを使用している場合、通常は次のようになります:- ホストブラウザからアクセス:
http://<サーバーIP>:3000 - ただし、APIの実際のバックエンドポートは5001/8000などである可能性があり、ご自身の設定(
docker-compose.yml内のAPIサービスのマッピングを参照)と一致させる必要があります。
- ホストブラウザからアクセス:
- インターフェースパス、bodyパラメータは、参照したスレッドに完全に従って入力してください(他の記録を誤って削除しないように)。
呼び出しが成功したら、Difyページを更新すると、通常は次のようになります:
- 右上隅の「プラグインインストール中」の通知が消えます。
- Tongyi(通義)プラグインは「未インストール」または失敗状態になり、後で再インストールを試すことができます(まずイメージ/ネットワークの問題をトラブルシューティングすることをお勧めします)。
4. どうしてもAPIを使えない/使いたくない場合、より「強硬な」方法も検討できます(注意)
この方法はリスクが高く、ある程度のデータベース操作経験があり、データベースのバックアップを受け入れられる場合にのみ適しています:
- Dify関連コンテナを停止します(書き込み競合を避けるため)
docker compose down - データベースコンテナ内のデータ(Postgres)をバックアップします:
- Postgresコンテナ名を見つけます。例えば、
docker psでdify-postgres-1と表示されます。 pg_dumpを使用してエクスポートします:docker exec -t dify-postgres-1 pg_dump -U <db_user> <db_name> > dify_backup.sql
- Postgresコンテナ名を見つけます。例えば、
- データベースに入り、「プラグインインストールタスク」に関連するテーブルを見つけ、ステータスを
installing/pendingからfailedに変更するか、そのレコードを直接削除します。
ただし、バージョンによってテーブル構造が変更されたり、フィールド名が完全に同じではないため、この手順に進む場合は、docker-compose.ymlのバージョン番号、データベース情報、および関連するテーブル構造の一部を貼り付けてから議論することをお勧めします。誤操作を避けるためです。
5. 今、まず2つのことを返信することをお勧めします
-
サーバー上で実行します:
docker logs docker-plugin_daemon-1 -n 200重要なエラー(
Task timed out but not properly terminatedの前後数行を含む)をスレッドに貼り付けてください。 -
上記のステップ2に従って、ブラウザで
Authorization: Bearer ...を取得し、トークンをキャプチャできることを確認してください。疑問がある場合は、マスクされたリクエストヘッダーのスクリーンショットを貼り付けても構いません。
ログとあなたのバージョン(1.11.4)の情報があれば、今後もスタックした場合、それが現在のバージョンの既知の問題なのか、それともTongyi(通義)プラグイン自体のインストール(例:ネットワーク、Pythonソース、イメージ)の問題なのかをより正確に判断できます。
役立つ可能性のあるドキュメント(問題関連)
- セルフホストデプロイ(docker-compose構造の説明を含む):
Deploy Dify with Docker Compose - Dify Docs
バージョン情報
- 現在のバージョンはv1.11.4です。プラグインシステムはかなり完成していますが、プラグインのインストール/依存関係のインストールに関する問題は、今後のバージョンで継続的に修正されています。もし後で公式リリースで「プラグインインストールタイムアウト/インストール中にスタックする」といった問題の修正が言及された場合、可能であればアップグレードも検討することをお勧めします。