← Back to blog
April 3, 2026 Michael Jakob 12 min read

We saved $82,920/year.
Here's how.

We run Eulerpool, a financial data platform that serves millions of page views per month. In March 2026, we migrated our entire infrastructure from Fly.io + Vercel to bare metal servers. Our monthly bill dropped from $7,370 to $460. This is the full story — the numbers, the pain, and why it led us to build RAW.

The bill that started everything

Let me show you two numbers. The first is what we were paying. The second is what we pay now.

Eulerpool — Monthly Infrastructure
Fly.io (Postgres, app servers, machines) $4,044
Vercel (Next.js, edge functions, bandwidth) $3,326

Total before $7,370/mo
Total after (bare metal) $460/mo

Savings rate 94%

That's not a typo. Same application. Same traffic. Same uptime — actually better uptime. 94% cheaper.

If you're a developer or founder reading this and your cloud bill feels too high, it probably is. Here's exactly what we did.


What we were running

Eulerpool is a financial data platform. Think stock prices, company fundamentals, ETF compositions, analyst estimates — all served through a Next.js frontend and a set of backend services. Millions of API requests per day. Sub-100ms response times required.

Our stack on Fly.io + Vercel:

It worked. It worked well, actually. Fly.io is a good product. Vercel is a good product. But good products with bad economics are still bad economics.

Where the money went

Let me break down the $7,370.

Service Before After Change
Database (PostgreSQL) $1,400/mo $0 (self-managed) -100%
Application servers $2,644/mo $380/mo -86%
Frontend hosting $1,200/mo $0 (self-hosted) -100%
Bandwidth / egress $800/mo $0 (unmetered) -100%
Edge functions $600/mo $0 -100%
Misc (images, logs, etc.) $726/mo $80/mo -89%

The pattern is obvious once you see it: managed services charge you for management, not for the underlying resource. A PostgreSQL database that costs $20/month in hardware costs $1,400/month when Fly.io manages it. The management is real work — but is it $1,380/month of work? For a team that can run their own database? No.

The migration

We moved to dedicated servers from Hetzner. Two machines: an AX102 (128GB RAM, AMD EPYC, 2× NVMe) and a smaller box for ancillary services. Total hardware cost: roughly $380/month for compute plus $80/month for storage and backups.

The actual migration took about three weeks. Not because the technology was complicated — PostgreSQL is PostgreSQL whether it runs on Fly.io or bare metal. The pain was in the surrounding infrastructure.

Pain point 1: Provisioning is manual

Ordering a Hetzner dedicated server involves the "Robot" web interface. It's functional but dated. You click through forms, wait for provisioning, configure the OS via a rescue system. It works, but it's the opposite of fly deploy.

Pain point 2: Database setup is undocumented tribal knowledge

Setting up PostgreSQL with streaming replication, pgBackRest for backups, proper WAL archiving, and monitoring required reading three different documentation sources and multiple forum posts. On Fly, it was a flag. On bare metal, it was half a day.

Pain point 3: NVMe RAID decisions

The AX102 comes with two NVMe drives. Do you run RAID 1 for safety or RAID 0 for speed? What filesystem? Should the database live on a separate drive from the OS? These are real decisions with real consequences, and the answers are scattered across forum posts from 2019.

Pain point 4: Firewall and networking

Hetzner's firewall is imperative — you add rules one by one. No declarative config. No version control. One wrong rule and your database is exposed to the internet. On a managed platform, this is handled for you. On bare metal, it's your responsibility.

Pain point 5: SSL, DNS, and all the glue

Let's Encrypt, Caddy configuration, DNS records, health checks, monitoring with Prometheus and Grafana. Each piece is well-documented individually. Wiring them together into a production stack is not.

Every single one of these pain points became a feature in RAW. If we had to figure it out the hard way, nobody else should have to.

The realization

During the migration, I kept a running note of every moment where I thought: "This should be one command."

By the end of the migration, the note had 30+ items. That note became the RAW product spec.

Why this matters beyond us

We're not the only ones overpaying. 93% of enterprises are repatriating workloads from cloud back to owned infrastructure, according to recent industry surveys. The cloud repatriation wave is real, driven by:

The hardware to run your application costs a fraction of what AWS charges. The gap isn't technology — it's convenience. AWS makes it easy. Bare metal makes it cheap. Nobody makes it both easy and cheap.

That's what RAW is.


How RAW pricing works

Our pricing model is simple and transparent:

  1. Source hardware at the best possible price — we buy commodity and auction hardware from tier-1 datacenters.
  2. Automate provisioning end-to-end — no manual setup, no handholding, no ops team per customer.
  3. Keep overhead minimal — small team, no sales force, no enterprise hand-holding tax.
  4. Pass the rest to you.

Compare this to AWS, which operates at 60%+ margins, or Fly.io, where a simple PostgreSQL database costs 70x the underlying hardware cost.

We think of it like Costco. High volume, low margin, happy customers. You know exactly what you're paying for. No egress fees. No per-request billing. No bandwidth surprises. Flat monthly rate.

What RAW looks like

Here's what we built. Deploy a server:

$ npx rawhq deploy --type raw-metal-128 --region eu ✓ Provisioning dedicated server in eu-central... ✓ Server live: 49.13.xx.xx (88 seconds) ✓ SSH ready. Monitoring active. Backups configured. $149/mo · AWS equivalent: $1,500/mo · Save 90%

See your savings from your current provider:

$ raw import --from fly Analyzing your Fly.io infrastructure... Found: 3 machines, 1 PostgreSQL cluster, 2 volumes Current monthly cost: $4,044 RAW equivalent cost: $460 Projected annual savings: $43,008

SSH in, check status, destroy when done — everything is one command. No dashboards. No YAML. No 47-step wizards.


The bottom line

We saved $82,920 per year by moving off managed cloud services to bare metal. The savings were real. The migration was painful. So we turned the migration into a product.

RAW is bare metal infrastructure with managed-service ergonomics. The pricing of Hetzner. The developer experience of Fly.io. No egress fees, no surprises, no BS.

If your cloud bill makes you uncomfortable, it should. The hardware under your application costs a fraction of what you're paying. The rest is margin.

We think you deserve better economics.

Try it yourself

Deploy your first server in 30 seconds. Free forever tier included.

$ npx rawhq deploy


Get Started Free