flag92 flag92
部署教程

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 × 1shared-cpu-2x 2GB$5
Chatwoot Sidekiq × 1shared-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 天通过

站内搜索

按 ⌘ K 随时唤起