Windows安装openClaw龙虾 wsl2 稳定安装版

Windows安装openClaw龙虾 wsl2 稳定安装版 项目下载项目地址 https://github.com/openclaw/openclawgithub代理https://blog.csdn.net/YXWik/article/details/149833678下载解压解压完成备用配置WSL2Windows先开启Hyper -v安装docker的时候开启过https://blog.csdn.net/YXWik/article/details/128254108wsl -l -v如果wsl命令没有可以手动安装下访问微软官方链接下载 网页链接下载后双击安装全程下一步无需修改安装完成后重启电脑如果没有Ubuntn子系统的就安装一下wsl --install安装过程中需要配置密码 记得注意下wsl --list --verbose如果版本是 1 就转一下wsl --set-version Ubuntu 2将 Ubuntu 设置为默认 WSL 发行版wsl --set-default UbuntuWSL 内安装 Node.js/pnpm# 1. 进入 WSL Ubuntu确保状态为 Running wsl -d Ubuntu # 2. 更新 WSL 软件源可选加速安装 sudo apt update sudo apt upgrade -y # 3. 安装 nvmWSL 版管理 Node 版本 3.1 编辑 resolv.conf 文件 sudo nano /etc/resolv.conf 3.2 在文件内添加国内公共 DNS比如阿里云 DNS以下内容添加进去 nameserver 223.5.5.5 nameserver 223.6.6.6 3.3 保存退出按 CtrlO → 回车 → CtrlX 3.4 防止 resolv.conf 被自动覆盖关键 sudo chattr i /etc/resolv.conf 3.5 安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash 如果nvm下载不下来的可以去代理站 [https://gitcode.com/GitHub_Trending/nv/nvm/blob/v0.39.7/install.sh](https://gitcode.com/GitHub_Trending/nv/nvm/blob/v0.39.7/install.sh) 手动下载下来运行 # 4. 刷新环境变量让 nvm 生效 source ~/.bashrc # 5. 安装和 Windows 同版本的 Node.js22.12.0 nvm install 22.12.0 # 6. 设置默认使用该版本 nvm alias default 22.12.0 nvm use 22.12.0 # 7. 验证 Node 版本应输出 v22.12.0 node -v # 8. 安装 pnpmWSL 版 npm install -g pnpm # 9. 验证 pnpm 版本应输出你的 pnpm 版本号 pnpm -v #10. 查看node位置 which node #11. 编辑全局环境变量配置文件 sudo nano /etc/profile #12. 在文件末尾添加一行替换成你的 node 路径 export PATH/home/administrator/.nvm/versions/node/v22.12.0/bin:$PATH # 13. 退出 WSL exit # 14. 重启wsl wsl --shutdown启动 Ubuntu 子系统wsl -d Ubuntu给 WSL 配置 GitHub 资源代理# 临时配置当前终端生效优先用国内 GitHub 镜像 export GITHUB_PROXYhttps://ghproxy.com/ export GITHUB_RELEASE_PROXYhttps://ghproxy.com/https://github.com/ # 把代理注入到 npm/pnpm 的环境中让 postinstall 脚本使用 export npm_config_github_proxy$GITHUB_PROXY export npm_config_registryhttps://registry.npmmirror.com # 生效配置 source ~/.bashrc复制项目到WLS中创建 projects 文件夹mkdir -p ~/projects进入该目录cd ~/projects将Windows上的项目复制到 WSL 的 ~/projects 下cp -r /mnt/d/Project/openClaw/openclaw-main ~/projects/进入项目目录cd openclaw-main/安装依赖编译原生模块的依赖如 Python、C 编译工具sudo apt update sudo apt install -y build-essential python3 make gpnpm installpnpm ui:buildpnpm build配置pnpm openclaw onboard --install-daemon我在第二次安装的时候执行配置命令发现报错 要求的node版本变成了 22.16.0 然后又升级了下版本临时配置 nvm 国内镜像加速 Node 下载export NVM_NODEJS_ORG_MIRRORhttps://npmmirror.com/mirrors/node安装 Node.js 22.16.0nvm install 22.16.0切换nvm use 22.16.0完事后再运行配置命令deepseek版deepseek 的API 自行更换自己的更改 baseUrl 这个理默认是本地的模型在线的需要改下base_url 设置为https://api.deepseek.com/v1配置完url后回车 选择 配置API的key 这个是在deepseek上申请的Model ID 输入deepseek-chatEndpoint ID 直接回车Model alias 输入deepseek-chat先跳过 选择 skip for now空格 回车 继续回车token复制出来token265038abd5240b1d1f81603873a341c10f9f4986bab54d33Hatch in TUI (recommended)在终端界面TUI启动纯命令行操作Open the Web UI打开网页界面Do this later稍后再启动。自己可以随便填叫我管理员时区东八区你是数字伙伴温暖专业emoji用退出后查看是否后台运行ps aux | grep openclaw配置自启动sudo nano /etc/systemd/system/openclaw-gateway.service[Unit] DescriptionOpenClaw Gateway Daemon # 网络就绪后再启动 Afternetwork.target Wantsnetwork.target [Service] Typeexec # 禁用进程分组避免子进程被误杀可选但推荐 KillModeprocess # 等待进程完全启动避免 systemd 误判退出 TimeoutStartSec30 # 替换为你的 WSL 用户名如当前是 administrator Useradministrator Groupadministrator # 替换为项目根目录 WorkingDirectory/home/administrator/projects/openclaw-main # ExecStart 替换为步骤 1 查到的完整启动命令示例 ExecStart/home/administrator/.nvm/versions/node/v22.12.0/bin/node /home/administrator/projects/openclaw-main/dist/index.js gateway --port 18789 --force # 如果找不到完整命令用通用启动命令 # ExecStart/home/administrator/.nvm/versions/node/v22.12.0/bin/npm run openclaw start # 进程崩溃/退出时自动重启 Restartalways # 重启间隔 5 秒 RestartSec5 # 启动超时时间 TimeoutSec30 # 日志输出 StandardOutputappend:/home/administrator/projects/openclaw-main/openclaw.log # 错误日志 StandardErrorappend:/home/administrator/projects/openclaw-main/openclaw-error.log [Install] # 多用户模式下自启 WantedBymulti-user.target保存退出按 CtrlO → 回车 → CtrlX。如果写错了可以修改或者删除错误的服务文件修改完需要重启服务命令在文末加载 systemd 配置sudo systemctl daemon-reload如果报错 System has not been booted with systemd as init system (PID 1). Cant operate. Failed to connect to bus: Host is down配置 WSL 启用 systemdsudo nano /etc/wsl.conf添加以下内容[boot] systemdtrue [user] defaultroot启用 systemd 之后需要重启wsl才能生效1. 关闭所有 WSL 终端窗口 2. 打开powerShell 执行 wsl --shutdown 3. 重新打开wsl终端 wsl -d Ubuntu 4. 再次加载 sudo systemctl daemon-reload如果还是不行 给大家换个方案放到文章后面目录 自启方案2立即启动服务sudo systemctl start openclaw-gateway设置开机 自启sudo systemctl enable openclaw-gateway检查服务状态确认运行正常sudo systemctl status openclaw-gateway启动完成后访问 http://127.0.0.1:18789/配置刚才复制的 token常见错误disconnected (1006)连接后报错disconnected (1006): no reason 是 WebSocket 连接的通用失败错误核心原因是WSL 2 网络隔离是根源 Windows 客户端 / 浏览器到 WSL 的 WebSocket 不通编辑文件nano ~/.openclaw/config.json粘贴以下内容 解决 WebSocket 跨域 / 监听的核心配置{ gateway: { port: 18789, address: 0.0.0.0, ws: { path: /ws, allowAllOrigins: true }, cors: { allowedOrigins: [*] } } }保存退出CtrlO→回车→CtrlX。重启sudo systemctl restart openclaw-gatewaydisconnected (4008)放宽 Control UI 的安全限制sudo nano ~/.openclaw/openclaw.json增加controlUi: { enabled: true, allowInsecureAuth: true, dangerouslyDisableDeviceAuth: true },保存退出CtrlO→回车→CtrlX。重启sudo systemctl restart openclaw-gateway其他命令修改文件sudo nano /etc/systemd/system/openclaw-gateway.service删除文件备用sudo rm /etc/systemd/system/openclaw-gateway.service重新加载 systemd 配置必做sudo systemctl daemon-reload立即启动服务无需重启 WSLsudo systemctl start openclaw-gateway立即重启服务sudo systemctl restart openclaw-gateway设置开机/重启 WSL 自启sudo systemctl enable openclaw-gateway检查服务状态确认运行正常sudo systemctl status openclaw-gateway停止服务立即终止 openclaw-gateway 进程sudo systemctl stop openclaw-gateway验证是否停止成功输出应为 inactive (dead)sudo systemctl status openclaw-gateway永久停止关闭自启 停止当前运行第一步停止当前运行的服务sudo systemctl stop openclaw-gateway第二步禁用自启重启 WSL 后不再自动启动sudo systemctl disable openclaw-gateway验证禁用结果输出应为 disabledsystemctl list-unit-files | grep openclaw-gateway强制停止服务卡死时用如果服务无法正常停止比如进程卡死可强制杀死进程方式 1通过 systemd 强制杀死sudo systemctl kill openclaw-gateway再停止服务sudo systemctl stop openclaw-gateway方式 2直接查找进程 ID 杀死兜底方案查找 openclaw 相关进程 IDps aux | grep openclaw-gateway | grep -v grep | awk {print $2}强制杀死进程替换为查到的 PIDsudo kill -9 进程ID自启方案2直接执行以下命令sudo bash -c cat /root/run-openclaw.sh EOF #!/bin/bash # OpenClaw Gateway 启动脚本WSL 专用基于 screen 稳定后台运行 set -e # 配置项根据实际情况调整 WORK_DIR/root/projects/openclaw-main NODE_PATH/root/.nvm/versions/node/v22.16.0/bin/node ENTRY_FILE$WORK_DIR/dist/index.js ARGSgateway --port 18789 --force LOG_FILE$WORK_DIR/openclaw.log ERROR_LOG_FILE$WORK_DIR/openclaw-error.log SCREEN_SESSIONopenclaw-gateway # 前置检查 echo 开始前置检查... # 检查 screen 是否安装 if ! command -v screen /dev/null; then echo ⚠️ screen 未安装正在自动安装... sudo apt update sudo apt install -y screen /dev/null 21 fi # 检查 node 路径是否正确 if [ ! -x $NODE_PATH ]; then echo ❌ 错误node 可执行文件不存在 → $NODE_PATH exit 1 fi # 检查入口文件是否存在 if [ ! -f $ENTRY_FILE ]; then echo ❌ 错误入口文件不存在 → $ENTRY_FILE exit 1 fi # 切换到工作目录 echo 切换到工作目录$WORK_DIR cd $WORK_DIR || { echo ❌ 工作目录不存在$WORK_DIR; exit 1; } # 停止旧进程 echo 停止旧的 OpenClaw 会话如果存在... if screen -ls | grep -q $SCREEN_SESSION; then screen -S $SCREEN_SESSION -X quit /dev/null 21 # 等待端口释放 sleep 1 # 强制清理残留进程防止端口占用 ps aux | grep -E [n]ode.*dist/index.js gateway | awk {print \$2} | xargs kill -9 /dev/null 21 || true echo ✅ 旧会话已停止 else echo ℹ️ 无旧会话需要停止 fi # 启动新进程 echo 启动 OpenClaw Gateway后台会话... # 用 screen 后台启动detached 模式退出终端不中断 screen -dmS $SCREEN_SESSION bash -c cd $WORK_DIR; $NODE_PATH $ENTRY_FILE $ARGS $LOG_FILE 2 $ERROR_LOG_FILE # 等待 2 秒检查会话是否创建成功 sleep 2 if screen -ls | grep -q $SCREEN_SESSION; then echo ✅ OpenClaw Gateway 启动成功 echo 日志文件: $LOG_FILE echo ❌ 错误日志: $ERROR_LOG_FILE echo 查看实时输出: screen -r $SCREEN_SESSION退出会话按 CtrlAD echo 停止服务: screen -S $SCREEN_SESSION -X quit else echo ❌ OpenClaw Gateway 启动失败 echo 错误日志最后 10 行 tail -10 $ERROR_LOG_FILE exit 1 fi EOF赋予执行权限sudo chmod x /root/run-openclaw.sh启动 OpenClawsudo /root/run-openclaw.sh查看实时输出:screen -r openclaw-gateway 退出会话按 CtrlAD停止服务:screen -S openclaw-gateway -X quit检查进程是否运行ps aux | grep -E “node.*gateway”检查端口是否监听验证服务启动netstat -tulpn | grep 18789设置「开机 / 终端启动」自动运行执行以下命令将启动命令添加到 bash 配置文件echo # 自动启动 OpenClaw Gateway if ! ps aux | grep -qE [n]ode.*dist/index.js gateway; then /root/run-openclaw.sh fi /root/.bashrc立即生效配置source /root/.bashrc解决只能localhost访问 不能ip访问问题配置nginxnginx.conf 配置如下#user root; worker_processes 1; #error_log C:/nginx-1.18.0/logs/error.log warn; #pid /var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #client_body_temp_path C:/nginx-1.18.0/temp/client_body_temp; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 18789; listen [::]:18789; # 关闭 Nginx 本身的跨域限制 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Credentials true; add_header Access-Control-Allow-Methods *; add_header Access-Control-Allow-Headers *; # 处理 OPTIONS 预检请求跨域必需 if ($request_method OPTIONS) { return 204; } location / { # 核心1转发到本地服务 proxy_pass http://localhost:18789; # 核心2伪装所有请求头为 localhost proxy_set_header Host localhost:18789; proxy_set_header Origin http://localhost:18789; proxy_set_header Referer http://localhost:18789; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 核心3WebSocket 全兼容配置 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_read_timeout 86400; # 长连接不超时 proxy_connect_timeout 60s; proxy_send_timeout 60s; } } }配置完启动 nginx2. 修改源码进入项目下wsl -d Ubuntu cd ~/projects/openclaw-main/有两处修改第一处nano ./src/gateway/origin-check.ts// 原始代码大概第 62 行 // return { ok: false, reason: origin not allowed }; // 修改后强制允许所有 origin return { ok: true };第二处nano ./src/gateway/server/ws-connection/message-handler.ts找到if (!originCheck.ok) 整块都注释掉定位代码nano打开文件后按CtrlW输入!originCheck.ok回车直接跳转到这段代码添加注释开头 把光标移到if (!originCheck.ok) {这行的最前面输入/*添加注释结尾把光标移到return; 下一行的 }后面输入*//* if (!originCheck.ok) { const errorMessage origin not allowed (open the Control UI from the gateway host or allow it in gat; markHandshakeFailure(origin-mismatch, { origin: requestOrigin ?? n/a, host: requestHost ?? n/a, reason: originCheck.reason, }); sendHandshakeErrorResponse(ErrorCodes.INVALID_REQUEST, errorMessage); close(1008, truncateCloseReason(errorMessage)); return; } */保存退出按CtrlO→回车确认文件名 →CtrlX退出 nano。在 nano 编辑文件中 可以使用 Ctrl W 输入搜索内容 回车 进行搜索 下一个匹配项 Alt W 继续搜索下一个结果保存后重新编译重启项目pnpm build pnpm ui:build sudo /root/run-openclaw.sh启动之后就可以使用ip进行访问了