Running a Proxy Node on Fly.io: What the Platform Gets You and Where It Bites
Deploying a VLESS+REALITY node on Fly.io's global anycast platform — the free-tier tradeoffs, the IPv6-only gotcha, and why the deployment model actually matters more than the region you pick.
This article is also available in Traditional Chinese: 中文版 — same content, just a language difference.
Fly.io markets itself as "run your app close to your users" — global regions, fast Docker deploys, a real free tier. None of that marketing copy mentions what you actually get, and don't get, when the workload isn't a web app but a long-lived, security-sensitive proxy process. This is what that gap looked like in practice, deploying a VLESS+REALITY node as a second, geographically distinct proxy exit alongside an existing home-grown one.
Why a second exit node, and why not just scale the existing one
An existing proxy setup already ran on a home-managed ARM workstation and a low-spec cloud VM in one region. The reason to add a second node on a completely different platform, in a completely different region, wasn't redundancy for its own sake — it was to decouple "which exit country does this traffic need" from "which machine happens to be running the software," so a client-side config choice (which node to point at) becomes purely a routing decision, not an infrastructure one. Fly.io's pitch — deploy the same container definition to a named region in one command, no separate VM provisioning per region — fits that goal well on paper.
Unlock this article to keep reading, or subscribe for unlimited access to everything. See Pricing for details.