跳转至

OpenClaw(小龙虾)VPS 部署实录

最后更新:2026-03-05

部署日期:2026-03-04 部署人:makino 用途:VPS 部署 OpenClaw + 飞书接入,作为移动端 AI 助手入口


环境信息

项目 配置
VPS 提供商 Vultr(推荐链接注册送 $300 / 30天)
地区 Singapore(新加坡)
系统 Ubuntu 24.04 LTS x64
规格 1 vCPU / 2GB RAM / 64GB NVMe
Plan vhf-1c-2gb(High Frequency)
月费 $12/mo(关闭自动备份后)
IP xxx.xxx.xxx.xxx
IM 频道 飞书(Feishu)
SSH Key ed25519, ~/.ssh/vultr_openclaw

部署时间线

15:54 - 准备工作

  • [x] 生成 SSH Key(ed25519)
  • [x] 调研 OpenClaw + 飞书配置方案

16:09 - Vultr 账号设置

  • [x] GitHub 登录 Vultr
  • [x] 支付宝绑定付款(最低 $10)
  • [x] 获得 $300 免费额度(30天有效)

16:20 - 创建 VPS(浏览器 → API)

  • [x] 尝试 Vultr Beta Deploy UI → 放弃(见踩坑 #1)
  • [x] 启用 Vultr API,获取 API Key
  • [x] 通过 API 创建实例(~2分钟就绪)
  • [x] SSH 连接成功

16:24 - 安装 OpenClaw

  • [x] nvm 安装 Node.js v22.22.0
  • [x] npm install -g openclaw@latest → v2026.3.2
  • [x] 配置本地 SSH 快捷连接(ssh openclaw)

16:35 - 配置 OpenClaw

  • [x] 写入 openclaw.json(火山方舟 + 飞书)
  • [x] openclaw doctor --fix 修复配置格式(见踩坑 #5)
  • [x] 设置 gateway.mode=local + auth token
  • [x] 关闭 memorySearch(无 embedding provider)

16:50 - 安装 systemd 服务

  • [x] openclaw gateway install 失败(见踩坑 #6)
  • [x] 手动创建 /etc/systemd/system/openclaw-gateway.service
  • [x] systemctl enable + start 成功

16:52 - 飞书测试通过

  • [x] MK OpenClaw Bot 在飞书中正常回复
  • [x] 火山方舟 Coding Plan 模型响应正常
  • [x] 无需重新配对(复用 1月30日的配对记录)

17:00 - 调教与优化

  • [x] 从 Claude Code 导入个人上下文(profile → USER.md, insights → MEMORY.md)
  • [x] 精简 AGENTS.md(几百行 → 40 行,去掉群聊/heartbeat 细节)
  • [x] 精简 TOOLS.md(空模板 → 实际环境信息)
  • [x] 删除 BOOTSTRAP.md(已完成首次引导)
  • [x] 卸载本地 OpenClaw(npm uninstall + 删除 ~/.openclaw/)

17:30 - Review 收尾

  • [x] 确认 contact 权限报错为非致命(飞书通讯录权限,不影响功能)
  • [x] 确认飞书防抖 2000ms 为 v3.2 正常行为
  • [x] 确认本地 Claude Code 未受影响

19:00 - 能力包传达

  • [x] 预配置 web tools(web_fetch/web_search/exec)
  • [x] Brave Search API 注册留给小龙虾自行完成
  • [x] 整理能力包(定位/碎片收集/投资知识/CC联动/沟通风格/安全红线)
  • [x] 文档归档到 openclaw/ 文件夹

19:50 - 安全加固

  • [x] exec security 改为 full(Berton 确认风险低)
  • [x] Gateway 端口从默认 18789 改为 39217(Berton 建议,防 hack 脚本扫描)
  • [x] 整理技能学习路线图(heartbeat/cron/MCP/RSS/市场监控)

踩坑记录

坑 #1:Vultr Beta Deploy UI 操作困难

  • 现象:Beta 版部署页面元素层叠严重,Summary 面板遮挡 Location 按钮,点击超时
  • 原因:新 UI 用了大量悬浮面板,浏览器自动化工具难以穿透
  • 解决:放弃 UI,改用 Vultr API 命令行操作,3 条 curl 搞定(上传 SSH Key → 创建实例 → 查询状态)
  • 耗时:UI 折腾 ~10 分钟,API 操作 ~2 分钟
  • 建议:直接用 API,别在 UI 上浪费时间

坑 #2:$10/mo 基础 Plan 在新加坡不可用

  • 现象:选了 vc2-1c-2gb($10/mo)后提示 "plan not available in sgp"
  • 原因:部分低价 Cloud Compute plan 在亚洲节点无库存
  • 解决:换 vhf-1c-2gb($12/mo, High Frequency, NVMe),新加坡有货
  • 耗时:~2 分钟
  • 建议:新加坡选 vhf(High Frequency)系列更靠谱,NVMe 磁盘性能也更好

坑 #3:Vultr API 默认 IP 白名单限制

  • 现象:API Key 创建后,默认只允许一个 IP 调用
  • 原因:安全策略,新建 API Key 绑定当前 IP
  • 解决:Settings → API → Allow All IPv4(部署完记得改回来)
  • 耗时:~1 分钟

坑 #4:自动备份默认开启,偷偷加 $2.40/mo

  • 现象:Summary 显示 $14.40/mo,比预期多 $2.40
  • 原因:Vultr 默认开启 Automatic Backups
  • 解决:手动关闭(Disable → 勾选确认 → 确认),降回 $12/mo
  • 建议:OpenClaw 数据不重要,关掉备份省钱。重要数据自己定期导出

关键配置备忘

SSH 快捷连接

# ~/.ssh/config
Host openclaw
    HostName xxx.xxx.xxx.xxx
    User root
    IdentityFile ~/.ssh/vultr_openclaw

Vultr API 一键部署命令

# 1. 上传 SSH Key
curl -s "https://api.vultr.com/v2/ssh-keys" -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{"name":"openclaw","ssh_key":"ssh-ed25519 YOUR_PUB_KEY"}'

# 2. 创建实例(新加坡, Ubuntu 24.04, 2GB NVMe)
curl -s "https://api.vultr.com/v2/instances" -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "region": "sgp",
    "plan": "vhf-1c-2gb",
    "os_id": 2284,
    "label": "openclaw",
    "hostname": "openclaw",
    "sshkey_id": ["YOUR_SSH_KEY_ID"],
    "backups": "disabled"
  }'

# 3. 查状态(等 main_ip 不是 0.0.0.0)
curl -s "https://api.vultr.com/v2/instances/INSTANCE_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"

VPS 软件安装

# Node.js 22
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
source ~/.bashrc
nvm install 22

# OpenClaw
npm install -g openclaw@latest
openclaw --version  # 2026.3.2

坑 #5:OpenClaw 飞书配置格式自动迁移

  • 现象:openclaw doctor 提示 "Moved channels.feishu single-account top-level values into channels.feishu.accounts.default"
  • 原因:手写的 JSON 把 appId/appSecret 放在 accounts.main 下,但 OpenClaw 期望的 key 名是 default
  • 解决openclaw doctor --fix 自动修复,无需手改
  • 耗时:~1 分钟
  • 建议:配置写完先跑一次 openclaw doctor --fix,让它自动纠正格式

坑 #6:root 用户下 systemd user service 不工作

  • 现象openclaw gateway install 报错 "systemctl --user is-enabled unavailable"
  • 原因:root 用户没有 systemd user session,openclaw 默认用 --user 模式
  • 解决:手动创建 system-level 的 /etc/systemd/system/openclaw-gateway.service
  • 耗时:~3 分钟
  • 建议:VPS 用 root 跑 OpenClaw 的话,直接手写 systemd service file

坑 #7:gateway.mode 未设置导致启动阻塞

  • 现象:gateway 拒绝启动,提示 "gateway.mode is unset"
  • 原因:openclaw.json 里没有 gateway.mode 字段
  • 解决openclaw config set gateway.mode local
  • 耗时:~30 秒

OpenClaw 配置文件

// ~/.openclaw/openclaw.json 核心结构
{
  "models": {
    "providers": {
      "volcengine": {
        "baseUrl": "https://ark.cn-beijing.volces.com/api/coding/v3",
        "apiKey": "YOUR_VOLCENGINE_API_KEY",
        "api": "openai-completions",
        "models": [
          { "id": "ark-code-latest", "name": "ark-code-latest" }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": { "primary": "volcengine/ark-code-latest" },
      "memorySearch": { "enabled": false }
    }
  },
  "channels": {
    "feishu": {
      "enabled": true,
      "dmPolicy": "pairing",
      "accounts": {
        "default": {
          "appId": "YOUR_FEISHU_APP_ID",
          "appSecret": "YOUR_FEISHU_APP_SECRET",
          "botName": "Your Bot Name"
        }
      }
    }
  },
  "gateway": { "mode": "local" }
}

systemd 服务文件

# /etc/systemd/system/openclaw-gateway.service
[Unit]
Description=OpenClaw Gateway
After=network.target

[Service]
Type=simple
User=root
Environment=NVM_DIR=/root/.nvm
Environment=NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache
Environment=OPENCLAW_NO_RESPAWN=1
Environment=PATH=/root/.nvm/versions/node/v22.22.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
ExecStart=/root/.nvm/versions/node/v22.22.0/bin/openclaw gateway
Restart=always
RestartSec=2
TimeoutStartSec=90

[Install]
WantedBy=multi-user.target

Workspace 文件(养虾核心)

VPS 上 ~/.openclaw/workspace/ 下的文件决定小龙虾的"人格"和"记忆":

文件 作用 备注
SOUL.md 性格、行为准则 默认即可,偶尔微调
IDENTITY.md 名字、物种、风格 马仔 🦞
USER.md 主人的信息 从 CC profile.md 导入
MEMORY.md 长期记忆 从 CC insights.md 精华导入
AGENTS.md 操作手册 已精简到 40 行
TOOLS.md 环境信息 VPS/模型/渠道
memory/*.md 每日对话日记 自动生成

养虾方法:日常在飞书里聊,它会自动写 memory/ 日记;重要的事说"记住这个",它会更新 MEMORY.md。性格不满意直接说,它会改 SOUL.md。

常用运维命令

ssh openclaw                          # 快捷连接
systemctl status openclaw-gateway     # 查看状态
systemctl restart openclaw-gateway    # 重启
journalctl -u openclaw-gateway -f     # 看日志
openclaw status                       # OpenClaw 状态总览
openclaw logs --follow                # OpenClaw 日志

总结

耗时

阶段 耗时
调研 + 准备 ~15 分钟
Vultr 注册 + 付款 ~10 分钟(用户操作)
VPS 创建 + 系统就绪 ~3 分钟(API 操作)
Node.js + OpenClaw 安装 ~5 分钟
配置 + 踩坑修复 ~15 分钟
飞书测试通过 ~2 分钟
个人上下文导入 + 优化 ~30 分钟
总计 ~80 分钟

费用

项目 费用
Vultr VPS $12/mo(首月 $300 免费额度覆盖)
火山方舟 Coding Plan 首月 8.9 元起
月度合计 约 ¥95/月($12 + ¥8.9)

给新手的建议

  1. 别用 Vultr 网页 UI 部署,直接用 API,3 条 curl 搞定
  2. 新加坡节点选 vhf(High Frequency)系列,基础 vc2 plan 可能无货
  3. 关掉自动备份,省 $2.4/月,OpenClaw 数据不重要
  4. 先跑 openclaw doctor --fix,让它自动修复配置格式
  5. root 用户手写 systemd service,别用 openclaw gateway install
  6. 火山方舟 Coding Plan 性价比最高,首月 8.9 元,模型自由切换
  7. 飞书用长连接(WebSocket)模式,不需要公网回调 URL
  8. v3.2 飞书防抖 2000ms 是正常的,之前版本防抖没生效才显得"巨快",不用改
  9. 精简 workspace 文件(AGENTS.md 等),默认模板太啰嗦会拖慢首 token 延迟
  10. 部署完就导入个人上下文,从已有 AI 助手(Claude Code/ChatGPT)迁移 profile 到 USER.md + MEMORY.md,省去从零养虾的时间
  11. 改默认端口(Berton 建议),18789 被 hack 脚本扫,换个随机端口(如 39217)
  12. exec security 可以放 full,飞书 DM pairing 模式只有你能跟它说话,VPS 独立环境搞坏了重装就行

03-05 联网能力配置

问题:小龙虾默认用 Brave Search API 上网,但需要信用卡注册,没法用。 方案:Berton 建议装 agent-browser skill + URL 前缀服务,彻底绕过 Brave Search。

20:50 - 安装 agent-browser

  • [x] npm install -g agent-browser(v0.16.3)
  • [x] agent-browser install 下载 Chromium(167MB)
  • [x] agent-browser install --with-deps 安装系统依赖(libgtk-3 等)
  • [x] 从 GitHub 下载 SKILL.md 到 ~/.openclaw/skills/agent-browser/
  • [x] 同时安装了 clawhub CLI(npm install -g clawhub

21:10 - 创建 Web Reader skill(Berton 方案)

Berton 提供了更轻量的方案:用 URL 前缀服务把网页转 markdown,不需要跑浏览器。

手动创建 ~/.openclaw/skills/web-reader/SKILL.md,配置三层 fallback: 1. markdown.new/URL — Cloudflare 网站通用,推荐 2. defuddle.md/URL — 备选 3. r.jina.ai/URL — Jina Reader,也好用 4. agent-browser — 最后兜底

21:20 - 更新 AGENTS.md

在 AGENTS.md 追加联网搜索指令: - 明确禁止用 web_search(没 Brave Key 会报错) - 搜索用 curl -sL "https://markdown.new/https://www.google.com/search?q=搜索词" - 读网页用 curl -sL "https://markdown.new/目标URL"

验证结果

  • markdown.newr.jina.ai 在 VPS 上均测试通过(抓 Hacker News 成功)
  • agent-browser navigate https://example.com --headless 测试通过
  • OpenClaw skills list 显示两个 skill 均 ✓ ready
  • 内存:安装后剩余 907MB 可用,够用

踩坑

# 问题 解决
8 playbooks CLI 需要交互式终端,SSH 远程跑不了 改用 clawhub CLI 或手动下载 SKILL.md
9 clawhub 频繁 rate limit 直接从 GitHub raw 下载 SKILL.md 到 ~/.openclaw/skills/
10 装完 skill 后小龙虾仍用 web_search 报错 在 AGENTS.md 里明确写"不要用 web_search"

给新手的补充建议

  1. 没有信用卡别注册 Brave Search,用 markdown.new + r.jina.ai 前缀服务免费搞定联网
  2. 装 skill 优先手动下载 SKILL.md,clawhub 经常 rate limit,从 GitHub 仓库 openclaw/skills 直接拿更快
  3. 装完 skill 要改 AGENTS.md,否则小龙虾还是会用默认的 web_search 然后报错

03-05 股票查询 + 定时推送

  1. 创建 stock-lookup skill(Yahoo Finance API,免费无需 Key)
  2. 单只/批量查询、5 天走势、关键指标
  3. 必须带 User-Agent header,否则被 429
  4. 同步 watchlist.json(SSOT)到 VPS workspace,小龙虾可直接读取完整 Watchlist
  5. 配置 2 个 Cron 定时任务(消息面导向,非股价):
  6. morning-news-brief:周一至周五 08:00 CST,搜索 Watchlist 标的新闻 + 宏观事件 + 板块动态
  7. market-close-news:周二至周六 06:30 CST(= 美股收盘后),收盘消息面复盘 + 盘后公告
  8. 重启 gateway 生效

踩坑

# 问题 解决
11 Yahoo Finance API 从 VPS 直接 curl 返回 429 -H "User-Agent: Mozilla/5.0" 即可
12 r.jina.ai 读 finance.yahoo.com 被封(DDoS 保护) 只用 API endpoint 不走网页,query1.finance.yahoo.com/v8/finance/chart/

给新手的补充建议

  1. Yahoo Finance API 不需要 Key/v8/finance/chart/TICKER 免费可用,但必须带 User-Agent
  2. OpenClaw cron 用 openclaw cron add,支持 5 字段 cron 表达式 + 时区,比直接改 JSON 方便
  3. cron 的 timeout 要设够,股票查询 + 搜索新闻可能需要 60s+

当前 Skills 清单

Skill 用途 安装方式
web-reader 联网搜索 + 读网页 手动创建
agent-browser Headless 浏览器 GitHub 下载
diagram Mermaid 图表 手动创建
stock-lookup 股票实时查询 手动创建
news-feeds RSS 结构化新闻抓取 手动创建

当前 Cron 任务

信源:Yahoo Finance RSS(按 watchlist.json 分 7 组,每组约 20 条,共约 140 条/次)

名称 北京时间 美东时间 内容
overnight-news 周一-五 10:00 前一晚 21:00 隔夜消息 + 今日财报日历
premarket-news 周日-四 21:00 08:00 盘前异动 + 经济数据
market-open-flash 周日-四 22:30 09:30 开盘速报(极简)

架构认知:CC vs 小龙虾

角色定位

CC (Claude Code) 小龙虾 (OpenClaw)
本质 工作台 值班助手
触发 你打开终端说话 Heartbeat 自检 + Cron 定时 + 飞书随时喊
运行 你的 Mac,开着才有 VPS 24/7
入口 终端 手机飞书
主动性 零,你不说它不动 能自己发现"该做点什么"
工程能力 强(Claude Opus) 弱(火山方舟)

"养"是什么

所谓"养"分两层:

  1. 搭脚手架(人做):skill、cron、AGENTS.md、信源选择 — 决定它"能做什么"
  2. 积累记忆(它做):MEMORY.md + 每日日记 — 决定它"多了解你"

能力扩展全靠人喂,它自己不会发现 Yahoo RSS 比搜索好,不会解决 429,不会写 SKILL.md。"自主性"不是说它多聪明,而是它不需要你在场也能做事

协作模式

CC 搭脚手架、写脚本、调试 → 部署到小龙虾 → 小龙虾 24/7 执行
CC 处理复杂任务(写文章、审计、开发)→ 小龙虾处理轻量任务(推消息、查股价、健康检查)

审计发现的 P0 教训

光装 skill 不够,必须在 AGENTS.md 里明确写指令。 小龙虾不会主动去读 skill 文件,cron 里写"请使用 xxx skill"它可能忽略,AGENTS.md 里写具体 curl 命令它才会照做。


本地文档

文件 用途
openclaw/openclaw_deploy_log.md 本文件,部署实录
openclaw/openclaw_capability_pack.md 能力包(发给小龙虾的完整配置)