↓ メインコンテンツへスキップ

【 本番向け】terraformを使ってdifyをGCP上にセルフホスティングする

須原 大護
著者
須原 大護
大学院生。Metal3のメンテナー。
目次

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 terraform

google cloud sdkのインストール
#

brew install --cask google-cloud-sdk

gcpプロジェクトの作成
#

コンソールから任意の名前でプロジェクトを作成します. 詳細は割愛します.

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 init

Artifact Registry リポジトリを作成
#

terraform apply -target=module.registry

コンテナイメージをビルド&プッシュ
#

cd ../../..
sh ./docker/cloudbuild.sh <project-id> <region>

terraformプランニング
#

cd terraform/environments/dev
terraform plan

terraform適用
#

terraform apply

注意
#

terraformの適用中にapi関連のエラーが発生することがあります,その場合はエラー文に従って,必要なapiを有効化してください. GCPコンソールから有効化ボタン押すだけです

参考資料
#

https://github.com/DeNa/dify-google-cloud-terraform


Qiitaで元の記事を読む