首页 资讯 下载 教程 Skills 社群

Fly.io 全球边缘部署指南

为什么选择 Fly.io

Fly.io 提供全球分布的边缘计算节点,自动配置 HTTPS,并支持持久化卷存储。部署 OpenClaw Gateway 后,你可以通过 https://my-openclaw.fly.dev/ 直接访问控制台,无需自己管理 SSL 证书或反向代理。免费套餐可满足个人使用需求,推荐规格约 $10-15/月。

前置条件

  • 安装 flyctl CLI 并登录 Fly.io 账号
  • 模型提供商 API Key(Anthropic、OpenAI、Google 等)
  • 消息渠道凭据(Discord Bot Token、Telegram Token 等)

第一步:创建应用和存储卷

git clone https://github.com/openclaw/openclaw.git
cd openclaw
fly apps create my-openclaw
fly volumes create openclaw_data --size 1 --region iad

区域代码参考:iad(弗吉尼亚)、lhr(伦敦)、sjc(圣何塞)。

第二步:配置 fly.toml

关键配置项说明:

  • --bind lan:将 Gateway 绑定到 Fly 内部代理网络
  • --allow-unconfigured:允许在没有配置文件的情况下启动
  • internal_port = 3000:必须与 Gateway 监听端口一致
  • memory = "2048mb":推荐最低 2GB,512MB 会导致静默崩溃
[env]
  NODE_ENV = "production"
  OPENCLAW_STATE_DIR = "/data"
  NODE_OPTIONS = "--max-old-space-size=1536"

[[mounts]]
  source = "openclaw_data"
  destination = "/data"

第三步:设置环境密钥

fly secrets set OPENCLAW_GATEWAY_TOKEN=$(openssl rand -hex 32)
fly secrets set ANTHROPIC_API_KEY=sk-ant-...
fly secrets set DISCORD_BOT_TOKEN=MTQ...

所有敏感凭据通过 fly secrets 注入,而非写入配置文件,防止意外泄露。

第四步:部署

fly deploy

首次部署约需 2-3 分钟构建 Docker 镜像。部署完成后验证状态:

fly status
fly logs

正常输出应包含 listening on ws://0.0.0.0:3000 以及各渠道的登录确认信息。

第五步:创建配置文件

通过 SSH 连接到机器并创建 /data/openclaw.json

fly ssh console
cat > /data/openclaw.json << 'EOF'
{
  "agents": {
    "defaults": {
      "model": {
        "primary": "anthropic/claude-opus-4-6",
        "fallbacks": ["anthropic/claude-sonnet-4-6", "openai/gpt-4o"]
      },
      "maxConcurrent": 4
    },
    "list": [{"id": "main", "default": true}]
  },
  "channels": {
    "discord": {
      "enabled": true,
      "groupPolicy": "allowlist"
    }
  },
  "gateway": {"mode": "local", "bind": "auto"}
}
EOF

创建后重启机器使配置生效:fly machine restart <machine-id>

日常运维

操作 命令
查看实时日志 fly logs
SSH 进入容器 fly ssh console
更新并重新部署 git pull && fly deploy
调整机器内存 fly machine update <id> --vm-memory 2048

常见问题

内存不足(SIGABRT 或静默重启): 将内存升级至 2GB,使用 fly machine update <id> --vm-memory 2048

健康检查失败: 确认 fly.toml 中的 internal_port 与 Gateway 实际监听端口(默认 3000)一致。

锁文件冲突导致启动失败:

fly ssh console --command "rm -f /data/gateway.*.lock"

然后重启机器。

状态丢失: 检查 OPENCLAW_STATE_DIR=/data 是否正确设置在 fly.toml 的 [env] 节中。

私有部署(无公网暴露)

如不需要公开访问,可以释放公网 IP:

fly ips release <public-ipv4> -a my-openclaw

访问方式改为本地代理 fly proxy 3000:3000、WireGuard VPN 或 SSH 控制台。Webhook 场景可结合 ngrok 或 Tailscale Funnel 实现。