Skip to content
TRUELAB.AI
[Lab note]2026-06-242 min read#sovereignty#infrastructure#coolify

Leaving US clouds: a field report

Twelve months after moving our stack from US hyperscalers to self-hosted EU infrastructure: what broke, what got cheaper, and what we'd do differently.

A year ago we made the call: everything TrueLab runs on — code, CI, files, mail, deployments, models — moves off US hyperscalers. Not for ideology; our clients kept asking data-residency questions we could not answer honestly while our own stack lived in us-east-1.

This is the field report.

The inventory

The migration mapped almost one-to-one:

Before After
GitHub Gitea (self-hosted, with Actions-compatible CI)
Vercel Coolify on Hetzner bare metal
Google Drive / Docs Nextcloud + LibreOffice
OpenAI API (most workloads) Ollama + vLLM on our GPUs
Cloudflare Tunnel WireGuard + NGINX

Total infrastructure cost went down 62% against the same workload, hardware amortization included. That surprised us less than it should have — hyperscaler pricing assumes you never leave.

What actually broke

Honest ledger, because every migration post needs one:

  • CI cold starts. Gitea runners needed tuning before they matched hosted runners. One weekend of cache configuration fixed it.
  • Preview deployments. Coolify's PR previews required a homegrown webhook glue script. It is 80 lines and has run unattended since October.
  • The habit of infinite scale. One client launch briefly saturated a box that AWS would have autoscaled through. We now keep one warm standby — the "autoscaler" is a Proxmox clone command in a runbook.
# The entire disaster-recovery drill, quarterly, timed:
proxmox-backup-client restore vm/103 --target /restore
# Last drill: 14 minutes to a booted standby. Write that number down.

What got unexpectedly better

Deployment latency (build servers sit next to the git server), debugging depth (root on every box beats a support ticket), and — the real win — sales conversations. "Your data never leaves the EU, here is the network diagram" closes procurement questions that used to take weeks of DPA paperwork.

What we'd do differently

Start with mail last, not first (deliverability reputation takes months), and buy the second GPU box immediately — the first one was saturated within a quarter.

Would we go back? No. The stack is faster, cheaper and auditable end to end. But the honest summary is this: sovereignty is not free — it costs engineering hours. It just happens that engineering hours are what a lab is made of.