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 Hetzner Cloud 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
It wasn't one invoice — it was the pattern. Every month, the total crept higher. We were running a lean team, but our cloud bill looked like we had a 50-person SRE department. Here's what we were paying:
What we were running
Eulerpool is a financial data and analytics platform — think Bloomberg, but accessible. We serve equity research, financial statements, and market data for thousands of companies to a global audience.
Our stack:
- Next.js frontend on Vercel (~80 routes, SSR + ISR)
- Node.js API servers on Fly.io (3 services, multi-region)
- PostgreSQL on Fly.io (primary + read replicas)
- Redis on Fly.io for caching
- Cron workers on Fly.io for data pipelines
- Custom ETL jobs for financial data ingestion
Where the money went
We broke down every line item. The results speak for themselves:
| Service | Before | After | Change |
|---|---|---|---|
| Compute | $2,880 | $340 | -88% |
| Database | $760 | $80 | -89% |
| Bandwidth / Egress | $2,100 | $0 | -100% |
| Frontend hosting | $1,230 | $0 | -100% |
| Redis / Caching | $280 | $40 | -86% |
| Cron / Workers | $120 | $0 | -100% |
| Total | $7,370 | $460 | -94% |
The migration
Migrating wasn't painless. Here are the five hardest parts:
- SSL certificate management. Vercel and Fly handle this automatically. On bare metal, we had to set up Caddy with automatic Let's Encrypt renewal for every domain and subdomain.
- Zero-downtime deployments. No blue-green toggle. We wrote our own deployment scripts with health checks, rolling restarts, and automatic rollback on failure.
- Database migrations. Moving a live PostgreSQL database with zero downtime required pg_dump streaming, logical replication, and a carefully timed DNS cutover at 3 AM.
- Observability. No built-in dashboards. We had to wire up Prometheus + Grafana for metrics, Loki for logs, and build our own alerting pipeline.
- DNS and networking. Private networking, firewall rules, reverse proxies — all things the PaaS abstracted away. We spent a week just on networking.
The realization
After the migration, we had a working system that saved us $82,920/year. But the process took three engineers four weeks. We kept notes on everything — every script, every config, every gotcha.
And we thought: What if all of this was one command?
What if you could type raw deploy and get a production bare metal server — with SSL, Docker, health checks, CI/CD, and monitoring — in 90 seconds?
That's when RAW became a product instead of a migration script.
Why this matters beyond us
We're not the only ones doing this. The "cloud repatriation" trend is real:
- 37signals moved off AWS, saving $7M+ over 5 years
- David Heinemeier Hansson documented "leaving the cloud" extensively
- Hetzner's revenue grew 25% YoY as startups discovered bare metal pricing
- A 2025 Andreessen Horowitz study found the median startup overpays for cloud by 2–3×
The cloud premium made sense when managing servers was hard. But modern tooling — Docker, Caddy, systemd, GitHub Actions — has closed that gap. The only thing missing was the developer experience. That's what RAW provides.
How RAW pricing works
We built RAW on four principles:
No markup on compute
You pay bare metal prices. We don't resell CPU hours at 5× markup like AWS.
Zero egress fees
Bandwidth is included. No surprise bills for serving traffic.
Flat monthly pricing
You pick a server size, you pay a fixed price. No usage-based surprises.
Open source CLI
The tooling is open. You can eject anytime. No lock-in, no proprietary runtime.
What RAW looks like
Here's the full workflow. Two commands to go from zero to production:
$ npx rawhq deploy
# Provisioning CX22 in Falkenstein...
# Installing Docker, Caddy, monitoring...
# SSL configured for app.example.com
# Health check passed ✓
# ✅ Live at https://app.example.com (91s)Import an existing project with zero config:
$ npx rawhq import --from fly
# Detected: 3 services, 1 database, 2 volumes
# Migrating database (streaming pg_dump)...
# Rewriting Dockerfiles...
# Configuring reverse proxy...
# ✅ Migration complete. Estimated savings: $6,910/moThe bottom line
We built Eulerpool on the cloud because it was easy. We left the cloud because it was expensive. And we built RAW so the next team doesn't have to choose between the two.
If you're paying more than $500/month for cloud hosting and you don't need multi-region, auto-scaling, or an SLA backed by a Fortune 500 company — you're probably overpaying.
We were. By $82,920/year.
Try it yourself
One command. 90 seconds. See what your infrastructure costs on RAW.
$ npx rawhq deploy