Documentation
Repository Structure
Quick Start
1. Install Required Tools
Terraform2. Create a New Environment
New environments are created by copyingenv-template-folder and filling in the placeholders.
See Terragrunt Deployment Guide for the full step-by-step process. The high-level flow is:
Service Enable / Disable Flags
All optional services are toggled via environment variables. Set them before runningterragrunt apply.
Supabase Self-Hosted Deployment OrderSupabase components must be deployed in sequence:
Helm Charts Reference
Modules Reference
modules/eks
The primary module. Provisions:
- VPC with public/private subnets across 3 AZs
- EKS cluster (Kubernetes 1.33) and managed node group for Karpenter
- Karpenter controller + NodePool + EC2NodeClass
- IAM roles (cluster, node group, Karpenter, ALB controller, EBS CSI driver)
- All Helm releases via the
helm_releasesinput map
modules/aws-services
Provisions ElastiCache Redis and Amazon MQ RabbitMQ. Only active when ENABLE_AWS_SERVICES=true.
modules/state
Bootstraps the S3 state bucket for a new environment (versioning, encryption, public access block).
modules/helm
Reusable Helm release module supporting both upstream chart repositories and local chart_path charts.
Environment Configuration
Placeholders
Every value inenv-template-folder that is environment-specific uses a <YOUR_*> placeholder. Run the following to check nothing is left before deploying:
Remote State
State is stored in S3 per environment. The bucket is bootstrapped bystate/terragrunt.hcl and referenced by root.hcl. The naming pattern is ekb-terraform-state-<env-name>.

