Site cover image

🐧 きまぐれクラウド日記

NotionをヘッドレスCMSとして利用しています。 AzureとMirosoft 365 に関することを備忘録と頭の整理の為に書いていきます。

🐧Dify をAzure上に構築してみる

目次

はじめに

オープンソースのLLMアプリケーション開発プラットフォームであるDifyをAzure上に構築する手順を確認します。

とりあえず動いて、ブラウザからアクセスできることを目標として行います。

※サービスの詳細等、網羅的に説明してませんので、その点ご了承ください。


Difyとは

DifyはオープンソースのLLMアプリケーション開発プラットフォームです。直感的なインターフェースには、AIワークフロー、RAGパイプライン、エージェント機能、モデル管理、観測機能などが組み合わさっており、プロトタイプから本番までの移行を迅速に行うことができます。
参照:https://github.com/langgenius/dify/blob/main/README_JA.md

詳しいことは公式ドキュメントに任せておいて、主観を述べます。

Difyでは、RAGアプリをGUIベースで簡単に構築可能です。

複数のLLMを使用でき、用途に合わせたAIアプリを作れるというのが私が感じた印象です。


Dify の使い方

SaaS版とセルフホスト版があります。

SaaS版の料金等については、下記のリンクから情報を御覧ください。

Dify AI · Plans and Pricing

セルフホスト版は、自身の環境でコンテナを実行することでアプリを立ち上げることが可能になります。

両者の違いは、セルフホスト版はチャット等の実行でLLMのAPIキーを自分で用意しないといけません。サクッと始めたい場合はSaaS版がオススメです。


今回行うこと

今回は、セルフホスト版のDifyをAzure上のVMに実行するまでの手順を確認します。

目的としては、Difyを社内で利用可能か検証のため、複数人でアクセス可能な環境を構築します。

一旦動けばよいので、セキュリティは考慮せずに構築を行います。

  1. Azure 上にUbuntuのVMを作成
  2. UbuntuにDockerをインストール
  3. UbuntuでDifyを実行する
  4. ブラウザからDifyにアクセスする

使用環境

使用した環境は以下になります。

  • Azure のサブスクリプション
  • Azure VM
    • Ubuntu 22.04 LTS
    • Docker
    • Dify

Azure VM の作成

Azure 上にUbuntu を構築します。

1台だけですので、GUIで作成します。

Image in a image block

  1. Azure Portal にアクセスします。
  2. 上部の検索ボックスで「VM」と検索します。
  3. 「Virtual Machines」 を選択します。
  4. 「作成」を選択します。
  5. 「Azure 仮想マシン」を選択します。

項目
リソースグループ 任意
仮想マシン名 任意
地域 Japan East
可用性オプション インフラストラクチャ冗長は必要ありません
セキュリティの種類 トラステッド起動の仮想マシン
イメージ Ubuntu Server 22.04
サイズ Standard_D2_v5 ※1
認証の種類 パスワード
ユーザー名 任意
パスワード 任意
受信ポートを選択 HTTP(80),SSH(22)

※1 実行環境は、最低2コア4GB必要です。このサイズは2コア8GBですので、もっと低いスペックのサイズで大丈夫です。

参照:https://github.com/langgenius/dify/blob/main/README_JA.md#クイックスタート

  1. 「基本」のタブで上記の表に合わせて各項目入力します。
  2. 「確認および作成」「作成」を選択します。

Dify の構築

セルフホスト版のDify構築に必要な事前設定として、Dockerのインストール等を行います。

VMに接続

先ほど作成したVMに接続します。

グローバルIPアドレス宛にSSHで接続可能ですので、そこからVMに接続します。

今回パスワード認証できるように設定していますので、そちらを使用して接続します。

パスワード認証はあまりオススメされていない機能みたいですが、今回はセキュリティのことは一切考慮していないのでこのまま進めます。

VMに接続する際のソフトウェアは任意のものをお使いください。

AzureのCloud Shell からも接続は可能だと思いますが、5-10分放置していると接続が切れます。トイレに行く度に接続し直さないと行けないので、今回は遠慮しておきます。

私の場合は、普段からPowerShellをよく使いますので以下の「Windows用 OpenSSH」を使用して接続していきます。


👇️コマンドを実行します。

ユーザー名とグローバルIPアドレスは自身の環境の値に書き換えて実行します。

途中でパスワードを求められますので、VM作成時に設定した値を入力します。

# vMに接続
# ssh <ユーザー名>@<グローバルIPアドレス>
ssh user01@8.8.8.8

接続できれば、以下のような状態になります。

# <ユーザー名>@<VM>:~$ 
test-admin@dfy02:~$ 

Ubuntuの初期設定

パッケージ情報を更新します。

👇️のコマンドを実行します。

sudo apt update

Docker のインストール

セルフホスト版のDify の前提条件は公式ドキュメントに載っています。

そちらに従って必要なものをインストールします。

と言っても、Dockerがインストールしてあれば大丈夫そうです。


DockerEngineをインストール

Dockerの公式ドキュメントにインストール方法が載っていますので、コピペで実行していきます。

私の場合は、公式ドキュメントのやり方ではUbuntuにDockerを上手くインストールできませんでしたので以下のURLの方法で行いました。

👇️Dockerの公式ドキュメント

👇️こちらの方法ならインストールできました。

sudoでなくても、dockerコマンドを実行できるようにします。

dockerグループを作成し、現在のユーザーを追加します。

sudo groupadd docker
sudo usermod -aG docker $USER

Dockerがインストールされたか確認します。

docker --version

Docker Composeもインストールされているか確認します。

docker compose version

Dify のインストール

UbuntuにDifyのソースコードのクローンを持ってきます。

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

ディレクトリを移動して、Difyを起動します。

cd dify/docker
docker compose up -d

コンテナの状態を確認します。

docker compose ps

Dify にアクセス

コンテナの状態問題なければ、Difyにアクセスします。

インターネットから対象のVMに対してHTTP通信を許可しています。

ブラウザに対象のVMのグローバルIPアドレスを入力すれば、Difyへアクセスすることが可能になります。

下記のURLにリダイレクトされ、初回はアカウント作成する必要があります。

http://<VMのグローバルIPアドレス>/install

👇️ブラウザからアクセスすれば以下のような画面が出てきます。

Image in a image block

NSGの設定変更

ここまでは、全くセキュリティ面のことを考慮せずに構築を進めたので、最後に少しだけセキュアな設定を行います。

現在VMに対してインターネットからのSSHとHTTP接続が可能となっています。

こちらを、社内で利用するグローバルIPアドレスの範囲からのみ接続できるように変更します。


Image in a image block
  1. Azure Portal にアクセスします。
  2. 対象のVMを選択します。
  3. 左のメニューから「ネットワーク」>「ネットワーク設定」を選択します。
  4. 受信ポートルールで「SSH」を選択します。

Image in a image block
  1. ソースで「IPアドレス」を選択します。
  2. CIDR範囲で社内で使用しているIPアドレス範囲の入力します。
  3. ex)20.21.22.23
  4. 「保存」を選択します。
  5. HTTPの受信ポートルールも同様に設定します。

まとめ

セルフホスト版のDifyをAzure上のVMに構築する手順を確認しました。

とりあえず動くことを優先して作成しましたので、セキュリティ面は考慮していません。そのあたりは今後どうすればよいか検討します。

また、セルフホスト版はAPIキーを自前で用意する必要があります。

その設定手順についても残していければと思います。

参考