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