openclaw

关注公众号 jb51net

关闭
AI > openclaw >

从零开始在Ubuntu上部署OpenClaw并搞定局域网访问

两只羊

上周心血来潮,想在自己的 Ubuntu 机器上跑个 OpenClaw 玩玩,结果这一折腾就是两小时。中间踩了无数坑,从 nvm 装不上、配置文件报错,到局域网死活连不上……现在终于跑通了,赶紧把过程记下来,希望能帮到和我一样的新手。

第一步:装 nvm 就卡住了

按照官方文档,第一行 curl -o- https://raw.githubusercontent.com/... 直接就超时了。国内这网络你懂的,raw.githubusercontent.com 经常抽风。

试了试网上说的用 jsDelivr 镜像,居然成功了:

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 倒是一路绿灯

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 死活打不开。

先想到的是防火墙,检查了一下:

sudo ufw status

果然没开放 18789 端口,赶紧加上:

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 用法,现在要用 lanloopback 这些模式。

查了下文档,原来新版 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 挺麻烦的,反正是家里局域网,我就把两个安全选项关了:

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 的安全机制设计得很严,虽然对新手不太友好,但确实是为了防止配置不当导致的安全问题。尤其是那个“绑定模式”的引入,一开始觉得多此一举,后来想想,强制用户明确服务暴露范围,其实是好事。

如果你也想部署,这里有几个小建议:

最后,OpenClaw 跑起来后,真的挺有意思的。可以让它帮我总结网页、写邮件,还能接入飞书当机器人。虽然配置过程有点折腾,但看到它跑起来那一刻,还是很有成就感的。

到此这篇关于从零开始在Ubuntu上部署OpenClaw并搞定局域网访问的文章就介绍到这了,更多相关Ubuntu部署OpenClaw内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!