1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Difyをローカルでデバッグする

Last updated at Posted at 2025-06-07

Dify にコントリビューションする機会があり、その時に調べたデバッグモードで起動する方法を記事に残す。

結論

公式リポジトリの /api フォルダと、 /web フォルダ内にある README.md の内容を参考にして、デバッグモードで起動する。(少し前に公式ドキュメントにも書いてあった気がするが、見当たらなくなってしまった)

2回目以降の起動手順

環境変数ファイルのセットアップを省いたもの。初回で既に各種セットアップが完了していることが前提。

cd dify

# middleware
cd docker
docker compose -f docker-compose.middleware.yaml --profile weaviate -p dify up -d

# backend
cd ../api
uv sync --dev
uv run flask db upgrade
uv run flask run --host 0.0.0.0 --port=5001 --debug

# (任意) async worker
uv run celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion

# frontend
cd ../web
pnpm install
pnpm run dev

# http://localhost:3000/

起動手順

Dify はバックエンドとフロントエンドに分かれているため、それぞれを別々に起動する。

バックエンドの起動手順

参考:https://github.com/langgenius/dify/blob/main/api/README.md

middleware の起動

バックエンドは各種ミドルウェア(PostgreSQL, Redis, Weaviate, ...)に依存しているため、まずはミドルウェアを起動する。

cd dify

# 環境変数の設定
cd docker
cp -b middleware.env.example middleware.env

# ミドルウェアの起動
docker compose -f docker-compose.middleware.yaml --profile weaviate -p dify up -d

backend の環境変数を設定

まずはデフォルトの環境変数から、デバッグ用の環境変数を作り出す。

cd ../api
cp .env.example .env 

セッションや、データベース暗号化用の SECRET_KEY を発行する。sed コマンドの動作が若干 OS によって違うので、Linux と Mac ユーザはここで読み替える。

セッションクッキーを安全に署名し、データベース上の機密情報を暗号化するためのキー。
https://docs.dify.ai/ja-jp/getting-started/install-self-hosted/environments#secret-key

Linux

sed -i "/^SECRET_KEY=/c\SECRET_KEY=$(openssl rand -base64 42)" .env

macOS

secret_key=$(openssl rand -base64 42)
sed -i '' "/^SECRET_KEY=/c\\
SECRET_KEY=${secret_key}" .env

backend の仮想環境を構築

backend を起動するために、uv を使って仮想環境を作っておく。

(初回のみ)uv をインストール

curl -LsSf https://astral.sh/uv/install.sh | sh

pyproject.toml から依存パッケージをインストールする

uv sync --dev

データベースのマイグレーションを行う。

uv run flask db upgrade

コードを読むと、api/migrations 配下のデータが使われて Flask-Migrate が DB をマイグレートしていることが分かる

backend を起動

backend を起動する。

uv run flask run --host 0.0.0.0 --port=5001 --debug

続けてフロントエンドの起動を行う。

(任意)ナレッジベース等の非同期機能を使いたい場合

データセット読み込みや、ドキュメントのインデックスなどの非同期機能を使いたい場合は、worker サービスも起動する

uv run celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion

フロンエンドの起動手順

参考:https://github.com/langgenius/dify/blob/main/web/README.md

前提条件

依存パッケージのインストール

pnpm install

環境変数の設定

まずはデフォルトの環境変数から、デバッグ用の環境変数を作り出す。

cp .env.example .env.local

必要に応じて .env.local を編集し、環境変数を適用する。

# コンソールアプリの Base URL
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api

# Web APP の Base URL
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

# SENTRY
NEXT_PUBLIC_SENTRY_DSN=

フロントエンドを起動

フロントエンドのコンポーネントを起動する。

pnpm run dev

Dify には http://localhost:3000 でアクセスできる。ホットリロードに対応しているので、/app 配下を修正すると即時反映される。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?