1. Ubuntu 24.04 纯命令行部署 OpenClaw 的真实场景与坑点
OpenClaw 是一个可以在终端里跑起来的智能体运行框架,它能对接大模型 API、执行本地命令、管理会话与工具调用,适合放在没有图形界面的服务器上长期运行。如果你手上是一台 Ubuntu 24.04 的云主机或者内网机器,只有 SSH 能连,没有桌面环境,那这篇内容就是为你写的。整套流程从系统依赖开始,到 Node.js 环境、OpenClaw 安装、初始化配置、守护进程启动,最后用一条真实请求验证服务是否跑通。
很多人第一次在纯命令行环境装 OpenClaw,卡住的地方往往不是 OpenClaw 本身,而是前置环境。Ubuntu 24.04 自带的 Node.js 版本偏旧,直接apt install nodejs装出来的版本可能低于 OpenClaw 要求;npm 全局安装时又容易碰到权限问题;如果 OpenClaw 的依赖里有从 GitHub 拉取的包,还可能遇到 SSH key 报错。我试过在一台干净的 24.04 上从零走一遍,把这些坑都踩了一次,下面按顺序拆开讲。
先明确一下目标状态:机器上有一个可用的 Node.js LTS 环境,OpenClaw 以全局命令形式安装,配置文件写好模型接入信息,守护进程能开机自启,最后用openclaw相关命令能拿到模型返回。整个过程不需要浏览器,不需要桌面,全部在终端完成。
在开始之前,确认你有 sudo 权限,并且机器能正常访问外网。执行一次系统更新是必要的,Ubuntu 24.04 的软件源里有些包版本和 24.04 的依赖链绑定,跳过更新可能在装 Node.js 时出现库冲突。
sudo apt update sudo apt upgrade -y这两条命令跑完,系统基础环境就绪。接下来不要急着apt install nodejs,因为 Ubuntu 24.04 仓库里的 Node.js 版本通常不是最新的 LTS,OpenClaw 对 Node 版本有要求,版本太低会在安装阶段直接报 engine 不匹配。正确做法是引入 NodeSource 的 LTS 源。
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt install -y nodejs装完之后立刻验证版本,这一步别省:
node -v npm -v正常应该看到 Node 20.x 或 22.x 的 LTS 版本号。如果node -v报 command not found,说明 NodeSource 源没生效,回头检查上一条 curl 命令有没有报错。git 也顺手装上,后面拉依赖会用到:
sudo apt install -y git git --version到这里,系统层的前置就完成了。真正容易出问题的是下一步的全局安装和网络访问。纯命令行环境下没有浏览器帮你处理 OAuth 跳转,所有认证都得靠命令行参数或者配置文件完成,这也是后面配置环节要重点讲的部分。
2. TaoToken 前置准备:拿到 Base URL、API Key 与模型 ID
OpenClaw 本身是一个运行框架,它需要接一个大模型服务才能真正干活。在纯命令行环境里,最省事的接入方式是用一个兼容 OpenAI 接口协议的服务,把 Base URL、API Key、Model ID 三样东西填进配置就行。TaoToken 提供的就是这种兼容接口,官网在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。
你需要提前准备好三件套,后面配置环节会直接填进去:
第一件是 Base URL。TaoToken 的 API 地址是https://taotoken.net/api,注意这个地址不带任何查询参数,配置里填的就是它。有些工具要求末尾带/v1,OpenClaw 的配置项里如果单独有 basePath 字段,就按它的要求拆开填。
第二件是 API Key。登录之后进控制台,在 API Keys 页面创建一个新的 Key。地址是 https://taotoken.net/console/api-keys ,创建后立刻复制保存,页面刷新后就看不到完整 Key 了。这个 Key 就是后面配置里的apiKey字段。
第三件是 Model ID。这个取决于你想用哪个模型,在模型对话页面能看到当前可用的模型列表,地址是 https://taotoken.net/models 。把你要用的模型 ID 记下来,比如某个具体的模型标识,配置里填到model字段。
如果你打算长期在这台机器上跑编码类或 Agent 类任务,可以顺带了解一下 Coding Plan,地址是 https://taotoken.net/coding-plan ,它针对持续性的编码场景做了额度安排,比按次调用更适合常驻服务。接入文档在 https://taotoken.net/doc ,遇到字段含义不清楚的时候可以对照查。
这里要提醒一句:纯命令行环境下不要试图用浏览器回调的方式做认证,OpenClaw 的 onboard 流程如果弹出需要浏览器打开的提示,直接选择用 API Key 方式配置,把上面三样东西填进配置文件即可。这样整个部署过程就不依赖任何图形界面。
3. 可复制配置:OpenClaw 安装、初始化与 settings 片段
环境准备好之后,开始装 OpenClaw。全局安装命令如下:
npm install -g openclaw@latest如果这一步报EACCES权限错误,说明 npm 全局目录没有写权限。不要用sudo npm install -g硬来,那样装出来的包在后续运行时可能因为权限归属问题读不到配置。正确做法是给当前用户配置 npm 全局目录:
mkdir -p ~/.npm-global npm config set prefix ~/.npm-global echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc source ~/.bashrc然后再执行一次npm install -g openclaw@latest,这次应该能顺利装完。装完验证:
openclaw --version能打印出版本号就说明命令已经可用。接下来跑初始化:
openclaw onboard --install-daemon这个命令会引导你完成基础配置,并且把守护进程装好。在纯命令行环境下,它会以交互式问答的方式让你填 Base URL、API Key、Model ID。如果你希望直接写配置文件而不走交互,可以跳过 onboard 的问答,手动创建配置文件。OpenClaw 的配置目录通常在~/.config/openclaw/下,主配置文件是settings.json。下面是一个可复制的配置片段,把三件套替换成你自己的值:
{ "provider": { "type": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的APIKey", "model": "你的ModelID" }, "daemon": { "enabled": true, "autoStart": true }, "log": { "level": "info", "path": "~/.local/share/openclaw/logs" } }把这段写进~/.config/openclaw/settings.json,注意 JSON 格式不能有尾逗号,apiKey和model换成你在 TaoToken 控制台拿到的真实值。写完之后可以用python3 -m json.tool ~/.config/openclaw/settings.json校验一下格式,Ubuntu 24.04 自带 python3,这条命令能帮你提前发现语法错误。
如果你在安装依赖时遇到 git 拉取报错,典型信息是:
npm ERR! git@github.com: Permission denied (publickey)这是因为某些依赖走的是 SSH 协议拉取,而机器上没有配置 GitHub 的 SSH key。解决办法是让 git 把 SSH 地址自动转成 HTTPS:
git config --global url."https://".insteadOf ssh://git@github.com/这条命令执行一次即可,之后 npm 再拉取 GitHub 依赖就会走 HTTPS,不再要求 publickey。这个坑在纯命令行服务器上非常常见,提前配好能省很多时间。
配置写完后,启动守护进程:
openclaw daemon start如果 onboard 时已经装了 daemon,这一步可能提示已在运行。用openclaw daemon status查看状态,看到 running 就对了。想让它在开机时自动拉起,确认配置里autoStart为 true,然后执行:
systemctl --user enable openclaw systemctl --user start openclaw注意这里是--user级别的 systemd,不需要 root。如果你的机器上 user systemd 没启用,可以用loginctl enable-linger $USER让用户服务在未登录时也保持运行。
4. 验证请求:确认 OpenClaw 服务真正跑通
配置和守护进程都就绪后,必须做一次真实请求验证,否则你不知道是配置写对了还是只是进程活着。最直接的验证方式是让 OpenClaw 发一条测试消息给模型,看能不能拿到返回。
先确认守护进程状态:
openclaw daemon status输出里应该有 running 和当前加载的配置文件路径。接着用 OpenClaw 的命令行对话功能发一条测试:
openclaw chat "用一句话说明你当前使用的模型"如果配置正确,几秒内会打印出模型返回的内容。这一步能跑通,说明 Base URL、API Key、Model ID 三样都填对了,网络也能正常到达 TaoToken 的接口。
如果openclaw chat命令不存在,可能是版本差异,可以试试openclaw run或者直接查看帮助:
openclaw --help帮助里会列出当前版本支持的所有子命令。另一种验证方式是直接对 API 发一个 curl 请求,绕过 OpenClaw 先确认接口本身通不通:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的APIKey" \ -H "Content-Type: application/json" \ -d '{ "model": "你的ModelID", "messages": [{"role": "user", "content": "ping"}] }'如果这条 curl 能返回 JSON 且里面有choices字段,说明接口层没问题,问题就缩小到 OpenClaw 的配置解析上。如果 curl 返回 401,那就是 Key 不对或者没带上;如果返回连接超时,检查机器出网是否正常。
验证通过后,建议看一眼日志确认没有隐藏报错:
tail -n 50 ~/.local/share/openclaw/logs/*.log日志里如果出现reading choices相关的解析错误,通常是返回结构不符合预期,检查 Model ID 是否拼写正确。如果出现local proxy failed,说明配置里可能残留了代理设置,纯命令行环境不需要代理,把相关字段删掉即可。
到这里,一个可运行的 OpenClaw 服务就算部署完成了。它现在能在后台常驻,开机自启,并且能正常调用模型。接下来你可以把它接到具体的任务流里,比如定时执行脚本、处理消息队列,或者作为本地 Agent 的后端。
5. 本篇常见报错排查:401、publickey、choices 解析失败
部署过程中最容易撞上的报错就那么几个,这里集中列出来对照排查。
第一个是 401 Unauthorized。表现是 curl 或 openclaw chat 返回 401,日志里写着 invalid api key。原因通常是三种:Key 复制时带了空格或换行;Key 已经在前端被删除或重置;配置里apiKey字段名写错。排查方法是把 Key 重新从 https://taotoken.net/console/api-keys 复制一次,粘贴到配置文件时确认没有多余字符。可以用grep apiKey ~/.config/openclaw/settings.json看一眼实际写入的值。
第二个是git@github.com: Permission denied (publickey)。这个在 npm 安装阶段出现,原因是依赖走 SSH 拉取但机器没有对应密钥。解决办法就是前面那条 git 配置:
git config --global url."https://".insteadOf ssh://git@github.com/执行后重新跑npm install -g openclaw@latest。如果还报错,检查~/.gitconfig里这条配置有没有写进去。
第三个是reading choices解析失败。表现是请求发出去了,但 OpenClaw 报无法读取返回内容。这通常意味着返回的 JSON 结构里没有choices字段,可能是 Model ID 填错导致接口返回了错误对象,也可能是 Base URL 少了或多了路径段。对照检查:Base URL 应该是https://taotoken.net/api,Model ID 从模型对话页面确认。可以先用第 4 节的 curl 命令单独测接口,确认返回结构正常再回到 OpenClaw。
第四个是local proxy failed。这个报错说明配置或环境变量里存在代理设置,而当前网络环境不需要代理。检查~/.config/openclaw/settings.json里有没有 proxy 相关字段,以及 shell 环境里有没有http_proxy、https_proxy变量:
env | grep -i proxy如果有,用unset清掉,或者从配置文件里删除对应项。
第五个是 daemon 启动后立刻退出。用openclaw daemon status看到 not running,日志里可能有配置解析错误。最常见的是 settings.json 格式不合法,用python3 -m json.tool校验一次就能定位。另一个原因是 user systemd 没启用 linger,导致 SSH 断开后服务被回收,执行loginctl enable-linger $USER解决。
把这几类报错对照一遍,基本能覆盖纯命令行部署 OpenClaw 时 90% 的卡点。遇到新报错时,先看日志最后 50 行,再对照配置三件套逐项确认,比盲目重装有效得多。
6. 接入文档与后续操作入口
部署完成之后,日常维护和扩展主要靠几个入口。配置字段的完整说明在接入文档 https://taotoken.net/doc ,遇到不确定的字段含义直接查。模型列表和可用 Model ID 在模型对话页面 https://taotoken.net/models ,换模型时从这里取新的 ID 填进配置。API Key 的管理和轮换在控制台 https://taotoken.net/console/api-keys ,建议定期轮换,尤其是在多人共用一台机器的场景下。
如果你打算把这台机器上的 OpenClaw 用于长期的编码辅助或 Agent 任务,可以看一下 Coding Plan https://taotoken.net/coding-plan ,它针对持续性调用做了安排,比零散调用更稳定。Claude Code 相关的接入说明在 https://taotoken.net/claude-code ,如果你后续想把这套环境扩展到 Claude Code 工作流,那边的配置方式和 OpenClaw 类似,同样是 Base URL、Key、Model ID 三件套。
最后给一个实用习惯:每次改完~/.config/openclaw/settings.json,先跑python3 -m json.tool校验格式,再openclaw daemon restart,然后openclaw chat "test"确认返回。这三步走完再去做别的事,能避免配置写错却以为服务正常的情况。纯命令行环境没有图形提示,所有状态都得靠命令确认,养成这个习惯之后,后面换模型、换 Key、加工具都会顺很多。