An open API service indexing awesome lists of open source software.

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

Terraform configuration for deploying Dify on Google Cloud with scalability, high availability, and production-level readiness.
https://github.com/dena/dify-google-cloud-terraform

ai dify generative-ai google-cloud infrastructure llm llmops terraform workflow

Last synced: 3 months ago
JSON representation

Terraform configuration for deploying Dify on Google Cloud with scalability, high availability, and production-level readiness.

Awesome Lists containing this project

README

        

# Terraform for Dify on Google Cloud

![Google Cloud](https://img.shields.io/badge/Google%20Cloud-4285F4?logo=google-cloud&logoColor=white)
![Terraform](https://img.shields.io/badge/Terraform-1.9.5-blue.svg)

![Dify GCP Architecture](images/dify-google-cloud-architecture.png)

日本語のREADME

> [!NOTE]
> - Dify v1.0.0 (and later) is supported now! Try it and give us feedbacks!!
> - If you fail to install any plugin, try several times and succeed in many cases.

## Overview
This repository allows you to automatically set up Google Cloud resources using Terraform and deploy Dify in a highly available configuration.

## Features
- Serverless hosting
- Auto-scaling
- Data persistence

## Prerequisites
- Google Cloud account
- Terraform installed
- gcloud CLI installed

## Configuration
- Set environment-specific values in the `terraform/environments/dev/terraform.tfvars` file.

> [!WARNING]
> **Security Alert: Handling `terraform.tfvars`**
> The `terraform/environments/dev/terraform.tfvars` file in this repository is a **template only**. Populate it locally with your actual configuration (project ID, secrets, secure password).
>
> **Do NOT commit `terraform.tfvars` containing sensitive data to Git.** This poses a significant security risk.
>
> Add `*.tfvars` to your `.gitignore` file immediately to prevent accidental commits. For secure secret management, use environment variables (`TF_VAR_...`) or tools like Google Secret Manager.

- Create a GCS bucket to manage Terraform state in advance, and replace "your-tfstate-bucket" in the `terraform/environments/dev/provider.tf` file with the name of the created bucket.

## Getting Started
1. Clone the repository:
```sh
git clone https://github.com/DeNA/dify-google-cloud-terraform.git
```

2. Initialize Terraform:
```sh
cd terraform/environments/dev
terraform init
```

3. Make Artifact Registry repository:
```sh
terraform apply -target=module.registry
```

4. Build & push container images:
```sh
cd ../../..
sh ./docker/cloudbuild.sh
```
You can also specify a version of the dify-api image.
```sh
sh ./docker/cloudbuild.sh
```
If no version is specified, the latest version is used by default.

5. Terraform plan:
```sh
cd terraform/environments/dev
terraform plan
```

6. Terraform apply:
```sh
terraform apply
```

## Cleanup
```sh
terraform destroy
```

Note: Cloud Storage, Cloud SQL, VPC, and VPC Peering cannot be deleted with the `terraform destroy` command. These are critical resources for data persistence. Access the console and carefully delete them. After that, use the `terraform destroy` command to ensure all resources have been deleted.

## References
- [Dify](https://dify.ai/)
- [GitHub](https://github.com/langgenius/dify)

## License
This software is licensed under the MIT License. See the LICENSE file for more details.