最近我把OpenClaw在Ubuntu上完整跑通了,整个部署过程比想象中曲折一些,但理清思路后其实就是几条主线:系统环境准备、依赖安装、主程序部署、模型配置、验证启动。OpenClaw是一个把大模型变成真正“能干活的助手”的智能体运行环境,它不再只是聊天窗口,而是能读你文件、执行命令、调API、操作电脑桌面的Agent框架。这篇教程我就是按自己在Ubuntu 22.04/24.04上的实操记录来写的,包含每一步为什么要这么做、做了什么、遇到问题怎么排查。不管你是想在物理机、VMware虚拟机还是云服务器上跑,这套流程都能用,Windows用户想在虚拟机里体验OpenClaw也适合照这篇来。
1. 部署前先想清楚:OpenClaw在Ubuntu上到底需要装什么
1.1 OpenClaw解决什么问题
很多人第一次看到OpenClaw会以为它又是一个聊天软件,其实不是。它的定位是“模型+工具+执行策略”的组合体,你可以把它理解成一个给AI装上手脚的终端环境:模型负责理解和决策,工具层负责实际执行,比如操作文件系统、运行Shell命令、调用HTTP API、控制鼠标键盘。
这意味着OpenClaw本身不产生模型能力,真正负责“思考”的是背后接的大模型。所以在Ubuntu上部署OpenClaw,核心其实是两件事:把OpenClaw这个框架跑起来,把它和某个模型服务(云端API或本地模型)对接好。就想通这一点,后面看配置就不会乱。
1.2 为什么推荐Ubuntu而不是Windows
我一开始其实是在Windows上跑的,后来换到Ubuntu才觉得舒服。原因很实际:
- Linux的用户权限和进程管理更干净,OpenClaw要执行Shell命令、读写文件,在Linux下权限边界非常清晰,不会动不动弹UAC。
- 日志、配置、数据目录都有规范位置,排查问题比Windows直观。
- Ubuntu对Docker的支持更好,而Docker在后面接本地模型、跑插件沙箱时非常重要。
- 如果你的OpenClaw要长期运行,Ubuntu服务器可以通过SSH远程管理,Windows桌面版在这方面就没那么顺手。
当然,Windows也不是不能装,官方也提供Windows安装方式,只是我体验下来,Ubuntu这条路最顺。VMware里装Ubuntu的话,我更推荐把网络模式设为桥接或NAT,后面SSH连接、拉取依赖包都不容易踩坑。
1.3 整体架构和安装路径
在动手之前,我先说清楚OpenClaw在Ubuntu上大概依赖哪些组件,这样你不会在安装过程中一头雾水:
- OpenClaw主程序:官方提供安装脚本,多数情况下装的是编译好的二进制,部署在用户目录如
~/.openclaw。 - Node.js:部分辅助工具、扩展插件依赖Node生态,建议提前装好,版本20以上比较稳。
- Python:OpenClaw的很多工具链和内置脚本是Python写的,建议系统Python 3.10+。
- Docker:不是启动OpenClaw的硬性条件,但如果你要接NVIDIA NIM、跑隔离环境、部署本地模型,Docker基本绕不开。
有人会问,为什么不能一条命令装完所有东西?因为OpenClaw更像一个可扩展的平台,真正常用的组件取决于你接什么模型、跑什么任务。先装核心,再把需要的扩展补上,这是我实际体验下来最不容易出错的顺序。
2. 环境准备与依赖安装:最容易翻车的环节
2.1 系统基础检查和账号准备
我在Ubuntu 24.04上部署成功过,22.04 LTS也验证过没问题。先确认系统版本和架构:
lsb_release -a uname -m如果是x86_64或arm64架构就没问题,OpenClaw对于常见的x86服务器支持最好。内存方面,如果只接云端API,4GB内存就够;如果还要跑Ollama或NIM本地模型,内存16GB起步,显存则看模型规模。
如果你是在VMware虚拟机里装Ubuntu,我建议给虚拟机至少2核CPU、4GB内存、30G磁盘。官方Ubuntu镜像从官网iso直接下载就行,桌面版和服务器版都可以,但服务器版资源占用更少,跑OpenClaw更干净。
系统装好后第一步是确保当前用户有sudo权限。你可能会看到网上有人问“Ubuntu怎么切换超级管理员”,就是那个意思。Ubuntu默认root没有密码,日常操作用sudo -i可以临时切到root环境;真想给root设密码就执行sudo passwd root,但日常运行OpenClaw不推荐用root,普通用户加sudo就够了。
2.2 基础依赖:curl、git、编译工具链
这一步看似简单,但很多安装脚本失败就是卡在基础工具缺失上。我先跑一遍:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl wget git ca-certificates build-essentialbuild-essential是编译工具链,有些npm包或Python扩展需要本地编译,没有它会报gcc找不到之类的错。装完顺手验证一下版本:
curl --version git --version gcc --version如果你的apt源是默认官方源,在国内网络环境下可能很慢甚至超时。这时候可以先换国内镜像源,再来执行apt update。换源本质就是把/etc/apt/sources.list或/etc/apt/sources.list.d/ubuntu.sources里的地址换掉。这一步不是必须的,但实际体验差别非常大,建议网络慢的先做。
2.3 Node.js和Python版本选择
OpenClaw主程序本身可能不强制要求本机装Node.js,但它的很多子命令、插件、以及基于Node的工具链会在运行时用到。我实际踩过的坑是系统自带Node版本太旧,装插件时直接报语法错误。
推荐用NodeSource源的LTS版本:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs或者你更习惯用nvm管理Node版本,也可以:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash nvm install 20Python方面Ubuntu 22.04自带Python 3.10,24.04自带3.12,都够用。千万别手动去卸载系统自带Python,很多系统工具依赖它,删了会出大问题。
2.4 安装Docker:后面接本地模型和插件都要用
“Ubuntu安装docker”这个词搜索量很高,确实也是部署OpenClaw过程中很多人卡住的地方。Docker在OpenClaw体系里主要干两件事:跑容器化插件做沙箱隔离,跑本地模型服务比如NVIDIA NIM。
安装Docker CE的推荐方式是用官方仓库:
sudo apt install -y ca-certificates curl gnupg lsb-release sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装完成后把当前用户加进docker组,免得每次执行docker命令都要sudo:
sudo usermod -aG docker $USER newgrp docker docker run hello-world注意一下,usermod之后要重新登录或者用newgrp docker让组权限生效,否则你会遇到“docker: permission denied”这个经典错误。我当初就是在这里卡了十分钟,后来才发现没重连SSH。
2.5 防火墙和SSH:远程部署前先做好功课
如果你是在云服务器或远程主机上部署,SSH连不上就是第一道坎。热搜词里“ubuntu ssh无法连接”出现频率很高,核心排查点有三个:openssh-server是否安装、22端口是否被防火墙拦截、SSH服务是否在运行。
sudo apt install -y openssh-server sudo systemctl enable --now ssh sudo ufw allow 22/tcp sudo ufw enable如果你用的是VMware NAT模式,还要在虚拟机网络设置里把宿主机的某个端口映射到虚拟机的22端口,否则从宿主机SSH进不去。
3. 核心实操:OpenClaw安装部署全流程
3.1 下载安装主程序
OpenClaw官方推荐用脚本安装,在终端执行:
curl -fsSL https://openclaw.ai/install.sh | bash安装脚本会把主程序放到~/.openclaw目录下,然后提示你添加PATH。这一步很多人会忽略,结果安装完执行openclaw提示“command not found”,以为装失败了。其实不是,只是PATH没设置。
脚本输出里一般会提示你执行类似下面这句,或者自动写入~/.bashrc:
echo 'export PATH="$HOME/.openclaw/bin:$PATH"' >> ~/.bashrc source ~/.bashrc然后验证版本:
openclaw --version如果你不想用官方安装脚本,也可以去GitHub Releases手动下载对应的Linux二进制包,解压到/usr/local/bin或你的自定义目录。但手动方式要自己管理依赖,脚本方式省心很多,我推荐先用脚本。
3.2 初始化和目录结构
安装完成后,~/.openclaw目录会自动生成。我建议你先跑一下初始化命令:
openclaw init这个命令会生成本地配置文件。OpenClaw的配置目录结构大致是这样的(以我实际部署后的目录为例):
~/.openclaw/ ├── bin/ ├── config/ │ └── openclaw.json ├── workspace/ ├── skills/ ├── logs/ └── exec-approvals.json这里每个目录都有讲究:
workspace:OpenClaw执行任务时的工作目录,相当于它“干活的地方”。热搜词里出现过workspace: c:\users\administrator\.openclaw\workspace,说明Windows版也有同样的目录设计。你可以把常用项目文件放这里,让OpenClaw快速访问。skills:技能目录,放插件或自定义技能。logs:运行日志,后面排查问题全靠它。exec-approvals.json:执行权限审批记录。OpenClaw在让模型执行有风险的操作前,会先申请批准,这个文件就是记录批准状态的。热词里那句“legacy exec approvals exist at /root/.openclaw/exec-approvals.json”指的就是这个文件。
3.3 配置模型API
openclaw本身不绑定特定模型,你需要告诉它接哪个模型服务。以接Claude为例,最常用的是通过环境变量注入API密钥:
export ANTHROPIC_API_KEY="你的key"如果用的是OpenAI兼容接口,就要配置OPENAI_API_KEY和OPENAI_BASE_URL,这地方要注意base_url一般要写到/v1结尾。你可以把环境变量写进~/.bashrc,也可以直接改配置文件。
打开~/.openclaw/config/openclaw.json,典型配置长这样(简化版):
{ "model": { "provider": "anthropic", "model": "claude-3-5-sonnet-latest", "apiKeyEnvVar": "ANTHROPIC_API_KEY" }, "execution": { "workspace": "~/.openclaw/workspace", "requireApproval": true } }如果你是第一次使用,我的建议是先用云端模型(比如Claude)跑通全流程,不要一上来就折腾本地模型。等OpenClaw能正常干活了,再切换本地模型也不迟。
3.4 启动服务与验证
配置完成后,直接在终端执行:
openclaw就会进入OpenClaw的交互界面。你可以试着让它执行一个简单命令,比如查看当前目录、读取某个文件。OpenClaw会向你展示它准备执行的操作,并请求批准,批准后它会在workspace里实际执行。
配合--headless或服务模式,可以让OpenClaw在后台常驻。如果是在服务器上,我更推荐把它注册成systemd服务,开机自启,日志统一管理。systemd服务文件大概这么写:
[Unit] Description=OpenClaw Agent After=network.target [Service] User=你的用户名 Environment="ANTHROPIC_API_KEY=你的key" ExecStart=/home/你的用户名/.openclaw/bin/openclaw --headless Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target保存到/etc/systemd/system/openclaw.service,然后:
sudo systemctl daemon-reload sudo systemctl enable --now openclaw sudo systemctl status openclaw这样OpenClaw就在后台跑起来了,日志通过journalctl -u openclaw -f查看,比挂着终端省心太多。
4. 接入本地模型与扩展技巧
4.1 为什么要接本地模型
云端API模型能力强,但数据都要发到外部,且每次调用都有费用。本地模型的好处是数据不出机器、离线可用、没有按token计费的压力。很多人部署OpenClaw后就想接Ollama或NVIDIA NIM,我也是这么折腾过来的。
不过这里要先泼一盆冷水:通用小模型在工具调用上经常犯迷糊,比如看不懂该传什么参数,或把文件名幻觉出来。我实测下来,要接本地模型至少用7B~14B参数级别的指令微调模型,且要选工具调用能力强的。太小或纯对话模型体验会很糟糕。
4.2 配置Ollama本地模型
Ollama是目前最简单的方式。先装Ollama:
curl -fsSL https://ollama.com/install.sh | sh然后拉取模型,比如qwen2.5系列的指令模型:
ollama pull qwen2.5:14b-instruct ollama serve默认情况下Ollama监听11434端口,并且提供OpenAI兼容接口:http://localhost:11434/v1。所以OpenClaw里只要把模型的provider或base_url指过去就行:
{ "model": { "provider": "openai-compatible", "baseUrl": "http://localhost:11434/v1", "model": "qwen2.5:14b-instruct", "apiKey": "ollama" } }注意apiKey字段,Ollama默认不校验key,可以随便填一个占位符。这个方案是社区里很成熟的做法,适合没独显但内存比较大的机器。
4.3 配置NVIDIA NIM
NVIDIA NIM是另一个热词,它把优化的推理服务打包成容器,GPU利用率高,效果也稳定。前提是你有NVIDIA显卡,并且装好驱动和容器支持。
先装好nvidia-container-toolkit:
sudo apt install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker然后拉一个NIM容器。以Llama 3系列为例:
docker run -d --rm \ --name llama-nim \ --gpus all \ -p 8000:8000 \ -e NIM_HTTP_API_KEY=你的key \ nvcr.io/nim/meta/llama3-70b-instruct:latest启动后NIM在localhost:8000提供OpenAI兼容接口,OpenClaw这边配置:
{ "model": { "provider": "openai-compatible", "baseUrl": "http://localhost:8000/v1", "model": "meta/llama3-70b-instruct", "apiKey": "你的key" } }NIM的镜像体积大、显存要求也高,70B模型纯37B权重就有140G+,普通消费级卡根本跑不动。建议先查清楚你自己显卡型号,再决定用哪个规格的NIM镜像。
4.4 安装skill和扩展能力
OpenClaw的魅力在于可扩展。“openclaw使用本地ollama如何安装skill”这类问题就是关于扩展的。Skill相当于给OpenClaw的“技能手册”,让它知道在什么场景下调什么工具、按什么流程完成任务。
skill一般是目录结构,放在~/.openclaw/skills/下:
skills/ └── my-skill/ ├── SKILL.md └── scripts/SKILL.md描述这个技能是什么、适用场景、执行步骤。OpenClaw在遇到相关任务时,会把skill内容作为上下文的一部分喂给模型,让它知道该怎么干。
如果你想偷懒,可以从ClawHub之类的社区获取现成skill。热词里有关“openclaw跟clawhub的区别”的问题,我理解ClawHub是OpenClaw的技能/插件分发社区,类似软件源;OpenClaw本体是运行框架,ClawHub是扩充它能力的仓库。一个回答是“运行基础+扩展源”的关系。
另外热词里还有“openclaw接入飞书”“openclaw微信”这些需求,本质上都是通过写skill或配置webhook,把OpenClaw接进IM平台,让对话消息转发给OpenClaw处理。这一步属于进阶玩法,等基础部署跑通后再研究更稳妥。
5. 常见问题排查与避坑实录
5.1 command not found / PATH不生效
很多人在安装时执行openclaw提示“无法将openclaw项识别为 cmdlet”,在Ubuntu下则是bash: openclaw: command not found。两个平台原因一样:安装目录没加进PATH。
先确认OpenClaw装到哪里了:
ls ~/.openclaw/bin/如果有openclaw文件,就把PATH加上。Windows的话是系统环境变量Path里加C:\Users\你的用户名\.openclaw\bin;Ubuntu是加~/.bashrc,别忘了source ~/.bashrc。这个问题的根源不是安装失败,而是当前Shell没找到可执行文件,所以别急着重装。
5.2 Ubuntu SSH无法连接
排查顺序:先看服务状态systemctl status ssh,再看防火墙sudo ufw status,最后看监听端口ss -tlnp | grep 22。遇到过最隐蔽的坑是VMware虚拟机装完Ubuntu,网络模式是NAT,宿主机根本ping不同虚拟机,SSH自然连不上。解决方式是在VMware的NAT设置里做端口转发,把宿主机的2222端口映射到虚拟机22端口,然后ssh -p 2222 用户@127.0.0.1。或者更省事,把网络模式改成桥接,让虚拟机直接拿局域网IP。
5.3 Docker权限被拒绝
现象是docker inspect或docker ps报错“permission denied”。解法在上面已经提到了:把用户加进docker组,然后重新登录。
注意的是,SSH会话里只有当次连接生效的是旧权限,newgrp docker只能临时让当前终端生效,最保险的方式是断开SSH重连。
5.4 exec-approvals.json相关报错
这个坑我觉得值得单独拿出来说。升级OpenClaw或切换运行用户后,有可能看到类似这样的提示:
legacy exec approvals exist at /root/.openclaw/exec-approvals.json. run `openclaw migrate` or move it to ~/.config/openclaw/...意思是旧版本生成的执行审批文件还在老位置,新版本可能换了读取路径,或者文件格式升级了。最稳妥的办法是按提示执行迁移命令,比如openclaw migrate;如果确认不需要保留历史审批记录,备份后删掉这个文件再重新运行也可以。别直接忽略,因为审批文件丢失可能导致OpenClaw在需要执行危险命令时反复要求授权,体验很差。
5.5 模型API报401/404/400
- 401一般是API key错误,检查环境变量是否真的传进去了,可以用
env | grep API确认。 - 404一般是base_url路径不对,OpenAI兼容接口通常要求以
/v1结尾。 - 400则大概率是模型名写错,比如模型中带了版本号但实际不存在。
这类问题在Ollama和NIM上尤其常见,因为不同模型的命名规则不一样。最直接的验证方式是用curl手动调一次接口:
curl http://localhost:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"qwen2.5:14b-instruct","messages":[{"role":"user","content":"hi"}]}'能正常返回就说明接口没问题,问题一定出在OpenClaw配置这一层。
5.6 想卸载OpenClaw怎么办
热词里有“openclaw卸载”。卸载其实很简单:
rm -rf ~/.openclaw但如果你把它注册了systemd服务,得先停掉:
sudo systemctl stop openclaw sudo systemctl disable openclaw sudo rm /etc/systemd/system/openclaw.service sudo systemctl daemon-reload再把~/.bashrc里的PATH配置删掉就行。Windows下也是类似,删目录、清理环境变量、若有服务则删除。
最后的几点体会
这套流程我从零开始折腾了两天,最深的感受是:OpenClaw本身安装并不难,难的是“环境”两个字。PATH没配好、Docker权限不对、模型API地址写错,每一个看起来都是小事,但串起来能卡住人很久。所以我强烈建议,部署时每一步都验证一次结果,不要想着“先全装完再一起调”。
如果你是在家里找一台老Ubuntu机器部署,后续可以继续研究两个扩展方向:一是把它注册成systemd服务做成常驻Agent,通过HTTP接口或IM机器人远程调用;二是把它和本地NAS、代码仓库连起来,让Agent能处理你日常的自动化任务。OpenClaw这个项目迭代很快,但底层这套“模型+工具+审批”的架构在Ubuntu上是稳定的,值得投入时间研究。