ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenClaw完整部署指南:从安装到开机自启的WSL2实践

OpenClaw完整部署指南:从安装到开机自启的WSL2实践 1. 为什么要在 WSL2 里跑 OpenClaw以及这套方案适合谁OpenClaw 是一个本地优先的 AI 网关服务它把模型调用、插件、Web UI 和 API 统一收口到一个进程里默认监听127.0.0.1:18789。你可以在浏览器里打开它的 Dashboard也可以用 HTTP 请求直接调它的接口。它本身是 Node.js 写的官方推荐跑在 Linux 环境里而 Windows 用户最省事的做法就是 WSL2 Ubuntu。我自己的主力机是 Windows 11平时写代码、跑脚本都在 WSL2 里但每次开机都要手动敲一遍wsl再systemctl --user start时间一长就烦。这篇要解决的就是这件事从零把 OpenClaw 装进 WSL2 Ubuntu再配好开机自启让 Windows 一启动它就在后台跑着浏览器直接访问http://127.0.0.1:18789/就能用。适合谁看手上是 Windows 10/11、已经或准备用 WSL2、想让 OpenClaw 常驻本地服务的人。如果你只是偶尔跑一次、用完就关那其实不用折腾自启直接openclaw gateway start就行。但如果你把它当成日常工具比如接自己的模型 Key、给本地脚本提供统一入口那开机自启就是刚需。这里有个概念要先说清楚WSL2 不是传统虚拟机它不会在 Windows 启动时自动把所有 Linux 服务拉起来。systemd 的用户级服务需要有人触发。所以「开机自启」实际上是两层配合——Windows 层用任务计划程序在开机后触发一个 PowerShell 脚本脚本再进 WSL 执行systemctl --user start。理解这一点后面排错会顺很多。环境要求不复杂Windows 10 2004 或 Windows 11WSL2不是 WSL1Ubuntu 20.04/22.04/24.04 都行Node.js 22.16 以上推荐 24.x。内存 8GB 以上会比较舒服磁盘留 20GB。下面从装 WSL2 开始一步步来。2. 前置准备WSL2、Ubuntu 与 Node.js 环境搭建这一节把地基打好。如果你 WSL2 和 Ubuntu 已经装好了可以跳到 2.3 看 Node.js。2.1 启用 WSL2 并安装 Ubuntu以管理员身份打开 PowerShell执行下面两条启用功能然后重启dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart Restart-Computer重启后回来把默认版本设为 WSL2再装 Ubuntuwsl --set-default-version 2 wsl --list --online wsl --install -d Ubuntu-24.04装完会提示重启重启后首次进入 Ubuntu 会让你创建 UNIX 用户名和密码。这个用户名和密码记牢后面配 linger 和 systemd 都要用。装好后验证一下lsb_release -a正常会输出Ubuntu 24.04 LTS和Codename: noble。如果wsl --version显示的还是 WSL1用wsl --set-version Ubuntu-24.04 2转过来。2.2 更新系统并装基础工具进 Ubuntu 终端先更新再装编译工具OpenClaw 的部分依赖需要编译sudo apt update sudo apt upgrade -y sudo apt install -y curl git build-essential python3 make g cmake2.3 安装 Node.js 24.xOpenClaw 要求 Node.js 22.16用 NodeSource 装 24.x 最省事curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - sudo apt-get install -y nodejs node --version npm --versionnode --version应该输出v24.x.x。如果你机器上要管理多个 Node 版本用 nvm 也行但自启场景下我更推荐系统级安装路径稳定systemd 服务里不用额外 source 环境。2.4 安装 OpenClaw两种方式官方脚本或 npm。官方脚本会自动处理一些依赖curl -fsSL https://openclaw.ai/install.sh | bash如果不想跑 onboarding 引导加--no-onboardcurl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboardnpm 方式npm install -g npmlatest npm install -g openclawlatest openclaw onboard --install-daemon装完验证openclaw --version openclaw doctor openclaw gateway statusgateway status正常会显示Gateway: running和Listening: 127.0.0.1:18789。到这一步OpenClaw 本体就跑起来了。3. 可复制配置systemd 用户服务与 Windows 自启脚本这一节是核心把「开机自启」拆成 WSL 层和 Windows 层两块配置。所有片段都可以直接复制。3.1 WSL 层systemd 用户服务OpenClaw 安装时通常会自动创建用户级服务文件位置在~/.config/systemd/user/openclaw-gateway.service。先确认它存在ls ~/.config/systemd/user/openclaw-gateway.service systemctl --user status openclaw-gateway.service如果服务显示disabled手动启用并启动systemctl --user enable openclaw-gateway.service systemctl --user start openclaw-gateway.service systemctl --user status openclaw-gateway.service关键一步是开启 linger让用户级服务在你没登录 WSL 时也能跑loginctl enable-linger $(whoami) loginctl show-user $(whoami) | grep Linger输出必须是Lingeryes。这是开机自启能不能成的分水岭很多人卡在这里。3.2 Windows 层启动脚本在 Windows 上建一个目录比如F:\OpenClaw_Installed\新建启动OpenClaw.ps1# OpenClaw WSL Startup Script $ErrorActionPreference Continue $WSLDistro Ubuntu-24.04 $LogPath $env:USERPROFILE\OpenClaw-Startup.log function Write-Log { param([string]$Message) $Timestamp Get-Date -Format yyyy-MM-dd HH:mm:ss Add-Content -Path $LogPath -Value [$Timestamp] $Message Write-Host $Message } try { Write-Log Starting OpenClaw... $result wsl -d $WSLDistro -- bash -c export XDG_RUNTIME_DIR/run/user/$(id -u) systemctl --user start openclaw-gateway.service 21 Write-Log Start result: $result Start-Sleep -Seconds 3 $status wsl -d $WSLDistro -- bash -c export XDG_RUNTIME_DIR/run/user/$(id -u) systemctl --user is-active openclaw-gateway.service 21 Write-Log Service status: $status Write-Host SUCCESS: OpenClaw is running! -ForegroundColor Green Write-Host Access at: http://127.0.0.1:18789/ -ForegroundColor Cyan } catch { Write-Log Error: $_ exit 1 }注意XDG_RUNTIME_DIR这行不导出它systemctl --user在非交互式调用里会报错这是踩过的坑。3.3 Windows 层任务计划程序再建一个创建任务计划程序.ps1以管理员身份运行$TaskName OpenClaw WSL AutoStart $ScriptPath F:\OpenClaw_Installed\启动OpenClaw.ps1 $DelaySeconds 30 $trigger New-ScheduledTaskTrigger -AtStartup $trigger.Delay PT${DelaySeconds}S $action New-ScheduledTaskAction -Execute PowerShell.exe -Argument -NoProfile -ExecutionPolicy Bypass -File $ScriptPath -WorkingDirectory F:\OpenClaw_Installed $settings New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -DontStopOnIdleEnd Register-ScheduledTask -TaskName $TaskName -Trigger $trigger -Action $action -Settings $settings -Description Start OpenClaw WSL service at Windows startup -User SYSTEM | Out-Null Get-ScheduledTask -TaskName $TaskName | Format-List Name, State延迟 30 秒是给 WSL 初始化留时间机器慢的话改成 60 秒更稳。4. 验证请求从 WSL 到 Windows 浏览器的完整链路配置写完必须验证不然重启后才发现没起来就白折腾了。4.1 WSL 内验证服务systemctl --user is-enabled openclaw-gateway.service # 期望: enabled systemctl --user is-active openclaw-gateway.service # 期望: active openclaw gateway statusgateway status里应该能看到bindloopback (127.0.0.1), port18789。4.2 手动触发 Windows 任务在 PowerShell 里手动跑一次任务看日志Start-ScheduledTask -TaskName OpenClaw WSL AutoStart Start-Sleep -Seconds 10 Get-Content $env:USERPROFILE\OpenClaw-Startup.log -Tail 20日志里出现Service status: active和SUCCESS就对了。4.3 浏览器访问打开 Windows 浏览器访问http://127.0.0.1:18789/。Windows 11 22H2 默认有 localhost 转发直接能开。Windows 10 或旧版本如果打不开用端口转发$wslIP wsl hostname -I netsh interface portproxy add v4tov4 listenport18789 listenaddress0.0.0.0 connectport18789 connectaddress$wslIP New-NetFirewallRule -DisplayName OpenClaw WSL -Direction Inbound -LocalPort 18789 -Protocol TCP -Action Allow4.4 重启终验Restart-Computer等 40-60 秒直接开浏览器访问http://127.0.0.1:18789/。能打开就说明整条链路通了。这一步过了后面基本不用再管它。5. 本篇常见错排查401、local proxy failed 与 OAuth 报错这一节按真实报错来遇到对号入座。5.1 401 Unauthorized如果你在 OpenClaw 里配了模型调用报 401 通常是 Key 没生效或环境变量没读到。检查~/.openclaw/.envcat ~/.openclaw/.env chmod 600 ~/.openclaw/.envKey 要写对改完重启服务systemctl --user restart openclaw-gateway.service。如果你用的是 TaoToken 这类统一网关Base URL 和 Key 要配套别混用。5.2 local proxy failed这个报错一般出现在服务启动阶段说明 OpenClaw 尝试连本地代理端口失败。先看日志journalctl --user -u openclaw-gateway.service -p err -n 50常见原因是端口被占。查一下ss -tlnp | grep 18789如果被别的进程占了改 OpenClaw 的监听端口或者把占用进程停掉。5.3 reading choices 报错这个通常出现在调用模型接口返回体解析时说明返回的不是预期 JSON。先确认 Base URL 指向正确再确认 Model ID 写对。三件套要齐Base URL、Key、Model ID。缺一个都可能解析失败。5.4 OAuth 相关报错如果你接的是需要 OAuth 的服务报错多半是 token 过期或回调地址不对。重新走一遍授权流程确认回调地址和你在服务端登记的一致。5.5 开机后服务没起来按顺序查Get-ScheduledTask -TaskName OpenClaw WSL AutoStart Get-ScheduledTaskInfo -TaskName OpenClaw WSL AutoStart Get-Content $env:USERPROFILE\OpenClaw-Startup.log -Tail 50如果任务状态是 Ready 但服务没起多半是 linger 没开或 WSL 发行版名字写错。验证wsl -d Ubuntu-24.04 -- bash -c loginctl show-user $(whoami) | grep Linger不是Lingeryes就重新loginctl enable-linger $(whoami)。5.6 systemctl 报 not booted with systemd说明 WSL 里 systemd 没开。编辑/etc/wsl.conf[boot] systemdtrue然后wsl --shutdown再进。6. 接入 TaoToken把模型调用统一收口到本地网关OpenClaw 跑起来之后真正让它有用的是接上模型。我自己的做法是把模型调用统一走 TaoToken这样 Key 管理、模型切换都在一个地方OpenClaw 这边只配一个 Base URL 就行。6.1 获取 API Key先去 TaoToken 控制台创建 API Key。地址是https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentopenclaw_wsl2utm_campaignrewrite。创建完复制 Key只显示一次存好。6.2 配置 OpenClaw 的模型接入在~/.openclaw/.env里写入OPENAI_API_KEY你的TaoToken_Key OPENAI_BASE_URLhttps://taotoken.net/api如果你用的是 Claude Code 或 Codex 这类工具配置方式类似Base URL 都指向https://taotoken.net/apiKey 用同一个。Model ID 按你实际要调的模型填比如claude-sonnet-4-20250514或gpt-4o具体以文档为准。6.3 验证模型调用改完重启服务systemctl --user restart openclaw-gateway.service openclaw gateway status然后在 Dashboard 里发一条测试消息或者用 curl 直接打接口curl http://127.0.0.1:18789/v1/chat/completions \ -H Content-Type: application/json \ -d {model:gpt-4o,messages:[{role:user,content:ping}]}返回正常 JSON 就说明链路通了。如果报 401回去检查 Key如果报 model not found检查 Model ID。6.4 长期编码场景如果你打算把 OpenClaw 当成日常编码和 Agent 的入口可以考虑 TaoToken 的 Coding Plan模型调用额度更划算。地址https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentopenclaw_wsl2utm_campaignrewrite。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentopenclaw_wsl2utm_campaignrewrite里面有各工具的完整配置示例。6.5 日常维护命令服务跑起来后日常就这几条systemctl --user status openclaw-gateway.service systemctl --user restart openclaw-gateway.service journalctl --user -u openclaw-gateway.service -f openclaw gateway statusWindows 侧Get-ScheduledTask -TaskName OpenClaw WSL AutoStart Start-ScheduledTask -TaskName OpenClaw WSL AutoStart Get-Content $env:USERPROFILE\OpenClaw-Startup.log -Tail 20更新 OpenClaw 用npm update -g openclawlatest更新完重启服务。备份的话把~/.openclaw和~/.config/systemd/user/openclaw-gateway.service拷出来就行。整套配下来重启后浏览器直接开http://127.0.0.1:18789/就能用不用再手动进 WSL 敲命令。如果哪一步卡住先看日志日志里基本都写了原因。
返回列表