Cloud providers solved a real problem: they gave small teams access to infrastructure without hiring an ops team. But for established businesses with predictable workloads, the math stopped making sense a long time ago. You’re paying a premium for flexibility you no longer need.
We’ve done this migration ourselves. We moved a high-revenue ecommerce operation from Google Cloud to bare metal — and we’ll tell you exactly how it went.
The Business Case
One of our clients was running a $10M/year WooCommerce store on Google Cloud Platform. The infrastructure looked like this:
- 8 compute instances in a managed instance group (c2-standard-8 — 8 vCPU, 32GB RAM each)
- Managed MySQL with high availability (16 vCPU, 30GB RAM, 250GB SSD, automatic backups)
- Managed Redis with HA failover (32GB)
- Global load balancer, managed SSL, health checks, auto-healing
- NFS file storage for shared WordPress uploads
- Packer-built VM images, Terraform for everything
It was well-architected cloud infrastructure. It also cost over $4,000/month.
What replaced it
A single bare metal server:
- Intel Xeon E-2378 (8 cores, 16 threads)
- 128GB ECC DDR4
- 2x 1.8TB NVMe drives
- Cloudflare for CDN, WAF, and DNS
Monthly cost: under $300. That’s a 93% reduction.
The site handles the same traffic with headroom to spare. Peak load sits at 11 requests per second. The server barely notices.
Why the Cloud Premium No Longer Makes Sense
The classic argument for cloud goes like this: managed services save you from hiring operations engineers. Cloud SQL means you don’t need a DBA. Managed Redis means you don’t need to worry about failover. Auto-scaling means you don’t need to capacity plan.
That argument assumed that the alternative was hiring people — expensive, slow, and hard to scale.
AI changed that equation.
We now use AI-assisted operations to manage bare metal infrastructure at a fraction of the complexity cost. The same tasks that justified managed services — server provisioning, configuration management, troubleshooting, documentation — are handled by AI agents working from detailed runbooks. The AI reads the same Ansible playbooks, the same operational documentation, and the same API references that a human SRE would.
The operational burden that made bare metal impractical for small teams has been reduced to a level where it’s not just viable — it’s the obvious choice for predictable workloads.
And before you worry — AI in my production database? No. We do not use agentic SREs to operate these environments. They help build the automations and the infrastructure to run the bare metal, which was not possible on smaller teams before. AI will never have access to your production infrastructure, and we take a very measured and secure approach to our usage of agentic SRE.
How We Do It
Same Ansible, Different Target
The migration doesn’t mean throwing away your automation. We take the same infrastructure-as-code approach you’re already using and retarget it:
- Ansible playbooks handle full server bootstrap — from a fresh OS install to a production-ready stack in under 15 minutes
- Docker Compose runs the application stack, just like it would on a VM
- Terraform manages DNS and CDN (Cloudflare), exactly as before
- Secrets management stays in Ansible Vault — encrypted in git, deployed securely
The playbooks cover everything: user creation, SSH hardening, firewall configuration, disk formatting, Docker installation, kernel tuning, log rotation, and security upgrades. A fresh server goes from blank slate to serving traffic with a single command.
API-Driven Bare Metal
The key to making bare metal manageable is choosing a provider with a real API. We need exactly two things from a hosting provider:
- Reimage the server — wipe the OS and start fresh via API call
- Power management — boot, shutdown, and reboot remotely
That’s it. With those two capabilities and a solid bootstrap playbook, we can treat bare metal almost like cloud instances. Server acting up? Reimage it, run the playbook, restore from backup. The whole cycle takes about 20 minutes.
We’ve built API wrapper scripts that handle the provider’s quirks — polling for reload completion, managing power states, passing SSH keys during provisioning. These scripts become part of your operational toolkit.
Cloudflare as Your Edge
Moving off cloud doesn’t mean giving up CDN, WAF, or DDoS protection. Cloudflare sits in front of your bare metal server and provides:
- CDN caching for static assets and full pages
- WAF rules for application security
- DDoS mitigation at the edge
- DNS management via Terraform
- Origin CA certificates for end-to-end encryption
- Zero Trust access for admin panels and staging environments
This is often better than what cloud providers offer natively, and it works identically regardless of what’s behind it.
What We Migrate
We’ve migrated workloads from AWS, GCP, and Azure to bare metal:
- Web applications — WordPress/WooCommerce, Rails, Django, Node.js
- Databases — MySQL, PostgreSQL, with backup strategies that replace managed service guarantees
- Caching layers — Redis, Varnish, with configurations tuned for your workload
- CI/CD pipelines — GitHub Actions building Docker images, deployed via pull-and-restart
- Monitoring — replace CloudWatch/Stackdriver with lightweight, self-hosted alternatives
What Stays in the Cloud
We’re not ideological about this. Some things genuinely belong in managed services:
- Object storage — S3/GCS for backups and large file archives (pennies per GB)
- Transactional email — SES, Postmark, or similar
- DNS — Cloudflare or Route53
- CI/CD runners — GitHub Actions, GitLab CI
The goal isn’t zero cloud. It’s putting compute where it’s cheapest and using managed services only where they actually save you time.
The Numbers
For a typical web application with predictable traffic:
| Cloud (managed) | Bare Metal | |
|---|---|---|
| Compute | $1,500 - $3,000/mo | $150 - $300/mo |
| Database | $500 - $1,200/mo | Included |
| Cache/Redis | $200 - $600/mo | Included |
| Load Balancer | $50 - $200/mo | Cloudflare (free - $20/mo) |
| Total | $2,250 - $5,000/mo | $150 - $320/mo |
| Annual | $27,000 - $60,000 | $1,800 - $3,840 |
These aren’t theoretical numbers. They’re based on real migrations we’ve completed.
Our Process
- Audit — we review your current cloud infrastructure, map dependencies, and identify what moves and what stays
- Spec hardware — match your actual workload to the right bare metal configuration (most businesses are wildly overprovisioned in the cloud)
- Build automation — write the Ansible playbooks, Docker Compose stack, and deployment scripts
- Migrate — move data, cut over DNS, verify everything works
- Document — deliver operational runbooks that AI agents (or humans) can follow to manage the infrastructure
- Support — ongoing operations support as needed
Get Started
If your cloud bill feels disproportionate to what you’re actually running, it probably is. Most businesses with steady traffic patterns are paying 5-10x what they need to.
Contact us for a free infrastructure audit. We’ll tell you exactly what the migration would look like and what it would save.