Back to Notebook
ArticleEngineering

Why I Moved Us Off Vercel, Railway, and Appwrite Cloud — Onto Our Own Infrastructure

Nobody asked me to do this. I want that on the record before anyone assumes there was a memo. There wasn't. I looked at our stack, did some deeply ungentlemanly math on our monthly bill, and decided that if nobody else was going to fix it, I would — quietly, competently, and with slightly too much enthusiasm for firewall rules.

August 31, 20265 min read
Why I Moved Us Off Vercel, Railway, and Appwrite Cloud — Onto Our Own Infrastructure

The problem

Three platforms. Three dashboards. Three separate ways for the internet to remind me that convenience has a subscription fee.

  • Cost. Vercel at $20/mo, Railway at $15/mo, Appwrite Cloud at $25/mo — $60/mo, and it only goes one direction as usage grows.
  • Limits. We were bumping into edge and bandwidth caps on Vercel. Real estate listings live or die on image quality, so Asasika's media is heavy by design, not by accident. I wasn't about to compress our listings into looking like they were shot on a flip phone just to fit inside a plan tier.
  • Dependency. Three billing relationships, three sets of rules I didn't write and couldn't negotiate.

The bandwidth pressure knocked on the door. The cost is what actually let itself in.

The decision

Move it all onto infrastructure we own: a Hetzner VPS, orchestrated with Coolify, running self-hosted Appwrite, with Cloudflare handling the edge, storage and standing guard on security. One server, one bill, zero platforms telling me what I'm allowed to build.

What moved

Not a toy project. Real production, real stakes:

  • Asasika's real estate database and frontend
  • FatPanda Media's website
  • Lead automation for Asasika, FatPanda, and our client Wujha

If this had gone sideways, it wouldn't have been a GitHub issue — it would've been a very uncomfortable phone call. So I made sure it didn't.

The stack

  • Hetzner CX33 VPS — 8.99 GBP/mo (about $12)
  • Coolify (LTS) for orchestration and deployment
  • Appwrite, self-hosted (LTS) as the backend
  • Cloudflare, doing heavy lifting on edge, storage and security:
    • SSH key auth — passwords need not apply
    • Firewall locked down to Coolify's IP on its port, and nothing else gets a seat at the table
    • Cloudflare Zero Trust guarding both the Coolify dashboard and server SSH
    • Cloudflare R2 Object Storage making it easy for HD images and brochures.
    • DNS fully managed through Cloudflare

Self-hosting without locking it down properly isn't independence, it's just a more expensive way to get hacked. The security layer mattered to me as much as the savings.

How it went

Three to four days. Zero downtime — and I'd like a moment of recognition for that, because "zero downtime" is doing a lot of quiet, unglamorous work in that sentence.

The method: get each service fully running on the new VPS first, in parallel with the live version, then cut over — never migrate in place and pray. Order mattered too: Asasika's Appwrite backend first, since it was the most urgent and had the most to lose, then its frontend, then FatPanda, then lead automation last, once the pattern had proven itself trustworthy.

It wasn't friction-free — a round of Docker failures, some firewall trial-and-error, the usual small tax you pay for standing up new infrastructure. The one genuine puzzle: legacy code on the Asasika side referenced storage objects by ID instead of URL, which meant the tidy, textbook migration path politely refused to work. Sorted it — but that's the kind of landmine you only find by actually doing the migration, not by reading the docs and nodding along.

The plot twist

The technical side, if I'm honest, went easier than I expected. The actual bottleneck wasn't Docker, or DNS, or my own questionable life choices. It was demand. The Hetzner VPS model I wanted was popular enough that I had to set up an availability alert just to get one, and that sums up the demand for being self-dependent.

The result

Roughly an 80% cut in infrastructure cost — from $60/mo to about $12/mo — plus full control over limits, security, and architecture that used to belong to somebody else's platform.

But the number isn't really the headline. The headline is that nobody put this on my to-do list. Good builders don't wait for a budget review to notice the bleeding — they go find it, and they stop it, ideally before anyone else even opens the invoice.

I'm writing up the full walkthrough of this setup — Coolify and self-hosted Appwrite on Hetzner, every step, including the parts that broke. If you're considering the same move, that guide is next for all my fellow builders.

What's next

Working on something that needs this kind of thinking?

I help teams go from a rough idea to a shipped product — product strategy, design, and the code to back it up.