2026-10-18
Choosing a VPS in Australia for self-hosting
AUD billing, local latency and a familiar setup won my May 2026 decision. The concentration risk was real.
In May 2026 I chose a second Onidel VPS in Sydney for planned client hosting, instead of a cheaper Hetzner box in Europe. My existing self-hosted Coolify setup already ran on an Onidel Sydney VPS. The second box was a decision, not a completed deployment: the client-hosting task list still has its provisioning steps unticked.
What I was buying with the extra spend
AUD billing removed the exchange-rate step in a recurring cost. Sydney was closer to the Australian clients I expected to serve. Staying with the same vendor and Coolify setup meant one familiar operations surface. My May 2026 comparison put the planned Sydney box at roughly A$25 a month and a Hetzner option at roughly A$11 a month. Those were figures in that decision, not current quotes.
The trade-off was in the decision record too: one vendor could take down both personal and client work. I accepted that concentration risk to avoid running two hosting vendors at this scale.
Then the existing box went unreachable
On 13 June 2026 the existing VPS was unreachable from all 10 global check nodes used in the incident check. Every app I self-hosted on that box was offline at once. That check established the reachability failure and its blast radius; it did not establish a cause. The planned second client box had not been provisioned, so this was an outage of the running box, not evidence that two boxes failed together.
Read the separate Coolify disk incident
How I would make the choice now
I would still compare billing currency, latency for the people using the apps, and the work of operating another vendor. I would also write down which apps share a host and which services share a vendor. A second VPS with the same provider separates some failures, but it does not remove provider concentration. That cost belongs beside the monthly price when making the call.
Topics
More notes
- A fresh DNS record existed, but my Mac still said the domain did not
- Put a feature branch on an existing Coolify URL, then put it back
- Check the offsite copy of a Coolify compose database backup
- Two Umami first-boot checks I nearly missed on Coolify
- Point your app at a Coolify Postgres by container name, not IP
- A launchd job that dies with no code change
- Coolify quietly bakes your build secrets into the image layers
- A full VPS disk on Coolify: 1905 MB per rebuild, down to 31 MB
- The Next.js standalone healthcheck trap on Coolify
- serve -s makes every URL on a multi-page site come back 200