ConoHa VPS(Ver.3.0)にて提供しているDockerイメージにて、Dify(コミュニティ版)をデプロイする手順例を記載します。

動作確認時の各種ソフトウェア情報

パッケージ バージョン ライセンス
Docker CE 27.5.1 Apache 2
Dify v1.5.0 Apache 2

https通信設定のため、事前に下記を準備してください。

  • ・受信可能なメールアドレス
  • ・ドメイン

メモ

設定可能なドメインがない場合、VPSの逆引きホスト名を活用ください。ConoHa VPS(Ver.3.0)では、VPSに設定されているグローバルIPアドレスの逆引きホストが標準で設定されており、該当グローバルIPアドレスに正引きされています。

Difyとは

Difyは、AIアプリケーションの開発を支援するオープンソースのプラットフォームです。GPTsのようにノーコードで開発も可能です。

Step 0: セキュリティグループについて

ConoHa VPS(Ver.3.0)ではサーバー毎にIPアドレスまたはポートでトラフィックを制御するセキュリティグループ(仮想ファイアウォール)が設定されます。
本テンプレートをご利用の場合は、予め利用するポートの通信許可設定が必要です。
詳細はセキュリティグループを参照してください。

今回は「Docker」イメージから作成するサーバーに以下セキュリティグループを設定します。

  • ・IPv4v6-SSH
  • ・IPv4v6-Web

Step 1: サーバーの準備

ConoHa VPS(Ver.3.0)の「Docker」イメージから作成したサーバーにコントロールパネルのコンソールやSSHでログインします。

Difyの最小システム要件を満たすVPSが必要です。

  • CPU >= 2 Core
  • RAM >= 4 GiB
鍵認証でのSSH接続コマンド例
ssh -i 秘密鍵ファイルのパス root@VPSのグローバルIPアドレス

Step 2: OS内ファイアウォールの設定

1. アプリケーションの登録

# cat <<EOF > /etc/ufw/applications.d/web-server
[web-server]
title=web-server
description=web-server
ports=80/tcp|443/tcp
EOF

2. アプリケーションの許可

# ufw allow web-server

3. ファイアウォール設定再読込

# ufw reload

4. ファイアウォールルール確認

# ufw status verbose
Status: active
Logging: on (low)
Default: reject (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere
80/tcp (web-server)        ALLOW IN    Anywhere
443/tcp (web-server)       ALLOW IN    Anywhere
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)
80/tcp (web-server (v6))   ALLOW IN    Anywhere (v6)
443/tcp (web-server (v6))  ALLOW IN    Anywhere (v6)

Step 3: 一般ユーザーの準備

1. 一般ユーザーの作成

ここでは「dify-user」というユーザーを作成します。コマンド実行後パスワード設定とユーザー情報設定を求められるので任意のパスワードとユーザー情報を設定ください。ユーザー情報は「ENTER」キーを押下することでデフォルト設定が可能です。

# adduser dify-user

2. sudoグループに追加

# usermod -aG sudo dify-user

3. ユーザーの切り替え

# su dify-user

4. 作業ディレクトリへ移動

ここでは一般ユーザーのhomeディレクトリとします。

$ cd ~

Step 4: Difyのクローン

Difyのソースコードをサーバーにクローンし、difyディレクトリに移動します。

$ git clone https://github.com/langgenius/dify.git

$ cd dify

Step 5: Difyの起動

1. 環境配置ファイルのコピー

$ cp docker/.env.example docker/.env

2. 設定ドメインとメールアドレスの変数設定

今回はLet’s EncryptでSSL証明書を取得します。事前に下記変数を設定します。

$ EMAIL=メールアドレス
$ DOMAIN=ドメイン名

3. Difyの.envファイルの設定更新

$ sed -i 's/^NGINX_SSL_CERT_FILENAME=.*/NGINX_SSL_CERT_FILENAME=fullchain.pem/' docker/.env
$ sed -i 's/^NGINX_SSL_CERT_KEY_FILENAME=.*/NGINX_SSL_CERT_KEY_FILENAME=privkey.pem/' docker/.env
$ sed -i 's/^NGINX_ENABLE_CERTBOT_CHALLENGE=.*/NGINX_ENABLE_CERTBOT_CHALLENGE=true/' docker/.env
$ sed -i "s/^CERTBOT_DOMAIN=.*/CERTBOT_DOMAIN=$DOMAIN/" docker/.env
$ sed -i "s/^CERTBOT_EMAIL=.*/CERTBOT_EMAIL=$EMAIL/" docker/.env
$ sed -i "s|^SERVICE_API_URL=.*|SERVICE_API_URL=https://$DOMAIN|" docker/.env
$ sed -i "s|^APP_WEB_URL=.*|APP_WEB_URL=https://$DOMAIN|" docker/.env

4. Dockerネットワークを整理し、コンテナを起動します

$ sudo docker network prune -f
$ sudo docker compose -f docker/docker-compose.yaml --profile certbot up --force-recreate -d

5. コンテナの稼働確認

$ sudo docker compose -f docker/docker-compose.yaml ps

この時点で、http通信にてDifyへのアクセスが可能ですが、通信が暗号化されていません。

http://ドメイン名/install

Step 6: SSL証明書の設定

1. SSL証明書の取得

$ sudo docker compose -f docker/docker-compose.yaml exec -T certbot /bin/sh /update-cert.sh

2. .envファイルのSSL設定

$ sed -i 's/^NGINX_HTTPS_ENABLED=.*/NGINX_HTTPS_ENABLED=true/' docker/.env

3. nginxコンテナの再作成

$ sudo docker compose -f docker/docker-compose.yaml --profile certbot up -d --no-deps --force-recreate nginx

準備は整いました。下記にアクセスしてDifyの管理者アカウントの設定を進めましょう。

https://ドメイン名/install

注意

今回の手順ではLet’s EncryptでSSL証明書を取得するため、接続元IP制限を行っておりません。悪意のある第三者もブラウザ経由でアクセス可能なため、速やかに管理者アカウントを設定してください。

外部リンク

項目 URL
Dify公式リポジトリ https://github.com/langgenius/dify
Dify Docs https://docs.dify.ai/ja-jp/getting-started/install-self-hosted/docker-compose