1. 项目概述
OpenClaw是一个基于Node.js的开源项目,它提供了强大的自动化能力和扩展性。与直接使用预编译包不同,从源码安装可以让你获得最新功能、自定义构建选项以及更深入的理解项目架构。我最近在CentOS 7系统上完成了完整的源码安装过程,这里将详细记录每个关键步骤。
源码安装相比二进制包安装有几个显著优势:首先能确保使用最新代码;其次可以针对特定环境优化编译参数;最重要的是能完整掌握项目依赖关系。不过这也意味着需要处理更多环境配置问题,特别是Node.js版本管理、构建工具链配置等。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备
2.1 系统要求
OpenClaw对运行环境有明确要求:
- 操作系统:Linux(推荐Ubuntu 20.04+/CentOS 7+)或WSL2
- Node.js版本:≥22.22.3且<23,或≥24.15.0且<25,或≥25.9.0
- 内存:至少4GB(复杂任务建议8GB+)
- 磁盘空间:10GB可用空间
注意:Node.js版本必须严格匹配要求,否则会导致安装失败。我最初使用Node 18时遇到了模块兼容性问题。
2.2 基础工具安装
首先安装必要的开发工具:
bash复制# Ubuntu/Debian
sudo apt update && sudo apt install -y git curl build-essential python3 make g++
# CentOS/RHEL
sudo yum groupinstall -y "Development Tools" && sudo yum install -y git curl python3
验证git安装:
bash复制git --version
# 应输出类似 git version 2.25.1
3. Node.js环境配置
3.1 使用nvm管理Node版本
推荐使用nvm(Node Version Manager):
bash复制curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc
安装指定版本Node.js:
bash复制nvm install 24.15.0
nvm use 24.15.0
验证安装:
bash复制node -v
npm -v
3.2 配置npm镜像(国内用户)
加速依赖下载:
bash复制npm config set registry https://registry.npmmirror.com
npm config set disturl https://npmmirror.com/dist
4. 获取OpenClaw源码
4.1 克隆仓库
使用git克隆主仓库:
bash复制git clone https://github.com/openclaw/openclaw.git
cd openclaw
如果需要特定分支:
bash复制git checkout -b dev origin/dev
4.2 子模块初始化
OpenClaw使用了git子模块:
bash复制git submodule init
git submodule update
5. 依赖安装
5.1 pnpm安装
OpenClaw推荐使用pnpm:
bash复制npm install -g pnpm
验证pnpm:
bash复制pnpm -v
若出现"pnpm不是内部命令"错误,需手动添加PATH:
bash复制echo 'export PATH=$PATH:~/.npm-global/bin' >> ~/.bashrc
source ~/.bashrc
5.2 安装项目依赖
使用pnpm安装依赖:
bash复制pnpm install
常见问题处理:
- 网络超时:设置pnpm镜像
bash复制pnpm config set registry https://registry.npmmirror.com - 权限问题:添加--unsafe-perm参数
bash复制
pnpm install --unsafe-perm
6. 构建与配置
6.1 编译项目
执行构建命令:
bash复制pnpm run build
构建过程可能持续5-15分钟,取决于机器性能。构建完成后检查dist目录是否生成。
6.2 环境变量配置
创建.env文件:
bash复制cp .env.example .env
关键配置项:
code复制NODE_ENV=development
PORT=3000
OPENCLAW_DATA_DIR=/path/to/data
7. 运行与验证
7.1 启动服务
开发模式启动:
bash复制pnpm run dev
生产模式启动:
bash复制pnpm start
7.2 访问验证
服务默认运行在3000端口,访问:
code复制http://localhost:3000
检查日志确认无报错:
bash复制tail -f logs/openclaw.log
8. 常见问题排查
8.1 Node版本不兼容
错误特征:
code复制Error: Module did not self-register
解决方案:
- 确认Node版本符合要求
- 删除node_modules重新安装
bash复制rm -rf node_modules pnpm install
8.2 原生模块编译失败
错误特征:
code复制gyp ERR! stack Error: `make` failed with exit code: 2
解决方案:
- 确保已安装build-essential/gcc
- 检查Python版本是否为3.x
- 设置npm编译参数:
bash复制npm config set python python3
8.3 端口冲突
错误特征:
code复制Error: listen EADDRINUSE: address already in use :::3000
解决方案:
- 修改.env中的PORT值
- 或终止占用进程:
bash复制lsof -i :3000 kill -9 <PID>
9. 生产环境部署建议
9.1 使用PM2进程管理
安装PM2:
bash复制pnpm add -g pm2
启动服务:
bash复制pm2 start pnpm --name "openclaw" -- start
设置开机启动:
bash复制pm2 startup
pm2 save
9.2 日志管理
配置日志轮转:
bash复制pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
9.3 性能调优
调整Node.js参数:
bash复制pm2 restart openclaw --node-args="--max-old-space-size=4096"
10. 后续维护
10.1 更新代码
拉取最新代码:
bash复制git pull origin main
pnpm install
pnpm run build
pm2 restart openclaw
10.2 备份数据
关键目录:
- ~/.openclaw/ (配置文件)
- OPENCLAW_DATA_DIR (数据文件)
建议定期备份这些目录。
10.3 监控设置
基础监控命令:
bash复制pm2 monit # 实时监控
pm2 logs # 查看日志
pm2 list # 查看进程状态
我在实际部署中发现,保持Node.js版本与项目要求严格一致是最关键的因素。曾经因为使用了一个小版本号差异的Node.js导致难以诊断的模块加载错误。建议使用nvm精确控制版本,并在不同环境保持版本一致。
