What you’ll need
- An AWS account
- A domain name (optional, but recommended for HTTPS)
- AWS CLI installed locally (optional)
1. Launch an EC2 instance
- Open the EC2 Console and click Launch Instance
- Give it a name (e.g.
fleet) - Select Ubuntu Server 24.04 LTS as the AMI
- Choose t3.micro (free tier eligible) or t3.small for more headroom
- Create or select a key pair for SSH access
- Under Network settings, create a security group with these inbound rules:
| Type | Protocol | Port | Source |
|---|---|---|---|
| SSH | TCP | 22 | Your IP |
| HTTP | TCP | 80 | 0.0.0.0/0 |
| HTTPS | TCP | 443 | 0.0.0.0/0 |
- Leave storage at the default 8 GB gp3
- Click Launch Instance
2. SSH into the instance
3. Install Docker
4. Clone and start Fleet
3000.
5. Assign an Elastic IP (recommended)
By default, EC2 instances get a new public IP on every restart. To keep a stable IP:- Go to EC2 → Elastic IPs → Allocate Elastic IP
- Click Associate Elastic IP and select your instance
6. Point a domain (optional)
Create an A record in Route 53 (or your DNS provider) pointing to the Elastic IP.7. Add HTTPS with nginx + Certbot
/etc/nginx/sites-available/fleet:
Make sure ports 80 and 443 are open in your EC2 security group — Certbot needs port 80 to complete the ACME HTTP challenge for TLS certificate provisioning.

