2026-09-01
What self-hosting actually costs, versus Vercel plus Supabase
The dollar comparison is not close. The honest comparison is not about dollars, so here are the incidents that tell you what you are actually signing up for.
I moved 13 repositories off Vercel and Supabase onto one self-hosted box running Coolify. Six of the 13 are live on it so far. The dollar side of that is simple enough to state in a sentence, so I will, and then spend the rest of this on the part that actually matters.
The bill
- One VPS in Sydney, 2 vCPU, 4 GB RAM, 40 GB disk, Ubuntu 24.04: A$14.01 a month, flat, regardless of how many apps run on it.
- The next tier up, 4 vCPU and 8 GB, is A$27.98 a month if I outgrow it.
- Supabase was roughly A$10 per project per month. That is per project, so it scales with the number of things you build.
- Vercel is per-seat and usage-based, so it also scales with how much you ship.
That is the whole financial argument. One flat fee against two bills that both grow with the number of projects. At 13 repos it is not close, and anyone comparing only these numbers will tell you self-hosting is obviously correct.
I do not think the numbers are the interesting part, because the thing you actually trade is not money.
What you are actually buying: being the on-call
Three real incidents from running this, none of which would have been my problem on managed hosting.
1. The disk filled up and took the deploy queue with it
Disk hit 95 percent. The root cause was a single-stage Dockerfile that cost 1905 MB per rebuild, mostly from a RUN chown -R duplicating a whole layer, plus node_modules being shipped into the runtime image. Rewritten properly, the same app costs 31 MB per rebuild.
That alone would have been survivable. What made it an outage was that Coolify's per-app image retention only ran once a day, while a bad build loop was accruing roughly 9 GB an hour. On top of that, a deployment stuck in the in_progress state deadlocked the deploy queue for that app for hours, because Coolify serialises deploys per app: one wedged deploy blocks every later one behind it.
The fix was tightening image retention to every two hours and adding a janitor that polls every 30 minutes, starts reclaiming at 70 percent disk and escalates at 85. On Vercel, none of this exists as a concept.
2. The backups were not backups
This is the one that should worry you most. Coolify has a scheduled-backup tab. For a Postgres running inside a compose stack, it can report Success while uploading nothing at all. There are multiple open issues about it. I found out because a signed client hosting agreement promised daily offsite backups, and I went looking for them in the bucket, and they were not there.
Two rules came out of that, and I would apply both to any self-hosted setup regardless of platform:
- Do not trust a backup feature you have not personally verified wrote bytes to storage. Run an independent pg_dump sidecar to your own object storage instead.
- An untested backup is not a backup. Do one documented restore before you promise anyone an SLA.
Managed Postgres is not magic, but it does mean this particular failure is not silently yours.
3. A billing suspension took every site down at once
The entire VPS went unreachable globally. Not a crash, not a bad deploy: the provider had suspended the account over a payment issue and null-routed the IP. Every self-hosted site went down simultaneously, because they all live on one box. That is the single-point-of-failure you accept the moment you consolidate, and it is precisely the thing per-project managed hosting spreads out for you.
There was a tail to it too. After the box came back the system clock was about 20 hours out of sync, which made Coolify's GitHub App integration return 500s until NTP resynced. Restored is not the same as working, so check more than "does it ping" before you call an incident closed.
So is it worth it
For me, yes, but not because of the A$14. It is worth it because I want to understand the whole stack I put client work on, and because the cost does not climb every time I start something new, which matters a lot when most of what you start earns nothing for a while.
It is not worth it if your time is the scarce resource and your project count is low. Two projects on managed hosting cost about the same as this box and none of the incidents above would ever reach you.
One thing I want to be straight about: I have not measured how many hours the migration itself took, so I am not going to put a number on it. Anyone who quotes you a confident hours figure for a 13-repo migration is estimating, not remembering.
Have Emsden Studio fix it for you, from A$149