找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2372

积分

0

好友

314

主题
发表于 2026-2-4 09:33:09 | 查看: 307| 回复: 0

一张关于数据安全的警示性梗图,主题为“EXPOSED”

Cloudflare 技术团队最近也加入了 OpenClaw 的热潮,他们开源了一个名为 Moltworker 的项目,让我们能够快速地将 OpenClaw 部署到云端,实现一个真正开箱即用、无需购买独立服务器的 AI 助手方案。

项目地址:https://github.com/cloudflare/moltworker

这并非一个简单的套壳应用。它内置了基于 Cloudflare 的浏览器自动化能力,可以执行网页截图和数据抓取任务。更重要的是,它原生支持 R2 存储,实现了数据的持久化。这意味着即使容器重启,你的对话历史和已配对的设备信息也不会丢失。

它甚至还提供了一个完整的管理界面,你可以在这里查看 R2 备份状态、审批新设备的配对请求、重启网关进程。整个应用通过集成 Cloudflare Access 进行身份认证保护,安全性很高。

Moltbot Admin 管理后台界面截图

最吸引人的一点是,部署在 Cloudflare 上的应用可以直接访问外网,并且能做到 24 小时不间断运行。我个人还将 OpenClaw 的聊天频道接入了 Discord,体验下来,Discord 的交互流畅度比其他平台要好很多。

一、为什么选择 Cloudflare 方案?

简单来说,这是一个将 OpenClaw AI 助手部署到 Cloudflare Workers 平台的一站式方案,你无需再费心管理任何物理或虚拟服务器。

基于Cloudflare Worker和Sandbox Container的Moltworker系统架构图

这个方案的核心优势体现在以下三个关键技术点上:

1. Sandbox 容器替代传统服务器

传统的部署方式需要你购买 VPS、安装 Docker 并自行维护系统。而 Moltworker 直接利用了 Cloudflare Workers 提供的轻量级容器环境。它的好处是能够自动扩缩容,冷启动后会保持常驻,同时成本极低,仅需每月 $5 起的 Workers Paid 订阅即可。

2. 三重认证保障安全

整个访问流程设计了三层安全验证:用户请求 → Cloudflare Access 登录 → 验证 Gateway Token → 管理员批准设备配对 → 开始聊天。这不是简单的单密码防护,而是多层把关,有效防止未授权访问。

3. 基于 R2 的备份与恢复方案

容器重启通常会导致数据丢失,但 Moltworker 设计了一套巧妙的机制:每 5 分钟自动将数据备份到 Cloudflare R2 对象存储,并在容器启动时从 R2 恢复。这种方法比直接修改代码去适配 R2 数据库要简单且有效得多。

二、详细部署步骤

1. 准备工作

想要顺利部署,以下几项缺一不可:

  • 硬性门槛:你需要开通 Cloudflare 的 Workers Paid 订阅($5/月起)。免费版不支持运行 Sandbox 容器,这 5 美元是必要投入。
  • 本地环境:电脑上需要安装 Node.js 18+Docker。因为 Moltworker 的部署脚本需要在本地构建和打包容器镜像。
  • 账号与密钥:准备好你的 Cloudflare 账号,以及计划使用的 AI 模型的 API Key(如 DeepSeek、OpenRouter 等)。

2. 认识部署工具 Wrangler

Wrangler 是 Cloudflare Workers 的官方命令行工具,你可以把它看作是管理云端 Worker 的“遥控器”。Moltworker 涉及大量敏感配置(如 API Key、Bot Token 等),这些信息绝不能硬编码在项目里。通过 Wrangler,我们可以以加密 Secret 的形式安全地将这些配置注入到 Worker 运行时环境中。

安装非常简单:

npm i -D wrangler@latest

然后登录你的 Cloudflare 账号:

npx wrangler login

执行命令后会打开浏览器,点击“Allow”授权即可。

Wrangler 授权请求页面截图

登录成功后,你的终端就具备了操作 Cloudflare 资源的能力,后续的部署、配置密钥、查看日志都将通过它完成。

3. 克隆项目并安装依赖

Moltworker 的代码托管在 GitHub,我们首先将其克隆到本地并安装项目依赖。

# 克隆项目
git clone git@github.com:cloudflare/moltworker.git

# 进入目录
cd moltworker

# 安装依赖
npm install

4. 创建并配置 Cloudflare AI Gateway

根据官方 Quick Start 指南,接下来需要配置 AI 模型的访问方式。最快的方式是直接使用 Anthropic API Key。如果你有 Anthropic 的密钥,可以直接设置并跳过本小节。

# 设置你的 Anthropic API Key(直接访问)
npx wrangler secret put ANTHROPIC_API_KEY

我选择使用 Cloudflare AI Gateway。理由很简单:它更省心,并且提供了一个可观测的控制面板,可以清晰看到每次调用的 Token 消耗和日志,方便成本管理。

Cloudflare AI Gateway 管理界面日志截图

第一步:在 Cloudflare 仪表盘创建新网关

在 Cloudflare 仪表盘的“计算和 AI”菜单下,找到“AI Gateway”入口。

Cloudflare 仪表盘 AI Gateway 入口

点击“创建网关”,为你的网关起一个名字,例如 openclaw-gateway

创建 AI Gateway 的配置界面

第二步:添加提供程序密钥

Cloudflare AI Gateway 支持众多模型提供商。这里以大家熟悉的 DeepSeek 为例。在网关的“提供程序密钥”页面,找到 DeepSeek,点击“+ Add”。

AI Gateway 提供程序密钥管理界面

在弹出的窗口中填入你自己的 DeepSeek API Key。请注意,Gateway 本身只是一个代理和管控层,最终调用模型的还是你提供的这个密钥。

添加 DeepSeek API 密钥的对话框

第三步:获取 Gateway 专属的访问令牌 (Token)

为了让我们的 Worker 能够访问这个 AI Gateway,需要创建一个用于身份验证的令牌。在网关的“概述”页面,找到“Create a token”区域。

AI Gateway 概述页面,显示创建令牌入口

点击后,输入令牌名称(如 openclaw)并创建。务必立即复制生成的令牌,此令牌只会显示一次。

创建 AI Gateway 身份验证令牌的界面

API 令牌创建成功提示页

第四步:在部署时注入密钥

回到终端,我们需要通过 Wrangler 将上一步获得的 Gateway 令牌和安全地设置到 Worker 环境中。

首先,设置 Gateway 的 API Key (即刚才复制的令牌):

# 设置用于访问 Cloudflare AI Gateway 的令牌
npx wrangler secret put AI_GATEWAY_API_KEY

执行命令时,粘贴你的令牌。系统会自动在 Cloudflare 上创建一个名为 moltbot-sandbox 的 Worker。

终端执行 Wrangler secret put 命令的截图

Cloudflare Workers 列表,显示新创建的 moltbot-sandbox

接着,设置 Gateway 的基础 URL (Base URL)。这个 URL 的格式取决于你选择的模型提供商。

# 设置 AI Gateway 的基础 URL
npx wrangler secret put AI_GATEWAY_BASE_URL
# 示例格式:https://gateway.ai.cloudflare.com/v1/你的账户ID/你的网关名/deepseek

执行命令时,填入对应格式的 URL。例如,如果你在网关里配置了 DeepSeek,URL 可能就是 https://gateway.ai.cloudflare.com/v1/YOUR_ACCOUNT_ID/openclaw-gateway/deepseek

终端设置 AI_GATEWAY_BASE_URL 的截图

提示:AI Gateway 充当了“二传手”的角色。它使用你提供的 DeepSeek Key 去调用模型,但额外为你提供了缓存、限流、用量统计等高级功能。

5. 设置 OpenClaw 网关访问令牌

这是用于登录你的 OpenClaw AI 助手控制界面的安全凭证,非常重要,一旦泄露意味着他人可以控制你的助手。

生成并设置高强度 Token

不要使用简单密码,建议直接生成一个高强度随机字符串。

# 生成 32 字节(64 字符)的随机十六进制字符串
export MOLTBOT_GATEWAY_TOKEN=$(openssl rand -hex 32)

# 显示并复制保存好!
echo “你的 Gateway Token: $MOLTBOT_GATEWAY_TOKEN”

# 通过 Wrangler 设置到 Cloudflare Worker 环境
echo “$MOLTBOT_GATEWAY_TOKEN” | npx wrangler secret put MOLTBOT_GATEWAY_TOKEN

区分两个关键 Token

请务必分清以下两个 Token 的用途:

Token 用途
MOLTBOT_GATEWAY_TOKEN 登录你的 AI 助手控制界面(在 URL 中携带)
AI_GATEWAY_API_KEY 连接 Cloudflare AI Gateway(用于调用模型)

部署成功后,你需要通过以下格式的 URL 来访问控制台:

https://your-worker.workers.dev/?token=YOUR_GATEWAY_TOKEN

6. 配置 Cloudflare Access 进行访问控制

为了给管理后台再加一把锁,我们需要启用并配置 Cloudflare Access。

在 Worker 设置中启用 Access

  1. 进入 Cloudflare 仪表盘的 Workers & Pages
  2. 点击进入刚才创建的 moltbot-sandbox Worker。
  3. 进入 设置 (Settings) -> 域和路由 (Domains & Routes)
  4. 找到 workers.dev 域名行,点击右侧的 ... 菜单,选择 Enable Cloudflare Access

Workers 设置中启用 Cloudflare Access 的选项

获取并设置 Access 验证所需的信息

启用保护后,需要告诉 Worker 如何验证用户通过 Access 登录后获得的“通行证”(JWT Token)。我们需要两个值:团队域名 (Team Domain) 和应用程序受众标签 (AUD)。

# 设置你的 Cloudflare Access 团队域名 (例如:“myteam.cloudflareaccess.com”)
npx wrangler secret put CF_ACCESS_TEAM_DOMAIN

# 设置从 Access 应用程序中复制的 AUD 标签
npx wrangler secret put CF_ACCESS_AUD

通俗地理解:

  • CF_ACCESS_TEAM_DOMAIN:相当于“公安局总部地址”,告诉 Worker 该去哪个认证中心校验令牌。
  • CF_ACCESS_AUD:相当于“你的身份证号”,用于验证这个令牌是不是颁发给你这个特定应用的。

在哪里找到这两个值?

  • CF_ACCESS_TEAM_DOMAIN:在 Zero Trust DashboardSettings -> Team Name and Domain 部分找到。
    Cloudflare Zero Trust 团队域名设置页
  • CF_ACCESS_AUD:在 Zero Trust Dashboard -> Access -> Applications 中,点击你为 Worker 创建的应用,在配置页面找到“应用程序受众 (AUD) 标签”,复制那串 UUID。
    Access 应用程序列表
    应用程序配置页中的 AUD 标签

7. 配置 R2 持久化存储

默认情况下,Cloudflare Workers 是无状态的,容器重启后所有数据(对话历史、配对信息)都会丢失。为了让 AI 助手拥有“长期记忆”,必须配置 R2 存储。

部署过程中通常会自动创建一个名为 moltbot-data 的 R2 存储桶。我们需要为 Worker 创建访问此存储桶的权限。

创建 R2 API 访问令牌

  1. 在 Cloudflare 仪表盘进入 R2
  2. 在右侧找到并点击 Manage R2 API Tokens
    R2 对象存储管理主页
  3. 点击 创建 User API 令牌
    R2 API 令牌管理页面
  4. 权限:选择 Object Read & Write(对象读写)。
  5. 范围:为了安全,建议指定存储桶。选择 Specific bucket,然后勾选 moltbot-data
    创建 R2 用户 API 令牌的配置界面
  6. 创建成功后,立即复制并保存好生成的 Access Key IDSecret Access Key。它们只显示一次。
    R2 API 密钥创建成功显示页面

通过 Wrangler 配置存储密钥

回到终端,设置 3 个必要的密钥:

  1. 设置 R2 Access Key ID:
    npx wrangler secret put R2_ACCESS_KEY_ID
  2. 设置 R2 Secret Access Key:
    npx wrangler secret put R2_SECRET_ACCESS_KEY
  3. 设置 Cloudflare 账户 ID:
    npx wrangler secret put CF_ACCOUNT_ID

    账户 ID 可以在 Cloudflare 仪表盘首页,点击账户名右侧的 ...,选择 复制账户ID 获得。
    Cloudflare 仪表盘账户信息区域

8. 执行部署

所有配置完成后,运行部署命令:

npm run deploy

部署成功后,终端会输出你的 OpenClaw 应用的访问地址。
Wrangler 部署成功日志输出

9. 首次访问与设备配对

使用部署成功后输出的地址,并在 URL 后附加你的 MOLTBOT_GATEWAY_TOKEN 进行访问:

https://your-worker.workers.dev/?token=YOUR_GATEWAY_TOKEN

首次访问时,浏览器会跳转到 Cloudflare Access 登录页,要求你输入邮箱(必须是你授权列表中的邮箱)并验证。

Cloudflare Access 登录界面

登录成功后,由于是首次冷启动,容器需要约 1-2 分钟进行初始化,请耐心等待。

容器冷启动等待页面

加载完成后,你会看到 OpenClaw 的控制面板,但通常会提示需要配对。根据提示,访问 https://your-worker.workers.dev/_admin/ 进入 Moltbot Admin 管理后台。

OpenClaw 控制面板提示需要配对的错误信息

在 Admin 后台的 “Pending Pairing Requests” 区域,批准你的设备连接请求。

Moltbot Admin 后台待处理配对请求列表

批准后,返回主控制面板,现在应该可以看到连接状态变为 “Connected”,并可以开始使用了。

OpenClaw 网关控制面板概览,状态为已连接

三、如何配置 AI 模型

由于我们无法通过 SSH 访问容器内部,因此不能使用命令行来修改配置。不过,我们可以直接在 OpenClaw 的网页控制面板中进行配置。

点击左侧导航栏的 Config,然后切换到 Raw 模式,即可直接编辑 JSON 格式的配置文件。默认的模型配置通常是针对 Anthropic 的,我们需要手动修改为我们实际使用的模型(如 DeepSeek)

OpenClaw 配置编辑界面 (Raw 模式)

配置 DeepSeek 模型

请将以下配置中的 baseUrl 替换为你的 AI Gateway 中 DeepSeek 的地址,将 apiKey 替换为你创建的 Cloudflare AI Gateway 的 Token(注意:不是 DeepSeek 的原始 API Key)。

{
  “models”: {
    “providers”: {
      “deepseek”: {
        “baseUrl”: “https://gateway.ai.cloudflare.com/v1/你的账户ID/openclaw-gateway/deepseek”,
        “apiKey”: “你的AI_GATEWAY_API_KEY”, // 这里是 Cloudflare Gateway 的 Token
        “api”: “openai-completions”,
        “models”: [
          {
            “id”: “deepseek-chat”,
            “name”: “DeepSeek Chat”,
            “reasoning”: false,
            “input”: [“text”],
            “cost”: {“input”: 0, “output”: 0, “cacheRead”: 0, “cacheWrite”: 0},
            “contextWindow”: 200000,
            “maxTokens”: 8192
          }
        ]
      }
    }
  }
}

另外,别忘了在 agents 部分将主模型设置为 DeepSeek:

{
  “agents”: {
    “defaults”: {
      “model”: {
        “primary”: “deepseek/deepseek-chat”
      }
    }
  }
}

修改完成后,点击 ApplySave 使配置立即生效。现在,你就可以在聊天窗口询问模型,它会正确地回答正在使用 DeepSeek。

OpenClaw 聊天界面,助手确认使用 DeepSeek 模型

因为所有请求都经过 AI Gateway,你可以在 Cloudflare 后台的网关日志中,清晰地看到每一次对话的 Token 消耗和详细信息,这对于监控和成本控制非常有用。

AI Gateway 日志详情,显示 DeepSeek 调用记录

进阶:配置 OpenRouter 免费模型路由

如果你希望零成本运行,或者想体验多个不同的免费模型(如 Gemini、Kimi 等),可以通过 OpenRouter 的免费聚合网关来实现。

OpenRouter 提供了一个名为 “free” 的路由,可以自动在各种免费模型之间进行智能选择。

OpenRouter Free Models Router 介绍页面

第一步:在 AI Gateway 中添加 OpenRouter 提供商

回到 Cloudflare AI Gateway 的 “提供程序密钥” 页面,找到 OpenRouter,点击 Add,填入你自己的 OpenRouter API Key (sk-or-xxxx)。这样 Gateway 才有权限代理你去调用 OpenRouter 的服务。

添加 OpenRouter 密钥的对话框

第二步:在 OpenClaw 配置中添加 OpenRouter

在 OpenClaw 的 Config -> Raw 编辑界面,在 providers 字段内追加 OpenRouter 的配置。

关键:这里的 apiKey 依然填写你之前创建的 Cloudflare AI Gateway Token,而不是 OpenRouter 的 API Key。baseUrl 也需要指向你在 Gateway 中为 OpenRouter 配置的端点。

{
  “models”: {
    “providers”: {
      “openrouter”: {
        “baseUrl”: “https://gateway.ai.cloudflare.com/v1/你的账户ID/openclaw-gateway/openrouter”,
        “apiKey”: “你的AI_GATEWAY_API_KEY”, // 仍然是 Cloudflare Gateway 的 Token
        “api”: “openai-completions”,
        “models”: [
          {
            “id”: “openrouter/free”,
            “name”: “Openrouter free”,
            “reasoning”: false,
            “input”: [“text”, “image”],
            “cost”: {“input”: 0, “output”: 0, “cacheRead”: 0, “cacheWrite”: 0},
            “contextWindow”: 200000,
            “maxTokens”: 8192
          }
        ]
      }
    }
  }
}

配置完成后,你的 AI 助手就会通过 OpenRouter 的免费路由,在各种支持的模型间自动选择,实现真正的零成本运行。你可以在 AI Gateway 日志中看到模型被动态路由的痕迹。

AI Gateway 日志显示使用多种免费模型的请求

四、如何配置聊天频道 (Chat Channel)

官方文档建议使用 wrangler secret put 命令来配置 Telegram、Discord 等聊天频道的 Bot Token。但我发现一个更便捷的方法:直接让 AI 助手在聊天对话中帮你配置

官方文档中关于配置聊天频道的命令行说明

例如,要配置 Discord 频道,你只需要在 OpenClaw 的聊天窗口中对它说:“我要增加一个 chat channel,类型是 Discord,它的 token 是 你的Discord_Bot_Token”。

在聊天窗口中命令助手配置 Discord 频道

稍等片刻,助手就会自动执行配置命令,修改底层配置文件,并重启网关以应用更改。

助手回复 Discord 频道配置成功并提示重启

更棒的是,当 Discord Bot 上线后需要与用户进行配对(Pairing)时,你也不需要在后台手动点击批准。配对请求信息会直接显示在聊天窗口中,你可以直接在这里完成批准操作。

聊天窗口显示 Discord Bot 的配对请求信息

一切就绪后,你就可以直接在 Discord 服务器中 @你的 Bot,享受丝滑的聊天体验了。这种将复杂开源实战项目通过云原生平台简化的部署方式,极大降低了云栈社区开发者们的使用门槛。

Discord 私聊界面中与 CloudflareOpenClawBot 的成功对话




上一篇:.NET Core 实战:开发用SQLite,生产用PostgreSQL的工程化方案
下一篇:二进制补码与移位运算:计算机整数运算与硬件逻辑的底层原理
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-26 00:32 , Processed in 0.610429 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表