Dify note

【備忘録】XServer Difyのバージョンアップグレード(0.15.3→1.1.2)

※こちらの記事は2025年3月24日noteに投稿した内容です。

Dify Upgrade

Difyは高機能なAIアプリケーション開発プラットフォームとして人気を集めていますが、バージョンアップ時には適切な手順が必要です。最近やっとXServer VPS上にインストールしたDify を0.15.3から1.1.2へのアップグレードできましたので備忘録として残しておきます。
※作業前にはイメージ保存をお忘れなく。

0. 準備作業

アップグレードを始める前に、以下のファイルをダウンロードしておきましょう:

  1. 最新のDocker Compose設定ファイル
    • GitHubからdocker-compose.yamlをダウンロード(download raw fileを実行)
  2. Difyプラグインデーモン
    • GitHub Releasesからdify-plugin-darwin-amd64(17.3MB)をダウンロード

1. docker-compose.yamlファイルの更新

現在の設定を新しいバージョンに反映させます。

手順

  1. 現状のファイルを0153docker-compose.yaml、新しいファイルを112docker-compose.yamlにリネーム
  2. 両ファイルをClaude 3.7 Sonnet(Extended)にアップロード
    ※無料版のClaudeやChatGPTではうまく作成できませんでした。
  3. 以下のプロンプトを入力: この2つはXServer VPS上にインストールしたDifyの設定ファイルです。現行の0153docker-compose.yamlの内容をバージョンアップ用の112docker-compose.yamlへ反映させて出力してください。
  4. 生成されたファイルをダウンロードしてdocker-compose.yamlにリネーム
  5. XServer Dify上の以下のパスにあるファイルに上書き: /root/dify/docker/docker-compose.yaml

2. プラグインデーモンのインストール

ダウンロードしたプラグインデーモンをサーバーに配置します。
(※WinSCPを使いました)

手順

  1. dify-plugin-darwin-amd64のファイル名をdifyにリネーム
  2. XServer Dify上の以下のパスにアップロード: /usr/local/bin/dify
  3. ファイルのパーミッションを755に変更: chmod 755 /usr/local/bin/dify

3. バージョンアップの実行

ここから実際のアップグレードを実行します。
(※PuTTYを使いました)

手順

コンソール上で以下のコマンドを実行:

update.sh

4. ツールの移行とプラグインへの変換

Dify 1.0.0から、以前のツールはプラグインアーキテクチャに移行しています。以下の手順で既存のツールやモデルプロバイダを新環境に移行します。

手順

  1. docker-apiコンテナのIDを確認:
docker ps

出力例:

CONTAINER ID   IMAGE                                       COMMAND                  CREATED       STATUS                 PORTS                                                                                                                             NAMES
417241cd****   nginx:latest                                "sh -c 'cp /docker-e…"   3 hours ago   Up 3 hours             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp                                                          docker-nginx-1
f84aa773****   langgenius/dify-api:1.1.2                   "/bin/bash /entrypoi…"   3 hours ago   Up 3 hours             5001/tcp                                                                                                                          docker-worker-1
a3cb19c2****   langgenius/dify-api:1.1.2                   "/bin/bash /entrypoi…"   3 hours ago   Up 3 hours             5001/tcp                                                                                                                          docker-api-1

1.docker-apiコンテナにアクセスし、プラグイン抽出コマンドを実行:

docker exec -it a3cb19c2**** bash
poetry run flask extract-plugins --workers=20

※エラーが発生した場合は、サーバーにpoetry環境をインストールしてから実行してください。 ※コマンド実行後、端末に入力待機のプロンプトが表示された場合は「Enter」を押して入力をスキップします。

このコマンドは現在使用中のすべてのモデルとツールを抽出し、plugins.jsonlファイルを生成します。

2.プラグインをインストール:

poetry run flask install-plugins --workers=2

※インターネット接続が正常で、https://marketplace.dify.ai にアクセスできることを確認してください。

3.プラグインデータの移行:

poetry run flask migrate-data-for-plugin

移行が完了すると、以下のような結果が表示されます:

Migrate [tool_builtin_providers] data for plugin completed, total: 6
Migrate data for plugin completed.

5. .envファイルの修正

WARN[0000] The "DB_DATABASE" variable is not set. Defaulting to a blank string.
WARN[0000] The "DB_PASSWORD" variable is not set. Defaulting to a blank string.
WARN[0000] The "DB_USERNAME" variable is not set. Defaulting to a blank string.

このような警告が出た場合は、.envファイル内でDBに関する環境変数が一切設定されておらず、デフォルト値(docker-compose.yaml内の設定)がそのまま使われてますので、docker-compose.yamlファイルに記載されている内容を.envファイルに反映させます。
docker-compose.yamlファイルの内容がデフォルトの場合、

DB_USERNAME: ${DB_USERNAME:-postgres}
DB_PASSWORD: ${DB_PASSWORD:-difyai123456}
DB_DATABASE: ${DB_DATABASE:-dify}

となっていますので、.envファイルに

DB_DATABASE=dify
DB_USERNAME=postgres
DB_PASSWORD=difyai123456

を追記してDockerを再起動します。

docker compose down
docker compose up -d

6. 移行結果の検証

アップグレードと移行が正常に完了したか確認しましょう。

  1. Difyプラットフォームにアクセス
  2. 右上の「プラグイン」ボタンをクリック
  3. プラグインが空の場合はモデルとツールを再インストール
  4. いくつかのプラグインを使用して、正常に動作するかテスト

すべてが問題なく動作していれば、APIキーも移行されています。

まとめ

Dify 0.15.3から1.1.2へのアップグレードは、いくつかの重要なステップを踏む必要がありますが、本記事の手順に従えば比較的スムーズに移行できるはずです。特に、ツールからプラグインへの移行は1.x.xの大きな変更点です。

参考リンク

Dify 0.15.3から1.1.2へのアップデートで追加された新機能と変更点

環境変数の追加・変更

サーバー設定の最適化

  • ワーカークラスとコネクション設定(行21-22):
SERVER_WORKER_CLASS: ${SERVER_WORKER_CLASS:-gevent}
SERVER_WORKER_CONNECTIONS: ${SERVER_WORKER_CONNECTIONS:-10}

セキュリティ強化

  • リフレッシュトークン期限(行38-39):
REFRESH_TOKEN_EXPIRE_DAYS: ${REFRESH_TOKEN_EXPIRE_DAYS:-30}

Redisクラスターのサポート

  • クラスター設定(行80-82):
REDIS_USE_CLUSTERS: ${REDIS_USE_CLUSTERS:-false}
REDIS_CLUSTERS: ${REDIS_CLUSTERS:-}
REDIS_CLUSTERS_PASSWORD: ${REDIS_CLUSTERS_PASSWORD:-}

ストレージシステムの刷新

  • OpenDALストレージ(行91-93):
STORAGE_TYPE: ${STORAGE_TYPE:-opendal}
OPENDAL_SCHEME: ${OPENDAL_SCHEME:-fs}
OPENDAL_FS_ROOT: ${OPENDAL_FS_ROOT:-storage}
  • Supabaseサポート(行152-154):
SUPABASE_BUCKET_NAME: ${SUPABASE_BUCKET_NAME:-your-bucket-name}
SUPABASE_API_KEY: ${SUPABASE_API_KEY:-your-access-key}
SUPABASE_URL: ${SUPABASE_URL:-your-server-url}

新機能:プラグインシステムとマーケットプレイス

プラグイン機能

  • プラグインデータベース(行277-279):
DB_PLUGIN_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin}
EXPOSE_PLUGIN_DAEMON_PORT: ${EXPOSE_PLUGIN_DAEMON_PORT:-5002}
PLUGIN_DAEMON_PORT: ${PLUGIN_DAEMON_PORT:-5002}
  • リモートインストール機能(行321-329):
PLUGIN_REMOTE_INSTALL_HOST: ${EXPOSE_PLUGIN_DEBUGGING_HOST:-localhost}
PLUGIN_REMOTE_INSTALL_PORT: ${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}
PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}
INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-********************************************************}

マーケットプレイス連携

  • マーケットプレイスAPI(行292-294):
MARKETPLACE_ENABLED: ${MARKETPLACE_ENABLED:-true}
MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai}
FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true}
  • エンドポイントURL(行292):
ENDPOINT_URL_TEMPLATE: ${ENDPOINT_URL_TEMPLATE:-http://localhost/e/{hook_id}}
  • Web UI連携(行349-356):
MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai}
MARKETPLACE_URL: ${MARKETPLACE_URL:-https://marketplace.dify.ai}
TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-}
INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-}
PM2_INSTANCES: ${PM2_INSTANCES:-2}
LOOP_NODE_MAX_COUNT: ${LOOP_NODE_MAX_COUNT:-100}
MAX_TOOLS_NUM: ${MAX_TOOLS_NUM:-10}
MAX_PARALLEL_LIMIT: ${MAX_PARALLEL_LIMIT:-10}

新しいサービス

プラグインデーモン

  • plugin_daemon(行409-429):
# plugin daemon
plugin_daemon:
  image: langgenius/dify-plugin-daemon:0.0.6-local
  restart: always
  environment:
    # Use the shared environment variables.
    <<: *shared-api-worker-env
    DB_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin}
    SERVER_PORT: ${PLUGIN_DAEMON_PORT:-5002}
    SERVER_KEY: ${PLUGIN_DAEMON_KEY:-********************************************************}
    MAX_PLUGIN_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}
    # 他の設定省略

新しいベクトルデータベースのサポート

OpenGauss

  • OpenGaussベクトルDB(行604-619):
# opengauss vector database.
opengauss:
  image: opengauss/opengauss:7.0.0-RC1
  profiles:
    - opengauss
  privileged: true
  restart: always
  environment:
    GS_USERNAME: ${OPENGAUSS_USER:-postgres}
    # 他の設定省略

Elasticsearch

  • Elasticsearch(行642-665):
elasticsearch:
  image: docker.elastic.co/elasticsearch/elasticsearch:8.14.3
  container_name: elasticsearch
  profiles:
    - elasticsearch
    - elasticsearch-ja
  restart: always
  volumes:
    - ./elasticsearch/docker-entrypoint.sh:/docker-entrypoint-mount.sh
    # 他の設定省略
  entrypoint: [ 'sh', '-c', "sh /docker-entrypoint-mount.sh" ]

その他の設定

  • Nginx設定(行530):
NGINX_CLIENT_MAX_BODY_SIZE: ${NGINX_CLIENT_MAX_BODY_SIZE:-100M}
  • Redis認証(行384-385):
REDISCLI_AUTH: ${REDIS_PASSWORD:-************}

#Dify #XServer #バージョンアップ #アップグレード

Copyright © 2025 DFL inc. All Rights Reserved.