我第一次听到“养龙虾”这个说法还以为是有人在云服务器上做了套水产养殖自动化系统。后来才明白这称呼跟吃没有半点关系跟“自动化”倒真有关系——项目名叫 OpenClawClaw 是“爪子”的意思而龙虾最显眼的就是那两只大钳子于是圈里人把“部署 OpenClaw”调侃成“养龙虾”。名字听着萌干的事却很硬核。OpenClaw 是一个开源 AI 助手框架部署完成后你可以把微信群、Teams、Discord、Slack 这些消息渠道全部接进来。只要在会话里喊它一句它就能帮你查资料、写总结、调工具、跑脚本相当于给自己养了一只 7×24 小时在线待命的数字助理。而这个助理要跑得稳核心依赖就是 Node.js 运行时还需要一台常年不关机的云服务器。这篇文章是我从零部署 OpenClaw 的完整实操记录从云服务器选型、Node.js 环境搭建到拉取源码、配置渠道、接入 Teams再到我踩过的各种坑和最终的稳定运行方案。如果你刚买了一台云服务器或者对 AI 助手这类项目感兴趣照着这份指南走一遍基本就能把这只“龙虾”养起来。1. 为什么是“养龙虾”OpenClaw 是什么又为什么非要云服务器1.1 名字里的谐音梗先把这个名字拆开说清楚。OpenClaw 字面意思是“开放之爪”项目 Logo 也喜欢用一只举着钳子的卡通龙虾形象。它最初出现时很多人一看 “Claw” 这个后缀再想到龙虾的形态就开始在社区里开玩笑把“部署 OpenClaw”叫成“养龙虾”。叫的人多了“去云服务器上养只龙虾”就成了这类项目的暗语。我这个人在接触一个项目之前习惯先搞清楚它到底解决什么问题而不是急着敲命令。OpenClaw 本质上是一个“消息渠道连接器 工具调度中枢”。你平时用微信、Teams、Discord本质上都是消息界面但这些界面之间互不相通。OpenClaw 把这些入口聚合到同一个大脑上再用自然语言理解能力把“用户说的话”翻译成“可以被执行的指令”。1.2 OpenClaw 能帮我干什么我用自己服务器的实际场景举例下面这几件事都是部署好之后、在聊天窗口里直接交代就能完成的群聊机器人把它拉进群里它可以看到群消息被 的时候响应能整理群聊纪要、回答常识问题、帮查快递和天气。定时任务跟它说“每天早上 9 点把财经新闻摘要发到群里”它真的会准时丢一条消息过来。工具调用它可以通过 MCP 这类工具协议去调用外部服务比如查数据库、调 API、读写文件甚至执行服务器上的命令。多平台并联同一个“大脑”可以同时接进 Teams、Discord、Slack、飞书等多个渠道你在 A 平台的对话它能用 B 平台回你。说白了OpenClaw 把“AI 对话能力”从网页聊天窗口里解放出来搬到了用户本来就在用的消息软件里。这个体验和打开 ChatGPT 网页提问完全不一样它像一个真的有工作习惯的同事而不是一个只能被动回答问题的搜索框。1.3 为什么非要一台云服务器也有人尝试在个人电脑上跑 OpenClaw比如拿笔记本或者旧台式机。我的建议是如果你只是想体验五分钟本地跑跑没什么问题真要长期用云服务器几乎是必须的。原因就三条你得有固定地址。OpenClaw 需要在配置里填写回调地址各种消息平台尤其是 Teams 这类企业工具要求机器人有一个稳定的公网 Endpoint。家庭宽带大多没有公网 IP就算有IP 也会变。你得让它全天在线。电脑一休眠、一断网、一重启龙虾就“死”了。云服务器放在机房理论上除了维护不会像家用电脑那样随时掉线。隔离和安全。OpenClaw 能执行工具调用、读写文件这种权限放在个人电脑上一旦配置出错会有安全隐患。扔在一台干净的云服务器上把风险隔离在外面出问题直接重置系统就行。我后来把 OpenClaw 放在一台 2 核 2G 的轻量服务器上跑了一周多每天处理上百条消息内存占用不到 1GBCPU 平时只有个位数百分比稳得很。2. 云服务器选型配置、系统和安全组一次说清2.1 先估算负载再下单我在帮朋友选服务器时发现很多人上来就按“最强配置”买结果是花了不少钱性能溢出也用不上还有人选“最便宜的 1 核 0.5G”结果 Node.js 一跑起来直接内存告急。OpenClaw 的资源消耗主要来自三块Node.js 运行时本身、各渠道长连接Teams、WebSocket 等、以及大模型 API 的调用处理。整个进程常驻内存大概在 300MB 到 800MB 之间看你怎么配。如果还挂载了浏览器类的工具插件内存会再涨一截。根据自己的使用强度我整理了这样一个选型参考使用场景CPU内存带宽说明轻度体验、个人测试1 核1G3M~5M能跑但开启多个渠道后要注意内存日常使用、几个群2 核2G5M我目前的主力配置比较舒服重度使用、多平台并发2 核4G5M适合接 Teams Discord 多个群折腾插件工具链4 核8G10M给后续玩浏览器自动化、本地知识库留空间必须说清楚上面这个表不是拍脑袋写的而是基于 Node.js 单进程常驻 连接池开销的合理经验值。大多数云厂商的新用户优惠机器都能覆盖前两档你买的时候重点看“长期续费价格”而不是只看首年折扣。2.2 操作系统选哪个Ubuntu 是省心之选云服务器的系统镜像一般会让你选 CentOS、Ubuntu、Debian、Windows Server 等。我建议无脑 Ubuntu 22.04 LTS原因有三个Node.js 官方以及大多数前端工具链在 Ubuntu 上的兼容性测试最充分Ubuntu 的 apt 包管理在安装依赖时比 CentOS 的 yum 更省心社区教程多遇到问题一搜就有答案。CentOS 7 不是不能用但它的包版本普遍偏旧装 Node.js 往往需要手动添加第三方仓库多出来的一堆步骤全是变数。Windows Server 也完全没必要OpenClaw 这类服务型项目在 Linux 上跑得最顺命令也好写。选系统这事求稳不求新LTS 版本优先级最高。2.3 安全组、防火墙和 SSH第一件事就做好新服务器到手很多人急着装软件我建议先把安全和访问基础打好避免以后踩坑。有三件事我个人认为是必做项改 SSH 登录方式。默认密码登录风险太高先在本机生成密钥对把公钥放到服务器的~/.ssh/authorized_keys然后把/etc/ssh/sshd_config里的PasswordAuthentication设为no重启 sshd。这一步能挡掉绝大多数扫描攻击。配置云厂商的安全组。安全组是云平台层的防火墙。如果 OpenClaw 走默认 3000 端口只给需要访问的来源 IP 开放其他端口默认拒绝。安装基本工具。sudo apt update sudo apt upgrade -y先跑一遍然后装上git curl vim screen这些是后续所有操作的基础。这些步骤看着琐碎但服务器部署项目是“一失足成千古恨”的场景前期一分钟的安全准备远远好过后期被人爆破进服务器再慢慢收拾残局。3. Node.js 环境搭建版本选对了后面能少踩一半的坑3.1 OpenClaw 为什么离不开 Node.jsOpenClaw 主体是用 JavaScript/TypeScript 写的运行它必须要 Node.js 运行时。你可以把 Node.js 理解为“让 JavaScript 在服务器上跑起来”的解释器npm install安装的每个依赖包最终都要挂在 Node.js 上才能执行。很多人会在“装哪个版本”这个问题上栽跟头。OpenClaw 这类项目对 Node 版本是有要求范围的装得太高可能出现原生依赖编译失败装得太低可能连依赖都装不上。我个人的经验是优先选当前的 LTS 版本。LTS 就是 Long Term Support社区给这种版本提供长期安全维护兼容性最稳。如果你在写这篇指南的时间点Node 18 的维护其实已经逐渐收尾Node 20 和 Node 22 都在 LTS 轨道上。我实际用的是 Node 20跑得很稳。一句话总结能上 LTS 就不上 Current能上 Node 20 就不上 Node 21 这种中间版本。3.2 方案一用 nvm 安装我最推荐nvmNode Version Manager是 Node.js 的版本管理器。它最大的好处是可以在一台机器上装多个 Node 版本随时切换。之前我调试其他项目时一台服务器上同时有 Node 16、Node 18、Node 20全靠 nvm 管理互不干扰。在 Ubuntu 上装 nvm 只需要几行命令。先更新系统再安装 nvmsudo apt update sudo apt upgrade -y curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc装完确认一下nvm --version然后安装 Node 20 的 LTS 版本nvm install 20 nvm use 20 nvm alias default 20最后一行nvm alias default 20很关键它把默认版本固定下来避免重新登录 SSH 后node命令消失。3.3 方案二用 apt 直接安装快速但版本略老如果你不想装 nvm也可以用 apt 直接装。但 Ubuntu 22.04 自带的 Node 版本通常只有 12.x太老了。要装新一点的版本得用 NodeSource 的仓库curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs这种做法的优点是命令少缺点是它的版本由 NodeSource 仓库决定灵活性不如 nvm。所以我建议还是走 nvm 路线版本切换自由后续升级也不用碰系统级目录。3.4 验证安装和 npm 源配置无论装完哪个方案都要验证一下环境和包管理工具node -v npm -v输出类似v20.x.x和10.x.x就说明基础环境 OK 了。接下来还有一个国内用户很容易遇到的痛点npm 默认源速度一般经常出现安装超时。我自己习惯把 npm 源切到国内镜像npm config get registry npm config set registry https://registry.npmmirror.com提示切换 npm 源是非常常规的性能优化操作不会改变依赖包来源的可信度只调整下载通道。装完再跑一次npm install你会感受到明显的速度差异。3.5 装 Node 时最容易遇到的两个报错先说我遇到的第一类报错输入node -v没反应或者提示command not found。这多半是 nvm 安装完成后当前会话没有同步环境变量。退出 SSH 重新登录或者执行source ~/.bashrc就能解决。第二类是npm install时疯狂报网络错误。原因通常就是默认源太慢按上面的命令切换镜像源后基本能解决。如果还有残留问题可以清一下 npm 的缓存npm cache clean --force再装一次往往就好了。这类问题不是代码的问题是环境的问题排查顺序一定是从“源、网络、缓存”开始不要一上来就怀疑项目本身。4. OpenClaw 部署全流程从拉取源码到开机自启4.1 拉取源码装依赖Node 环境就绪后进入正式部署环节。第一步是拉到 OpenClaw 的源码。打开 GitHub搜索 OpenClaw 官方仓库复制 HTTPS 链接然后在服务器上执行git clone OpenClaw仓库地址 cd OpenClaw进入项目目录后安装依赖。这一步看网络情况和服务器配置一般几分钟到十几分钟不等npm install提示如果你用的是 1G 内存的小机器npm install可能因为内存不足被系统杀掉出现 Killed 之类的错误。这个时候可以先临时加一点 swap 文件给系统增加内存缓冲再继续安装。依赖装完后可以看到项目目录里有一个.env.example文件。这个文件是环境变量模板真正的配置要从复制它开始cp .env.example .env4.2 配置大模型 API没有这个龙虾只是空壳OpenClaw 本身不内置语言模型它需要接入一个大模型的 API Key 才能理解自然语言、生成回复。这一步是很多新手看不懂配置原因的地方。简单说OpenClaw 负责“连接和调度”大模型负责“思考和说话”两者缺一不可。打开.env文件找到LLM_API_KEY和LLM_MODEL这类字段填入你使用的大模型服务商提供的 Key并指定模型名称。如果你不确定用哪个模型选服务商推荐的默认模型即可。填写格式一般是LLM_API_KEYsk-xxxxxxx LLM_MODELgpt-4o-mini不同的模型服务商有不同的兼容接口OpenClaw 通常支持 OpenAI 兼容接口你可以在配置里指定LLM_BASE_URL为对应的 API 地址。这一块各家文档写得最细我建议以官方 README 为准。注意API Key 是敏感信息.env文件里面存了所有密钥。在服务器上操作时注意不要把这个文件的内容截图发到群里也建议把项目的.env文件加入.gitignore防止误提交。4.3 启动并验证配置完成后在项目目录里启动npm run dev第一次启动会有一堆初始化日志包括读取配置、连接消息渠道、注册回调地址等。看到类似 “Server is running on port 3000” 的日志说明主服务已经起来了。这时候可以打开浏览器访问服务器 IP 的 3000 端口前提是安全组放行或者直接看日志有没有报错。我建议先不要接任何渠道用开发模式空跑几分钟确认主服务稳定再去做渠道接入。因为如果一上来就把多渠道全部插上出了错你根本分不清是哪个环节的问题。4.4 用 systemd 守护进程让它开机自启、崩溃自动拉起npm run dev是前台运行一关 SSH 窗口进程就没了。要让 OpenClaw 作为一个常驻服务稳定运行需要交给 systemd 管理。先在服务器上创建一个 service 文件sudo vim /etc/systemd/system/openclaw.service内容如下[Unit] DescriptionOpenClaw AI Assistant Afternetwork.target [Service] Typesimple Userubuntu WorkingDirectory/home/ubuntu/OpenClaw ExecStart/usr/bin/npm start Restartalways RestartSec10 EnvironmentNODE_ENVproduction [Install] WantedBymulti-user.target这里有几个细节很容易忽略User字段建议用一个普通用户而不是 root。以最小权限运行服务是安全的基本功。ExecStart里的命令路径要看你的 Node 环境在哪。如果你是用 nvm 装的 Node/usr/bin/npm可能根本不存在。先执行which npm和which node查清楚路径再填进去。Restartalways配合RestartSec10可以让服务崩溃后自动重启且中间有 10 秒缓冲避免频繁重启把日志刷爆。写好文件后执行sudo systemctl daemon-reload sudo systemctl enable openclaw sudo systemctl start openclaw以后想看运行状态和日志用这两个命令sudo systemctl status openclaw sudo journalctl -u openclaw -fjournalctl -f是跟踪日志的命令后面排查问题会高频用到。5. 接入 Microsoft Teams 等渠道龙虾开始正式“上班”5.1 多渠道接入的基本逻辑OpenClaw 的设计思路很清晰它是一个“中枢”不同的消息渠道是它的“触手”。你不需要在 Teams、Discord、Slack 里分别部署一个机器人只需要在 OpenClaw 里把对应渠道的连接器打开填上平台给的身份凭证它就能同时出现在多个平台里。我自己最常用的场景是接 Microsoft Teams。原因是 Teams 在办公场景里使用率高而且它对 Bot 的官方支持做得比较完善。往团队群里加一个 OpenClaw等于给整个团队配了一个 24 小时待命的助手。5.2 Teams 接入的完整流程先说明一点不同版本的 OpenClaw 对 Teams 的配置方式有差异但是思路是一样的万变不离其宗。第一步去 Microsoft 的开发者后台创建一个 Bot。你需要注册一个应用拿到两个核心凭证Application ID也叫 App ID和 Client Secret客户端密钥。这一步相当于给 OpenClaw 办了一张“工牌”Teams 靠这两个字段识别它是谁。第二步拿到凭证后回到服务器上打开.env文件找到 Teams 相关的配置项把内容填进去TEAMS_ENABLEDtrue TEAMS_APP_IDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx TEAMS_APP_SECRET你的ClientSecret第三步把 Bot 的回调地址指向你服务器的公网地址。Teams 需要通过这个 Endpoint 把消息推给 OpenClaw。如果你服务器开了域名就直接填域名没有域名填http://服务器IP:3000也行但注意 Teams 的回调一般要求 HTTPS。域名和 HTTPS 这一层建议后续用 Nginx 或 Caddy 加一层反向代理把 80/443 端口的流量转发到 OpenClaw 的本地端口。第四步重启服务sudo systemctl restart openclaw然后去 Teams 里搜索你创建的 Bot 名字发起一条对话。如果配置没问题OpenClaw 的日志里会打印出握手成功的信息Bot 会正常回复你。5.3 其他渠道也是同一套逻辑Teams 走通之后其他渠道基本就是复制粘贴。接 Discord需要去 Discord Developer Portal 创建一个 Application拿到 Bot Token填到配置里接 Slack需要创建一个 App 并获取 Bot Token。原理都是平台给你发凭证 → 你把凭证填进 OpenClaw → 服务启动后主动连接平台。唯一要提醒的是像微信群这类非开放平台接入逻辑会更复杂还涉及平台风控的问题。我的建议是如果你刚入门优先接 Teams、Discord、Slack 这类官方支持 Bot 的渠道把流程跑通再考虑其他方向。不要一开始就卡在风控和封号风险上那是高阶玩家才需要考虑的事。5.4 让它干活对话里怎么下指令渠道接好之后OpenClaw 的使用方式就是“发消息”。在聊天框里 它直接说人话即可。比如“OpenClaw 帮我把这篇链接的内容总结成三点。”“今天下午三点提醒我开会。”“查一下服务器磁盘空间还够不够。”这些指令背后有的走的是模型理解有的走的是本地工具调用。如果你的配置里启用了工具插件OpenClaw 会把你的自然语言指令匹配到对应的工具上执行完之后把结果回复到会话里。用多了你会发现它更像一个“会使用工具的下属”而不是一个只会聊天的玩具。6. 我踩过的坑和稳定运行心得6.1 坑Node 版本不匹配启动直接报错我第一次部署 OpenClaw 的时候服务器上默认装的是 Node 12。npm install装到一半就开始报各种奇怪的模块错误有的说node: internal/modules/cjs/loader有的说找不到某个包。我当时以为是项目有 bug折腾了很久才发现是 Node 版本太低。排查思路很简单先node -v看版本再去开源项目文档里查它要求的 Node 版本范围两者一对比就真相大白。后来我切到 Node 20重新rm -rf node_modules npm install一次通过。经验教训是凡是 Node.js 项目装依赖报出看不懂的底层错误第一件事不是查依赖问题而是查 Node 版本。6.2 坑npm install 进度条走到一半卡死这个坑在国内服务器上非常典型。现象是npm install跑着跑着就卡住进度条不走了最后超时报错。处理步骤按优先级来切 npm 镜像源前面说的 registry 配置清 npm 缓存npm cache clean --force删掉node_modules和package-lock.json重新npm install。大部分情况三步之内能解决。如果还不行检查服务器内存是否不足用free -h看一下内存不够就先加 swap再重试。6.3 坑通道都配好了Teams 却收不到消息这个坑我记忆犹新。配置填了服务也显示启动了但 Teams 里给 Bot 发消息它毫无反应。查日志也没看到明显的错误。后来发现是回调地址没有正确配置。Teams 平台那边要求 Bot 的 Endpoint 必须能通过公网访问并且返回正确的握手响应。我当时服务器安全组没放行 443 端口导致 Teams 的验证请求根本进不来。排查链路供你参考先看安全组和云平台防火墙是否放行了对应端口在服务器本地用curl -I http://localhost:3000确认服务正常从公网环境访问一下回调地址确认能通再回 Teams 后台检查 Endpoint 填写是否有误。我后来用 Caddy 加了一层反向代理自动签发了 HTTPS 证书把 Teams 回调指向https://你的域名问题就再没出现过。6.4 日志定位问题的思路很多新人一遇到问题就蒙我这里分享一个百试不爽的排查顺序先看 systemd 服务状态再看日志。sudo systemctl status openclaw sudo journalctl -u openclaw -n 100status告诉你服务当前是 running 还是 failedjournalctl -n 100告诉你最后 100 行日志发生了什么。日志里出现error、failed、unhandled promise rejection之类的关键词就顺着它往上翻几行问题基本都能定位。如果你问我的经验大部分故障修复时间都花在“看懂日志”上而不是“改代码”上。6.5 资源占用和日常维护OpenClaw 跑稳定之后日常维护其实很轻。我大约每隔两周做一次系统更新每月清理一次 npm 的缓存和旧依赖。用htop或top看资源占用用df -h看磁盘。跑了一个多月这只“龙虾”平时内存占用稳定在六七百兆CPU 大部分时间在 1% 以下完全不吃力。我还习惯每天瞄一眼journalctl -u openclaw -f的滚动日志。不用一直盯着只是快速扫一眼有没有异常堆积。服务如果被Restartalways自动拉起日志会显示重启时间不至于无声崩溃。最后说一个我自己的小建议如果条件允许给服务器配一个最低档的域名并启用 HTTPS。这不仅能让 Teams 这类平台的回调更稳定还能避免在日志和聊天记录里频繁出现裸露的 IP 地址。长期来看这一笔小投入会让整套“养龙虾”体验上一个档次。我的 OpenClaw 目前就稳定跑在这套架构上不折腾、不花哨但天天都在干活。