OpenClaw + FRP 企业微信机器人部署避坑指南

1,180 阅读4分钟

OpenClaw + FRP 企业微信机器人部署避坑指南

背景:本文源自一次耗时 7 小时的踩坑实录。为了让后来者能在 30 分钟内顺利上线,不再重蹈覆辙,特整理此“保姆级”实战指南。本文涵盖从插件安装、配置文件修改、网关绑定到内网穿透的全流程。

🚨 核心避坑总结(先看这个!)

在开始之前,请务必牢记以下 3 个致死坑点,90% 的失败都源于此:

  1. 大小写由不得你:配置文件中必须使用 encodingAesKey(小驼峰命名),绝对不要直接复制企业微信后台的全大写 EncodingAESKey 作为 Key 名。
  2. 配置结构要完整:不能只在 channels 里配参数,必须同时在 plugins.entries启用插件
  3. 网关绑定有讲究:OpenClaw 网关默认绑定 loopback (127.0.0.1),这会导致 FRP 等外部工具连不上。必须修改为 lan,而不能用习惯的 0.0.0.0

🛠️ 第一步:安装 OpenClaw 与插件

确保你已经安装了 Node.js 环境。

1. 安装 OpenClaw

npm install -g openclaw
# 验证安装
openclaw --version

2. 安装企业微信插件

注意:旧插件 @mijia-life/clawdbot-wecom 已废弃,请使用官方推荐的新插件。

openclaw plugins install openclaw-plugin-wecom

安装完成后,运行 openclaw plugins list 确认列表中包含 openclaw-plugin-wecom


⚙️ 第二步:修改配置文件(关键步骤)

强烈建议直接编辑 JSON 配置文件,而不是使用 CLI 命令行工具设置,因为 CLI 容易弄乱复杂的嵌套结构。

打开配置文件:

nano ~/.openclaw/openclaw.json
# 或者使用 VS Code
code ~/.openclaw/openclaw.json

✅ 正确的配置结构如下:

{
  "plugins": {
    "entries": {
      "wecom": {
        "enabled": true
      }
    }
  },
  "channels": {
    "wecom": {
      "enabled": true,
      "token": "你的Token(从企业微信后台获取)",
      "encodingAesKey": "你的43位密钥(从企业微信后台获取)"
    }
  }
}

🔍 细节点拨:

  • plugins.entries: 这一段必不可少,用于显式启用插件。
  • token: 对应企业微信后台的 Token。
  • encodingAesKey: 注意这里是 Aes (小写),不是 AES。
  • webhookPath: 不需要手动配置,默认就是 /wecom。不要画蛇添足改成 /webhooks/wecom

🌐 第三步:修改网关绑定地址

默认情况下,OpenClaw 只监听本地回环地址,导致 FRP 客户端(即使在同一台机器)可能因识别问题无法连接。

修改绑定为 LAN

# 设置绑定地址为局域网模式
openclaw config set gateway.bind "lan"

# 设置端口(通常默认是 18789)
openclaw config set gateway.port 18789

# 重启网关使配置生效
openclaw gateway restart

验证状态

运行以下命令:

openclaw gateway status

确保输出中包含 Listening: *:18789 或类似表示已监听外部接口的信息,而不是 Local only


🚀 第四步:配置 FRP 内网穿透

假设你有一台公网服务器(服务端)和本地 Mac(客户端)。

1. 公网服务器端 (frps.toml)

bindPort = 7000
auth.method = "token"
auth.token = "设置一个强密码"

启动服务端:./frps -c frps.toml

2. 本地 Mac 客户端 (frpc.toml)

serverAddr = "122.9.xx.xx"  # 你的公网服务器IP
serverPort = 7000
auth.method = "token"
auth.token = "上面设置的强密码"

[[proxies]]
name = "openclaw-bot"
type = "tcp"            # 推荐使用 TCP 模式,稳
localIP = "127.0.0.1"   # 指向本地
localPort = 18789       # OpenClaw 的端口
remotePort = 10981      # 公网服务器对外暴露的端口

启动客户端:./frpc -c frpc.toml

验证:看到 start proxy success 字样即代表穿透成功。此时,你的公网访问地址为: http://公网服务器IP:10981/wecom


📱 第五步:企业微信后台设置

  1. 登录 企业微信管理后台
  2. 进入 应用管理 -> 自建应用(或从“接收消息”进入)。
  3. 找到 API接收消息 部分,点击“设置 API 接收”。

填写参数:

  • URL: http://你的公网IP:10981/wecom
    • 排错提示:如果是 HTTPS 且有证书问题,可能导致握手失败,建议先用 HTTP + 明文模式调通。
  • Token: 填入你配置文件中的 Token。
  • EncodingAESKey: 填入你配置文件中的 Key(43位)。

验证过程:

点击“保存”时,企业微信会发送一个 GET 请求到你的 URL 进行验证。

  • 如果提示 “请求成功”:恭喜你,通了!🎉
  • 如果提示 “echostr校验失败”:检查 Token/Key 是否完全一致,或者先在后台将“消息加解密方式”改为**“明文模式”**尝试。

❓ 常见故障排查 (Troubleshooting)

Q: 访问 URL 返回 502 Bad Gateway? A: FRP 隧道未打通,或者 OpenClaw 网关未启动。检查 frpc 日志和 openclaw gateway status

Q: 访问 URL 返回 Internal Server Error? A: 这是正常的!直接浏览器访问 /wecom 是 GET 请求,且缺少微信签名参数,OpenClaw 会报错。只要不是 404 或 Connection Refused,说明服务是通的。请去企业微信后台点击“保存”进行真实测试。

Q: 只有 /wecom 能通,/webhooks/wecom 不通? A: 官方插件默认注册路径就是 /wecom,不要加前缀。

Q: FRP 连不上本地 OpenClaw (Connection refused)? A: 再次检查第三步,确保 gateway.bind 设置为了 "lan"


后记:配置过程虽然繁琐,但只要每一步都核对清楚配置结构和参数命名,还是非常顺利的。希望这份指南能帮你节省那 7 个小时!