「話題のLLMアプリ開発ツール Dify を試してみたいけど、ローカルPCの環境構築は少し面倒…」「どうせならクラウド上にサクッと構築したいけど、手順が複雑そう…」と感じていませんか?
この記事では、そんなあなたのために、Azure と Bicep (IaC) を使って、コマンド一つでDifyのセルフホスト環境を構築する手順を解説します。
本記事を読み終える頃には、誰でも再現可能な方法でAzure VM上にDifyをデプロイし、ブラウザから初期セットアップ画面にアクセスできるようになります。
1. 背景:なぜAzure + BicepでDifyを動かすのか?
本題に入る前に、「Dify」「Azure」「Bicep」について簡単におさらいし、なぜこの組み合わせが最適なのかを解説します。
Difyとは?
Difyは、オープンソースのLLM(大規模言語モデル)アプリケーション開発プラットフォームです。直感的なUIを通じて、プロンプトの設計、RAG(Retrieval-Augmented Generation)パイプラインの構築、AIエージェントの開発などをノーコード・ローコードで行えるのが大きな特徴です。 セルフホストすることで、クローズドな環境でデータを扱ったり、自由にカスタマイズしたりすることが可能になります。
Azure & Bicep を選ぶ理由
Azure は、Microsoftのクラウドプラットフォームです。豊富なサービスと安定したインフラを提供しており、個人開発からエンタープライズ利用まで幅広く対応できます。
そして、今回の主役である Bicep は、Azureリソースを管理するための宣言型言語、つまり IaC (Infrastructure as Code) ツールです。 Bicepを使うメリットは以下の通りです。
- 宣言的な構文: 「何を」作るかを定義するだけで、Azureがその状態を実現してくれます。
- 再利用性と一貫性: 同じテンプレートから何度でも同じ環境を構築でき、設定ミスを防ぎます。
- Azureとの親和性: Azureの最新サービスにいち早く対応し、最高の開発体験を提供します。
手作業でのリソース作成は、ミスが発生しやすく、手順の再現も困難です。Bicepを使えば、インフラ構築そのものをコードとして管理・自動化できるため、より迅速で信頼性の高い環境構築が実現できます。
今回構築するアーキテクチャ
実装手順に入る前に、本記事で最終的に構築するAzureリソースの構成図を見てみましょう。この図にあるリソースグループを含め、すべてのリソースがBicepによって自動で作成されます。 全体像を把握しておくことで、これからの各ステップの目的がより明確になります。

2. 実装手順とコード例
それでは、実際にBicepを使ってAzure上にDify環境を構築していきましょう。
前提条件
- 有効なサブスクリプションを持つAzureアカウント
- Azure CLI (バージョン
2.59.0
以上) がインストール済み - SSH公開鍵 (例:
~/.ssh/id_ed25519.pub
) - 作業端末のグローバルIPアドレス (IPv4)
手順1: プロジェクトファイルの入手
今回の構築に必要なBicepファイル一式をGitHubで公開しています。
方法A: git clone コマンドを利用する場合(推奨)
ターミナルで以下のコマンドを実行し、リポジトリをクローン(複製)します。
# GitHubリポジトリをクローン
git clone https://github.com/NoahRithm/dify-on-azure-bicep.git
方法B: ZIPファイルをダウンロードする場合
Gitがインストールされていない場合は、ブラウザから直接ファイルをダウンロードできます。
- リポジトリのページにアクセスします。
- 緑色の
< > Code
ボタンをクリックし、表示されたメニューからDownload ZIP
を選択します。 - ダウンロードしたZIPファイルを任意の場所に解凍します。
上記いずれかの方法でファイルを入手したら、ターミナルでそのディレクトリに移動してください。
# ダウンロードまたはクローンしたディレクトリに移動
cd dify-on-azure-bicep
手順2: SSH公開鍵の準備
今回の構成では、セキュリティ向上のためパスワード認証ではなく、SSH公開鍵認証を利用します。 まだSSH鍵ペアを持っていない場合は、以下のコマンドで生成してください。(すでに持っている方はこの手順をスキップしてください)
# ed25519方式で鍵ペアを生成(推奨)
# パスフレーズは任意で設定してください(空でも可)
ssh-keygen -t ed25519 -C "dify-vm-key" -f ~/.ssh/id_ed25519_dify
# 生成された公開鍵の内容を確認(この内容を後ほど使います)
cat ~/.ssh/id_ed25519_dify.pub
.pub
ファイルが公開鍵です。サーバー側に登録する鍵で、他人に見られても問題ありません。- 拡張子のないファイル (
id_ed25519_dify
) が秘密鍵です。手元のPCに保管し、絶対に外部に漏らさないでください。
手順3: リポジトリ構成の解説
Bicepファイル群がどのように連携して環境を構築するか、主要なファイルの役割を理解しておきましょう。
main.bicep
: デプロイ全体の起点となるファイルです。az deployment sub create
コマンドで実行されるように、Azureサブスクリプションを対象(スコープ)としており、リソースグループそのものを作成する役割を持ちます。その中にnetwork
とvm
モジュールを使って各リソースを構築します。modules/network.bicep
: 仮想ネットワーク(VNet)とネットワークセキュリティグループ(NSG)を定義します。NSGでは、SSH(22)とHTTP(80)のポートを、デプロイを実行するあなたのIPアドレスからのみ許可する設定が自動で行われます。modules/vm.bicep
: Difyを動かすLinux VM本体と、関連リソース(パブリックIPなど)を定義します。この中で、VM拡張機能 (Custom Script Extension) を使い、Difyのコンテナ群が正常に起動するまでポーリング(監視)するコマンドを実行しています。これにより、デプロイ完了時点でDifyが利用可能な状態であることが保証されます。scripts/cloud-init.yaml
: VMの初回起動時に実行されるスクリプトです。DockerとDifyのインストール、起動を全自動で行います。
手順4: Azureへのデプロイ
いよいよAzureにリソースをデプロイします。
- Azureへログイン ターミナルで以下のコマンドを実行し、ブラウザの指示に従ってログインしてください。
az login
- 管理用IPアドレスの取得 お使いのPCのグローバルIPアドレスを取得し、環境変数にセットします。これにより、あなた以外の場所からVMへアクセスできなくなり、セキュリティが向上します。
# 作業端末のグローバルIPアドレス(IPv4)を取得し、CIDR形式で変数に格納
export ADMIN_IP_CIDR="$(curl -4 -s https://api.ipify.org)/32"
- Bicepテンプレートのデプロイ 最後に、以下のコマンドを実行します。先ほど準備したSSH公開鍵とIPアドレスをパラメータとして渡します。
# --location: リージョンを必要に応じて変更
# --parameters adminPublicKey: 使用する公開鍵のパスを指定
az deployment sub create \
--name dify-deployment-$(date +%Y%m%d) \
--location japaneast \
--template-file main.bicep \
--parameters \
adminSourceIp=$ADMIN_IP_CIDR \
adminPublicKey="$(cat ~/.ssh/id_ed25519_dify.pub)"
- デプロイには5〜10分程度かかります。完了すると、
outputs
として接続情報が表示されます。
手順5: 動作確認
デプロイが完了したら、正常にDifyが起動しているか確認しましょう。
- 接続情報の確認 デプロイ完了時にターミナルに表示される
outputs
オブジェクトから、publicIpとsshCommandの値を控えておきます。
📝 出力例
"outputs": {
"publicIp": {
"type": "String",
"value": "203.0.113.1"
},
"sshCommand": {
"type": "String",
"value": "ssh -i ~/.ssh/id_ed25519_dify azureuser@203.0.113.1"
}
}
- Difyセットアップ画面へのアクセス ブラウザのアドレスバーに
http://<publicIpの値>
を入力してアクセスします。以下のようなDifyの初期セットアップ画面が表示されれば成功です!画面の指示に従い、管理者アカウントを作成してください。
3. Tips・注意点
- コストについて: 今回作成したVMは起動しているだけで課金が発生します。検証目的の場合は終わったら、Azureポータルからリソースグループ(
rg-dify-
で始まる名前)ごと削除することを忘れないでください。 - セキュリティについて: 初期セットアップ用にポート22(SSH)と80(HTTP)が管理者IPにのみ開いています。本格的な運用を行う場合は、必ずHTTPS化(ポート443)を行い、不要になったポート80を閉じるなどの対策を強く推奨します。
- VMサイズの変更: デフォルトでは
Standard_B2ms
という比較的小さなサイズのVMが作成されます。より高いパフォーマンスが必要な場合は、main.bicep
内のvmSize
変数を変更してください。
4. まとめ
本記事では、Azure Bicepを活用して、Difyのセルフホスト環境を迅速かつセキュアに構築する手順を解説しました。
- Difyは強力なOSSのLLMアプリ開発プラットフォームです。
- Azure Bicep (IaC) を使うことで、インフラ構築をコード化し、誰でも同じ環境を再現できます。
- SSH公開鍵認証とIPアドレス制限により、セキュアな環境をコマンド一発で構築しました。
まずは今回構築した環境でDifyを自由に触ってみてください。そして、次のステップとして、よりセキュアな環境にするための準備を進めましょう。
免責事項
当サイトの情報は、執筆者の経験や調査に基づいたものですが、その正確性や完全性を保証するものではありません。本記事に掲載された内容によって生じたいかなる損害についても、当方は一切の責任を負いかねますので、あらかじめご了承ください。すべての操作は、ご自身の責任において行っていただくようお願いいたします。
コメント