最近在本地Ubuntu服务器上折腾OpenClaw的部署,发现这个工具确实挺有意思。作为一个开源的AI助手框架,OpenClaw最大的特点就是支持本地化部署,不需要依赖云端服务就能运行。这对于注重数据隐私或者需要离线使用的场景特别友好。
整个部署过程涉及Python虚拟环境搭建、Node.js环境配置、OpenClaw核心安装以及Web UI访问等多个环节。虽然官方文档已经比较详细,但在实际操作中还是遇到了不少坑,特别是在服务器重启后的服务恢复和端口转发这块。下面就把我的完整部署过程和踩坑经验分享给大家。
首先我们需要创建一个独立的Python虚拟环境,这样可以避免与其他项目的依赖冲突。我推荐使用conda来管理环境,因为它不仅能管理Python版本,还能很好地处理不同环境下的依赖关系。
bash复制conda create -n openclaw_env python=3.10
conda activate openclaw_env
这里选择Python 3.10是因为OpenClaw的一些依赖包在这个版本上兼容性最好。如果使用太新的Python版本(比如3.11+),可能会遇到一些依赖冲突的问题。
注意:如果系统没有安装conda,可以先安装Miniconda。Ubuntu下可以使用以下命令:
bash复制wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh
OpenClaw对Node.js版本有严格要求,必须使用22.x或更高版本。这里推荐使用nvm(Node Version Manager)来管理Node.js版本,这样可以很方便地切换不同版本的Node.js。
首先安装nvm:
bash复制curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
安装完成后需要让配置生效。可以执行以下命令或者直接重启终端:
bash复制export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
然后安装Node.js 22:
bash复制nvm install 22
nvm use 22
验证安装是否成功:
bash复制node -v
npm -v
如果看到类似v22.x.x的版本号输出,说明安装正确。
常见问题:如果遇到nvm命令找不到的情况,可能是shell配置文件没有自动加载。可以尝试手动将nvm初始化命令添加到~/.bashrc或~/.zshrc文件中。
有了Node.js环境后,就可以安装OpenClaw了。推荐使用npm全局安装:
bash复制npm install -g openclaw@latest
安装完成后验证版本:
bash复制openclaw --version
如果能看到版本号输出(比如1.2.3),说明安装成功。
注意:如果遇到权限问题,可以在命令前加上sudo,或者按照npm的推荐方式修正npm全局安装目录的权限。
OpenClaw提供了一个方便的onboard命令来引导完成初始配置:
bash复制openclaw onboard --install-daemon
这个命令会启动一个交互式配置向导。根据我的经验,以下几个配置点需要特别注意:
安装类型选择:建议选择"Custom Install",这样可以自定义安装本地LLM模型。
服务器IP设置:输入你的Ubuntu服务器的IP地址。如果是本地测试,可以使用127.0.0.1。
模型选择:根据你的硬件配置选择合适的模型。如果服务器性能一般,建议选择较小的模型如GPT-2或较小的LLaMA变体。
端口配置:默认会使用18789端口,确保这个端口没有被其他服务占用。
配置过程可能会持续几分钟到几十分钟不等,具体时间取决于你的网络速度和选择的模型大小。
由于OpenClaw的Web UI默认绑定到127.0.0.1,我们需要通过SSH端口转发来从本地访问。在本地计算机上执行:
bash复制ssh -N -L 18789:127.0.0.1:18789 ubuntu@你的服务器ip
这个命令会在本地18789端口和服务器18789端口之间建立隧道。命令执行后会提示输入服务器密码,输入后窗口会保持空白状态,这是正常的,不要关闭这个窗口。
提示:如果觉得每次都要输入密码麻烦,可以配置SSH密钥认证。先在本地生成密钥对,然后把公钥添加到服务器的~/.ssh/authorized_keys文件中。
端口转发建立后,在本地浏览器中输入:
code复制http://localhost:18789
如果配置正确,你应该能看到OpenClaw的登录界面。首次访问时,系统会显示一个包含token的URL,格式如下:
code复制http://localhost:18789/#/token=xxxxxxxxxxxx
把这个URL保存下来,以后访问时可以直接使用它,不需要再次获取token。
服务器重启后,OpenClaw服务不会自动启动,需要手动操作:
bash复制ssh ubuntu@服务器IP地址
bash复制openclaw start
服务启动后,终端会输出新的Dashboard链接(包含最新Token),格式如下:
code复制http://127.0.0.1:18789/#/token=*******************
bash复制ssh -N -L 18789:127.0.0.1:18789 ubuntu@服务器IP地址
code复制http://localhost:18789/#/token=你的最新Token
如果只是本地计算机重启而服务器没有重启,恢复起来更简单:
bash复制ssh -N -L 18789:127.0.0.1:18789 ubuntu@服务器IP地址
code复制http://localhost:18789/#/token=*****************
可以通过以下命令检查OpenClaw服务是否正常运行:
bash复制ssh ubuntu@服务器IP地址 "openclaw status"
如果服务正常运行,会显示类似下面的输出:
code复制OpenClaw is running (PID: 12345)
Gateway: http://127.0.0.1:18789
如果服务没有运行,可以尝试重启:
bash复制ssh ubuntu@服务器IP地址 "openclaw restart"
如果遇到端口被占用的情况(特别是18789端口),可以:
bash复制sudo lsof -i :18789
如果要修改OpenClaw端口,可以在启动时指定:
bash复制openclaw start --port 新的端口号
记得在端口转发命令中也使用相同的端口号。
如果遇到模型加载失败的问题,可以尝试:
检查网络连接,确保能正常访问模型下载源。
清理缓存后重新下载:
bash复制openclaw clean --models
openclaw onboard
根据服务器配置,可以调整以下参数优化性能:
在配置时选择适合你硬件的模型大小。如果内存不足,选择较小的模型。
调整并行处理数:
bash复制openclaw start --workers 2
bash复制openclaw start --device cuda
OpenClaw支持集成自定义的本地LLM模型。要添加自定义模型:
将模型文件放在~/.openclaw/models目录下
创建或修改~/.openclaw/config.json,添加模型配置:
json复制{
"models": {
"my_custom_model": {
"path": "/path/to/your/model",
"type": "gguf",
"description": "My custom model"
}
}
}
除了Web UI,OpenClaw还提供REST API接口。可以通过以下方式访问:
bash复制curl -X POST http://localhost:18789/api/v1/chat \
-H "Authorization: Bearer your_token" \
-H "Content-Type: application/json" \
-d '{"message": "Hello, how are you?"}'
API返回格式为JSON,方便与其他应用集成。
OpenClaw的日志默认输出到~/.openclaw/logs目录。查看最新日志:
bash复制tail -f ~/.openclaw/logs/openclaw.log
如果遇到问题,可以通过增加日志级别获取更多信息:
bash复制openclaw start --log-level debug
Token保护:Dashboard的访问token相当于密码,不要泄露给他人。
防火墙配置:确保服务器的防火墙只允许可信IP访问SSH端口(默认22)和OpenClaw端口(如18789)。
定期更新:关注OpenClaw的版本更新,及时升级以获取新功能和安全性修复:
bash复制npm update -g openclaw
在实际使用中,我发现OpenClaw的本地部署方案确实提供了很好的隐私保护和定制灵活性。虽然初始配置过程稍显复杂,但一旦正常运行后非常稳定。特别是在内网环境中,响应速度明显快于云端方案。对于需要处理敏感数据或者有特定定制需求的项目,这套方案值得考虑。