1. 需求
内网有比较好的GPU服务器资源,并部署了本地大模型。可以24H在线处理,同时可以通过不同终端(电脑、手机等)等同步助手的相关任务状态。
考虑将OpenClaw部署后,在公网多终端进行访问。
2. 环境
系统环境:ubuntu 22.04 LTS
1)下载安装最新版本 nvm-0.40.4.tar.gz
解压安装在 /home/nvm-0.40.4 目录
nvm ls-remote
根据 openclaw的要求,安装 node 24
nvm install 24
Downloading and installing node v24.14.1...
设置镜像源
npm config -g get registry
npm config -g set registry https://registry.npmmirror.com
3. 安装或更新
采用通过npm进行安装的方式,也适用于更新。
npm install -g openclaw@latest
# or: pnpm add -g openclaw@latest
## 更新安装也用这个命令安装更新到最新版
# 时间有点长...
# 安装完毕后,可以通过 npm list -g 查看
# 查看版本
openclaw --version
# 初始化
openclaw onboard --install-daemon
# 将 OpenClaw Gateway 安装为系统后台服务(守护进程),使其能够持久化运行。
# 开机自动启动、后台持久化运行、系统服务注册、心跳功能。
# 部分主要设置如下:
- Setup mode:Manual (Configure port, network, Tailscale, and auth options.)
- What do you want to set up?:Local gateway (this machine) # 主力机器(台式机/笔记本/服务器),本地运行
- ...
- Model/auth provider:Custom Provider (Any OpenAI or Anthropic compatible endpoint) # 根据需要选择 NewAPI 等
- API Base URL:http://xxxx.xxxx.com/v1
- ...
- Endpoint compatibility:penAI-compatible (Uses /chat/completions)
- ...
- Endpoint ID: xxxx # 是 OpenClaw 内部用来唯一标识一个自定义 Provider 的短名称。
- Gateway port:18789
- Gateway bind:LAN (0.0.0.0)
- Gateway auth:Token (Recommended default (local + remote)) # 采用token的方式,后面可以在 openclaw.json 查看
- Configure chat channels now?:No
-
# 可以看到输出:... systemd service: openclaw-gateway.service 等
# 服务运行OK。
服务运行在 18789端口,通过 http://127.0.0.1:18789 及 ws访问。
4. 配置穿透
因为安装在内网服务器,只能通过CMD访问。这样要在公网通过多终端访问,就必须要穿透映射出来。
采用的方案:FRP,Apache,域名,HTTPS证书。
FRP配置:
# 内网客户端
# 需要配置 HTTP + TCP(支持WS)
[openclaw]
type = http
local_ip = 127.0.0.1
local_port = 18789
custom_domains = openclaw.xxxx.net
[openclaw-ws]
type = tcp
local_ip = 127.0.0.1
local_port = 18789
custom_domains = openclaw.xxxx.net
Apache配置:
# VHOST配置
<VirtualHost *:80>
ServerName openclaw.xxxx.net
# 强制使用https
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [L,R]
</VirtualHost>
<VirtualHost *:443>
ServerName openclaw.xxxx.net
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/xxxx.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxxxx.net/privkey.pem
ProxyRequests Off
ProxyPreserveHost On
# WebSocket 支持
RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://127.0.0.1:7080/$1" [P,L]
ProxyPass / http://127.0.0.1:7080/
ProxyPassReverse / http://127.0.0.1:7080/
# 关键:转发必要的头信息,确保配对 token 能正确传递
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Real-IP %{REMOTE_ADDR}s
RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
RequestHeader set Host %{HTTP_HOST}s
# 确保 Cookie 正确传递(配对信息通常存在 cookie 中)
ProxyPassReverseCookieDomain 127.0.0.1 openclaw.xxxxx.net
ProxyPassReverseCookiePath / /
# 现代 TLS 配置
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder on
# HSTS 安全头部
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
ErrorLog ${APACHE_LOG_DIR}/openclaw.xxxxx.net-error.log
CustomLog ${APACHE_LOG_DIR}/openclaw.xxxxx.net-access.log combined
</VirtualHost>
域名解析及证书正常处理即可。

5. 运行起来碰到的问题
1)通过 https://xxx.xx.net 访问时,报错:
# 页面报错
origin not allowed (open the Control UI from the gateway host or allow it in gateway.controlUi.allowedOrigins)
# 解决:
需要将 https://xxx.xx.net 添加到 gateway.controlUi.allowedOrigins 中去。
# 参考如下:
"gateway": {
"mode": "local",
"auth": {
"mode": "token",
"token": "6e58b9ba363861e1e04d04b3d6bdab608af095f6076f0a8c"
},
"port": 18789,
"bind": "lan",
"tailscale": {
"mode": "off",
"resetOnExit": false
},
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789",
"http://192.168.xx.xxx:18789",
"https://openclaw.xxxx.net"
]
},
...
2) 浏览器访问时,提示 Pairing Required:
# OpenClaw有配对机制,需要对新访问的设备进行配对处理,具体说明见下文 4.2 章节
# - 在浏览器刷新时,停留不动
# - 切换到OpenClaw后台,通过 openclaw devices list 查看到需要 Pairing的设备信息
openclaw devices list
# - 添加进去 openclaw devices approve 613cbbc9-ec74-43bb-8f86-a8ce5e480181(Request ID)
openclaw devices approve xxxx(Request ID)
# - 这个地方注意:openclaw devices approve --latest 有时候无法批准,需要使用精准的批准命令
# 执行完毕后,重启 gateway
openclaw gateway restart
# 再次确认
openclaw devices list

这样就可以在多终端或者不同浏览器进行访问了,不同终端访问时,会把所有信息同步过来。
3)配置了大模型,聊天时无输出:
# 现象
配置了私域服务器部署的大模型地址,公网浏览器访问时,没有任何报错,但也没有任何输出,在浏览器端通过调试窗口也没有报错
# 分析
这个时候有可能就是大模型配置的问题,可能是大模型没有token了,也就是在线大模型的余额不够了。
因为是私有部署,不存在这个问题,后来通过日志发现,是部署的 deepseek-r1:32b 不支持 tools调用,导致报错。
deepseek-r1:32b does not support tools
# 查看日志 openclaw logs --follow
# 解决
调整为 deepseek-v3,问题解决。
至此,基本可以正常使用。