はじめに
Difyは、エンジニアが生成AIを活用したアプリケーションを迅速に構築・運用できるオープンソースのプラットフォームです。ChatGPTやClaude、Geminiなど複数のLLMに対応し、RAG(検索拡張生成)によって社内に閉じた情報も加えて高精度な回答システムを実現できます。ノーコードでチャットボットやQ&Aシステムを構築可能なほか、ドキュメントやWebページなどをインポートしてナレッジベース化し、業務システムと連携できます。さらに、REST APIを通じた外部連携もでき、業務効率化などに活用することができます。
Difyの技術がどのようなものなのか学ぶため、概要を把握した後、構築してみることにしました。
Difyの導入形態
Difyを利用するには大きく分けて2つの形態があり、クラウドサービス版、セルフホストサービス版があります
クラウドサービス版 3つのプラン
プラン | 月額料金 | メッセージ数/月 | チームメンバー数 | アプリ数 | 知識文書数 | ストレージ容量 | ナレッジリクエスト制限 | 注釈クォータ | ログ履歴 |
---|---|---|---|---|---|---|---|---|---|
SANDBOX | 無料 | 200 | 1人 | 5個 | 50件 | 50MB | 10回/分 | 10件 | 30日間 |
PROFESSIONAL | $59 | 5,000 | 3人 | 50個 | 500件 | 5GB | 100回/分 | 2,000件 | 無制限 |
TEAM | $159 | 10,000 | 50人 | 200個 | 1,000件 | 20GB | 1,000回/分 | 5,000件 | 無制限 |
セルフホストサービス版 3つのプラン
プラン | 料金 | 特徴 |
---|---|---|
COMMUNITY | 無料 | 個人ユーザー、小規模チーム、または非営利プロジェクト向け |
PREMIUM | AWS利用料金 | AWS Marketplace経由でのデプロイ。ロゴやブランドカスタマイズが可能。 |
ENTERPRISE | 要問い合わせ | 大企業向け。エンタープライズグレードのセキュリティ、コンプライアンス、拡張性、制御、およびより高度は機能を必要とする企業むけ。 |
今回の構築対象は、Difyのシステム的な仕組みを知るためにセルフホストサービス版とします。また、無料のCOMMUNITY版とします。
構築前の確認
COMMUNITY版をローカルPCに構築する方法には、「Docker Composeによるデプロイ」「ソースコードからビルド」の2つがあります。今回はとても手軽なDocker Composeの方で進めました。
最小システム要件
Difyをインストールする前に、お使いのマシンが以下の最小システム要件を満たしていることを確認してください:
CPU >= 2コア
RAM >= 4GB
私の環境
- MacBook Air 2022
- Apple M2
- メモリ 16GB
- mac OS Sequoia 15.4
- Docker Engine v28.0.4
- Docker Desktop 4.40.0 (187762)
ローカルPCでの構築手順
githubからコードをダウンロード
https://github.com/langgenius/dify

dify-main.zip がダウンロードされますので、ホームディレクトリなどに保存し、解凍します。
また、解凍された内容にdockerディレクトリがあるので、そこへ移動します
% cd dify-main/docker/
dockerディレクトリの中身。docker-compose.yamlが存在することを確認
% ls -al
total 496
drwxrwxr-x@ 20 XXXXXX staff 640 Apr 16 18:13 .
drwxrwxr-x@ 41 XXXXXX staff 1312 Apr 16 18:03 ..
-rw-rw-r--@ 1 XXXXXX staff 35075 Apr 16 18:03 .env.example
-rw-rw-r--@ 1 XXXXXX staff 7014 Apr 16 18:03 README.md
drwxrwxr-x@ 5 XXXXXX staff 160 Apr 16 18:03 certbot
drwxrwxr-x@ 4 XXXXXX staff 128 Apr 16 18:03 couchbase-server
-rw-rw-r--@ 1 XXXXXX staff 25019 Apr 16 18:03 docker-compose-template.yaml
-rw-rw-r--@ 1 XXXXXX staff 7948 Apr 16 18:03 docker-compose.middleware.yaml
-rw-rw-r--@ 1 XXXXXX staff 63694 Apr 16 18:03 docker-compose.png
-rw-rw-r--@ 1 XXXXXX staff 52259 Apr 16 18:03 docker-compose.yaml
drwxrwxr-x@ 3 XXXXXX staff 96 Apr 16 18:03 elasticsearch
-rwxr-xr-x@ 1 XXXXXX staff 4097 Apr 16 18:03 generate_docker_compose
-rw-rw-r--@ 1 XXXXXX staff 4815 Apr 16 18:03 middleware.env.example
drwxrwxr-x@ 8 XXXXXX staff 256 Apr 16 18:03 nginx
drwxrwxr-x@ 3 XXXXXX staff 96 Apr 16 18:03 pgvector
drwxrwxr-x@ 4 XXXXXX staff 128 Apr 16 18:03 ssrf_proxy
drwxrwxr-x@ 4 XXXXXX staff 128 Apr 16 18:03 startupscripts
drwxrwxr-x@ 4 XXXXXX staff 128 Apr 16 18:03 tidb
drwxrwxr-x@ 12 XXXXXX staff 384 Apr 16 18:17 volumes
dockerディレクトリの中の .env.example を .env にコピー
このファイルにはDifyの動作に必要な設定情報が含まれており、docker-compose.yamlから参照される
% cp .env.example .env
docker composeする
% docker compose up -d
ブラウザでローカル http://localhost/install にアクセスすると、Difyの初期設定画面が表示されます。
メールアドレスとパスワードを入力して、サインインします。
ちなみに入力したメールアドレスにメールは届いていませんでした。
dockerの状況確認
起動中のdockerコンテナ一覧
dockerイメージ一覧
ボリューム一覧
ボリュームの中身をちょっと覗いてみると、access.log が見受けられる
% docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
71daa2c787b0: Pull complete
Digest: sha256:00cd074b40c4d99ff0c24540bdde0533ca3791edcdac0de36d6b9fb3260d89e2
Status: Downloaded newer image for debian:latest
sh-5.2#
sh-5.2# ls /var/lib/docker/volumes/
a59b38899b0a92eb729dcc170ef50b2c0b6704237401439c849c826e464f6344 backingFsBlockDev bda4a2c0a7f39bd029cc0600ba9648d1a12c7408335a5c2fb68ee38a0762f1de metadata.db
sh-5.2# cd /var/lib/docker/volumes/a59b38899b0a92eb729dcc170ef50b2c0b6704237401439c849c826e464f6344/_data/
sh-5.2#
sh-5.2#
sh-5.2# cat access.log
1744797823.999 1752 172.18.0.8 TCP_TUNNEL/200 326100 CONNECT marketplace.dify.ai:443 - HIER_DIRECT/172.67.71.187 -
sh-5.2#
sh-5.2# exit
再起動手順
% docker compose down
% docker compose up -d
おわりに
今回、Difyのコミュニティ版を使用し、mac osのローカルにdocker composeで構築を行いました。
特に詰まる部分はなく、すんなり構築できました。
次回は、この環境でOpenAIのAPIと連携する設定を行う予定です。
以上です。