/supabase-on-aws

Self-hosted Supabase on AWS

Primary LanguageTypeScriptApache License 2.0Apache-2.0

Supabase on AWS - CloudFormation/CDK Template

Launch in minutes. Scale to millions.

This repo includes a template of starting Supabase stack on AWS via CloudFormation/CDK. This template use managed services such as Amazon ECS and Amazon Aurora etc...

Architecture

architecture-diagram

smart-cdn-caching

Deploy via CloudFormation template

Region View Stable Latest
US East (N. Virginia) View launch launch
US West (Oregon) View launch launch
Europe (Ireland) View launch launch
Asia Pacific (Tokyo) View launch launch
Asia Pacific (Osaka) View launch launch
Asia Pacific (Singapore) View launch launch
Asia Pacific (Sydney) View launch launch
Asia Pacific (Mumbai) View launch launch

Optional templates

Template Link
AWS WAF (Web ACL) launch

Specification and Limitation

  • APIs
    • All containers run on ECS Fargate (Graviton2).
    • All components are configured with AutoScaling.
    • GraphQL is not supported, because pg_graphql is not supported with Amazon RDS/Aurora.
  • Service Discovery
    • Each component is discovered as ***.supabase.internal.
  • Database (PostgreSQL)
  • Supabase Studio
    • It is deployed on Amplify Hosting.
    • Todo: Add option to deploy the studio in different regions.
    • ⚠️ Warning: Supabase Studio is open to web and can be accessed by malicious actors. We strongly suggest you active 'Access control' globaly and setup a strong password and username.

Fargate Task Size

Size vCPU Memory
micro 256 512
small 512 1024
medium 1024 2048
large 2048 4096
xlarge 4096 8192
2xlarge 8192 16384
4xlarge 16384 32768

IAM Policy to create CloudFormation Stack

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CloudFormation",
            "Effect": "Allow",
            "Action": "cloudformation:*",
            "Resource": "*"
        },
        {
            "Sid": "supabase",
            "Effect": "Allow",
            "Action": [
                "application-autoscaling:*",
                "ec2:*",
                "ecs:*",
                "elasticloadbalancing:*",
                "events:*",
                "iam:*",
                "lambda:*",
                "logs:*",
                "s3:*",
                "secretsmanager:*",
                "servicediscovery:*",
                "ses:*",
                "ssm:*",
                "states:*",
                "rds:*",
                "route53:*",
            ],
            "Resource": "*"
        },
        {
            "Sid": "supabase-cdn",
            "Effect": "Allow",
            "Action": [
                "cloudfront:*",
                "wafv2:Get*",
                "wafv2:List*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "cache-manager",
            "Effect": "Allow",
            "Action": [
                "apigateway:*",
                "lambda:*",
                "logs:*",
                "sqs:*",
            ],
            "Resource": "*"
        },
        {
            "Sid": "supabase-studio",
            "Effect": "Allow",
            "Action": [
                "amplify:*",
                "codecommit:*",
                "lambda:*",
                "logs:*",
                "sns:*"
            ],
            "Resource": "*"
        }
    ]
}

Deploy via CDK

This cdk project has many resources for CloudFormation. It is highly recomended to remove these resources for CloudFormation to use it as CDK.

git clone https://github.com/mats16/supabase-on-aws.git

cd supabase-on-aws

yarn install

cdk deploy Supabase