一句话:这篇就是把 OpenClaw 在 Linux 上从 0 搭起来,按“宝宝都能学会”的思路写清楚:安装 → 配置 → 跑起来 →(可选)域名反代进 Control UI。
我自己踩过的坑也会写出来(比如反代 WebSocket 授权、systemd 重复实例、端口冲突、htpasswd 权限 500 等)。
- ✅ 一台 Linux 服务器(Ubuntu/Debian 都行)
- ✅ CPU/内存别太抠:建议 2H4G 起步(低配也能跑,但更容易各种“卡/超时/不回”)
- ✅ 一个域名(可选:想在浏览器远程打开 Control UI 才需要)
- ✅(可选)Telegram Bot(如果你想用 Telegram 当入口)
- 不要把 OpenClaw 的管理端口直接裸奔公网;要么只监听 ,要么反代加认证。
- 反代推荐走 trusted-proxy + BasicAuth,不然 WebSocket 授权经常翻车。
- 同一台机器上别让 OpenClaw 启两个实例(user service + system service 混着来),很容易端口冲突/token mismatch。
OpenClaw 需要 Node 22 或更新版本。我更推荐用 nvm(省心,不污染系统包):
如果你用 root 跑服务,确认一下 HOME(真遇到过 HOME 为空导致异常的环境):
如果你想在手机/外网浏览器直接打开控制台,一般会做 Nginx 反代。这里我给一套最稳的配置:BasicAuth + trusted-proxy。
因为浏览器的 WebSocket 场景下,很多时候你没法“优雅地”在请求里带 Authorization(或者某些路径能带,WS 又断)。所以我最终稳定下来的方式是:反代负责认证,OpenClaw 只相信反代转发的用户身份。
(示意)你需要在 里启用 trusted-proxy,并指定需要的头:
下面是最关键的几行:一定要把 、 这些头带上,不然 OpenClaw 会直接拒绝(你会看到类似 的日志)。
现象:输openclaw 教程入账号密码后直接 500,Nginx error.log 里是:
处理:确保 htpasswd 文件可读 + 目录可遍历(不要把文件放在 nginx 进程读不到的目录权限里)。
宝塔站点配置容易被覆盖,建议把反代片段放到 extension include 里(不同站点目录不一样):
九成是你启动了不止一个 OpenClaw(比如 user service + system service 同时存在)。先看端口到底谁占了:
优先检查:
- Nginx 有没有转发 /
- OpenClaw trusted-proxy 的 有没有写了但没转发
多数不是 OpenClaw 自己挂了,而是上游模型超时/网络抖动。我的顺序是:
- 把 OpenClaw 的全局 timeout 调大一点(比如 1800 秒)
- 看 provider 是否频繁 timeout
- 看系统是否异常(比如僵尸进程暴涨、某容器疯狂 fork)
到这里,你至少已经做到:OpenClaw 能在 Linux 上稳定常驻,控制台能打开,远程访问也不会裸奔。
后面如果你要接 Telegram/WhatsApp,再加 allowlist(避免群消息乱入),再单独写一篇会更清楚。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/251626.html原文链接:https://javaforall.net
