Difyをローカルで動かすメリットとデメリット
室谷今回はDifyのローカル環境構築について話しましょう。これ、.AI(ドットエーアイ)コミュニティでもよく聞かれるテーマなんですよね。
「クラウド版じゃダメなの?」という声がある一方で、「絶対ローカルで動かしたい」という人も多くて・・・
「クラウド版じゃダメなの?」という声がある一方で、「絶対ローカルで動かしたい」という人も多くて・・・
テキトー教師講座でも序盤に必ずこの話が出ます。「無料で使い続けたい」「社内の機密データを外に出したくない」という理由でローカル構築を選ぶ受講生さんが多いですね。
室谷ローカルで動かす最大のメリットはやっぱりコストとプライバシーです。Difyのクラウド版(dify.ai)はSandboxプランだと機能制限があるし、Professionalプラン以上は月額費用がかかります。
ローカルならその費用が不要です。
ローカルならその費用が不要です。
テキトー教師ただし、ローカルで動かす場合も、接続するLLMのAPIキー(OpenAIやAnthropicなど)の利用料は別途かかります。「Difyがタダで動く=全部タダ」ではないので、ここは受講生さんに必ず説明するポイントです(笑)
室谷そうなんですよね。整理するとこういうイメージです。
ローカルのDify自体は無料ですが、LLMへのAPIコールは従量課金で発生する。ローカルLLM(Ollamaなど)と組み合わせれば、そこも含めて完全無料にできる、という構造ですね。
ローカルのDify自体は無料ですが、LLMへのAPIコールは従量課金で発生する。ローカルLLM(Ollamaなど)と組み合わせれば、そこも含めて完全無料にできる、という構造ですね。
テキトー教師Ollamaとの連携については別記事で詳しく解説していますが、まずは今回のローカル環境構築自体を理解してもらうのが先決です。デメリットで言うと、セルフホストする分、アップデートやメンテナンスを自分でやる必要があるという点もありますね。
室谷それと、DockerやGit、コマンドライン操作に慣れていないと最初はちょっとハードルを感じるかもしれません。ただ、手順自体はかなりシンプルで、Difyの公式ドキュメントも整備されているので、今回の記事を見ながら進めれば初心者でも大丈夫です。
必要な環境と事前準備
テキトー教師構築を始める前に確認しておくべき要件を整理しましょう。ここをすっ飛ばして「動かない」と悩む方が多いんですよ(笑)
室谷ハードウェアの最低要件は「CPUが2コア以上、RAM 4GB以上」ですね。公式にはこう定義されています。
ただ、快適に動かすなら8GB以上のRAMがおすすめです。MYUUUでは16GBのマシンで動かしていますが、普通に余裕があります。
ただ、快適に動かすなら8GB以上のRAMがおすすめです。MYUUUでは16GBのマシンで動かしていますが、普通に余裕があります。
テキトー教師ソフトウェア面では、OS別に必要なものが違います。まとめるとこうなります。
| OS | 必要なソフトウェア | 補足 |
|---|---|---|
| macOS 10.14以降 | Docker Desktop | 仮想CPUを2コア、メモリを8GB以上に設定する |
| Linux系ディストリビューション | Docker 19.03+ / Docker Compose 1.28+ | Docker EngineとDocker Compose個別にインストール |
| Windows(WSL 2有効化済み) | Docker Desktop | ソースコードはLinuxファイルシステム側に置く |
室谷WindowsはWSL 2(Windows Subsystem for Linux)が必要です。これが有効化されていないと動かないので注意です。
テキトー教師WSL 2の有効化方法も含めて説明します。Windowsの場合はここが最初の難所になります。
macOSの事前準備
室谷macOSはDocker Desktopをインストールするだけです。からダウンロードしてインストールしてください。
インストール後にDocker Desktopを起動し、設定でCPU 2コア以上、メモリ8GB以上に変更するのを忘れずに。
インストール後にDocker Desktopを起動し、設定でCPU 2コア以上、メモリ8GB以上に変更するのを忘れずに。
テキトー教師受講生さんでよくあるのが「Dockerはインストールしたけどメモリの割り当てを変更していなかった」という話です。デフォルト設定だと2GBしか割り当てられないことがあるので、Docker Desktopの「Settings → Resources」でメモリを増やしておきましょう。
WindowsのWSL 2設定

室谷WindowsはWSL 2の設定が必要ですが、最近のWindows 10/11なら比較的簡単に有効化できます。PowerShellで
wsl --install を実行するだけで、WSL 2とUbuntuが一緒にインストールされます。
テキトー教師その後にDocker Desktopをインストールして、Docker Desktopの設定で「Use the WSL 2 based engine」にチェックが入っていることを確認すればOKです。この設定が入っていないと、後述のDockerコマンドがWSL側で動かないことがあります。
室谷また、重要な注意点として、DifyのファイルはWindowsファイルシステム側(C:\Users...)ではなく、Linuxファイルシステム側(WSLのホームディレクトリ等)に置く必要があります。Windows側に置くとパフォーマンスが極端に落ちます。
Mac・LinuxでのDifyローカル環境構築

テキトー教師では実際の構築手順を見ていきましょう。Mac・Linuxは基本的に同じ手順です。
室谷手順は全部で4ステップです。コマンドを順番に打つだけで動くので、複雑さはないですよ。
Step 1: Difyのリポジトリをクローン
テキトー教師まずGitHubからDifyのソースコードを取得します。
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
室谷このコマンドはGitHub APIで最新のリリースタグを自動取得してクローンしています。
macOSなら
jqコマンドが必要なので、入っていない場合は先にインストールしてください。macOSなら
brew install jq で入ります。
テキトー教師jqが入っていない場合は、単純に git clone https://github.com/langgenius/dify.git でもクローンできます。ただしmainブランチになりますので、安定版を使いたい場合はjqを入れる方がいいですね。Step 2: dockerディレクトリに移動して設定ファイルをコピー
cd dify/docker
cp .env.example .env
室谷.env.exampleを.envにコピーするだけです。デフォルト設定のままでも動きます。後で必要に応じてAPIキーなどをここに書き込みます。
テキトー教師.envファイルを直接編集してカスタマイズする機会はあとで出てくるので、今の段階ではコピーするだけで大丈夫です。Step 3: Docker Composeで起動
テキトー教師Docker Composeのバージョンによってコマンドが違います。
# Docker Compose V2(推奨)
docker compose up -d
# Docker Compose V1(古い環境の場合)
docker-compose up -d
室谷docker compose versionでバージョンを確認できます。最近のDocker Desktopに入っているのはV2なので、基本的に上のコマンドで大丈夫です。
テキトー教師起動すると、以下のコンテナが立ち上がります。全部で11コンテナです。
- コアサービス(5つ): api, worker, worker_beat, web, plugin_daemon
- 依存コンポーネント(6つ): weaviate, db_postgres, redis, nginx, ssrf_proxy, sandbox
室谷初回起動は各コンテナのイメージをダウンロードするので数分かかります。ネット回線の速度によっては10分以上かかることもあります。
Step 4: 起動確認とアクセス
テキトー教師起動後は
docker compose ps で全コンテナが Up または healthy になっているか確認します。docker compose ps
室谷全部
Up になったら、ブラウザで http://localhost/install にアクセスして管理者アカウントを設定します。設定が終わったら http://localhost でDifyのダッシュボードが開きます。
テキトー教師ここが「やった!動いた!」の瞬間ですね(笑)。受講生さんがDifyを初めてローカルで動かしたときに「思ったより簡単だった」という反応が毎回返ってきます。
WindowsでのDifyローカル環境構築(WSL 2経由)
室谷Windowsの場合もDocker Desktopを使いますが、コマンドはWSLのターミナルから実行します。Windows側のコマンドプロンプトやPowerShellからは動かしません。
テキトー教師これが混乱ポイントなんですよね。「Windowsを使っているのになぜLinuxのコマンドを打つの?」という疑問が出ます。
WSL 2を使うと、Windows上でLinux環境が動いて、その中でDockerが動く、という構造になっているからです。
WSL 2を使うと、Windows上でLinux環境が動いて、その中でDockerが動く、という構造になっているからです。
室谷WSLを起動したら、Linuxファイルシステム内(例: ~/projects/)にDifyをクローンして、あとはMac・Linuxと同じ手順で進めます。
# WSLターミナルで実行
mkdir -p ~/projects
cd ~/projects
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d
テキトー教師DifyのWindowsローカル環境構築でよく出る問題は「パスの混在」です。ファイルはWSL内に置く、コマンドもWSLターミナルで実行する、この2点を守れば大抵うまくいきます。
室谷海外のDocker公式ドキュメントにも「Windows with WSL 2の場合はLinuxファイルシステムにデータを置く」と明記されています。これはDifyに限らずDockerコンテナ全般の話で、Windows側のファイルシステムをマウントするとI/Oが遅くなるのが理由です。
Difyのアップグレード方法
テキトー教師構築できたら次はアップグレードの話です。Difyは活発に開発されていて、新機能やバグ修正が頻繁にリリースされます。
ローカル環境では自分でアップグレードする必要があります。
ローカル環境では自分でアップグレードする必要があります。
室谷基本的な手順はシンプルです。ただし、大きなバージョンアップのときは追加の手順が必要なことがあるので、を必ず確認してください。
# dockerディレクトリで実行
docker compose down
git pull origin main
docker compose up -d
テキトー教師アップグレード前に
.env.example が更新されていないか確認する習慣をつけると良いですね。新しい設定項目が追加されていることがあります。
室谷.envファイルは git pull で上書きされないので安心してください。.envはGitignoreされています。ローカルDifyにngrokで外部からアクセスする

室谷少し応用的な話ですが、ローカルで動かしているDifyに外部からアクセスしたいケースがあります。例えばLINEボットやSlackボットとDifyのワークフローを連携する場合、DifyのAPIがパブリックなURLで公開されていないとWebhookが届きません。
テキトー教師そこでngrokを使います。ngrokはローカルのポートを一時的にインターネット上に公開できるツールです。
でアカウントを作ってトークンを取得し、Dockerで連携させることで、外部からアクセスできるURLが発行されます。
でアカウントを作ってトークンを取得し、Dockerで連携させることで、外部からアクセスできるURLが発行されます。
室谷ngrokとDify Dockerの組み合わせはデモや検証環境としてかなり使えます。本番環境にはVPSへのデプロイを推奨しますが、まずローカルで動くことを確認してからサーバーに移す、という流れが開発的に楽ですね。
テキトー教師ngrokを使う場合の注意点として、無料プランでは毎回URLが変わります。LINEやSlackのWebhook設定を毎回変更する手間があるので、継続的に使うなら有料プランか固定ドメインの設定を検討した方がいいですね。
よくあるエラーと対処法
テキトー教師最後に、よくハマるエラーと対処法をまとめておきます。知っているかどうかで詰まる時間が全然違うので、事前に読んでおいてください。
コンテナが起動しない / すぐにExitになる
室谷docker compose ps でコンテナのStateが Exit になっている場合、ログを確認します。docker compose logs api
docker compose logs db_postgres
テキトー教師よくある原因はポートの競合です。80番や5432番(PostgreSQL)が別のプロセスで使われていると起動できません。
lsof -i :80 で確認して、競合しているプロセスを停止してください。http://localhost にアクセスできない
室谷全コンテナが
Docker Desktopの設定で8GB以上に設定し直してから
Up になっているのに localhost にアクセスできない場合、nginxコンテナのログを確認します。Macでよくあるのが「Docker Desktopのメモリ設定が足りなくて一部コンテナが落ちている」というケースです。Docker Desktopの設定で8GB以上に設定し直してから
docker compose restart してみてください。
テキトー教師受講生さんから「全部Upなのにアクセスできない」という相談が来たとき、まずこれを確認してもらうと8割くらいは解決しています(笑)
Windowsで Permission denied エラーが出る
室谷Windowsユーザーによくあるケースです。DifyのファイルをWindowsファイルシステム側(/mnt/c/...)に置いているときに起きます。
WSLのホームディレクトリ(~/以下)にファイルを置き直して、再度
WSLのホームディレクトリ(~/以下)にファイルを置き直して、再度
docker compose up -d を実行してください。これで解消します。
テキトー教師これはDify固有の問題というより、Dockerコンテナ全般でWindowsファイルシステムをマウントするときに起きる権限問題です。開発環境で詰まったときの定番の対処法として覚えておいてください。
まとめ
テキトー教師今回はDifyのローカル環境構築について、Mac/Linux/Windowsそれぞれの手順を解説しました。ポイントをまとめます。
- Docker Composeを使えば
git clone→cp .env.example .env→docker compose up -dの3ステップで動く - DifyローカルのWindows環境構築では、WSL 2を経由してLinuxファイルシステム側にファイルを置く
- ローカルDify自体は無料だが、LLMのAPIコールは別途費用がかかる
- アップグレードは
docker compose down→git pull→docker compose up -dの順
室谷ローカル環境で動かすことで、クラウド版では試しにくい設定変更や独自のプラグイン追加も自由にできます。DifyはGitHubで13万5,000スター以上を持つOSSで、開発が速いです。
まずローカルで自由に触りながら最新機能をキャッチアップするのが個人的なおすすめです。
まずローカルで自由に触りながら最新機能をキャッチアップするのが個人的なおすすめです。
テキトー教師ローカル環境が整ったら、ぜひワークフローやエージェントの構築に進んでみてください。やも合わせてご覧ください。
