1. OpenClaw for macOS本地部署全记录
最近在技术社区看到不少关于OpenClaw的讨论,作为一个长期在macOS环境下工作的开发者,我决定尝试在本地部署这个工具。经过一周的折腾和踩坑,终于成功搭建了完整的运行环境。本文将详细记录从零开始部署OpenClaw的全过程,包括环境准备、依赖安装、配置调优以及常见问题的解决方案。
OpenClaw是一个基于Node.js开发的工具集,主要用于自动化工作流和数据处理。它特别适合需要处理大量结构化数据的场景,比如数据分析、爬虫开发等。在macOS上部署时,需要注意系统版本兼容性、Node.js环境配置以及权限管理等细节。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 系统要求检查
首先确认你的macOS系统版本至少为10.15 (Catalina)或更高。我使用的是macOS Monterey 12.6,这也是目前比较稳定的一个版本。可以通过"关于本机"查看系统信息:
code复制系统版本: macOS Monterey 12.6
处理器: Apple M1 Pro
内存: 16GB
注意:如果是Intel芯片的Mac,部分依赖可能需要额外配置。M系列芯片的用户建议使用Rosetta 2兼容模式运行。
2.2 Node.js环境搭建
OpenClaw要求Node.js版本≥16.0.0。推荐使用nvm(Node Version Manager)来管理多个Node版本:
bash复制# 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
# 安装指定Node版本
nvm install 16.20.2
nvm use 16.20.2
验证安装:
bash复制node -v # 应显示v16.20.2
npm -v # 应显示8.x.x
如果遇到npm: command not found错误,可能是PATH配置问题。在~/.zshrc(或~/.bashrc)中添加:
bash复制export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
2.3 其他依赖安装
OpenClaw需要Python 3.8+作为部分组件的运行时:
bash复制brew install python@3.10
对于M1/M2芯片用户,可能需要额外安装:
bash复制arch -x86_64 brew install python@3.10
3. OpenClaw安装与配置
3.1 获取项目代码
推荐从官方仓库克隆最新代码:
bash复制git clone https://github.com/openclaw/openclaw.git
cd openclaw
如果网络不稳定,可以使用镜像源:
bash复制git clone https://gitee.com/mirrors/openclaw.git
3.2 依赖安装
进入项目目录后执行:
bash复制npm install --force
重要提示:如果遇到
npm ERR! code EACCES权限错误,不要使用sudo!正确的做法是:
- 执行
npm config get prefix查看npm全局安装路径- 将该路径的所有权改为当前用户:
bash复制sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
3.3 配置文件调整
复制示例配置文件并修改:
bash复制cp config.example.json config.json
主要需要修改的配置项:
json复制{
"port": 8080,
"database": {
"host": "localhost",
"port": 5432,
"username": "openclaw_user",
"password": "your_secure_password"
},
"logging": {
"level": "debug"
}
}
4. 数据库配置
4.1 PostgreSQL安装
推荐使用Docker运行PostgreSQL:
bash复制docker run --name openclaw-db -e POSTGRES_PASSWORD=yourpassword -p 5432:5432 -d postgres:14
或者通过Homebrew安装:
bash复制brew install postgresql@14
brew services start postgresql@14
4.2 数据库初始化
创建数据库和用户:
bash复制psql -U postgres -c "CREATE USER openclaw_user WITH PASSWORD 'yourpassword';"
psql -U postgres -c "CREATE DATABASE openclaw_db OWNER openclaw_user;"
psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE openclaw_db TO openclaw_user;"
执行数据迁移:
bash复制npx sequelize-cli db:migrate
5. 启动与验证
5.1 启动服务
开发模式启动:
bash复制npm run dev
生产模式启动:
bash复制npm start
5.2 验证服务
访问http://localhost:8080/api/status应该返回:
json复制{
"status": "ok",
"version": "1.0.0"
}
6. 常见问题解决
6.1 端口冲突
如果遇到Error: listen EADDRINUSE: address already in use :::8080,可以:
- 修改config.json中的端口号
- 或者找出占用端口的进程并终止:
bash复制lsof -i :8080
kill -9 <PID>
6.2 数据库连接失败
检查:
- PostgreSQL服务是否运行
- config.json中的数据库配置是否正确
- 用户是否有连接权限:
bash复制psql -U postgres -c "SELECT usename, usesysid FROM pg_user;"
6.3 NPM依赖安装失败
尝试:
- 清除缓存后重试:
bash复制npm cache clean --force
rm -rf node_modules package-lock.json
npm install
- 使用淘宝镜像:
bash复制npm config set registry https://registry.npmmirror.com
7. 性能优化建议
7.1 内存配置
在config.json中调整:
json复制{
"performance": {
"maxOldSpaceSize": 4096
}
}
启动时指定内存:
bash复制NODE_OPTIONS="--max-old-space-size=4096" npm start
7.2 集群模式
利用多核CPU:
bash复制npm install -g pm2
pm2 start ecosystem.config.js
示例ecosystem.config.js:
javascript复制module.exports = {
apps: [{
name: 'openclaw',
script: 'app.js',
instances: 'max',
exec_mode: 'cluster',
env: {
NODE_ENV: 'production'
}
}]
}
8. 日常维护
8.1 日志管理
配置日志轮转:
bash复制npm install -g winston-daily-rotate-file
修改config.json:
json复制{
"logging": {
"transports": [
{
"type": "dailyRotateFile",
"filename": "logs/application-%DATE%.log",
"datePattern": "YYYY-MM-DD",
"zippedArchive": true,
"maxSize": "20m",
"maxFiles": "14d"
}
]
}
}
8.2 自动备份
使用pg_dump自动备份数据库:
bash复制0 2 * * * pg_dump -U openclaw_user -d openclaw_db -f /backups/openclaw_$(date +\%Y\%m\%d).sql
9. 安全加固
9.1 HTTPS配置
生成自签名证书:
bash复制openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365
修改config.json:
json复制{
"ssl": {
"key": "path/to/key.pem",
"cert": "path/to/cert.pem"
}
}
9.2 防火墙规则
只允许必要端口:
bash复制sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/bin/node
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/bin/node
10. 升级与卸载
10.1 升级OpenClaw
bash复制git pull origin main
npm install
npx sequelize-cli db:migrate
10.2 完全卸载
- 停止服务
- 删除数据库:
bash复制psql -U postgres -c "DROP DATABASE openclaw_db;"
psql -U postgres -c "DROP USER openclaw_user;"
- 删除项目目录
- 可选:卸载Node.js
bash复制nvm uninstall 16.20.2
在实际部署过程中,我发现M1芯片的Mac在编译某些原生模块时需要特别处理。一个实用的技巧是在安装依赖前设置:
bash复制export npm_config_arch=x64
这样可以强制使用x64架构编译,避免兼容性问题。另外,定期执行npm outdated检查依赖更新也很重要,但升级前务必在测试环境验证兼容性。
