Contents
インストール前提条件と環境準備
この章では、Dify をローカルで快適に動作させるために最低限必要なソフトウェアとハードウェアを確認します。Docker と Git が正しくインストールされていないと、後続の手順で頻繁にエラーが発生するため、ここでしっかりと環境を整えておきましょう。
Docker のインストール
Docker はコンテナ実行基盤として必須です。OS に合わせた公式パッケージを利用すれば、バージョン管理や依存関係の心配なく導入できます。
- Windows / macOS
- 公式ダウンロードページ(https://www.docker.com/products/docker-desktop/)から最新版の Docker Desktop を取得してください。インストーラを実行し、指示に従ってインストールします。インストール後は「Docker Desktop」を起動し、ターミナルで
docker versionとdocker compose versionが正常に表示されることを確認します。 - Ubuntu 20.04 以降
-
Ubuntu 向けの Docker Engine と Compose プラグインは公式リポジトリ経由でインストールできます。以下のコマンドを実行してください。
bash
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-releaseDocker の公式 GPG 鍵とリポジトリを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin現在のユーザーを docker グループに追加(再ログインが必要)
sudo usermod -aG docker $USER
-
インストール後は
docker versionとdocker compose versionが正しく表示されることを確認してください。
注意:Ubuntu のデフォルト設定では
host.docker.internalが利用できません。Docker Desktop が提供する名前解決が無い環境では、代わりに以下のいずれかを使用します。
1. コンテナ起動時に--add-host=host.docker.internal:host-gatewayを付与して名前解決を追加。
2. ホスト側の IP アドレス(例:172.17.0.1)を直接指定する。
Git のセットアップ
Git はリポジトリ取得やブランチ操作に不可欠です。インストール手順はシンプルですが、バージョンが古いと HTTPS 認証でエラーになることがあります。
- Windows / macOS:公式サイト(https://git-scm.com/downloads)から OS に合ったインストーラをダウンロードし、標準設定のままでインストールします。
- Ubuntu:次のコマンドで最新版を取得できます。
bash
sudo apt-get install -y git
インストール後は git --version が表示されることを確認してください。
OS 別注意点(CPU・メモリ要件)
| OS | 推奨 CPU コア数 | 推奨メモリ | 主な留意点 |
|---|---|---|---|
| Windows 10/11 (WSL2 必須) | ≥4 コア | 8 GB以上 | WSL2 のディストリビューションは Ubuntu 22.04 を推奨。Docker Desktop の「Resources → Memory」を 6 GB 以上に設定すると安定します。 |
| macOS Ventura+ (Apple Silicon 推奨) | ≥4 コア | 8 GB以上 | Docker Desktop は HyperKit(Apple Silicon)または virtiofs を使用。不要イメージは docker system prune -a で削除してください。 |
| Ubuntu 20.04+ | ≥2 コア | 4 GB以上 | cgroup v2 が有効か確認 (cat /proc/filesystems | grep cgroup2)。Docker Desktop が無い場合は docker compose プラグインを別途インストールしてください。 |
自己チェックリスト
- Docker のバージョンが表示される ✔️
- Git が利用可能か確認できた ✔️
- 推奨 CPU/メモリを満たしている ✔️
公式リポジトリの取得とブランチ選択
この章では、Dify のソースコードをローカルにクローンし、運用目的に合わせて適切なブランチを選ぶ手順を解説します。安定版と開発版の違いを理解した上で作業すると、予期せぬ破壊的変更に遭遇するリスクが低減します。
Git clone の実行例
|
1 2 3 4 5 6 7 8 9 |
# 作業ディレクトリへ移動(例: ~/projects) cd ~/projects # 公式リポジトリをクローン git clone https://github.com/langgenius/dify.git # ディレクトリに入る cd dify |
stable と main ブランチの特徴と選び方
| ブランチ | 特徴 | 推奨シーン |
|---|---|---|
| stable(デフォルト) | 2025 年末までにタグ付けされた安定リリース。バグ修正のみがマージされるため予測可能性が高い。 | 本番環境・長期運用、機能追加は後からプラグインで実装したい場合 |
| main | 開発中の最新コミットが集約。新機能やモデルサポートが早く利用できるが、破壊的変更が混入する可能性あり。 | 実験・検証環境、最新プラグインを試したいとき |
推奨フロー:まずは
stableブランチでインストールし、動作確認後に必要ならmainへ切り替えて機能拡張を行います。
|
1 2 3 4 5 6 7 |
# stable(デフォルト)で作業 git checkout stable # 必要に応じて最新タグへ移動 git fetch --tags git checkout tags/v2.4.1 -b my-stable-2.4.1 |
環境変数設定と docker‑compose.yml の主要サービス解説
Dify は .env ファイルで環境依存情報を一元管理し、docker-compose.yml が全コンテナの構成を定義します。この章では .env の正しい作成手順 と PostgreSQL イメージのバージョン固定 を含めたサービス設定のポイントを詳しく紹介します。
.env ファイルの作成と SECRET_KEY の生成方法
-
サンプルファイルからコピー
bash
cp .env.sample .env -
エディタで開く(VS Code, nano など)
bash
code .env # VS Code を使用する例 -
必須変数を埋める
| 変数名 | 説明 | 推奨記入例 |
|---|---|---|
APP_HOST |
Web UI がバインドするホストアドレス | 0.0.0.0 |
APP_PORT |
公開ポート番号 | 3000 |
DATABASE_URL |
PostgreSQL 接続文字列 | postgresql://dify_user:dify_pass@postgres:5432/dify_db |
REDIS_URL |
Redis 接続文字列 | redis://redis:6379/0 |
SECRET_KEY |
Django が使用する暗号化キー(ランダム 32 バイト以上) | 生成手順 ↓ |
OPENAI_API_KEY |
外部 LLM 利用時の API キー(任意) | sk-xxxx... |
- SECRET_KEY の具体的生成コマンド
bash
# 64 桁の十六進文字列を生成し、.env に書き込む例
SECRET=$(openssl rand -hex 32)
sed -i "s|^SECRET_KEY=.*$|SECRET_KEY=${SECRET}|g" .env
上記コマンドは openssl がインストールされている前提です。生成後、.env の該当行がランダム文字列に置き換わっていることを確認してください。
- 最終チェック
bash
cat .env | grep -E 'APP_HOST|APP_PORT|DATABASE_URL|REDIS_URL|SECRET_KEY'
docker‑compose.yml のサービス構成とバージョン固定
以下は公式リポジトリに含まれる docker-compose.yml の抜粋です。PostgreSQL のイメージタグを明示的に固定(例: postgres:15-alpine)することで、将来的な互換性問題を回避できます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
services: web: image: langgenius/dify-web:latest env_file: - .env ports: - "${APP_PORT}:3000" depends_on: - postgres - redis worker: image: langgenius/dify-worker:latest env_file: - .env depends_on: - postgres - redis redis: image: redis:7-alpine volumes: - redis_data:/data postgres: # バージョンを明示的に固定(互換性リスク低減) image: postgres:15-alpine environment: POSTGRES_USER: dify_user POSTGRES_PASSWORD: dify_pass POSTGRES_DB: dify_db volumes: - postgres_data:/var/lib/postgresql/data nginx: image: nginx:1.25-alpine ports: - "80:80" volumes: - ./nginx/conf.d:/etc/nginx/conf.d depends_on: - web volumes: redis_data: postgres_data: |
カスタマイズ例
| サービス | 主なカスタマイズ項目 | 具体的変更例 |
|---|---|---|
web |
ポート、環境変数 | "8080:3000" に変更すれば外部と衝突しにくい |
worker |
ワーカー数(スケール) | deploy: {replicas: 3} を追加して同時処理を増やす |
postgres |
データベース名・ユーザー | POSTGRES_DB: mydifydb に変更したら .env の DATABASE_URL も合わせて更新 |
nginx (本番向け) |
SSL 証明書マウント | ./certs:/etc/nginx/certs をボリュームに追加し、443:443 ポートを公開 |
Docker Compose 実行・Web UI アクセス・ローカル LLM 連携
この章ではコンテナ起動から管理画面へのログイン、さらにローカルで実行する Ollama と Dify の接続手順までを一気通貫で説明します。各ステップの成功判定ポイントも併せて記載しているので、トラブル時にすぐ対処できます。
コンテナ起動とログ確認
|
1 2 3 4 5 6 7 8 9 |
# バックグラウンドで全サービス起動 docker compose up -d # 起動状態を一覧表示 docker compose ps # リアルタイムでログを監視(エラーが出たらここで把握できる) docker compose logs -f |
- 正常時の目安は
web_1 | Uvicorn running on http://0.0.0.0:3000のように「Uvicorn running」メッセージが出ていることです。 - もし
postgres_1 | FATAL: password authentication failed for user "dify_user"が表示されたら、.envとdocker-compose.ymlの PostgreSQL 環境変数を再確認してください。
初回管理者アカウント作成
- ブラウザで
http://localhost:${APP_PORT}(例: http://localhost:3000)にアクセス。 - 「Create your account」画面が表示されたら、メールアドレスとパスワードを入力し「Sign up」。
- ローカル環境ではメール送信は不要です。
DJANGO_EMAIL_BACKEND=console.EmailBackendがデフォルトでコンソールに認証コードを出力するため、画面の指示どおりに進めれば管理ダッシュボードへ遷移します。
Ollama のインストールと Dify への登録
- Ollama 本体の取得
-
公式サイト(https://ollama.com/download)から OS に合わせたバイナリを取得してください。macOS は Homebrew (
brew install ollama) 、Ubuntu はcurl -fsSL https://ollama.com/install.sh | shが推奨です。 -
デーモン起動
bash
ollama serve &
- モデルダウンロード(例:Llama 3)
bash
ollama pull llama3
- Dify 側でエンドポイントを設定
- 管理画面 → 「LLM Providers」 → 「Add Provider」
- 名前:
Ollama Local、タイプ:OpenAI Compatible(Ollama は OpenAI 互換 API) -
エンドポイント URL:
- Mac / Windows:
http://host.docker.internal:11434/v1 - Ubuntu:
http://172.17.0.1:11434/v1(Docker のブリッジネットワーク IP)またはdocker run --add-host=host.docker.internal:host-gateway …で名前解決を追加
- Mac / Windows:
-
API キーは不要なので空欄のままで保存。
-
モデル登録
- 管理画面 → 「Models」 → 「Add Model」
- プロバイダーに先ほど作成した
Ollama Local、モデル名llama3を選択し保存します。
ポイント:Ubuntu 環境で
host.docker.internalが解決できない場合は、docker compose up時に--add-host=host.docker.internal:host-gatewayオプションを付与するか、ホスト側のブリッジ IP(通常172.17.0.1)を直接指定してください。
トラブルシューティング・アップデート・バックアップ
本章では実務で遭遇しやすいエラーとその対処法、さらに安全にバージョンアップする手順と永続データのバックアップ方法をまとめます。予防策を事前に把握しておくことで、ダウンタイムを最小限に抑えることができます。
代表的エラーと対処法
| エラーシナリオ | 原因例 | 解決策 |
|---|---|---|
ポート競合 (address already in use) |
他プロセスが同じポートを使用中 | .env の APP_PORT を未使用の番号に変更し、docker compose up -d --build で再起動 |
| メモリ不足(OOM キラー) | Docker Desktop のメモリ割り当てが低い | Settings → Resources → Memory を 6 GB 以上に増やす。ワーカー数を減らしたい場合は worker コンテナの --concurrency 環境変数で調整 |
PostgreSQL 接続エラー (password authentication failed) |
.env とコンテナ内部環境変数が不一致 |
.env の DATABASE_URL と POSTGRES_PASSWORD を合わせ、docker compose down -v && docker compose up -d でボリューム再作成 |
権限エラー (Permission denied: '/data') |
ホスト側マウントディレクトリの所有者が root | sudo chown -R $USER:$USER ./data または Windows の共有設定でフルアクセスを付与 |
| host.docker.internal が解決できない(Ubuntu) | Docker Desktop が無い環境 | 起動時に --add-host=host.docker.internal:host-gateway を付加、またはブリッジ IP (172.17.0.1) を直接使用 |
アップデート手順
- Git リポジトリを最新化(stable ブランチの場合)
bash
git fetch origin
git checkout stable
git pull origin stable
- コンテナの再構築
bash
docker compose down # コンテナ停止、ボリュームは保持
docker compose up -d --build # 再ビルドして起動
- マイグレーションが必要な場合(バージョン間で DB スキーマが変わるケース)
bash
docker compose exec web python manage.py migrate
重要:
docker compose down -vと実行すると永続ボリュームが削除され、データが失われます。必ずバックアップを取得してから実施してください。
Docker Volume のバックアップと復元
バックアップ手順(例:postgres データ)
|
1 2 3 4 5 6 7 8 |
# カレントディレクトリにバックアップファイルを作成 BACKUP_FILE=dify_postgres_$(date +%Y%m%d_%H%M).tar.gz docker run --rm \ -v dify_postgres_data:/data \ # docker-compose.yml のボリューム名 -v "$(pwd)":/backup alpine \ tar czf "/backup/${BACKUP_FILE}" /data |
- ポイント:
dify_postgres_dataはdocker-compose.ymlに記載された永続ボリューム名です。上記コマンドは Alpine コンテナを一時的に起動し、データディレクトリ全体を圧縮してホストのカレントフォルダへ保存します。
復元手順
|
1 2 3 4 5 |
docker run --rm \ -v dify_postgres_data:/data \ -v "$(pwd)":/backup alpine \ tar xzf "/backup/${BACKUP_FILE}" -C / |
- 復元後は
docker compose up -dでコンテナを再起動し、アプリが正常にデータベースへ接続できることを確認してください。
まとめ
- 前提条件:Docker Desktop(公式ページから取得)または Ubuntu 向け Docker Engine と Compose プラグインを導入し、CPU ≥4 コア・メモリ ≥8 GB の環境を確保する。Ubuntu 環境では
host.docker.internalが利用できない点に注意し、代替手段(--add-hostかブリッジ IP)を準備しておく。 - リポジトリ取得:
git clone https://github.com/langgenius/dify.git→stableブランチで作業し、必要に応じてmainに切り替えるフローが安全。 - 環境変数設定:
.env.sampleを.envにコピーし、SECRET_KEYはopenssl rand -hex 32等で生成した文字列を直接書き込む手順を明示。 - docker‑compose.yml:主要サービス(web, worker, redis, postgres, nginx)とカスタマイズポイントを把握し、PostgreSQL のイメージは
postgres:15-alpineとバージョン固定することで将来の互換性リスクを回避。 - コンテナ起動・確認:
docker compose up -d→docker compose logs -fで正常起動を確認し、ブラウザから管理画面にアクセスして初期ユーザーを作成。 - ローカル LLM(Ollama)連携:Ollama をインストール・モデル取得後、Dify の「LLM Providers」に OpenAI 互換エンドポイントとして登録。Ubuntu の場合は
host.docker.internalが使えないので IP 指定か--add-hostが必須。 - トラブル対策:ポート競合・メモリ不足・DB 認証エラー・権限問題のチェックリストを用意し、適切に設定変更できるようにする。
- 保守とバックアップ:
git pull→docker compose down && docker compose up -d --buildで安全にバージョンアップし、docker run … tar czfによる永続ボリュームの定期バックアップを実施する。
上記手順と注意点を守れば、Docker と Git が扱えるエンジニアは数十分で Dify のローカル環境構築が完了し、オフラインでも高速に生成 AI を体験できるようになります。ぜひ本ガイドをベースに、独自のプラグインやデータパイプラインと組み合わせた高度な活用へとステップアップしてください。