fly.io 全球边缘部署 AI 客服
fly.io 让你的 Chatwoot + Dify 跑在多个地区,靠近用户的请求自动路由到最近节点。
fly.io 60 分钟
为什么 fly.io 独特#
- 全球边缘:可在 30+ 地区起实例,按用户位置路由
- 基于 Firecracker microVM:冷启动 < 1 秒,比传统容器快
- 支持 GPU:A100 / H100 实例可用,能跑本地 LLM
- 静态 IPv4 / IPv6:邮件发件不被反垃圾邮件拒绝
- Volumes:每地区可挂持久化存储
适合的场景#
- 客户跨多个地区(北美 + 欧洲 + 亚洲)
- 需要全球低延迟首响
- 想试跑 GPU 但又不想买硬件
部署 Chatwoot#
1. 装 flyctl#
curl -L https://fly.io/install.sh | sh
fly auth signup
2. 启动 Postgres#
fly postgres create --name flag92-pg --region nrt
3. 部署 Chatwoot#
git clone https://github.com/chatwoot/chatwoot
cd chatwoot
fly launch # 检测 Dockerfile,生成 fly.toml
修改 fly.toml:
app = "flag92-chatwoot"
primary_region = "nrt" # 东京,离国内最近
[build]
image = "chatwoot/chatwoot:v4"
[env]
RAILS_ENV = "production"
FRONTEND_URL = "https://flag92-chatwoot.fly.dev"
[[services]]
internal_port = 3000
protocol = "tcp"
[[services.ports]]
handlers = ["http"]
port = 80
force_https = true
[[services.ports]]
handlers = ["tls", "http"]
port = 443
[[vm]]
size = "shared-cpu-2x"
memory = "2gb"
挂 Postgres + Redis:
fly postgres attach flag92-pg --app flag92-chatwoot
fly redis create --name flag92-redis --region nrt
fly redis attach flag92-redis --app flag92-chatwoot
部署:
fly deploy
4. 多区域扩展#
fly regions add fra lax # 加欧洲 + 西海岸
fly scale count 3 --region nrt=1,fra=1,lax=1
Dify 部署#
类似流程,每个服务(api、worker、web、weaviate)独立 fly launch。
成本估算#
| 资源 | 配置 | 月费 |
|---|---|---|
| Chatwoot Web × 1 | shared-cpu-2x 2GB | $5 |
| Chatwoot Sidekiq × 1 | shared-cpu-1x 1GB | $2 |
| Postgres(基础) | 1 vCPU 256MB | $2 |
| Redis | — | $1 |
| Dify 服务集 | 4-6 个实例 | $20-40 |
| 流量出站 | 100GB | 免费 |
| 合计 | $30-50 / 月 |
GPU 实例(A10)按小时 ~$1,按需启动而非常驻能省 70%+ 成本。
常见坑#
- Volume 跨区不同步:每个区域独立 Volume,多区部署时 Postgres 主从要手配
- 冷启延迟:默认 stopped 状态有冷启,关键服务设
min_machines_running = 1 - 国内访问:fly.io 没有大陆节点,建议日本 / 新加坡 + Cloudflare
- GPU 申请审核:A100 / H100 需要先申请配额,2-7 天通过