折腾 OpenClaw:从零开始在 Ubuntu 上部署并搞定局域网访问
本文记录了在Ubuntu上安装配置OpenClaw的完整过程。作者详细描述了安装nvm时遇到的网络问题及解决方法,配置阿里云百炼API时发现的地域匹配问题,网关启动时遇到的模式设置错误,以及局域网访问时面临的防火墙、监听地址、CORS和token认证等系列问题。文章特别强调了OpenClaw严格的安全机制设计,并给出了网络准备、API配置、文件修改等实用建议,最终通过SSH隧道实现安全访问。整个安
上周心血来潮,想在自己的 Ubuntu 机器上跑个 OpenClaw 玩玩,结果这一折腾就是两个小时。中间踩了无数坑,从 nvm 装不上、配置文件报错,到局域网死活连不上……现在终于跑通了,赶紧把过程记下来,希望能帮到和我一样的新手。
## 第一步:装 nvm 就卡住了
按照官方文档,第一行 `curl -o- https://raw.githubusercontent.com/...` 直接就超时了。国内这网络你懂的,raw.githubusercontent.com 经常抽风。
试了试网上说的用 jsDelivr 镜像,居然成功了:
```bash
curl -o- https://cdn.jsdelivr.net/gh/nvm-sh/nvm@v0.40.4/install.sh | bash
```
如果镜像也不行,其实还有个笨办法:在浏览器里打开那个地址,把脚本内容全选复制下来,在服务器上新建个 `install.sh` 贴进去,然后 `bash install.sh` 一样能装。我就是这么干的。
装完 nvm 记得 `source ~/.bashrc` 一下,然后用 `nvm install 22` 装 Node.js,这一步倒挺顺利。
## 第二步:装 OpenClaw 倒是一路绿灯
```bash
curl -fsSL https://openclaw.ai/install.sh | bash
```
这个命令跑完,`openclaw --version` 能输出版本号,说明装上了。这时候我天真地以为马上就能用了。
## 第三步:配置模型 API,踩了第一个坑
运行 `openclaw onboard`,让我选模型提供商。我用的是阿里云百炼,想着国内服务延迟低。结果填完 API Key 和 Base URL 后,一直报 401 错误。
查了半天才发现,百炼的 API Key 分地域!我创建 key 时选的是北京节点,但 Base URL 填成了新加坡的 `dashscope-intl.aliyuncs.com`。改成北京的 `https://dashscope.aliyuncs.com/compatible-mode/v1` 后立马好了。
**教训:** API Key 和 Base URL 的地域必须一致,北京对北京,新加坡对新加坡。
## 第四步:启动网关,又报错
配置完模型,运行 `openclaw gateway start`,结果告诉我 `gateway.mode` 没设置。这个 mode 是啥?文档里也没细说。
试了试 `openclaw config set gateway.mode local`,然后再重启网关,终于不报这个错了。但紧接着又提示配置有问题,让我运行 `openclaw doctor --fix`。
## 第五步:doctor --fix 也没完全搞定
`doctor` 倒是自动修了一些东西,但最后留了个 `gateway.port` 类型错误的提示。打开 `~/.openclaw/openclaw.json` 一看,原来 `"port": "18789"` 写成了字符串,应该是数字。手动把引号去掉,保存,再重启网关,这次终于 `openclaw status` 显示网关 running 了。
## 第六步:想从笔记本访问,结果连不上
服务器上 `curl http://127.0.0.1:18789` 正常,但在同一局域网的笔记本上访问 `http://192.168.1.100:18789` 死活打不开。
先想到的是防火墙,检查了一下:
```bash
sudo ufw status
```
果然没开放 18789 端口,赶紧加上:
```bash
sudo ufw allow 18789/tcp
```
加了之后笔记本还是连不上。用 `ss -tlnp | grep 18789` 一看,服务只监听了 `127.0.0.1`,没监听 `0.0.0.0`。也就是说它只接受本机访问。
## 第七步:修改监听地址,又踩了新坑
按照直觉,我应该在配置文件里把 `bind` 改成 `0.0.0.0`。结果改完一重启网关,直接报错说 `0.0.0.0` 是 legacy 用法,现在要用 `lan`、`loopback` 这些模式。
查了下文档,原来新版 OpenClaw 引入了“绑定模式”的概念。改成 `"bind": "lan"` 后,网关重启,再用 `ss` 看,终于变成 `0.0.0.0:18789` 了。
## 第八步:CORS 和 token 的问题
以为万事大吉,结果笔记本浏览器访问时,控制台报错 `origin not allowed`。这又是浏览器的跨域保护。需要在配置里把笔记本访问的地址加到 `allowedOrigins` 里。
我的服务器 IP 是 `192.168.1.100`,所以在 `gateway.controlUi.allowedOrigins` 里加上 `"http://192.168.1.100:18789"`。重启后,不报 origin 了,但弹出了 `unauthorized: gateway token missing`。
原来 OpenClaw 默认需要设备认证,首次访问必须带 token。在服务器上运行 `openclaw dashboard`,会输出一个类似 `http://127.0.0.1:18789/?token=abc123...` 的地址。把 `127.0.0.1` 换成 `192.168.1.100`,在笔记本浏览器里打开,终于进去了!
## 第九步:为了省事,我把设备认证关了(风险自担)
每次都要找 token 挺麻烦的,反正是家里局域网,我就把两个安全选项关了:
```bash
openclaw config set gateway.controlUi.allowInsecureAuth true
openclaw config set gateway.controlUi.dangerouslyDisableDeviceAuth true
systemctl --user restart openclaw-gateway.service
```
这下直接在笔记本浏览器里输 `http://192.168.1.100:18789` 就能进,不需要 token 了。**不过要提醒自己:如果家里有客人用 Wi-Fi,或者电脑中病毒,别人也能访问我的 OpenClaw,所以平时用完后最好再把这两个选项关掉。**
## 总结
折腾下来,最深的体会是:OpenClaw 的安全机制设计得很严,虽然对新手不太友好,但确实是为了防止配置不当导致的安全问题。尤其是那个“绑定模式”的引入,一开始觉得多此一举,后来想想,强制用户明确服务暴露范围,其实是好事。
如果你也想部署,这里有几个小建议:
1. **网络问题**:提前准备好 nvm 安装脚本的镜像或离线包,省得卡在第一关。
2. **API Key 地域**:务必和 Base URL 匹配,百炼用户特别留意。
3. **配置文件**:直接改 JSON 比用命令行快,但改完记得用 `openclaw config get` 检查一下。
4. **局域网访问**:如果只是自己用,SSH 隧道是最简单安全的方法,不用折腾这些 CORS 和认证。命令只有一行:`ssh -L 18789:localhost:18789 用户名@服务器IP`,然后在浏览器里打开 `http://localhost:18789` 就行。
最后,OpenClaw 跑起来后,真的挺有意思的。可以让它帮我总结网页、写邮件,还能接入飞书当机器人。虽然配置过程有点折腾,但看到它跑起来那一刻,还是很有成就感的。希望这篇记录能帮你少踩几个坑。
更多推荐




所有评论(0)