前置条件
- Windows 10/11,已启用 WSL2
- 有 OpenClaw Gateway 运行中
- Gateway token 已获取
第一步:卸载旧 Ubuntu(如需重装)
在 PowerShell 中执行:
wsl --unregister Ubuntu第二步:安装 Ubuntu
在 PowerShell 中执行:
wsl --install Ubuntu安装完成后设置用户名和密码。
第三步:配置镜像网络模式
解决 WSL2 无法使用 Windows localhost 代理的问题。
在 PowerShell 中执行:
Set-Content -Path "$env:USERPROFILE\.wslconfig" -Value "[wsl2]`nnetworkingMode=mirrored`nvmIdleTimeout=-1"networkingMode=mirrored:WSL 与 Windows 共享网络栈,代理直接能用vmIdleTimeout=-1:WSL 不会因空闲自动关闭
然后重启 WSL 使配置生效:
wsl --shutdown第四步:安装 Node.js
在 WSL 中执行:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install nodejs -y验证:
node -v && npm -v⚠️ 包名是nodejs不是node,apt install node会报错。
第五步:安装 OpenClaw
在 WSL 中执行:
sudo npm install -g openclaw第六步:手动运行并配对
在 WSL 中执行:
OPENCLAW_GATEWAY_TOKEN=<你的gateway_token> openclaw node run --host <gateway地址> --port 443 --tls --display-name "Work"参数说明:
--host:Gateway 地址--port 443:端口--tls:443 端口必须加--display-name:节点显示名称OPENCLAW_GATEWAY_TOKEN:Gateway 认证 token(必须传)
确认连接成功后 Ctrl+C 停掉,继续配置自启。
第七步:创建 systemd 自启服务
7.1 配置 wsl.conf
在 WSL 中执行:
sudo tee /etc/wsl.conf << 'EOF'
[boot]
systemd=true
[automount]
enabled=true
options="metadata,umask=22,fmask=11"
mountFsTab=true
EOF然后在 PowerShell 重启 WSL:
wsl --shutdown7.2 创建 service 文件
在 WSL 中执行:
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/openclaw-node.service << EOF
[Unit]
Description=OpenClaw Node
After=network-online.target
Wants=network-online.target
[Service]
ExecStartPre=/bin/bash -c 'until [ -d /mnt/c/Users ]; do sleep 1; done'
ExecStart=/usr/bin/openclaw node run --host <gateway地址> --port 443 --tls --display-name "Work"
Environment=OPENCLAW_GATEWAY_TOKEN=<你的gateway_token>
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
EOF关键点:
ExecStartPre:等待 Windows 盘符挂载完成后再启动,否则/mnt/c/mnt/d等路径不可用Restart=always:进程异常退出自动重启
7.3 启用并启动服务
systemctl --user daemon-reload
systemctl --user enable openclaw-node.service
systemctl --user start openclaw-node.service7.4 检查状态
systemctl --user status openclaw-node.service应该显示 active (running)。
第八步:设置 WSL 开机自启(Windows 计划任务)
WSL 关掉终端后可能退出,需要用 VBS 脚本后台常驻。
8.1 创建 VBS 脚本
在 PowerShell 中执行:
Set-Content -Path "$env:USERPROFILE\start-wsl.vbs" -Value 'CreateObject("Wscript.Shell").Run "wsl -d Ubuntu", 0, False'VBS 脚本会静默启动 WSL,不会弹出终端窗口。
8.2 创建计划任务
在 PowerShell 中执行:
schtasks /create /tn "WSL Ubuntu AutoStart" /tr "wscript.exe \`"$env:USERPROFILE\start-wsl.vbs\`"" /sc onlogon /rl highest /f用户登录后自动运行 VBS 脚本,静默启动 WSL + systemd 服务。
8.3 验证计划任务
schtasks /query /tn "WSL Ubuntu AutoStart"状态应显示 Ready。
常见问题排查
| 问题 | 原因 | 解决方案 |
|---|---|---|
apt install node 报错 | 包名不对 | 用 apt install nodejs |
| WSL 下载慢/代理不生效 | NAT 模式不支持 localhost 代理 | 配置 networkingMode=mirrored |
gateway token missing | 没传 token | 加 OPENCLAW_GATEWAY_TOKEN=xxx |
gateway token mismatch | token 写错了 | 检查 service 文件里的 token |
systemd 服务里 /mnt/c 不存在 | 服务启动时 Windows 盘符还没挂载 | 加 ExecStartPre 等待挂载 |
| WSL 关终端就退出 | 没有活跃会话 | 用 .vbs 脚本后台常驻 + 计划任务 |
服务频繁重启 start-limit-hit | 启动失败太多次 | systemctl --user reset-failed 再启动 |
最终效果
- ✅ Windows 开机 → 计划任务自动运行 VBS → 静默启动 WSL
- ✅ WSL 启动 → systemd 自动拉起 openclaw-node 服务
- ✅ 服务等待 Windows 盘符挂载 → 连接 Gateway → 节点上线
- ✅ 关闭终端不影响 WSL 和节点运行
- ✅ 文件读写权限正常,
/mnt/c/mnt/d等均可访问