OpenClaw 源码构建 的离线/内网部署方案
🚚第一阶段:在 Windows(宿主机)上准备资源
你需要先在 Windows 上下载好源码和构建镜像所需的基础文件。
1. 下载 OpenClaw 源码
OpenClaw 的 GitHub 仓库通常包含构建 Docker 镜像所需的 Dockerfile。
- 访问 GitHub:在 Windows 浏览器打开 OpenClaw GitHub 仓库。
- 下载源码:点击绿色的 Code 按钮 -> Download ZIP。
- 保存位置:假设你把它下载到了
D:\Downloads\openclaw-main.zip。
2. (关键) 准备基础镜像
OpenClaw 的 Dockerfile 通常基于 node:22-bookworm 或类似的 Linux 镜像。因为 WSL 无法联网拉取这个基础镜像,你必须在 Windows 上先把它拉下来,然后导出成文件。
打开 Windows PowerShell(非管理员即可),执行:
# 1. 拉取基础镜像 (请查看 OpenClaw 的 Dockerfile 第一行确认具体是哪个镜像,这里以 node:22 为例)
docker pull node:22-bookworm
# 2. 将该镜像导出为 tar 包
docker save -o D:\Downloads\base-node22.tar node:22-bookworm
📂 第二阶段:将文件传输进 WSL
我们需要把刚才下载的文件“搬运”到 WSL 的文件系统中。
- 打开 WSL 终端。
- 进入挂载目录:Windows 的磁盘通常挂载在
/mnt/下。# 进入 D 盘(假设你文件在 D 盘) cd /mnt/d/Downloads # 确认文件是否存在 ls # 你应该能看到 openclaw-main.zip 和 base-node22.tar - 复制到 WSL 家目录:
# 创建工作目录 mkdir -p ~/build_env cd ~ # 复制文件过来 cp /mnt/d/Downloads/openclaw-main.zip ~/build_env/ cp /mnt/d/Downloads/base-node22.tar ~/build_env/
🛠️ 第三阶段:在 WSL 内离线安装
现在回到 WSL 的纯离线环境中进行操作。
1. 导入基础镜像
既然 WSL 连不上网,我们就把刚才传进来的 tar 包加载到 Docker 里。
# 导入镜像
sudo docker load -i ~/build_env/base-node22.tar
# 验证是否导入成功
sudo docker images
# 此时你应该能看到 node:22-bookworm 在列表里
2. 解压源码
cd ~/build_env
# 安装 unzip (如果 WSL 极简安装没带这个命令,需 apt install unzip,若 apt 也挂了需同样方式下载 unzip 包)
unzip openclaw-main.zip
cd openclaw-main
3. 修改 Dockerfile (关键步骤)
因为基础镜像是你本地导入的,我们需要确保 Dockerfile 能识别它,并且切断构建过程中试图联网的行为(如 apt-get update 或 npm install)。
- 查看 Dockerfile:
cat Dockerfile - 修改策略:
- 确认基础镜像名称:确保
FROM node:22-bookworm这一行和你刚才导入的镜像名称一致。 - 关于依赖安装:如果
Dockerfile里有RUN npm install,在离线环境下一定会失败。- 解决方案:你需要在 Windows 上把
node_modules下载好(非常麻烦),或者修改 Dockerfile,注释掉联网下载的步骤,改为手动在 WSL 里安装依赖(见下文替代方案)。
- 解决方案:你需要在 Windows 上把
- 确认基础镜像名称:确保
💡 替代方案:直接在 WSL 内运行(推荐内网环境)
既然内网构建 Docker 镜像非常痛苦(主要是依赖包下载问题),在内网环境下,最稳妥 的方式其实是:不在 WSL 里构建镜像,而是直接在 WSL 里安装 Node.js 运行 OpenClaw。
这样可以完全绕过 Docker 的构建过程。
步骤如下:
-
在 Windows 下载 Node.js 离线包:
- 去 Node.js 官网下载 Linux 二进制包 (
.tar.xz),例如node-v22.x.x-linux-x64.tar.xz。 - 传到 WSL 的
/mnt/d/Downloads/。
- 去 Node.js 官网下载 Linux 二进制包 (
-
在 WSL 安装 Node.js:
cd /mnt/d/Downloads # 解压 tar -xf node-v22.*.tar.xz # 移动到新位置 sudo mv node-v22.* /usr/local/nodejs # 配置环境变量 (添加到 ~/.bashrc) echo 'export PATH=$PATH:/usr/local/nodejs/bin' >> ~/.bashrc source ~/.bashrc # 验证 node -v -
准备 OpenClaw 依赖 (最难点):
由于npm install需要联网,你在 WSL 里直接运行会报错。你有两个选择:- 选择 A (手动拷贝):在 Windows 上创建一个空文件夹,运行
npm install openclaw,把生成的node_modules文件夹整个复制到 WSL 的 OpenClaw 目录下。 - 选择 B (使用预编译包):如果 OpenClaw 提供预编译的二进制文件(Binary),直接下载运行即可,无需 npm。
- 选择 A (手动拷贝):在 Windows 上创建一个空文件夹,运行
总结建议
鉴于你是内网环境:
-
如果你必须用 Docker:
- Windows 下载源码 ZIP +
docker pull基础镜像并导出。 - WSL 导入基础镜像 -> 解压源码 -> 修改 Dockerfile (注释掉所有联网安装命令) ->
docker build。 - 警告:这通常会导致运行报错,因为缺少依赖包。
- Windows 下载源码 ZIP +
-
如果你只是想跑起来 (推荐):
- 放弃 Docker 构建。
- 在 Windows 下载好 Node.js Linux 版 和 OpenClaw 源码。
- 在 Windows 上把
node_modules依赖包下载全。 - 全部扔进 WSL,配置好 Node.js 路径,直接运行
node命令启动。
最核心的痛点是 npm install 的离线依赖包。如果公司内网没有私有 npm 仓库,建议找一台能上网的机器,把 node_modules 打好包,再拷贝进去。
更多推荐



所有评论(0)