| Approach | Best for | Infrastructure |
|---|---|---|
| EC2 + Docker | Simple VPS-style deployment | Single EC2 instance with ALB |
| Terraform | Infrastructure-as-code teams | ECS Fargate + RDS + optional ElastiCache |
| AWS Copilot | AWS-native teams | ECS Fargate (managed by Copilot) |
EC2 + Docker
The most straightforward approach. Launch an EC2 instance, install Docker, and use the same Docker Compose setup from the Self-Hosting Guide. Add an ALB for HTTPS. Best if you want full control over a single server and are comfortable with SSH.EC2 Deployment Guide
Step-by-step EC2 setup with ALB and SSL.
Terraform
Generate a complete Terraform configuration with one command. Provisions ECS Fargate, RDS PostgreSQL, optional ElastiCache Redis, and manages secrets via SSM Parameter Store. Best if your team uses infrastructure-as-code and wants repeatable deployments.Terraform Deployment Guide
Deploy with
terraform init && terraform apply.AWS Copilot
AWS Copilot handles the infrastructure for you. It creates ECS services, load balancers, and networking with simple CLI commands. Best if you prefer AWS-managed tooling and want to avoid writing infrastructure code.AWS Copilot Deployment Guide
Deploy with
copilot init and copilot svc deploy.