工具入门 · 基建

Fly.io 是什么

Vercel × Supabase 那篇里我们说过:网站门面在 Vercel、数据在 Supabase,而「重活」都跑在 Fly.io——长驻的 Python worker、浏览器自动化、跑几十分钟的定时任务。这篇把 Fly.io 讲透:它到底是什么、和自己租一台 VPS 有什么本质区别、Render / Railway / Heroku 这些竞品各自站在哪,以及我们为什么选它、踩过哪些坑。

篇幅 5 章 · 约 10 分钟 受众 全员 · 不需要会写代码 主线 团队真实项目的部署选型

先给一个一句话版本:Fly.io 是一个「你给它一个 Docker 容器,它帮你在全球把这个容器跑成随时可启停的小虚拟机」的平台。你不用买服务器、不用装系统、不用配防火墙,一条 fly deploy 命令,应用就在线上跑起来了。

怎么用这篇 · 读完你应该能回答三个问题:① 同事说「这个服务部署在 Fly 上」时,那到底意味着什么;② 为什么我们不直接租一台便宜的 VPS;③ 下次有新服务要部署时,该往 Vercel、Fly、还是 VPS 上放。文中所有价格均为 2026 年 7 月官方牌价,以各家 pricing 页为准。
01

Section 01 · What is Fly.io

把你的容器,跑成贴近用户的全球小虚拟机

传统上「把应用放上网」有两条路:要么租一台服务器自己折腾(VPS),要么用全托管平台但被限制得很死(早年的 Heroku)。Fly.io 走中间路线:你交付的是一个标准 Docker 容器——里面想装什么都行;它负责的是容器之外的一切——机器、网络、证书、重启、扩缩容。

三个核心概念

概念它是什么对你意味着
Firecracker microVM亚马逊为 Lambda 研发的轻量虚拟机技术,Fly 用它跑你的容器比普通容器隔离更彻底(硬件级),但启动仍是亚秒级
Fly Machines可以用命令/API 随时启停的虚拟机,按「秒」计费没流量时机器自动停、来请求秒级唤醒——闲置几乎不花钱
Anycast 网络全球同一个 IP,用户请求自动路由到最近的机器想服务全球用户时,一条命令把应用克隆到多个地区

用起来长什么样

终端 · 从零到上线只有三步
fly launch      # 读你的 Dockerfile,生成 fly.toml 配置
fly deploy      # 构建镜像 → 推到 Fly → 滚动替换线上机器
fly status      # 看机器在哪个地区、是不是 started

所有配置浓缩在一个 fly.toml 文件里:跑几台机器、多少内存、健康检查打哪个路径、没流量要不要自动停机。这个文件跟代码一起进 Git——基础设施变成了一段可以 review、可以回滚的文本

2026 年的 Fly.io:几个容易过时的认知

免费额度已经没有了 · 老教程常说「Fly 有免费额度够跑小项目」——那是 2024 年以前的事。现在新账户只有一次性试用额度,之后纯按用量付费:最小的共享 CPU 机器(256MB 内存)约 $2/月,512MB 约 $3.3/月(按整月不停机折算;机器停着时几乎不计费)。
地区数量收缩了 · 曾经宣传 35 个地区,2025 年 Fly 做了「区域整合」,关掉大量低利用率机房,现在官方列表是 18 个地区(北美 7 / 欧洲 5 / 亚太 4 / 南美 1 / 非洲 1)。
数据库故事换了两次 · 早年的「Fly Postgres」只是帮你建集群、运维全靠自己(unmanaged,现已废弃);中间一度把托管数据库交给 Supabase 合作提供,2025 年 4 月终止;现在 Fly 自营的 Managed Postgres 已正式可用,$38/月起。不过对小团队来说,独立的 Supabase / Neon 通常仍是更省心的选择——我们的数据库就都不在 Fly 上。
口碑两极 · 开发者普遍认可 Fly 的开发体验和性价比,但它的稳定性长期被吐槽——第三方监测统计 2022 年以来累计 600+ 次故障事件,社区有著名的「reliability: it's not great」长帖。Fly 是一家约 60 人的创业公司(2023 年 C 轮融资 $70M),不是 AWS 那种巨头。用它就要接受:偶尔的平台级抖动是成本的一部分,关键服务要自己配健康监控。
02

Section 02 · Fly.io vs VPS

租毛坯房,还是住酒店式公寓

VPS(Virtual Private Server,虚拟专用服务器)是最经典的形态:你按月整租一台虚拟机,拿到 root 密码,剩下全部自理。它和 Fly.io 的区别不在「便宜多少」,而在「谁来负责运维」

Fly.io(容器平台)

你只管容器里的应用。系统补丁、防火墙、TLS 证书、崩溃重启、扩缩容都是平台的事。按秒计费,没流量可以自动停机。

vs

VPS(整租虚拟机)

你拿到一台裸机的 root 权限,自由度最高。但从装系统到续证书,出了任何问题都是你的事。按月整租,闲置照付。

责任清单:VPS 上这些活儿全归你

运维事项VPS 上你要做的Fly.io 上
系统安全补丁配 unattended-upgrades,内核升级后自己安排重启平台负责,你无感
防火墙 / 入侵防护ufw + fail2ban + SSH 密钥加固,一样不能少默认私网隔离,只暴露你声明的端口
部署流程自己写 CI 脚本 / systemd / Docker Composefly deploy 一条命令,自带滚动发布
HTTPS 证书自装 Nginx/Caddy + Let's Encrypt 并盯续期自动签发、自动续期
崩溃自愈自己配进程守护和告警健康检查失败自动重启
多地区部署基本不现实(一台 VPS 就是一个单点)一条命令克隆到 18 个地区

价格上到底谁便宜?

裸价上 VPS 占优:欧洲低价王 Hetzner 的入门机(2 vCPU / 4GB 内存 / 20TB 流量)约 €5.49/月,DigitalOcean 最低 $4/月,国内阿里云轻量常有几十元每年的活动价。Fly 的 512MB 小机器 $3.3/月看着更便宜,但内存只有别人零头,流量、磁盘卷也另外计费。

但这笔账不能只算房租。VPS 便宜的前提是你的时间免费:上面那张责任清单,每一行都要花人的时间去搭建和维护,出事时还要人去救火。对一个没有专职运维的小团队,「每月多花几美元、把整张清单外包给平台」几乎总是划算的——这正是我们的选择。

什么时候 VPS 反而是对的 · ① 需要跑平台不允许的东西(自建 VPN 节点、特殊内核模块);② 资源需求大且恒定,7×24 满载跑,按月整租的单价优势才真正兑现;③ 你本来就有运维能力,把折腾当乐趣。我们的科学上网节点就是自建在 VPS 上的——因为那个场景 PaaS 根本不让你跑。
03

Section 03 · The Landscape

同一个赛道站着谁,隔壁赛道又是谁

「把应用部署上线」这个市场分三层:边缘/前端托管(跑网页和轻函数)、容器 PaaS(Fly 所在的赛道,跑任意后端)、裸 VPS(什么都能跑但什么都自理)。先看 Fly 的直接对手:

同赛道:容器 PaaS

平台一句话定位入门价位适合谁
Fly.io全球多地区 + 按秒计费的 microVM,CLI 驱动512MB 机器约 $3.3/月,纯按用量想要全球低延迟、愿意用命令行的开发者
Render「现代版 Heroku」,界面友好的全托管 PaaS有免费层(15 分钟无流量休眠);付费 512MB $7/月想要图形界面、不想碰 CLI 的团队
Railway纯按用量计费的容器平台,体验极顺滑Hobby $5/月起(含等额用量);内存 $10/GB/月快速起原型、按需付费的独立开发者
HerokuPaaS 鼻祖(现属 Salesforce),生态成熟但创新放缓免费层 2022 年已取消;Eco $5/月、常驻 Basic $7/月存量老项目、需要成熟 add-on 生态的团队
Cloud RunGoogle 的容器 serverless,按请求计费、原生缩到零每月 200 万请求内基本免费,超量按资源秒计费流量波动极大、已在 Google 云生态的团队
DO App PlatformDigitalOcean 的托管 PaaS,胜在便宜和简单静态站免费;最小容器 $5/月(512MB)已在用 DO、需求简单的小项目

隔壁赛道:它们不是替代品,是搭档

经常有人把 Vercel、Cloudflare Workers 和 Fly 放在一起比,其实它们解决的是不同的问题:

平台跑的是什么跑不了什么
Vercel前端页面 + 短命 serverless 函数(Hobby 免费 / Pro $20/人/月)长驻进程、跑几十分钟的任务、WebSocket 长连接重活
Cloudflare Workers毫秒级边缘函数(免费 10 万请求/天;付费 $5/月起)完整容器——它连 Node.js 完整环境都不是
VPS(Hetzner / DO / Vultr / 阿里云轻量)一切(€5.49、$4、$2.5、几十元/年起)没有跑不了的,只有你不想自己运维的
我们的组合就是「搭档」的活例子 · 前端和轻 API 在 Vercel(有请求才计费、全球 CDN),数据在 Supabase,而 Vercel 函数跑不动的——长驻 worker、浏览器自动化、长任务——放 Fly。三层各干各的,谁也替代不了谁。

怎么选:一张决策清单

04

Section 04 · How We Use It

我们把哪些东西放在了 Fly 上,为什么

团队目前跑在 Fly 上的,都是同一类东西——Vercel 的 serverless 函数干不动的「重活」

项目放在 Fly 上的部分为什么非它不可
Vivi整个后端 API 服务长驻进程 + WebSocket,serverless 模型不合适
AkkePython 采集 / 处理 worker(双机热备)浏览器自动化 + 单任务跑几十分钟,远超函数超时上限
CozyUpWeb 服务需要常驻内存状态与后台队列
内部自动化n8n 工作流引擎开源软件直接拿 Docker 镜像部署,Fly 天然适合

选 Fly 而不是 Render/Railway,对我们主要是三点:按秒计费(低流量服务停机时几乎不花钱)、fly.toml 进 Git(部署配置可 review 可回滚,符合团队「一切进版本控制」的纪律)、以及 CLI 完全可脚本化(我们的部署和巡检大量由自动化执行,图形界面反而是障碍)。

05

Section 05 · Lessons Learned

这些坑我们都真实踩过,你不用再踩一遍
256MB 内存基本谁都跑不动 · 标称 256MB 的机器,扣掉系统实际可用约 207MB,Node.js 应用一上来就贴着 OOM(内存耗尽被杀)。团队铁律:Fly 上的机器一律 512MB 起步,n8n 这类应用 256MB 必挂。
应用必须监听 0.0.0.0 · 本地开发习惯写 localhost,部署到 Fly 后健康检查永远不通过——因为流量是从虚拟机外面进来的。改成监听 0.0.0.0 才能接到请求。这是新服务上 Fly 的第一号坑。
手动扩容会被下一次部署「弹回去」·fly scale 命令改了机器规格,下次 fly deploy 会按 fly.toml 里写的旧配置再改回来。改规格必须同步改 fly.toml 并提交,且事后要用 fly machine list 验证,不能只看命令返回成功。
挂了磁盘卷的应用开不了多机 · Fly 的 Volume 是「一块盘绑一台机器」,两台机器各自挂各自的盘,数据互不相通——看起来是高可用,其实是两份数据各写各的。有状态应用要么单机跑,要么把状态挪到外部数据库。
「保底机器数」只保活、不创建 · 配置里写了最少跑 2 台,不代表平台会帮你建出 2 台——它只保证「已存在的机器」不被停光。想要真正的双机热备,先手动建满 2 台,再用 fly machine list 数一遍确认。配置文件说的和线上真实状态,永远以后者为准。
套了 Cloudflare 代理后,Fly 的证书会续期失败 · 域名在 Cloudflare 开了橙云(代理模式)后,Fly 签发证书用的验证记录会被 Cloudflare 挡住,证书到期就是全站 525 错误。解法:验证用的 _acme-challenge 记录必须设为「仅 DNS」不走代理,并对证书到期做独立监控。
远程构建器偶尔抽风 · Fly 的远程镜像构建服务不算稳定,本地部署命令连续失败两次以上就不要死磕——直接 push 让 CI 走部署流程,或等平台恢复。判断是「自己的问题」还是「平台的问题」,先看 status.flyio.net
VPS 卖给你一台毛坯房,Fly.io 卖给你拎包入住——房租贵一点,但整栋楼的水电物业都不用你操心。