Self-Hosted Supabase on Oracle Cloud Free Tier: 2026 Guide

Run self-hosted Supabase on Oracle Cloud's Always Free tier: what's left after the 2026 OCPU cut, ARM setup, firewall gotchas, and reclamation risks.

Cover Image for Self-Hosted Supabase on Oracle Cloud Free Tier: 2026 Guide

For years, Oracle Cloud's Always Free tier was the worst-kept secret in self-hosting: 4 ARM cores and 24 GB of RAM, free forever, no credit card charge ever. That was enough to run a full self-hosted Supabase stack — Postgres, Auth, Storage, Realtime, the works — for exactly $0/month. Then, in June 2026, Oracle quietly halved the allowance to 2 OCPUs and 12 GB of RAM, with no announcement — users found out when their oversized instances stopped.

So is it still worth it? Short answer: yes, with caveats you need to understand before trusting it with anything real. 12 GB of RAM is still triple our recommended minimum in the system requirements, and $0/month is hard to argue with. This guide walks through the full deployment — and, more importantly, the failure modes that make Oracle's free tier different from the paid providers in our VPS comparison.

What the Free Tier Actually Gives You in 2026

After the June 15, 2026 reduction, the Always Free allowance relevant to a Supabase deployment is:

ResourceAllowanceVerdict for Supabase
Ampere A1 (ARM) compute2 OCPUs / 12 GB RAM totalComfortable for one production project
AMD micro instances2x 1 OCPU / 1 GBToo small — ignore these
Block storage200 GB total (min 47 GB per boot volume)Plenty
Outbound transfer10 TB/monthMore than most paid VPS plans
Object Storage20 GBUsable, but don't back up here (see below)

Two things stand out. First, even halved, this beats what you'd pay ~$24/month for at DigitalOcean — our DigitalOcean guide recommends 4 GB as the entry point, and this gives you three times that. Second, the 10 TB egress allowance is enormous; bandwidth will never be your constraint.

The catch is the word "OCPU": one Ampere OCPU is a full physical core, so 2 OCPUs is roughly equivalent to 4 vCPUs elsewhere. Postgres and the Supabase services run well on it — but it's ARM64, which brings us to compatibility.

ARM64: A Solved Problem, Mostly

The entire official Supabase Docker stack ships multi-arch images, so docker compose up works on Ampere the same way it does on x86. We cover the remaining rough edges — mostly third-party Postgres extensions without ARM builds — in our ARM64 deployment guide, and everything there applies directly to Oracle's A1 shapes. If your stack is Postgres + Auth + Storage + PostgREST, you won't notice the architecture at all.

The Honest Trade-Offs

This is the section that matters, because "free" from Oracle behaves differently than "cheap" from Hetzner.

Idle reclamation is real. Oracle reserves the right to reclaim Always Free compute instances it deems idle (below ~20% CPU/network/memory utilization over a 7-day window). A quiet side-project database can absolutely trip this. Converting your account to Pay As You Go — adding a card, while staying within free limits — exempts you from reclamation and is the single most important step in this guide. You'll still pay $0 as long as you stay inside the allowance.

Terms can change without notice. The June 2026 cut was applied to existing instances, not just new ones, and Oracle didn't announce it. If a business depends on your database, budget for the possibility that the free tier shrinks again — and keep your data portable.

Account terminations happen. The self-hosting community has years of reports of free-tier accounts being closed for unclear reasons, taking all data with them. The hidden-costs write-ups are worth reading. This isn't a reason to avoid Oracle; it's a reason to treat the instance as disposable and your backups as sacred.

"Out of capacity" errors. A1 shapes in popular regions are frequently exhausted for free-tier users. Pick your home region carefully at signup (it can't be changed), choose a less popular region, or upgrade to PAYG — paid accounts get priority on capacity.

The pattern here: everything that's risky about Oracle's free tier is mitigated by (a) converting to PAYG and (b) shipping backups off-platform. Do both.

Step 1: Provision the Instance

Create a VM.Standard.A1.Flex instance with 2 OCPUs and 12 GB RAM — use the whole allowance, one instance, rather than splitting it. Choose Ubuntu 24.04 (aarch64) over Oracle Linux; every guide and every Docker install script assumes it. Attach your SSH public key, and bump the boot volume to ~100 GB while staying under the 200 GB total.

If you get "Out of capacity," script the launch to retry, try another availability domain, or convert to PAYG first.

Step 2: Open the Firewall (the Classic Oracle Gotcha)

Oracle filters traffic in two places, and missing the second one is the most common "why can't I reach my instance" issue on r/selfhosted:

  1. VCN Security List (cloud console): add ingress rules for TCP 80 and 443 from 0.0.0.0/0. Leave 5432 closed unless you genuinely need direct database access — see our network security guide for the safer patterns.
  2. On-instance iptables: Oracle's Ubuntu images ship with restrictive iptables rules baked in. Docker bypasses some of them, but for a reverse proxy on the host you'll need:
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save

Step 3: Deploy Supabase

From here it's the standard process from our installation guide:

sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh

git clone --depth 1 https://github.com/supabase/supabase
cd supabase/docker
cp .env.example .env

Replace every default secret in .env before first start — POSTGRES_PASSWORD, JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY, DASHBOARD_PASSWORD. The defaults are public knowledge, and a database on a public IP with known credentials gets found in hours. Our environment variables guide covers generating the JWT-derived keys correctly.

docker compose pull
docker compose up -d

Note that fresh deployments now use Envoy as the API gateway following Supabase's August 2026 gateway switch — no action needed on a new install, but don't copy old Kong customizations forward. For restart policies, resource limits, and log rotation, apply the hardening from Docker Compose production best practices.

With 12 GB of RAM you don't need the aggressive trimming from our low-memory guide, but disabling services you don't use (Realtime, Analytics, Edge Functions) still frees headroom for Postgres — and helpfully keeps your utilization profile honest rather than idle.

Backups: The One Thing You Must Get Right Here

On Hetzner or DigitalOcean, off-site backups are best practice. On Oracle's free tier, they're existential — the same account that hosts your database can be reclaimed, restricted, or terminated, and Oracle's free-tier support obligations are effectively zero. Never point backups at Oracle Object Storage in the same account; that's one deletion event away from losing the database and its backups together.

Ship backups to a different provider entirely — Cloudflare R2, Backblaze B2, or any S3-compatible target works, as covered in our backup storage docs. And back up Storage files too, not just Postgres — the forgotten piece of most self-hosted setups.

This is also where Supascale earns its keep on a free-tier box: scheduled S3 backups with one-click restore, custom domains with automatic SSL, and OAuth configuration without hand-editing .env files. Because the license is one-time from $99 with unlimited projects, the economics match the free-tier ethos — no monthly fee stacked on top of your $0 server. And if Oracle ever does reclaim your instance, a current S3 backup plus a fresh VPS anywhere else gets you back online — the process in our server migration guide — in under an hour.

Verdict: Who Should Actually Do This

Good fit: side projects, staging environments, internal tools, indie hackers validating an idea before it earns revenue. You get near-production specs for genuinely $0, and if you've converted to PAYG and ship backups off-platform, the risks are managed.

Bad fit: anything with paying customers or compliance requirements. The provider's ability to silently halve your resources — which it did, this year — is disqualifying for production workloads. When revenue arrives, a €10 Hetzner instance or $24 droplet buys you a provider that treats you as a customer rather than a marketing expense.

The free tier's real value might be as a proving ground: deploy there, learn the operational rhythm of self-hosting, keep restorable backups from day one — and when you outgrow it, your exit is a restore, not a migration project.

Further Reading