1. はじめに#
AIアプリがWEBUI上で簡単に作れるdifyを,terraformを使用してGoogle Cloud Platform(gcp)上でセルフホスティングする方法を記述します.
この記事でできること#
- terraformを用いたgcp上でのdifyのセルフホスティング
この記事の対象者#
- AIアプリを簡単に外部公開したい方
- difyをローカルだけでなく,クラウドで運用したい方
動作環境#
- OS バージョン
- MacOS Sequoia 15.5
事前準備#
リポジトリのクローン#
difyをgcpでホスティングする場合,クラウド上でのインフラ構築などを自動化するterraformの設定ファイルを公開してくれている以下のリポジトリがあるのでクローンします.
git clone https://github.com/DeNA/dify-google-cloud-terraformパッケージのインストール#
terraformのインストール#
brew install terraformgoogle cloud sdkのインストール#
brew install --cask google-cloud-sdkgcpプロジェクトの作成#
コンソールから任意の名前でプロジェクトを作成します. 詳細は割愛します.
cliからgcpにログイン#
gcloud auth loginコマンド入力後webページが開くのでログインします.
tfvars保管用バケットの作成#
terraformの状態をクラウドで管理するためのストレージを作成します GCPコンソールからbucketsを選択します. 任意の名前でバケットを作成しておいてください
ファイルの修正#
先ほどクローンしてきたリポジトリを修正して,自分用にカスタムします.
gitignoreの修正#
機密情報をリモートに上げないように,gitignoreに追記します
terraform.tfvars- terraform/environments/dev を
- terraform/environments/prod という名前でコピーします.
provider.tfの修正#
先ほど作成したバケットをterraformの状態管理に適用します
terraform {
backend "gcs" {
+ bucket = "<バケットの名前>"
prefix = "dify"
}
}tfvarsの修正#
コピーしたprod内のterraform.tfvarsを修正します keyについては,
openssl rand -base64 42を実行して,作成するといいでしょう
+ project_id = "例:dify-sample-app"
+ region = "例:asia-northeast1"
+ plugin_daemon_key = "<opensslコマンドで作成>"
+ plugin_dify_inner_api_key = "<opensslコマンドで作成>"デプロイ#
ここまできたらいよいよGCPにデプロイします
terraform初期化#
cd terraform/environments/prod
terraform initArtifact Registry リポジトリを作成#
terraform apply -target=module.registryコンテナイメージをビルド&プッシュ#
cd ../../..
sh ./docker/cloudbuild.sh <project-id> <region>terraformプランニング#
cd terraform/environments/dev
terraform planterraform適用#
terraform apply注意#
terraformの適用中にapi関連のエラーが発生することがあります,その場合はエラー文に従って,必要なapiを有効化してください. GCPコンソールから有効化ボタン押すだけです
参考資料#
https://github.com/DeNa/dify-google-cloud-terraform