カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

ローカルでDifyを動かしてみる

今更ながらローカルでDifyを構築することがあったので備忘として残しておきます。

目次

実施作業

準備

DifyとはOSSのAIアプリ開発プラットフォームで、SaaS版やローカルで実行できるコミュニティ版が提供されています。 詳しい説明は公式ドキュメントをご確認ください。 docs.dify.ai

今回はコミュニティ版を利用するので、以下のDocker Composeデプロイ手順を参考に進めます。 docs.dify.ai


前提条件

上記デプロイ手順ページに記載されていますが、インストールに必要な最小インストール要件は以下の通りです。

  • CPU:2コア以上
  • RAM:4GiB以上
OS ソフトウェア 説明
macOS 10.14またはそれ以降 Docker Desktop Docker仮想マシン (VM) を少なくとも2つの仮想CPU (vCPU) と8 GBの初期メモリを使用するように設定してください。そうしないと、インストールが失敗する可能性があります。詳細についてはMacにDocker Desktopをインストールを参照してください。
Linuxプラットフォーム Docker 19.03以降 Docker Compose 1.28以降 詳細についてはDockerのインストールおよびDocker Composeのインストールを参照してください。
WSL 2を有効にしたWindows Docker Desktop ソースコードやその他のデータをLinuxコンテナにバインドする際には、それらをWindowsファイルシステムではなくLinuxファイルシステムに保存することをお勧めします。詳細についてはWSL 2バックエンドを使用してWindowsにDocker Desktopをインストールを参照してください。


Dify構築

今回はWindows 11のWSLで実行します。
上記デプロイ手順ページに記載されているコマンドを参考に実行していきます。

# 2025/9/8時点の最新バージョンであるv1.8.1をインストールします
$ git clone https://github.com/langgenius/dify.git --branch 1.8.1
Cloning into 'dify'...
remote: Enumerating objects: 216761, done.
remote: Counting objects: 100% (1479/1479), done.
remote: Compressing objects: 100% (865/865), done.
remote: Total 216761 (delta 1051), reused 614 (delta 614), pack-reused 215282 (from 4)
Receiving objects: 100% (216761/216761), 118.73 MiB | 5.20 MiB/s, done.
Resolving deltas: 100% (159538/159538), done.
Note: switching to 'c7700ac1762a4feccf60211d3dca3e39ec65a83c'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

Updating files: 100% (6199/6199), done.

$ cd dify/docker

$ cp .env.example .env

$ docker compose up -d
[+] Running 82/64
 ✔ redis 6 layers [⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                                 197.6s
 ✔ sandbox 10 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                          444.5s
 ✔ weaviate 4 layers [⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                                 79.2s
 ✔ db 11 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                              216.3s
 ✔ plugin_daemon 5 layers [⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                          554.5s
 ✔ worker_beat 13 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                   570.8s
 ✔ api Pulled                                                                                                                                                                     570.9s
 ✔ web 13 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                           363.5s
 ✔ worker Pulled                                                                                                                                                                  570.8s
 ✔ ssrf_proxy 3 layers [⣿⣿⣿]      0B/0B      Pulled                                                                                                                               417.1s
 ✔ nginx 6 layers [⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                                 217.7s

[+] Building 0.0s (0/0)                                                                                                                                                   docker:default
[+] Running 13/13
[+] Running 13/13_default             Created                                                                                                                                       0.5s
 ✔ Network docker_default             Created                                                                                                                                       0.5s
 ✔ Network docker_ssrf_proxy_network  Created                                                                                                                                       0.2s
 ✔ Container docker-ssrf_proxy-1      Started                                                                                                                                       4.0s
 ✔ Container docker-web-1             Started                                                                                                                                       3.8s
 ✔ Container docker-redis-1           Started                                                                                                                                       3.8s
 ✔ Container docker-weaviate-1        Started                                                                                                                                       3.8s
 ✔ Container docker-db-1              Healthy                                                                                                                                       3.8s
 ✔ Container docker-sandbox-1         Started                                                                                                                                       3.7s
 ✔ Container docker-worker_beat-1     Started                                                                                                                                       0.7s
 ✔ Container docker-worker-1          Started                                                                                                                                       0.6s
 ✔ Container docker-plugin_daemon-1   Started                                                                                                                                       0.6s
 ✔ Container docker-api-1             Started                                                                                                                                       0.7s
 ✔ Container docker-nginx-1           Started                                                                                                                                       0.3s

正常に起動できたら以下のコマンドで立ち上がっているコンテナを確認します。
デプロイ手順ページに記載されているコンポーネントが含まれていることが確認できます。

  • ビジネスサービスコンポーネント
    • api(docker-api-1)
    • worker(docker-worker-1、docker-worker_beat-1)
    • web(docker-web-1)
  • 基礎コンポーネント
    • weaviate(docker-weaviate-1)
    • db(docker-db-1)
    • redis(docker-redis-1)
    • nginx(docker-nginx-1)
$ docker compose ps
NAME                     IMAGE                                       COMMAND                  SERVICE         CREATED         STATUS                   PORTS
docker-api-1             langgenius/dify-api:1.8.1                   "/bin/bash /entrypoi…"   api             3 minutes ago   Up 2 minutes             5001/tcp
docker-db-1              postgres:15-alpine                          "docker-entrypoint.s…"   db              3 minutes ago   Up 2 minutes (healthy)   5432/tcp
docker-nginx-1           nginx:latest                                "sh -c 'cp /docker-e…"   nginx           2 minutes ago   Up 2 minutes             0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp
docker-plugin_daemon-1   langgenius/dify-plugin-daemon:0.2.0-local   "/bin/bash -c /app/e…"   plugin_daemon   3 minutes ago   Up 2 minutes             0.0.0.0:5003->5003/tcp
docker-redis-1           redis:6-alpine                              "docker-entrypoint.s…"   redis           3 minutes ago   Up 2 minutes (healthy)   6379/tcp
docker-sandbox-1         langgenius/dify-sandbox:0.2.12              "/main"                  sandbox         3 minutes ago   Up 2 minutes (healthy)
docker-ssrf_proxy-1      ubuntu/squid:latest                         "sh -c 'cp /docker-e…"   ssrf_proxy      3 minutes ago   Up 2 minutes             3128/tcp
docker-weaviate-1        semitechnologies/weaviate:1.19.0            "/bin/weaviate --hos…"   weaviate        3 minutes ago   Up 2 minutes
docker-web-1             langgenius/dify-web:1.8.1                   "/bin/sh ./entrypoin…"   web             3 minutes ago   Up 2 minutes             3000/tcp
docker-worker-1          langgenius/dify-api:1.8.1                   "/bin/bash /entrypoi…"   worker          3 minutes ago   Up 2 minutes             5001/tcp
docker-worker_beat-1     langgenius/dify-api:1.8.1                   "/bin/bash /entrypoi…"   worker_beat     3 minutes ago   Up 2 minutes             5001/tcp


Difyへのアクセス

Difyの起動が確認できたら以下のURLからローカルのDify管理者初期化ページにアクセスができます。

[http://localhost/install]

以下の項目を入力して管理者アカウントを設定します。

  • メールアドレス
  • ユーザー名
  • パスワード

セットアップできるとDifyのTop画面が表示されました。


感想及び所感

公式ページの手順通りに実行するだけですぐに構築することができました。
ただ、ローカルで動かすと結構PCの動作が重くなってしまうので、次はクラウドサービスのサーバ上でDifyを起動してアクセスしてみたいと思います。

この記事がどなたかの参考になれば幸いです。