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 快捷连接
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) |
给新手的建议
- 别用 Vultr 网页 UI 部署,直接用 API,3 条 curl 搞定
- 新加坡节点选 vhf(High Frequency)系列,基础 vc2 plan 可能无货
- 关掉自动备份,省 $2.4/月,OpenClaw 数据不重要
- 先跑
openclaw doctor --fix,让它自动修复配置格式 - root 用户手写 systemd service,别用
openclaw gateway install - 火山方舟 Coding Plan 性价比最高,首月 8.9 元,模型自由切换
- 飞书用长连接(WebSocket)模式,不需要公网回调 URL
- v3.2 飞书防抖 2000ms 是正常的,之前版本防抖没生效才显得"巨快",不用改
- 精简 workspace 文件(AGENTS.md 等),默认模板太啰嗦会拖慢首 token 延迟
- 部署完就导入个人上下文,从已有 AI 助手(Claude Code/ChatGPT)迁移 profile 到 USER.md + MEMORY.md,省去从零养虾的时间
- 改默认端口(Berton 建议),18789 被 hack 脚本扫,换个随机端口(如 39217)
- 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.new和r.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" |
给新手的补充建议
- 没有信用卡别注册 Brave Search,用
markdown.new+r.jina.ai前缀服务免费搞定联网 - 装 skill 优先手动下载 SKILL.md,clawhub 经常 rate limit,从 GitHub 仓库
openclaw/skills直接拿更快 - 装完 skill 要改 AGENTS.md,否则小龙虾还是会用默认的 web_search 然后报错
03-05 股票查询 + 定时推送
- 创建
stock-lookupskill(Yahoo Finance API,免费无需 Key) - 单只/批量查询、5 天走势、关键指标
- 必须带
User-Agentheader,否则被 429 - 同步
watchlist.json(SSOT)到 VPS workspace,小龙虾可直接读取完整 Watchlist - 配置 2 个 Cron 定时任务(消息面导向,非股价):
morning-news-brief:周一至周五 08:00 CST,搜索 Watchlist 标的新闻 + 宏观事件 + 板块动态market-close-news:周二至周六 06:30 CST(= 美股收盘后),收盘消息面复盘 + 盘后公告- 重启 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/ |
给新手的补充建议
- Yahoo Finance API 不需要 Key,
/v8/finance/chart/TICKER免费可用,但必须带 User-Agent - OpenClaw cron 用
openclaw cron add,支持 5 字段 cron 表达式 + 时区,比直接改 JSON 方便 - 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) | 弱(火山方舟) |
"养"是什么
所谓"养"分两层:
- 搭脚手架(人做):skill、cron、AGENTS.md、信源选择 — 决定它"能做什么"
- 积累记忆(它做):MEMORY.md + 每日日记 — 决定它"多了解你"
能力扩展全靠人喂,它自己不会发现 Yahoo RSS 比搜索好,不会解决 429,不会写 SKILL.md。"自主性"不是说它多聪明,而是它不需要你在场也能做事。
协作模式
审计发现的 P0 教训
光装 skill 不够,必须在 AGENTS.md 里明确写指令。 小龙虾不会主动去读 skill 文件,cron 里写"请使用 xxx skill"它可能忽略,AGENTS.md 里写具体 curl 命令它才会照做。
本地文档
| 文件 | 用途 |
|---|---|
openclaw/openclaw_deploy_log.md |
本文件,部署实录 |
openclaw/openclaw_capability_pack.md |
能力包(发给小龙虾的完整配置) |