Ubuntu 安装 OpenClaw 与 Windows 局域网访问指南-02

本文记录如何从一台全新裸机开始,逐步部署Ubuntu Server + OpenClaw 局域网 AI Agent。

此部分为第二部分,实现Windows Workspace 共享,并安装并部署OpenClaw。

Windows Workspace 共享

目标是使Ubuntu能够访问Windows中的 D:\OpenClawWorkspace 路径,方便文件操作。

Windows

创建:

1
D:\OpenClawWorkspace

右键:

1
属性 → 共享 → 高级共享

共享名:

1
OpenClawWorkspace

为了安全,新建一个Windows账户,对这个账户给予读写权限,后续在局域网中,仅有这个新账户能够访问共享文件夹。

Ubuntu 挂载

安装 CIFS:

1
sudo apt install -y cifs-utils

创建目录:

1
sudo mkdir /mnt/workspace

挂载:

1
2
3
4
sudo mount -t cifs \
//Windows主机ip地址/OpenClawWorkspace \
/mnt/workspace \
-o username=Windows新账户用户名,password=Windows新账户密码,uid=1000,gid=1000

测试:

1
ls /mnt/workspace

安装 Node.js

OpenClaw 需要 Node.js。推荐 Node.js 22 LTS。

安装 nvm:

1
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

重新加载 shell:

1
source ~/.bashrc

安装 Node.js 22:

1
nvm install 22

设置默认版本:

1
nvm alias default 22

检查版本:

1
2
3
4
5
node -v
npm -v

npm install -g pnpm

推荐:

1
node >= 22

安装 OpenClaw

创建目录

1
2
mkdir -p ~/openclaw
cd ~/openclaw

克隆仓库

1
git clone https://github.com/openclaw/openclaw.git .

安装依赖

1
pnpm install

初始化 OpenClaw 配置

首次启动:

1
pnpm openclaw gateway

第一次运行后:

1
~/.openclaw/

会自动生成配置目录。

Ctrl + C 停止。

配置 OpenAI-compatible API

推荐使用ChatAnywhere(中转API)或者DeepSeek 等 OpenAI-compatible API。

编辑配置文件

1
nano ~/.openclaw/openclaw.json

ChatAnywhere 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"models": {
"mode": "merge",
"providers": {
"chatanywhere": {
"baseUrl": "https://api.chatanywhere.tech/v1",
"apiKey": "sk-xxxx",
"api": "openai-completions",
"models": [
{ "id": "gpt-5.5", "name": "gpt-5.5" },
{ "id": "gpt-5.4", "name": "gpt-5.4" },
{ "id": "gpt-5.4-ca", "name": "gpt-5.4-ca" },
{ "id": "deepseek-v4-flash", "name": "deepseek-v4-flash" },
{ "id": "deepseek-v4-pro", "name": "deepseek-v4-pro" }
]
}
}
},
}

允许 Windows 浏览器访问

默认 OpenClaw 只允许:

1
2
localhost
127.0.0.1

因此局域网直接访问会提示:

1
origin not allowed

也就需要加入局域网来源。

编辑配置 allowedOrigins

1
nano ~/.openclaw/openclaw.json

加入:

1
2
3
4
5
6
7
8
9
10
11
12
{
"gateway": {
"mode": "local",
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789",
"http://192.168.0.105:18789"
]
}
}
}

注意:

1
192.168.0.105

替换成自己的 Ubuntu Server IP。

启动 OpenClaw

开发模式

1
2
cd ~/openclaw
pnpm dev

正常情况下会看到:

1
[gateway] ready

以及:

1
http://0.0.0.0:18789

Windows 浏览器访问

Windows 浏览器打开:

1
http://192.168.0.105:18789

即可访问。

查看 token(不是GPT模型的token)

OpenClaw 默认启用 token 验证。

查看 token:

1
cat ~/.openclaw/openclaw.json

查找:

1
"token": "xxxxxxxx"

带 token 访问

1
http://192.168.0.105:18789/?token=你的token

使用 SSH 隧道访问 OpenClaw

OpenClaw Control UI 要求 secure context。因此 http://192.168.x.x 可能提示:

1
control ui requires device identity

推荐采用 SSH 隧道进行转发。

Windows PowerShell

执行:

1
ssh -L 18789:127.0.0.1:18789 Ubuntu用户名@192.168.0.105

保持窗口不要关闭。

浏览器访问

1
http://localhost:18789

如果启用了 token:

1
http://localhost:18789/?token=你的token

OpenClaw + SMB Workspace 开机自动恢复方案

设置在Ubuntu 启动后,自动完成 SMB 挂载,然后自动重启 OpenClaw。

自动完成 SMB 挂载

逻辑:Ubuntu开机自动挂载 Windows 共享目录,无需再手动挂载,避免重启后挂载失效。

创建 SMB 凭据文件

Ubuntu中创建文件

1
nano ~/.smbcredentials

写入:

1
2
username=Windows新账户用户名
password=Windows新账户密码

修改权限为:只有当前用户能读取:

1
chmod 600 ~/.smbcredentials

配置 fstab 开机自动挂载

编辑:

1
sudo nano /etc/fstab

在最后增加:

1
//Windows主机ip地址/OpenClawWorkspace /mnt/workspace cifs credentials=/home/Ubuntu用户名/.smbcredentials,uid=1000,gid=1000,iocharset=utf8,file_mode=0777,dir_mode=0777,nofail,_netdev 0 0

测试 fstab

重启之前先进行测试。执行 sudo mount -a,如果没有任何报错,则说明配置正确。

执行ls /mnt/workspace,如果能看到 Windows 文件,则说明开机自动挂载配置成功。

重启测试

执行sudo reboot进行重启。重启之后通过ls /mnt/workspace确认共享目录仍然存在。

自动重启 OpenClaw

逻辑:Ubuntu 启动之后先检查 SMB 是否挂载成功,成功后再开启 OpenClaw。

创建自动恢复脚本

创建脚本:

1
nano ~/.restart-openclaw.sh

写入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash

LOGFILE=~/openclaw-startup.log # 日志记录位置

echo "===================" >> $LOGFILE
echo "$(date) startup script begin" >> $LOGFILE

sleep 10 # 延迟操作时间

sudo mount -a >> $LOGFILE 2>&1 # 手动挂载/mnt/workspace,确保挂载成功

timeout=300 # 最多等待300秒
elapsed=0

while [ ! "$(ls -A /mnt/workspace 2>/dev/null)" ]; do
echo "$(date) waiting for smb mount..." >> $LOGFILE

sleep 5
elapsed=$((elapsed+5))

sudo mount -a >> $LOGFILE 2>&1

if [ $elapsed -ge $timeout ]; then
echo "$(date) timeout waiting for smb mount" >> $LOGFILE
exit 1
fi
done

echo "$(date) smb mounted successfully" >> $LOGFILE
echo "$(date) starting openclaw..." >> $LOGFILE

# NVM support
export NVM_DIR="$HOME/.nvm"
source "$NVM_DIR/nvm.sh"

cd /home/wah/openclaw
nohup pnpm openclaw gateway >> $LOGFILE 2>&1 &

echo "$(date) openclaw restarted" >> $LOGFILE

赋予执行权限:

1
chmod +x ~/.restart-openclaw.sh

设置开机自动执行

编辑 crontab:

1
crontab -e

添加:

1
@reboot /home/Ubuntu用户名/.restart-openclaw.sh

最终架构

1
2
3
4
5
6
7
8
9
Windows11                           # D:\OpenClawWorkspace 共享至Ubuntu 中的 /mnt/workspace

SSH / RDP / Browser / SMB 挂载

Ubuntu Server 24.04

OpenClaw # 后续只处理Window映射过来的 /mnt/workspace 中的文件

OpenAI-compatible API