Free Tier VPS Hosting 2024: Best Options Compared

by David Park
Free Tier VPS Hosting 2024: Best Options Compared

Free tier VPS hosting in 2024 gives you a real Linux server at $0/month — useful for side projects, staging environments, and learning without burning budget. This guide covers every credible provider, their actual resource limits, the catch behind each offer, and the commands to provision and verify a working server. By the end you'll know which free tier fits your workload and have a running instance.

Prerequisites

  • A credit card or valid payment method (most free tiers require one for identity verification)
  • An SSH key pair already generated on your local machine
  • Basic familiarity with the Linux command line
  • curl, ssh, and wget available locally

To generate an SSH key if you don't have one:

ssh-keygen -t ed25519 -C "your@email.com" -f ~/.ssh/id_ed25519

Expected output:

Generating public/private ed25519 key pair.
Your identification has been saved in /home/you/.ssh/id_ed25519
Your public key has been saved in /home/you/.ssh/id_ed25519.pub

Free Tier VPS Hosting Options in 2024: Provider Breakdown

Not every "free" VPS is equal. Below are the providers with genuine free tiers as of mid-2024 — meaning no trial countdown, no automatic billing after 30 days.

Oracle Cloud Free Tier (Always Free)

What you get: 2× AMD Ampere A1 Compute instances with up to 4 OCPUs and 24 GB RAM total (split however you like across up to 4 VMs), or 2× micro VMs (1/8 OCPU, 1 GB RAM each). 200 GB block storage total. No expiry.

The catch: Provisioning Ampere A1 instances frequently fails with "Out of capacity" in popular regions. You must retry or script it. Micro VMs on AMD are more reliably available.

Region recommendation: ap-osaka-1 or eu-stockholm-1 tend to have more A1 capacity than us-ashburn-1.

Google Cloud Free Tier (e2-micro)

What you get: 1× e2-micro instance (2 vCPU burst, 1 GB RAM) in us-west1, us-central1, or us-east1. 30 GB standard persistent disk. 1 GB egress/month to most destinations. No expiry.

The catch: 1 GB RAM is tight. Swap is essential. Egress beyond 1 GB is billed. The e2-micro is burstable — sustained CPU use triggers throttling.

AWS Free Tier (t2.micro / t3.micro)

What you get: 750 hours/month of t2.micro (1 vCPU, 1 GB RAM) for 12 months after account creation. After 12 months, billing starts.

The catch: This is a 12-month trial, not a permanent free tier. Set a billing alert immediately after signup or you will get charged.

Fly.io Free Allowance

What you get: 3× shared-cpu-1x VMs (256 MB RAM each), 3 GB persistent volume storage, 160 GB egress/month. No expiry on the allowance, but a credit card is required.

The catch: 256 MB RAM per VM limits what you can run. Best suited for small Go, Rust, or static apps. Postgres free allowance is separate (3 GB).

Render Free Tier

What you get: Free web services (512 MB RAM, shared CPU) that spin down after 15 minutes of inactivity. Not a persistent VPS — included here because developers often conflate the two.

The catch: Cold starts of 30–60 seconds after spin-down make this unsuitable for anything requiring uptime. Use it only for webhooks or infrequent jobs.

Koyeb Free Tier

What you get: 1× nano instance (0.1 vCPU, 512 MB RAM, 2 GB SSD) permanently free. Deploy from Docker images or GitHub. Global anycast network.

The catch: 0.1 vCPU is a hard limit, not burst. CPU-bound workloads will crawl. Suitable for lightweight APIs.

Step-by-Step: Provision an Oracle Cloud Always Free VM

Oracle's Always Free tier offers the most raw compute of any provider. These steps use the OCI CLI to provision an AMD micro instance (more available than A1 in most regions).

Step 1 — Install the OCI CLI

bash -c "$(curl -fsSL https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

This downloads and installs the OCI CLI to ~/lib/oracle-cli and adds it to your PATH. Accept all defaults.

Step 2 — Configure authentication

oci setup config

This prompts you for your tenancy OCID, user OCID, region, and generates an API key. Paste the public key fingerprint into OCI Console → Profile → API Keys.

Step 3 — Find the Ubuntu 24.04 image OCID for your region

oci compute image list \
  --compartment-id "<your-tenancy-ocid>" \
  --operating-system "Canonical Ubuntu" \
  --operating-system-version "24.04" \
  --shape "VM.Standard.E2.1.Micro" \
  --query 'data[0].id' \
  --raw-output

Expected output (example — your OCID will differ):

ocid1.image.oc1.eu-stockholm-1.aaaaaaaaxyz...

Save this value as IMAGE_OCID.

Step 4 — Retrieve your subnet OCID

oci network subnet list \
  --compartment-id "<your-tenancy-ocid>" \
  --query 'data[0].id' \
  --raw-output

Save this as SUBNET_OCID.

Step 5 — Launch the instance

oci compute instance launch \
  --compartment-id "<your-tenancy-ocid>" \
  --display-name "free-micro-01" \
  --image-id "<IMAGE_OCID>" \
  --shape "VM.Standard.E2.1.Micro" \
  --subnet-id "<SUBNET_OCID>" \
  --assign-public-ip true \
  --ssh-authorized-keys-file ~/.ssh/id_ed25519.pub \
  --boot-volume-size-in-gbs 50

This creates a VM.Standard.E2.1.Micro instance (1 OCPU, 1 GB RAM) with a 50 GB boot volume and your SSH public key installed. Provisioning takes 60–90 seconds.

Step 6 — Retrieve the public IP

oci compute instance list-vnics \
  --instance-id "<instance-ocid-from-step-5>" \
  --query 'data[0]."public-ip"' \
  --raw-output

Expected output:

130.61.45.12

Step 7 — SSH into the instance

ssh -i ~/.ssh/id_ed25519 ubuntu@<public-ip>

Expected output:

Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-1009-oracle x86_64)

Step-by-Step: Provision a Google Cloud e2-micro

If Oracle capacity is unavailable, Google Cloud's e2-micro is the next best permanent free option.

Step 1 — Install the gcloud CLI

curl -fsSL https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init

This installs the Google Cloud SDK and walks you through project selection and authentication.

Step 2 — Create the instance

gcloud compute instances create free-micro-01 \
  --project="<your-project-id>" \
  --zone="us-west1-a" \
  --machine-type="e2-micro" \
  --image-family="ubuntu-2404-lts" \
  --image-project="ubuntu-os-cloud" \
  --boot-disk-size="30GB" \
  --boot-disk-type="pd-standard" \
  --no-address

Note: --no-address omits an external IP to stay within free egress limits. Use Cloud NAT or add --address only if you need inbound traffic.

Step 3 — Add a static external IP (optional, free)

gcloud compute instances add-access-config free-micro-01 \
  --zone="us-west1-a"

Step 4 — SSH via gcloud

gcloud compute ssh free-micro-01 --zone="us-west1-a"

Step 5 — Add swap (required on 1 GB RAM)

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

This creates a persistent 1 GB swap file. Without it, the OOM killer will terminate processes under moderate load.

Verify It Works

Run these checks on whichever instance you provisioned.

1. Confirm CPU and RAM:

nproc && free -h

Expected output (Oracle micro):

1
               total        used        free
Mem:           976Mi       210Mi       600Mi
Swap:          1.0Gi         0B        1.0Gi

2. Confirm disk space:

df -h /

Expected output:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        49G  3.2G   46G   7% /

3. Confirm outbound connectivity:

curl -s https://ifconfig.me

This returns your server's public IP, confirming DNS and egress work.

4. Confirm systemd is healthy:

systemctl is-system-running

Expected output:

running

Troubleshooting

Oracle "Out of capacity" on A1 Ampere: Switch to VM.Standard.E2.1.Micro (AMD). Alternatively, use a shell loop to retry A1 provisioning every 5 minutes across multiple regions until one succeeds.

SSH connection refused on Oracle Cloud: Oracle's default VCN has no ingress rules for port 22. Go to OCI Console → Networking → Security Lists → add an ingress rule for TCP port 22 from 0.0.0.0/0.

Google Cloud instance billed unexpectedly: Verify zone is us-west1-a, us-central1-a, or us-east1-b. Instances in other zones are not covered by the free tier. Run gcloud billing accounts list and check your billing alerts.

OOM kills on 1 GB RAM: Add swap as shown in Step 5 above. Also set vm.swappiness=10 in /etc/sysctl.conf to reduce swap thrashing. For deeper system tuning, this guide on Linux kernel sysctl hardening parameters covers additional kernel parameters worth reviewing.

gcloud SSH hangs: Ensure TCP port 22 is open in your VPC firewall. Run gcloud compute firewall-rules list and confirm a rule allows ingress on tcp:22.

Fly.io app won't stay running: Free VMs on Fly.io stop when idle by default. Set [http_service] auto_stop_machines = false in your fly.toml to keep the VM running.

Which Free Tier VPS Should You Pick in 2024?

For raw compute with no expiry, Oracle Cloud Always Free wins outright — 4 OCPUs and 24 GB RAM across A1 instances is unmatched at $0. The provisioning friction is real but manageable. If A1 capacity fails you, fall back to two AMD micro VMs.

For reliability and simplicity, Google Cloud's e2-micro is the most consistent free option. One command provisions it, and it stays up without capacity games. Add swap and you can run a small Nginx server, a Node.js API, or a Postgres instance with light traffic.

For containerized workloads, Fly.io's free allowance is the cleanest developer experience — deploy a Docker image with fly deploy and get a globally distributed app at $0.

Avoid AWS Free Tier for anything you plan to keep running past 12 months. Set a billing alert on day one regardless.

Free tier VPS hosting in 2024 is genuinely useful infrastructure — not just sandboxes. Pick the provider that matches your workload, lock down your firewall rules, and treat the instance like production from day one.