OSS版DifyをAzureの仮想マシンで構築デビュー
Dify(ディファイ)とは「LangGenius, Inc.」が提供するサービスで、オープンソースのLLMアプリ開発プラットフォームです。RAGを使用してエージェント形式のチャットボットから複雑なAIワークフローなどをノーコードで、LLMアプリを作れる便利なサービスです。
個人で使用する分にはローカルで良いのですが、他者と共有するにはサーバーを立てる必要があるので、AzureでセキュアなDifyを構築してみました。
Difyの機能はDockerでパッケージされているので、手軽にACRからACIなりAKSにデプロイしたかったのですが、ImagePullBackOffのエラー(環境変数の設定?)が解消できず...。とりあえず今回は仮想マシンでの構築としました。テスト環境としては設置コストが手痛いです(涙
仮想マシンは初めて触るので不明点が多く...。何かアドバイスあれば教えてください。(、._. )、
手順
リソースグループの作成と仮想マシンの作成
- 左側のメニューから「仮想マシン」を選択します。
- 「+ 仮想マシン」をクリックします。
- 以下の情報を入力します。
- サブスクリプション: 使用するサブスクリプションを選択
- リソースグループ: 新規作成する
- 仮想マシン名: 任意の名前を入力
- リージョン: 前のステップで選択したリージョンと同じものを選択
- イメージ: Ubuntu Server 20.04 LTS
- サイズ: Standard B2s(テスト運用の価格を抑えるため必要最低限のサイズを選択してます
- 管理者アカウントのユーザー名とパスワードを設定します。
- ディスク/ネットワーク の設定はテストなのでデフォルトそのままの設定
- 「確認および作成」をクリックし、「作成」をクリックします。
※メイン機がmacなのでARM64を使いたかったのですが、Ubuntu Server 20.04 LTS - ARM64 Gen2を選ぶとサイズに選択肢がなくなるんですが....なんで!?
「すべてのサイズを表示」をみても選択肢0なので、泣く泣くx64の仕様にしました。
仮想マシンへの接続
- 仮想マシンが作成されたら、リソースに移動します。
- 「接続」をクリックし、SSH接続情報を確認します。
- ターミナルを開き、以下のコマンドを使用して仮想マシンに接続します。
ssh <ユーザー名>@<仮想マシンのパブリックIPアドレス>
DockerとDifyのインストール
-
仮想マシンに接続したら、必要なパッケージをインストール
sudo apt update sudo apt install -y git
-
Dockerのインストール
sudo apt update sudo apt install -y docker.io sudo systemctl start docker sudo systemctl enable docker
-
Docker Composeのインストール
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
-
Difyのリポジトリをクローン
git clone https://github.com/langgenius/dify.git cd dify/docker
-
Difyの起動
sudo docker-compose up -d
ポートの開放
Difyにアクセスするためには、HTTPまたはHTTPSのポートも開く必要があります。
- 仮想マシンの「ネットワーク」セクションを選択します。
- 「+ ポート ルールの作成」をクリックします。
- HTTPポート (80) を開くには以下の情報を入力します:
- 名前: Allow-HTTP
- 優先度: 310(SSHのルールよりも低い優先度)
- ソース: 任意
- ソースポート範囲: *
- 宛先: 任意
- 宛先ポート範囲: 80
- プロトコル: TCP
- アクション: 許可
- 「追加」をクリックします。
※ HTTPSポート (443) も同様の設定でルールを追加します。
Difyの動作確認
ブラウザで仮想マシンのパブリックIPアドレスにアクセスし、Difyが正常に動作していることを確認します。
http://<パブリックIPアドレス>
まとめ
まだ構築しただけで運用テストはしていないので、何か問題があればこの記事を更新しようと思います。
また、現状はパブリックIPさえ知っていれば誰でもアクセスできる環境になっています。
実運用の際にはVPNゲートウェイの作成が必須です。
Azureの仮想ネットワークにポイント対サイトVPNを設定し、VPNクライアントを構成します。
VPNゲートウェイのIPアドレスを、仮想マシンの「ネットワーク」セクションで開いたポート(80・443)のソース(ソースIPアドレス/CIDR範囲)に設定する必要があります。
Discussion