はじめに
Difyってご存じですか?
LLM活用のためのワークフローや生成AIチャットアプリを簡単に構築できる、いわゆるノーコード・ローコードツールの一種です。
クラウド版も提供されているのですが、個人が無料で使う場合にはクラウド版だといろいろと制限があり、有料契約が意外と高いなと思っていました。
そこで今回、ローカルPCでホストしてみようと思い至りました。
まぁ実は最初は、OCI(Oracle Cloud Infrastructure)のAlways Free VMを使ってホストして、24時間365日使い放題のクラウドDifyを構築してやるぜー! と息巻いていたのですが、OCIの東京リージョンのAlways Free VMのリソースが枯渇しているのか、新規にリソース作成ができない事象が長らく続き、ついに断念して「ローカルPCでいいや~」となりました(笑)。
ローカル環境でDifyを運用するメリット
ローカル環境でDifyを運用することには、クラウドサービス上でのホスティングと比較して多くの利点があります。
まず、完全無料で期限なく使い続けられる点が最大の魅力です。(電気代はかかりますけどね!)
クラウドサービスの無料枠には期限や制限がありますが、ローカル環境ではそのような心配は不要です。(電気代はかかりますけどね!)」
また、データプライバシーの観点からも優れており、すべてのデータが自分のPC内に保存されるため、機密情報を扱う場合でも安心です。(自分のセキュリティリテラシー次第だけどね!)
さらに、インターネット接続が不安定な環境でも動作し、レイテンシが低いため、快適に操作することができます。
その反面、デメリットとしてはやはりローカルPCの電源が入っていないと使用できない点です。
なので、構築したワークフローをAPI化して他のアプリから使用する、などといった使い方は少し非現実的かもしれません。
ただ、ミニPCなどに導入して電源入れっぱなしのサーバー化するのであれば、そういった使い方も視野に入るかもしれないですね。
システム要件
Difyをローカル環境で動作させるには、以下の最小要件を満たす必要があります。
| 項目 | 最小要件 | 推奨構成 |
|---|---|---|
| CPU | 2コア以上 | 4コア以上 |
| RAM | 4GB以上 | 8GB以上 |
| ストレージ | 10GB以上の空き容量 | 20GB以上の空き容量 |
| OS | Windows 10/11、macOS 11以降、Ubuntu 22.04以降 | 最新版 |
今回検証した環境
私の今回の環境は以下の通りです。
WSL2はセットアップ済みでDocker、Gitもインストール済みの前提で記事を書くこととします。
OS:Windows 11 の WSL2(Ubuntu 24.04.1 LTS)
CPU:AMD Ryzen 7 5700U with Radeon Graphics(1.80 GHz)
RAM:32GB
RAM32GBと書きましたが、WSL2上でDockerコンテナーで起動するため、このうち4~8GB程度をDifyに割くようなイメージだと思っています。
なので、RAM16GBのマシンだと少し厳しいかも? 動かないことはないか……な印象です。
Windows 11を前提として書きますが、実行しているのはWSL2上ですので、おそらくMacや他のLinuxディストリビューションでも、そう変わらない手順でいけるのかなと思っています。
では早速、導入していきましょう!
構築手順
WSL2(Ubuntu)を開きます。
以下のコマンドを実行してDifyの最新リリースをクローンします。
git clone https://github.com/langgenius/dify.git
cd dify/docker
Difyの設定ファイルをコピーします。
cp .env.example .env
ここでコピーした.envファイルには、データベースのパスワードやAPIキーなどの設定が含まれています。デフォルト設定のままでも動作しますが、必要に応じて編集できます。
編集する場合はこのファイルをメモ帳やVSCodeなどのテキストエディタで開いて編集しますが、今回は割愛します。
Docker Composeを使用してDifyを起動します。
docker compose up -d
このコマンドにより、必要なDockerイメージがダウンロードされ、バックグラウンドでコンテナが起動します。
初回は複数のイメージをダウンロードするため、数分から十数分かかる場合があります。
WSL2上でいろいろと途中経過が表示されるので、見ながら気長に待ちましょう。
私の環境では初回で10分ほど、2回目以降は10秒もかからず起動しました。
起動が終わってコマンド入力可能な状態になったら、以下のコマンドで、すべてのコンテナが正常に起動していることを確認します。
docker compose ps
api, worker, web, db, redis, nginxなどのコンテナがUpまたはrunning状態で表示されていれば成功です。
ウェブブラウザを開き、以下のアドレスにアクセスします。
http://localhost/install
上記アドレスにアクセスすると、Difyのセットアップ画面が表示されます。
初期設定として、管理者の登録をする必要があります。
メールアドレスを入力し、ユーザー名、パスワードを決めて入力し、決定を押下します。
アカウント作成が完了すると、ログイン画面にリダイレクトされます。先ほど作成したメールアドレスとパスワードでログインしてください。
ログインに成功すると、Difyのダッシュボードが表示され、すぐにAIアプリケーションの開発を始められます。
上記は私の初期構築後のDifyの画面です。
まだアプリやワークフローなどは1つもありませんが、これからここで構築を始めることができます。
(ダークモードに設定していますが、ライトモードならもっと明るいです(笑))
停止方法
Difyを停止する場合は、以下のコマンドを実行します。
docker compose down
ポートの変更方法
また、他にホストしているアプリがある場合などに、ポートを指定したい場合は、.envファイルの「EXPOSE_NGINX_PORT」の値を編集します。
# .envファイルを編集
EXPOSE_NGINX_PORT=8080
本記事の初期値のままだと、ポート80で起動しますが、ほかのアプリケーションですでにポート80を使用している場合は、そのままではDifyを起動できません。
そういう場合はポート8080などに変えてあげると良いでしょう。
編集後、以下のコマンドでDifyを再起動します。
docker compose down
docker compose up -d
その後、上記の例の通りポート8080で起動したならば、http://localhost:8080でアクセスできます。
おわりに
おそらく、意外なほど簡単な手順だったかと思います。
これで今流行りのLLMワークフローやLLMアプリを簡単に作って試す、PoCやMVP開発のサイクルを速く回すこともできると思います。
速く作って価値を確かめて、本格的に作ると決めたらコード化する、といった使い方も良いのではないかなと思います。
以上、DifyをローカルPCにホスティングして利用する方法について、解説しました。
次はアプリやワークフローの構築例などを記事にできると楽しそうだなぁ、などと想像しています。
ご感想、ご指摘等ありましたら、ぜひコメントなどをいただけますと非常に嬉しいです。
