Free Tier Cloud Hosting Options Compared (2024)
This guide maps every serious free tier cloud hosting option available in 2024 — RAM, vCPU, storage, egress caps, and the hidden gotchas that turn "free" into a surprise invoice. By the end you'll know exactly which platform fits your workload, how to provision a free instance on each, and what commands to run to verify your environment is stable before you deploy anything real.
Prerequisites
- A terminal with
ssh,curl, andwgetavailable - A credit card or phone number for identity verification (most providers require it even for free tiers)
- Basic Linux familiarity — you'll be running commands on Ubuntu 22.04 or 24.04 unless noted
- An email address not previously used on these platforms (free tiers are per-account)
What "Free Tier" Actually Means
Before comparing specs, understand the two models providers use:
Always-free quotas — a fixed amount of resources that never expire. Oracle Cloud and Fly.io use this model. You stay within the quota indefinitely.
Trial credits — a dollar amount (e.g., $300) that expires after 90 days. Google Cloud and Azure use this. After expiry, the instance stops unless you upgrade. These are useful for evaluation, not for running a side project long-term.
This guide focuses on always-free quotas because that's what matters for bootstrapped projects.
Free Tier Cloud Hosting Options Side-by-Side
| Provider | vCPU | RAM | Storage | Egress | Expires? |
|---|---|---|---|---|---|
| Oracle Cloud Free Tier | 4 (Ampere ARM) | 24 GB | 200 GB block | 10 TB/mo | Never |
| Fly.io Free Tier | Shared (3 VMs) | 256 MB each | 3 GB volume | 160 GB/mo | Never |
| Render Free Tier | Shared | 512 MB | — (ephemeral) | 100 GB/mo | Never |
| Google Cloud Free Tier | 2 vCPU (e2-micro) | 1 GB | 30 GB HDD | 1 GB/mo | Never* |
| AWS Free Tier | 2 vCPU (t2/t3.micro) | 1 GB | 30 GB SSD | 15 GB/mo | 12 months |
| Koyeb Free Tier | Shared | 512 MB | — | 100 GB/mo | Never |
| Railway Starter | Shared | 512 MB | 1 GB | 100 GB/mo | $5 credit/mo |
*Google Cloud e2-micro is always-free only in us-east1, us-central1, or us-west1.
Step-by-Step: Provision Each Major Free Tier
1. Oracle Cloud — The Best Free Tier by Raw Specs
Oracle's Ampere A1 Compute gives you 4 ARM vCPUs and 24 GB RAM across up to 4 instances — more than any other provider at zero cost. The catch: availability is region-dependent and the UI is dense.
1. Sign up at cloud.oracle.com. Use a real credit card — Oracle verifies it but does not charge for Always Free resources.
2. Navigate to Compute → Instances → Create Instance. Change the image to Canonical Ubuntu 22.04 and change the shape to VM.Standard.A1.Flex.
3. Set OCPUs to 4 and RAM to 24 GB (within Always Free quota).
4. Download or paste your SSH public key during setup, then click Create.
5. Once the instance shows Running, SSH in:
ssh -i ~/.ssh/id_ed25519 ubuntu@<your-instance-public-ip>
6. Verify the hardware matches what you provisioned:
nproc && free -h
Expected output:
4
total used free
Mem: 23Gi 300Mi 22Gi
7. Open required ports in the OCI Security List (not UFW alone — OCI has its own stateful firewall):
# On the instance, also open UFW
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Then go to Networking → Virtual Cloud Networks → Security Lists and add ingress rules for ports 80 and 443 manually in the console.
Gotcha: If you see "Out of capacity" when creating the A1 instance, retry in off-peak hours or try a different availability domain within the same region. This is a known supply constraint.
2. Fly.io — Best for Containerized Apps
Fly.io's free tier gives you three shared-CPU VMs with 256 MB RAM each, a Postgres hobby instance, and 3 GB of persistent volume — enough for a small API, a bot, and a database.
1. Install the Fly CLI on your local machine (Ubuntu 24.04):
curl -L https://fly.io/install.sh | sh
2. Add the CLI to your PATH for the current session:
export FLYCTL_INSTALL="/home/$USER/.fly"
export PATH="$FLYCTL_INSTALL/bin:$PATH"
Add both lines to ~/.bashrc to make them permanent.
3. Authenticate:
flyctl auth login
This opens a browser. Complete sign-up there.
4. In your project directory (must contain a Dockerfile or a supported buildpack), launch the app:
flyctl launch
Fly detects your stack, asks for a region, and writes fly.toml. Accept the defaults for a free deployment.
5. Deploy:
flyctl deploy
Expected output (truncated):
==> Building image
--> Building image done
==> Pushing image to fly
--> Pushing image done
1 desired, 1 placed, 1 healthy, 0 unhealthy
6. Check the running machines:
flyctl status
Gotcha: Fly free VMs scale to zero after inactivity. Your first request after idle will have a cold-start delay of 1–3 seconds. For always-on behavior you need a paid plan.
3. Google Cloud e2-micro — Best for Familiarity
The always-free e2-micro (1 vCPU burst, 1 GB RAM, 30 GB HDD) in three US regions is the most widely documented free tier. Egress is capped at 1 GB/month to destinations outside Google's network — plan accordingly.
1. Install the Google Cloud CLI on Ubuntu 24.04:
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee /etc/apt/sources.list.d/google-cloud-sdk.list
sudo apt update && sudo apt install -y google-cloud-cli
2. Initialize and authenticate:
gcloud init
Follow the prompts to log in and select or create a project.
3. Create the free-tier VM (region must be us-east1, us-central1, or us-west1):
gcloud compute instances create free-vm \
--machine-type=e2-micro \
--zone=us-central1-a \
--image-family=ubuntu-2404-lts \
--image-project=ubuntu-os-cloud \
--boot-disk-size=30GB \
--boot-disk-type=pd-standard
Expected output:
NAME ZONE MACHINE_TYPE INTERNAL_IP EXTERNAL_IP STATUS
free-vm us-central1-a e2-micro 10.128.0.2 34.XX.XX.XX RUNNING
4. SSH in:
gcloud compute ssh free-vm --zone=us-central1-a
5. Verify resources:
nproc && free -h
Gotcha: The e2-micro has a burstable CPU. Under sustained load it throttles hard. Do not run CPU-intensive workloads here — use it for low-traffic web apps or cron jobs.
4. Render — Best for Zero-Config Web Services
Render's free tier runs a web service container with 512 MB RAM. No SSH access, no persistent disk on the free plan. It suits static sites, simple APIs, and webhook receivers.
1. Push your project to a GitHub or GitLab repository.
2. Sign in at render.com and click New → Web Service.
3. Connect your repository. Render auto-detects the runtime (Node, Python, Ruby, Docker, etc.).
4. Set Instance Type to Free. Click Create Web Service.
5. After the build completes, verify the deployment from your terminal:
curl -I https://<your-app>.onrender.com
Expected output:
HTTP/2 200
server: Render
Gotcha: Free Render services spin down after 15 minutes of inactivity. The first request after sleep takes 30–60 seconds. This is a hard platform limit on the free tier.
Verify Your Free Tier Instance Is Stable
Run these checks on any Linux free-tier VM before deploying a workload:
Check disk space:
df -h /
Expected: at least 20 GB free on a fresh 30 GB volume.
Check memory:
free -m
If available memory is under 200 MB on a fresh instance, the provider may be overcommitting. Consider adding swap:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Check outbound connectivity and latency:
curl -o /dev/null -s -w "DNS: %{time_namelookup}s Connect: %{time_connect}s Total: %{time_total}s\n" https://example.com
Check that your systemd services survive a reboot:
sudo reboot
# After reconnecting:
systemctl status <your-service-name>
Troubleshooting
Oracle "Out of capacity" on A1 instances — Retry in a different availability domain within the same region. Alternatively, create 4 separate instances of 1 OCPU / 6 GB RAM each (same total quota) instead of one large instance; smaller shapes have better availability.
Fly.io deploy fails with "no suitable host" — Your free account may have reached the 3-VM limit. Run flyctl machines list to audit running machines and destroy unused ones with flyctl machines destroy <machine-id>.
Google Cloud billing alert fires on a free-tier VM — Verify the zone is exactly us-central1-a, us-east1-b, or us-west1-a. Instances in other zones are not free. Also confirm the disk type is pd-standard (HDD), not pd-ssd.
Render app returns 503 after inactivity — This is the spin-down behavior. Add an external uptime monitor (UptimeRobot free tier) to ping your service every 14 minutes to keep it warm. Note: Render's terms allow this.
SSH connection refused on a new Oracle instance — Check the OCI Security List first, not UFW. The cloud-level firewall blocks traffic before it reaches the OS. Add an ingress rule for port 22, source 0.0.0.0/0 in the console.
Next Steps
For a single always-on project with real RAM, start with Oracle Cloud's Ampere A1 — 4 vCPUs and 24 GB RAM free is genuinely hard to beat. Pair it with Fly.io for containerized microservices that benefit from global edge placement. Use Render for any public-facing web service where you want zero infrastructure management and can tolerate the cold-start behavior.
Once your project outgrows free tiers, Hetzner's CAX11 (4 ARM vCPUs, 8 GB RAM) runs €3.79/month — roughly the cost of a coffee — and gives you dedicated resources without the free-tier restrictions. That's the natural next step for any bootstrapped project that's starting to get real traffic.