OpenClaw部署之内网服务器

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,问题解决。

至此,基本可以正常使用。

相关推荐
不一样的故事1262 小时前
Linux 系统网络配置
服务器·网络·php
水上冰石2 小时前
【智能体开发】【开发工具】【入门】4.Dify入门
人工智能
蓝天守卫者联盟12 小时前
烧结机一氧化碳治理厂家技术路线与市场格局分析
大数据·人工智能·python
白毛大侠2 小时前
LVS 完全入门:从零理解 Linux 虚拟服务器的三种模式
linux·服务器·lvs
雨落Re2 小时前
Claude Opus 4.6无限使用方法
人工智能·visual studio code
ulias2122 小时前
Linux中的开发工具
linux·运维·服务器·开发语言·c++·windows
LX567772 小时前
传统教师如何系统转型AI教育产品设计师?认证解析
人工智能
wanhengidc2 小时前
服务器如何防范爬虫攻击?
运维·服务器·网络·爬虫·游戏·智能手机
东离与糖宝2 小时前
教育智能体基础:个性化教学、答疑、出题、批改
人工智能