2026年3月更新 約2時間のセットアップ

2026年にDifyをセルフホストする方法

独自のVPSでDifyを実行するための完全な実践ガイド。サーバーの選択からSSL証明書と継続的なメンテナンスまで — すべてが一箇所にまとまっています。

Difyのセルフホスティングとは?

Difyは、AIを活用したアプリ、チャットボット、RAGパイプラインを構築できるオープンソースのLLMアプリケーション開発プラットフォームです。セルフホスティングとは、Dify Cloudを使用する代わりに独自のサーバーでDifyを実行することを意味します。

Dify Cloudよりセルフホスティングを選ぶ主な3つの理由:

  • コスト — Hetzner CX22は月€3.79に対し、Dify Cloud Proは月$59。チームスケールでは節約額は劇的です。
  • コントロール — 設定、プラグイン、カスタムモデルへの完全アクセス、無制限のワークスペースメンバー、メッセージクレジットなし。
  • データプライバシー — プロンプト、ドキュメント、会話履歴が独自のインフラから外に出ることはありません。規制業界に不可欠。

トレードオフとして、セットアップ、更新、稼働時間の責任を負うことになります。このガイドでそれを簡単にします。

サーバー要件

最低

2 vCPU 4GB RAM 50GB SSD

推奨

4 vCPU 8GB RAM 80GB SSD

OS: Ubuntu 22.04 LTS(推奨)。Debian 11/12も動作します。

1

サーバーの選択

ほとんどのセルフホスターには、Hetzner CX22(€3.79/月、2 vCPU、4GB RAM、40GB NVMe)が最適な出発点です。Difyとそのすべてのサービスを快適に実行できます。欧州のデータセンターはGDPRコンプライアンスに理想的です。

より簡単なコントロールパネルを望む初心者には、Hostinger VPSが$7.99/月から利用でき、より多くのサポートが含まれています。8GB RAMが必要な場合、KVM 2プラン($9.99/月)は優れたコスパを提供します。

ヒント:公開SSH鍵を追加済みでサーバーを作成してください。パスワード認証を完全に回避でき、より安全です。

2

サーバーの初期設定

サーバーに接続して初期設定を実行します:

# サーバーにSSH接続
ssh root@YOUR_SERVER_IP

# パッケージを更新
apt update && apt upgrade -y

# 必須ツールをインストール
apt install -y curl wget git ufw

# 非rootユーザーを作成
adduser dify
usermod -aG sudo dify

# 新しいユーザーにSSH鍵をコピー
rsync --archive --chown=dify:dify ~/.ssh /home/dify

# UFWファイアウォールを設定
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp comment 'SSH'
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'
ufw --force enable
ufw status

ログアウトして、残りのステップのためにdifyユーザーとして再接続します。

3

Docker Engineのインストール

公式のaptリポジトリを使ってDockerをインストールします — snapバージョンは使用しないでください:

# 前提条件をインストール
sudo apt install -y ca-certificates curl gnupg lsb-release

# Docker公式GPG鍵を追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# DockerのaptリポジトリをはP加
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker Engineをインストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# ユーザーをdockerグループに追加(sudoなしで実行可能に)
sudo usermod -aG docker $USER
newgrp docker

# インストールを確認
docker --version
4

Docker Composeプラグインのインストール

Docker Composeプラグインは上記のパッケージに含まれています。動作を確認します:

# Docker Composeのバージョンを確認(v2.xである必要あり)
docker compose version

# インストールされていない場合、手動で追加
sudo apt install -y docker-compose-plugin
5

Difyのクローンと設定

Difyの公式リポジトリをクローンして環境を設定します:

# リポジトリをクローン
git clone https://github.com/langgenius/dify.git
cd dify/docker

# サンプルから.envファイルを作成
cp .env.example .env

# 安全なSECRET_KEYを生成
openssl rand -base64 42

# .envファイルを編集
nano .env

.envの重要な設定を更新します:

# 必須:強力なランダム秘密鍵を設定
SECRET_KEY=ここに生成した秘密鍵を入力

# ドメインを設定(メールとリンクに使用)
CONSOLE_URL=https://your-domain.com
APP_URL=https://your-domain.com

# デフォルトのデータベースパスワードを変更
DB_PASSWORD=強力なDBパスワードを入力

# デフォルトのRedisパスワードを変更
REDIS_PASSWORD=強力なRedisパスワードを入力

# 任意:素早く始めるためにOpenAI APIキーを追加
OPENAI_API_KEY=sk-...
6

Difyの起動

Docker ComposeですべてのDifyサービスを起動します:

# すべてのサービスをバックグラウンドで起動
docker compose up -d

# すべてのコンテナが動作していることを確認
docker compose ps

# 起動を追跡するためにログを追跡(Ctrl+Cで終了)
docker compose logs -f

すべてのコンテナがhealthyステータスを表示したら(1〜2分かかります)、http://YOUR_SERVER_IPにアクセスして管理者設定ウィザードを完了します。

7

NginxとSSLの設定

DifyのDockerスタックにはポート80で独自のNginxが含まれています。SSLには、その前にホストレベルのNginxをリバースプロキシとして追加します。まず、競合を避けるためにDifyのポートを変更します:

# dify/docker/.envでNginxポートを変更
EXPOSE_NGINX_PORT=8080

# 適用のために再起動
docker compose down && docker compose up -d

# ホストNginxとCertbotをインストール
sudo apt install -y nginx certbot python3-certbot-nginx

# ドメイン用のNginx設定を作成
sudo nano /etc/nginx/sites-available/dify

この設定を追加します(your-domain.comを置き換えてください):

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 300s;
        client_max_body_size 100M;
    }
}
# 有効化してテスト
sudo ln -s /etc/nginx/sites-available/dify /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

# SSL証明書を取得(NginxをHTTPS用に自動設定)
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
8

メンテナンス

Difyの更新 — Difyは頻繁にアップデートをリリースします。設定変更なしで更新します:

cd ~/dify
git pull origin main
cd docker
docker compose pull
docker compose up -d

バックアップ — PostgreSQLデータベースとアップロードされたファイルをバックアップします:

# データベースのバックアップ
docker compose exec db pg_dump -U postgres dify > backup_$(date +%Y%m%d).sql

# アップロードされたファイルのバックアップ
tar -czf dify_storage_$(date +%Y%m%d).tar.gz ./volumes/app/storage

監視 — リソース使用量を確認します:

# コンテナのリソース使用量
docker stats

# ディスク使用量
df -h
docker system df

よくある質問

ポートの競合:ポート80がすでに使用されています

別のサービス(多くの場合Apache)がポート80を占有しています。停止するか(sudo systemctl stop apache2)、.envEXPOSE_NGINX_PORT=8080を設定してDifyのNginxポートを変更してください。

コンテナがメモリ不足エラーで終了する

DifyにはRAMが最低4GB必要です。free -hで確認してください。RAMが限界に達している場合、4GBスワップファイルを追加します:fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile

管理者設定ページにアクセスできない

すべてのコンテナが動作していることを確認します(docker compose ps)。ファイアウォールがポート80を許可していることも確認してください(sudo ufw status)。APIコンテナは準備完了まで30〜60秒かかります — healthyステータスを待ってください。

管理者パスワードを忘れた

APIコンテナでリセットします:docker compose exec api flask reset-password — メールアドレスと新しいパスワードの入力プロンプトに従ってください。

ダウンタイムなしでDifyを更新するには?

docker compose pullで新しいイメージを事前ダウンロードし、その後docker compose up -dで適用します。Docker Composeはデフォルトでローリング再起動を行うため、ダウンタイムは通常30秒未満です。