Skip to content
返回博客
1 分钟阅读 作者 OCLauncher Team

如何在 Fly.io 上部署 OpenClaw(分步教程)

完整的 OpenClaw 自托管指南 — 从创建 Fly 应用、配置密钥,到连接消息频道。比较自托管 OpenClaw 成本与托管方案。

fly.io self-hosting deployment tutorial openclaw hosting managed openclaw ai agent hosting
OCLauncher Team

OCLauncher Team

Building AI tools that work while you sleep.

如何在 Fly.io 上部署 OpenClaw(分步教程)

如何在 Fly.io 上部署 OpenClaw(分步教程)

OpenClaw 是一个拥有超过 68K GitHub 星标的开源 AI 代理框架。它能将大型语言模型变成全天候的个人助手,连接 Discord、Telegram、WhatsApp 等消息平台。

Fly.io 是最受欢迎的 OpenClaw 托管平台之一。它提供持久化存储、自动 HTTPS 和全球边缘部署 — 这些都是全天候 AI 代理所需的功能。本指南将带你逐步完成一个可用于生产环境的 Fly.io 部署。

参考资料: 本指南基于官方 OpenClaw Fly.io 文档 和中文社区指南。

准备工作

开始之前,请确保你有:

  • 已安装并认证的 flyctl CLI
  • Fly.io 账号(免费方案即可开始)
  • Anthropic API 密钥(或其他供应商的密钥,如 OpenAI、Google 等)
  • 频道凭证 — Discord 机器人 Token、Telegram 机器人 Token 或 WhatsApp 设置,取决于你想连接哪些消息平台

步骤一:创建 Fly 应用

克隆 OpenClaw 仓库并创建新的 Fly 应用和持久化磁盘卷:

# 克隆仓库
git clone https://github.com/openclaw/openclaw.git
cd openclaw

# 创建新的 Fly 应用(选择你自己的名称)
fly apps create my-openclaw

# 创建持久化磁盘卷(1 GB 通常就够了)
fly volumes create openclaw_data --size 1 --region iad

选择离你最近的区域。常见选项包括 lhr(伦敦)、iad(弗吉尼亚)和 sjc(圣何塞)。你的 AI 代理响应延迟部分取决于这个选择。

步骤二:配置 fly.toml

编辑克隆仓库中的 fly.toml,将应用名称改成你的:

app = "my-openclaw"
primary_region = "iad"

[build]
  dockerfile = "Dockerfile"

[env]
  NODE_ENV = "production"
  OPENCLAW_PREFER_PNPM = "1"
  OPENCLAW_STATE_DIR = "/data"
  NODE_OPTIONS = "--max-old-space-size=1536"

[processes]
  app = "node dist/index.js gateway --allow-unconfigured --port 3000 --bind lan"

[http_service]
  internal_port = 3000
  force_https = true
  auto_stop_machines = false
  auto_start_machines = true
  min_machines_running = 1
  processes = ["app"]

[[vm]]
  size = "shared-cpu-2x"
  memory = "2048mb"

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

需要注意的几个设置:

设置重要原因
--bind lan绑定到 0.0.0.0,让 Fly 的代理能连接到网关
--allow-unconfigured允许网关在没有配置文件的情况下启动(之后再创建)
internal_port = 3000必须与 --port 标志一致,Fly 健康检查才能通过
memory = "2048mb"512 MB 太小 — 建议至少 2 GB
OPENCLAW_STATE_DIR = "/data"将状态(会话、记忆、凭证)持久化到磁盘卷

步骤三:设置密钥

所有敏感信息都使用环境变量。这样可以避免它们出现在配置文件中被意外记录或暴露:

# 必要:网关认证 Token(非回环绑定时需要)
fly secrets set OPENCLAW_GATEWAY_TOKEN=$(openssl rand -hex 32)

# 模型供应商 API 密钥
fly secrets set ANTHROPIC_API_KEY=sk-ant-...

# 可选:其他供应商
fly secrets set OPENAI_API_KEY=sk-...
fly secrets set GOOGLE_API_KEY=...

# 频道 Token(根据需要添加)
fly secrets set DISCORD_BOT_TOKEN=MTQ...

请妥善保存你的 OPENCLAW_GATEWAY_TOKEN — 稍后访问控制界面时会用到。

步骤四:部署

fly deploy

首次部署会构建 Docker 镜像,通常需要 2-3 分钟。后续部署会更快。

部署完成后,确认一切正常运行:

fly status
fly logs

你应该会看到类似以下的输出:

[gateway] listening on ws://0.0.0.0:3000 (PID xxx)

如果你设置了 Discord Token,还应该会看到:

[discord] logged in to discord as YourBot#1234

步骤五:创建配置文件

通过 SSH 连接到运行中的机器来创建正式的配置:

fly ssh console

然后在持久化磁盘卷上创建配置文件:

cat > /data/openclaw.json << 'EOF'
{
  "agents": {
    "defaults": {
      "model": {
        "primary": "anthropic/claude-sonnet-4-5",
        "fallbacks": ["openai/gpt-4o"]
      }
    },
    "list": [
      {
        "id": "main",
        "default": true
      }
    ]
  },
  "auth": {
    "profiles": {
      "anthropic:default": { "mode": "token", "provider": "anthropic" }
    }
  },
  "bindings": [
    {
      "agentId": "main",
      "match": { "channel": "discord" }
    }
  ],
  "channels": {
    "discord": {
      "enabled": true,
      "groupPolicy": "allowlist",
      "guilds": {
        "YOUR_GUILD_ID": {
          "channels": { "general": { "allow": true } },
          "requireMention": false
        }
      }
    }
  },
  "gateway": {
    "mode": "local",
    "bind": "auto"
  }
}
EOF

将 YOUR_GUILD_ID 替换为你实际的 Discord 服务器 ID。Discord 机器人 Token 会自动从 DISCORD_BOT_TOKEN 环境变量读取 — 不需要放在配置文件中。

退出 SSH 并重新启动机器以应用配置:

exit
fly machine restart <machine-id>

你可以用 fly machines list 查询机器 ID。

步骤六:访问与验证

控制界面

打开浏览器,访问:

https://my-openclaw.fly.dev

粘贴你的网关 Token(之前生成的 OPENCLAW_GATEWAY_TOKEN)来进行认证。控制界面让你可以与代理对话、查看日志和管理配置。

日志与 SSH

# 实时日志
fly logs

# SSH 进入机器
fly ssh console

疑难排查

以下是最常见的问题及解决方法:

“应用未在预期地址上监听”

网关绑定到 127.0.0.1 而非 0.0.0.0。在 fly.toml 的进程命令中添加 --bind lan。

健康检查失败

Fly 无法连接到网关。确保 fly.toml 中的 internal_port 与进程命令中的 --port 标志一致。

OOM / 内存问题

如果容器持续重新启动或出现 SIGABRT 错误,说明机器需要更多内存。将 fly.toml 更新为至少 2048 MB,或执行:

fly machine update <machine-id> --vm-memory 2048 -y

网关锁定错误

如果网关在重新启动后拒绝启动并显示”已在运行”错误,请删除过期的锁定文件:

fly ssh console --command "rm -f /data/gateway.*.lock"
fly machine restart <machine-id>

重新启动后状态未持久化

确保 fly.toml 的环境配置部分中设置了 OPENCLAW_STATE_DIR=/data,并且磁盘卷挂载在 /data。

更新

要将 OpenClaw 更新到最新版本:

git pull
fly deploy

fly deploy 之后,用 fly status 和 fly logs 确认一切正常。

费用

使用建议的配置(shared-cpu-2x、2 GB 内存、1 GB 磁盘卷),预计每月花费约 $10-15 美元,视使用量而定。Fly.io 的免费方案涵盖部分额度,因此第一个月的费用可能更低。详情请参阅 Fly.io 定价。

12 个月成本比较

自行搭建(Fly.io)OCLauncher
计算(2 GB VM)~$12/月已包含
AI API Token$20–60/月(自行付费)每月 3M Token 已包含
存储空间(磁盘卷)~$0.15/月8GB 已包含
仪表盘 / UI无(仅 CLI)完整网页仪表盘
设置时间1–3 小时30 秒
维护自行负责(更新、监控、崩溃)全托管
12 个月总计~$250–870(计算 + Token)$228($19 × 12)

最大的成本差异来自 AI Token。如果自行搭建,你需要直接向 API 供应商付费 — 以 Anthropic 目前的费率,每月 3M Token 大约需要 $20-60 美元,视模型和输入/输出比例而定。OCLauncher 将 3M Token 包含在每月 $19 的价格中。

更简单的替代方案

在 Fly.io 上自托管让你拥有完全的掌控权,对于喜欢管理基础设施的开发者来说是很有成就感的。但这也意味着你需要自己负责整个生命周期:配置机器、设置密钥、编写 TOML 文件、SSH 进入创建配置文件、监控运行时间和处理更新。

如果你想跳过以上所有步骤 — OCLauncher 为你在 30 秒内部署 OpenClaw,每月仅 US$19,包含 3M AI Token、8GB 存储空间、所有消息频道和完整仪表盘。它底层运行在相同的 Fly.io 基础设施上,所以你能获得同样的性能,却不需要承担运维上的负担。

相关文章