Repatriation pays when three things are true: your load is steady rather than bursty, someone on the team can actually run servers, and storage or egress — not compute — dominates the bill. 37signals is the public reference case: they've documented cutting a $3.2M/year cloud bill by buying roughly $700K of hardware, banking about $2M/year, then pulling 18PB out of S3 in 2025 for further seven-figure savings (DHH's posts are the primary source). The same arithmetic works at homelab scale; only the zeros change.
The break-even worksheet
Run your own numbers through this shape before believing anyone's blog post, including this one. A worked mid-size example — steady web workload, US pricing, mid-2026, all figures estimates:
| Line item | Cloud (monthly) | Owned + colo (monthly) |
|---|---|---|
| Compute: 8 × 8 vCPU / 32GB | ~$2,240 on-demand | 2 servers, $14K over 5 yrs: $233 |
| Storage: 20TB | ~$460 (S3) | Included in chassis: ~$40 disks |
| Egress: 10TB | ~$900 | Included in colo bandwidth |
| Colo: 4U, power, transit | — | ~$350 |
| Ops time: 10 h/mo × $100 | — | $1,000 |
| Total | ~$3,600 | ~$1,620 |
Even after pricing ten monthly ops hours at consultant rates, the owned column wins by more than half, and the hardware pays for itself in about seven months. Reserved instances narrow the gap to maybe 30–40% — still a five-figure annual difference for a bill this size. What flips the table back toward cloud: utilisation under ~40%, spiky load that would force you to buy for the peak, or a team where those ten hours don't exist at any price.
Egress is the moat
Cloud economics punish exactly the growth you want: users pulling your data. At AWS's ~$0.09/GB, a terabyte of egress costs about $92 — every month, forever. A Hetzner dedicated server at ~€40–60/month includes 20TB or more of traffic; many colos sell unmetered gigabit for less than AWS charges for 2TB of egress. This is why media-heavy and download-heavy workloads repatriate first and hardest, and why the counter-move exists: Cloudflare R2 charges zero egress precisely to catch workloads fleeing that fee. If egress is over ~20% of your cloud bill, you're the target market for repatriation.
What the cloud still wins
An honest list, because purity is expensive: genuinely bursty compute (a hundred cores for one nightly hour), managed databases when nobody wants to own failover at 3 a.m., global edge and CDN (keep this regardless of where origin lives), object storage as the off-site leg of backups, and compliance paperwork someone else has already filed. The endgame for most repatriations is hybrid, not exodus: steady-state on owned hardware, spikes and edge rented. 37signals kept using outside services where they made sense too — the ideology is cost curves, not cloud-hatred.
The homelab version of the same math
A $24/month 4GB VPS running 24/7 costs $864 over three years. A used mini PC with four times the RAM costs about $150 up front plus roughly $25/year in electricity — the full power math is here — and off-lease hardware makes the gap wider at every size. Break-even lands around month eight, and sooner if you were renting block storage too.
Residential caveats, stated plainly: your uplink is slower than a datacentre's, your IP is dynamic and possibly CGNAT'd, and there's no SLA but your own diligence. The standard fix costs $5/month — a tiny VPS or tunnel as public ingress, forwarding to home over WireGuard — which still leaves you an order of magnitude ahead on compute and storage.
Time cost, honestly
The worksheet prices ops hours because zero-rating them is how bad repatriation decisions get made. But price them accurately: repatriated ops in 2026 is not 2005 ops. The same containers run identically on cloud VMs and owned metal; provisioning is the same Ansible or compose files; monitoring is the same stack. What you actually add is hardware lifecycle (a few hours a year) and being your own on-call. For a personal stack that's fine. For revenue infrastructure, staff it or don't do it — a full accounting framework is in the self-hosted vs SaaS TCO piece.
The decision, compressed
Under ~$1K/month of cloud spend, repatriation isn't worth organisational effort — do it only as learning or hobby. From $1K to $10K/month, move storage and steady compute to dedicated or colo hardware and keep the spiky remainder rented; this band is where the 50–70% savings live. At 37signals scale, it's a capital-allocation question with seven-figure answers. And at homelab scale it's barely a question: $150 of hardware beats a VPS on price within the year and beats it on capability immediately.
What I'd do
Pull three months of bills and split them compute/storage/egress. If egress plus storage exceeds half, shortlist dedicated hosts and colo quotes this week. Move backups and object storage first — lowest risk, immediate egress relief — then steady compute, and keep the CDN. Write the worksheet's ops-hours number down before you start and re-measure at month three; if the real number is double your estimate, stop there, and the hybrid you've reached is still cheaper than where you began.