Difyをローカル環境で立ち上げようとして遠回りした話

はじめに

Difyをローカル環境でDockerを使って立ち上げようと思い立った。 AIアプリケーション開発プラットフォームということで、手元で試してみたかったのだ。

というわけで、dify-myselfというフォルダを作って、自分で環境構築を始めることにした。

試行錯誤の始まり:バックエンド編

まずはAPIサーバーから立ち上げようと思った。

make api-worker

エラー。

cd api && uv sync
make api-worker

またエラー。

仮想環境が壊れているのかと思い、思い切って削除。

cd api && rm -rf .venv && uv sync

さらに、api/app.pyを直接編集してGunicornとCeleryの設定を調整。 catコマンドでファイルを上書きして…

make api-worker

何度目かのmake api-worker。 uv syncmake api-workerを繰り返すこと十数回。

フロントエンド編:Node.jsとの戦い

バックエンドで疲弊した後は、フロントエンドの番だ。

まずNode.jsのバージョンを合わせる必要があった。 nvmをインストールして、Node.js 22.11.0をセットアップ。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.zshrc
nvm install 22.11.0
nvm use 22.11.0
nvm alias default 22.11.0

次にpnpmをインストール。

npm install -g pnpm
cd /Users/ryusei/dev-environment/dify-myself/web
pnpm install

そして満を持して…

make web-dev

エラー。またpnpm install。またmake web-dev

この繰り返し。

オチ

そんなこんなで数時間が経過したころ、ふと思った。

「そういえば、公式リポジトリってどうなってるんだろう?」

Difyの公式GitHubリポジトリからzipをダウンロード。 dify-main.zipを解凍して、おそるおそるdockerフォルダに入る。

cd dify-main/docker
docker-compose up -d

ターミナルに流れるログ。

Creating dify-postgres ... done
Creating dify-redis ... done
Creating dify-weaviate ... done

全部立ち上がった。

PostgreSQL、Redis、Weaviate、全てhealthyステータス。

今までの苦労は一体…?

Cursorでdify-mainを開いて、中身を眺める。 自分が手動で書こうとしていた設定が、完璧に用意されている。

学んだこと

技術的な学びとしては:

  1. 公式ドキュメントを最初に確認すべし
    • 車輪の再発明をする必要はない
    • 公式が用意しているセットアップ手順は、大抵よく考えられている
    • git cloneより先に自分で実装しようとするのは時期尚早
  2. とはいえ無駄ではない
    • uvによるPython環境管理を学んだ
    • nvmによるNode.jsバージョン管理を実践できた
    • pnpmを使ったモノレポ構成に触れた
    • Makefileによるタスク管理の便利さを実感
    • Docker Composeでのマルチコンテナ構成(PostgreSQL、Redis、Weaviate)を理解
    • トラブルシューティングの経験値は確実に上がった
  3. 具体的に得たスキル
    • .venvの削除と再構築というトラブルシューティング手法
    • catコマンドでのファイル上書きテクニック(良い手法かは置いといて)
    • makeコマンドを何度も叩く忍耐力
    • シェル履歴を見返して「自分は何をやっていたのか」と振り返る力
  4. 遠回りも悪くない
    • すぐに動いたら「なぜ動くのか」を考えなかったかもしれない
    • 苦労したからこそ、公式のDocker Compose設定の完成度がわかる
    • エラーと向き合う時間は、決して無駄ではない

まとめ

結論:公式リポジトリを最初に見よう。

dify-myselfというフォルダで数時間格闘した結果、 dify-main.zipをダウンロードしてdocker-compose up -dするだけで終わった。

これが開発の現実だ。

でも、遠回りした時間も決して無駄ではない。

  • uvを学んだ
  • nvmを学んだ
  • pnpmを学んだ
  • makeを何度も叩いた
  • .venvを削除する勇気を得た

そして何より、「公式リポジトリの偉大さ」を身をもって知った。

この記事を読んでいるあなたは、私と同じ遠回りをする必要はない。 でも、もし遠回りしたなら、それはそれで良い経験になる。

さあ、Difyの公式リポジトリをダウンロードして、素晴らしいAIアプリケーション開発を始めよう!

dify-myselfフォルダは…そっとしておこう)


教訓: docker-compose up -dの前にmake api-workerを100回叩く必要はない