WSL2安装OpenClaw完整指南:Windows环境配置与常见问题解决
在Windows系统上部署OpenClaw,官方推荐的首选方案是借助WSL2,特别是Ubuntu发行版。这一建议的核心逻辑在于,OpenClaw的CLI工具与网关组件是专为Linux环境设计的。通过WSL2部署,能够获得与原生Linux完全一致的运行时环境,确保Node.js、Bun、pnpm等工具链以及各类Linux二进制文件和技能插件无缝兼容,从根本上规避了在原生Windows上可能遭遇的复杂依赖和兼容性问题。
如今,在Windows上配置一个功能完整的Linux子系统已变得极其便捷,只需在PowerShell中执行一条命令:wsl --install。这为后续的安装扫清了障碍。需要指出的是,截至当前,官方的原生Windows应用程序仍在开发中。
建议在开始前,你已具备基础的计算机操作知识,并对Ubuntu命令行有初步了解,这将使安装过程更为高效。另外请注意,若需在WSL中调用Windows宿主机的浏览器,配置步骤会相对繁琐。
1. 安装准备 (WSL2)
1.1 安装Linux发行版
若你的Windows尚未启用WSL功能,这是必须完成的第一步。已安装的用户可跳过此节。
wsl --install
运行上述命令后,Windows将自动启用必要的虚拟化功能,并默认安装Ubuntu发行版。
如需查阅更详尽的配置说明,请访问微软官方文档:Install WSL | Microsoft Learn。
安装完成后,首次启动Ubuntu终端时,系统会提示你创建新的用户名和密码,请妥善保管这些凭据。
如果太久不用,密码忘记了怎么办?
无需担心,可通过以下流程重置密码。请将命令中的 替换为你的实际发行版名称(例如 Ubuntu)。
首先,以root权限启动该发行版:
wsl -d -u root
登录后,使用 passwd 命令为指定用户账户更新密码:
passwd
1.2 启用 systemd
OpenClaw的守护进程依赖于systemd进行生命周期管理。WSL默认可能未激活此服务,需手动开启。在Ubuntu终端中执行以下配置命令:
sudo tee /etc/wsl.conf >/dev/null <<'EOF'
[boot]
systemd=true
EOF
1.3 重启WSL
配置变更后,需要重启WSL以加载systemd服务。
在Windows PowerShell中运行关闭命令:
wsl --shutdown
随后重新打开Ubuntu终端,验证systemd用户服务是否已成功启动:
systemctl --user status
2. 安装 OpenClaw
基础环境配置完毕,现在可以安装OpenClaw核心组件。官方提供了便捷的一键安装脚本,在Ubuntu终端中直接运行:
curl -fsSL https://openclaw.ai/install.sh | bash
3. 安装并启用网关服务
主程序安装完成后,需将OpenClaw网关部署为系统服务,以实现后台持续运行与自动管理:
openclaw onboard --install-daemon
服务安装后,立即检查其运行状态以确认部署成功:
openclaw gateway status
4. 配置开机自动启动(适用于服务器场景)
此步骤为可选配置,主要面向需要将设备作为常驻服务器使用的场景,确保服务在系统启动后、用户登录前即可自动运行。
在WSL中配置
首先,授权当前用户的系统服务在未登录状态下保持活动:
sudo loginctl enable-linger "$(whoami)"
openclaw gateway install
在Windows PowerShell中配置
接下来,在Windows层面创建一项计划任务,确保系统启动时自动初始化WSL环境。请将 替换为你的发行版名称。
schtasks /create /tn "WSL Boot" /tr "wsl.exe -d --exec /bin/true" /sc onstart /ru SYSTEM
验证配置是否成功
返回WSL环境,执行以下命令验证网关服务已启用且运行正常:
systemctl --user is-enabled openclaw-gateway
systemctl --user status openclaw-gateway --no-pager
5. 将WSL内的服务暴露给外部网络
这同样是面向服务器部署的高级功能。若你需要从局域网内的其他计算机访问WSL中运行的服务(例如OpenClaw网关、SSH服务或本地TTS服务器),则必须设置端口转发。
WSL运行在独立的虚拟网络栈上,其IP地址在每次重启后可能发生变化。因此,我们需要将Windows主机上的一个固定端口,动态映射到WSL内部服务的对应端口。
添加端口映射规则
以管理员身份启动Windows PowerShell,运行以下脚本。请根据你的实际网络环境修改变量值(例如,目标端口 $TargetPort 通常对应OpenClaw网关的默认端口18789)。
$Distro = "Ubuntu-24.04"
$ListenPort = 18000
$TargetPort = 18789
$WslIp = (wsl -d $Distro -- hostname -I).Trim().Split(" ")[0]
if (-not $WslIp) { throw "WSL IP not found." }
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$ListenPort `
connectaddress=$WslIp connectport=$TargetPort
添加Windows防火墙入站规则
端口映射创建后,还需在Windows防火墙中开放对应端口的入站连接。此规则通常只需配置一次。
New-NetFirewallRule -DisplayName "WSL SSH $ListenPort" -Direction Inbound `
-Protocol TCP -LocalPort $ListenPort -Action Allow
WSL重启后刷新端口转发
鉴于WSL的IP地址可能变动,每次WSL重启后,都需要更新端口转发规则中的目标IP。建议将以下命令保存为脚本,便于后续执行。
netsh interface portproxy delete v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 | Out-Null
netsh interface portproxy add v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 `
connectaddress=$WslIp connectport=$TargetPort | Out-Null
