华为云部署OpenClaw:从零到生产级智能体保姆级教程

发布时间:2026/10/6 5:19:49
华为云部署OpenClaw:从零到生产级智能体保姆级教程 1. 从“本地折腾”到“云端常驻”为什么我建议在华为云上部署OpenClaw先聊点实际的。如果你已经接触过OpenClaw社区里也叫Clawdbot大概率经历过这么几个阶段一开始在本地电脑上装装完发现依赖一堆Python版本对不上Node.js环境又闹脾气好不容易跑起来了电脑一合盖、网络一切断机器人就“失联”了再后来想挂个定时任务、接个Webhook发现本地IP根本没法让外部服务稳定回调。这时候你就知道把这套东西搬到云服务器上不是“炫技”而是刚需。我这次用的是华为云服务器操作系统选的Ubuntu 22.04 LTS配置是2核4G。说实话OpenClaw这玩意儿对硬件要求不算高2核4G跑日常的Agent任务、Skill调用、多轮对话管理都够用4核8G会更从容一点尤其是你要并发处理多个会话或者跑一些比较重的Harness场景时。但入门阶段2核4G完全能撑住先把流程跑通再考虑升配。这篇文章面向的是真正想动手的同学——不管你是第一次接触OpenClaw还是已经在本地方案里折腾过但没成功只要你能照着命令复制粘贴大概率都能在半小时内把服务跑起来。我会把整个流程拆成三层来讲第一层是云服务器的基础准备第二层是OpenClaw核心服务安装与配置第三层是让它长期稳定运行、能对外提供服务的收尾工作。中间会穿插我踩过的坑和排查思路希望能帮你少走弯路。2. 云服务器基础准备买机器、开端口、装环境一气呵成2.1 选择华为云服务器时的几个关键决策点华为云的入口就不啰嗦了控制台里“弹性云服务器”就是我们要买的东西。选配置的时候有几个容易被忽略的点我单独拎出来说。第一个是操作系统版本。我强烈建议选Ubuntu 22.04 LTS别选CentOS或者Alibaba Cloud Linux。为什么因为OpenClaw的很多依赖包比如Python 3.10、Node.js 18在Ubuntu 22.04的官方源里直接就有装起来不用编译省时间也少踩坑。你如果非要选CentOS后面编译Python或者装一些系统库的时候心态容易崩。第二个是公网带宽。入门级选1Mbps就行但如果你的OpenClaw要对接外部Webhook、接收图片或者频繁调用在线API1M可能会成为瓶颈。我的建议是最低5Mbps费用差不了多少但体验完全不一样。实测下来5M带宽拉取模型响应流式输出时体感明显更流畅。第三个是安全组规则。这是新手最容易忽略的一步。华为云默认的安全组只开放了22端口SSH你如果不手动加规则就算服务在服务器上监听3000端口外部也永远访问不到。后面我会专门讲端口开放但你在购买时最好就把安全组的规则规划一下。2.2 基础环境安装Python、Node.js、Git一个都不能少服务器拿到手第一步是SSH连上去。Windows用户可以用PowerShell自带的ssh命令或者直接用XshellMac用户直接Terminal就行。登录之后先更新系统包索引这一步能避免后面装依赖时出现404或者版本过旧的问题sudo apt update sudo apt upgrade -y接下来装基础工具链sudo apt install -y git curl wget unzip build-essential然后就是重头戏——Python和Node.js。OpenClaw的核心服务对Python版本有要求太老或者太新都可能出问题。Ubuntu 22.04自带的Python是3.10这是我验证过的稳定版本。检查一下python3 --version如果输出是3.10.x那就直接用系统的Python不用装Miniconda。如果你之前装了Miniconda或者Anaconda建议把base环境的PATH理清楚不然一会儿用系统的pip、一会儿用conda的pip很容易出现“装上了但import不到”的灵异事件。Node.js这边OpenClaw的Companion组件后面会用到需要Node 18。Ubuntu 22.04的默认源里Node版本比较老我推荐用NodeSource的源来装curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs装完验证一下node --version npm --version两个命令都有输出说明环境基本齐了。这里有个细节不要用apt直接装nodejs那装出来的是老版本后面跑OpenClaw的Windows Companion或者某些Skill的Node脚本时一堆兼容性问题等着你。2.3 安全组与防火墙配置让外部流量能进来这一步很重要但也特别容易出错。很多人在服务器上把服务启动了本地浏览器却死活打不开页面十有八九是安全组没放行。华为云控制台里找到你的云服务器实例点“安全组”然后“配置规则”。你需要添加两条入方向规则协议端口用途TCP22SSH远程连接一般默认有TCP3000OpenClaw主服务端口按需调整如果你后面要用HTTPS域名访问还得预留443端口如果用Nginx做反向代理80端口也别忘。开放端口的原则是“最小授权”——只开你实际要用的端口别图省事放行全部端口。除了云平台的安全组服务器自己的防火墙也要看看。Ubuntu默认没开ufw但你可以确认一下sudo ufw status如果显示inactive那就不用管如果active记得放行上面那几个端口sudo ufw allow 22/tcp sudo ufw allow 3000/tcp另外补充一点如果你打算用HTTP协议直接暴露服务而不是走HTTPS建议至少加上一个Token认证或者配合IP白名单。OpenClaw自带的一些接口如果不做保护很容易被扫描器盯上。这个后面在配置章节会细说。3. OpenClaw项目获取与依赖安装从源码到可运行的完整链路3.1 源码获取Git克隆的速度优化与目录规划OpenClaw的代码托管在GitHub上国内服务器直接git clone时速度时好时坏有时候几十KB/s一个仓库拉半天。我的做法是配置Git的代理或者用镜像加速。推荐一个稳妥方案先用git clone直连试试如果速度惨不忍睹可以临时挂一个加速前缀。这里不是让你搞什么特殊网络工具纯国内CDN加速服务就行比如把仓库地址替换成一些公共的GitHub镜像域名。具体镜像地址不固定搜索“GitHub镜像”就能找到不少选一个速度稳定的。仓库路径不需要我在这里赘述避免链接失效你在OpenClaw的官方文档或社区里能找到最新的仓库地址。克隆后进入目录cd openclaw3.2 虚拟环境与依赖安装不要污染系统PythonOpenClaw的依赖列表里有很多包直接往系统Python里pip install短期内没问题但后续升级Python或者装其他项目时容易冲突。我建议用venv创建独立的虚拟环境python3 -m venv venv source venv/bin/activate激活后你会看到命令行前面多了(venv)前缀。接下来升级pip并安装依赖pip install --upgrade pip pip install -r requirements.txt如果requirements.txt不存在那可能项目是用pyproject.toml管理依赖的那就用pip install -e .这一步会拉取大量的依赖包。国内服务器访问PyPI可能有点慢稳妥的做法是临时换用清华或者阿里云的PyPI镜像pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt镜像源的选择也有讲究清华源同步频率高阿里云源速度快两个都行看你的网络情况。装完之后最好记录一下关键包的版本比如openai、fastapi、uvicorn这些后面排查问题时会用到。3.3 Node.js依赖与Companion组件额外的那一半拼图OpenClaw从某个版本开始把一部分能力拆到了Node.js侧叫Companion主要负责WebSocket通信、一些前端资源服务和系统级交互。也就是说光装Python依赖还不够你要把Node那边的依赖也装上才能跑完整功能。在项目根目录下如果有package.json文件那就说明需要npm安装npm install如果项目是前后端分离的可能还要进到特定子目录去安装。具体看项目结构。装完之后用npm run build如果有这个脚本来生成产物。这里有个我常犯的错Python和Node的依赖必须都装完再启动服务不要只装一半就去试运行。否则服务起来后某些Skill的接口会报500错误而且日志里不直接告诉你“缺少Node依赖”只会显示“模块未找到”之类的模糊错误排查起来非常费劲。3.4 配置文件初探从示例文件起步理解每个参数的意义安装完依赖后项目目录下应该有一个.env.example或者config.example.yaml之类的文件。复制一份出来作为正式配置cp .env.example .env然后编辑.env。关键内容一般包括API密钥如果你要对接大模型服务比如OpenAI、Anthropic或国内的大模型接口需要在这里填API Key和Base URL。服务端口默认是3000。日志级别建议先设成DEBUG跑通了再改回INFO。一个常见的坑是很多人把API Key直接填在代码里结果不小心提交到公开仓库密钥泄露。正确的做法是始终用.env文件并且把.env加入.gitignore。4. 第一次启动与本地验证从“进程起来”到“服务可用”4.1 启动服务前端跑起来不等于后端ready依赖装好、配置填完终于到了启动环节。在虚拟环境激活的状态下执行python main.py或者如果你用的是启动脚本bash start.sh看到类似“Uvicorn running on http://0.0.0.0:3000”的日志说明主服务起来了。这时候先别急着高兴验证要从两个层面做。第一层是本机自测在服务器上直接curlcurl http://localhost:3000/health如果返回{status:ok}之类的JSON说明服务本身没毛病。第二层是外部访问自测在你自己的电脑浏览器里打开http://服务器公网IP:3000。如果打不开先别怀疑服务按顺序排查安全组有没有放行3000端口服务器防火墙有没有开服务有没有监听0.0.0.0而不是127.0.0.1很多默认配置会把监听地址写成本地回环地址导致外网无法访问这是新手最常踩的坑。4.2 配置模型API没有密钥一切都是空谈OpenClaw作为一个智能体框架核心玩法是让大模型驱动它执行任务。所以你不光要把服务跑起来还得让它能够调用大模型API。在配置文件里找到类似model_provider的部分填入你的API Key和模型名称。这里我特别强调如果你没有OpenAI官方的Key完全可以用国内的大模型API替代。OpenClaw的接口设计比较友好通常允许你通过base_url参数指向任意兼容的API端点很多国内大模型服务都提供OpenAI兼容格式的接口。填完之后重启服务然后在后台管理界面或者通过API发一条简单的消息看看模型是否能正常回复。如果报401或者403检查Key是不是复制错了如果报超时检查服务器到API服务商的网络连通性如果报模型不存在检查模型名称是否和你的API服务商匹配。4.3 Skill机制初体验让Agent真正“干活”OpenClaw最吸引人的地方是它的Skill体系。简单理解Skill就是给Agent预置的能力模块比如“搜索网页”“调用工具”“处理文件”“执行代码”等。在配置好模型API之后我建议你做的第一件事就是启用一个最简单的Skill比如“echo”或者“当前时间查询”目的不是玩而是验证Skill的加载链路是否正常。启用Skill的方式通常是修改配置文件里的skills列表或者在管理界面上切换。改完配置需要重启服务。重启后给Agent发条消息“帮我看看现在几点了”它如果正确调用Skill并返回时间结果说明整个“意图识别 - 技能路由 - 执行 - 回复”的闭环已经打通。这是你在云上的第一个完整Agent任务值得有点仪式感。5. 系统服务化让OpenClaw脱离SSH窗口也能长期运行5.1 用systemd守护进程停止手动nohup的日子很多人习惯了nohup python main.py 这种土办法但说实话不推荐用在云服务器上。原因很简单一旦进程崩溃不会自动重启服务器重启后服务也不会自动拉起。对生产环境来说这等于没有保障。用systemd来管理服务才是正经做法。创建一个service文件sudo vim /etc/systemd/system/openclaw.service内容参考如下[Unit] DescriptionOpenClaw Service Afternetwork.target [Service] Typesimple WorkingDirectory/your/path/to/openclaw EnvironmentPATH/your/path/to/openclaw/venv/bin ExecStart/your/path/to/openclaw/venv/bin/python main.py Restartalways RestartSec5 Userubuntu [Install] WantedBymulti-user.target这里有几个关键参数要注意WorkingDirectory必须指向项目根目录否则服务可能找不到配置文件。Environment最好显式设置PATH确保用虚拟环境里的Python。Restartalways意思是不管什么原因退出都自动重启RestartSec5是重启前的等待秒数防止疯狂重启。User建议用一个普通用户不要用root跑服务。写完后重载systemd并启动服务sudo systemctl daemon-reload sudo systemctl enable openclaw sudo systemctl start openclaw查看运行状态sudo systemctl status openclaw以后你想看日志用journalctl -u openclaw -f实时跟踪想重启用sudo systemctl restart openclaw。这下舒服了SSH断开也不影响服务。5.2 Nginx反向代理与HTTPS的必要性直接用IP加端口访问OpenClaw虽然能用但有几个尴尬一是端口号不好记二是HTTP明文传输API调用时如果带着密钥就有被中途截获的风险三是某些浏览器策略对非标准端口有限制。用Nginx做反向代理把openclaw.yourdomain.com这个域名指向本机的3000端口顺便挂上HTTPS证书这套组合拳能一次性解决上面所有问题。安装Nginxsudo apt install -y nginx然后建一个配置文件sudo vim /etc/nginx/sites-available/openclaw基础写法server { listen 80; server_name openclaw.yourdomain.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }把配置文件软链到sites-enabled然后测试并重载sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginxHTTPS证书我用的是Let‘s Encrypt用certbot一键申请。前提是域名已经解析到服务器IP。执行sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d openclaw.yourdomain.com证书会自动配置好并设置定时自动续期。整个过程不到十分钟但体验直接从“玩具级”跳升到“生产级”。5.3 处理WebHook与回调地址的部署细节OpenClaw有大量场景需要外部服务回调它比如对接IM机器人、接入飞书/钉钉群聊、或者接收第三方平台的Webhook事件。这个时候回调地址就该用你配置好的域名而不是裸IP。写回调地址时要注意路径是否和项目里定义的路由一致。拿不到准确路由的时候去看项目源码里的router定义或者网络文档。遇到回调失败优先看Nginx日志/var/log/nginx/access.log和error.log再去看OpenClaw的日志两边一对照问题通常就浮出水面了。6. 常用Skill安装与实战让云端Agent真正接管日常任务6.1 从官方市场拉取Skill一条命令搞定OpenClaw社区维护了一批官方Skill覆盖了搜索、翻译、摘要、日历管理、邮件发送等常见场景。安装方式一般是通过CLIopenclaw skill install search openclaw skill install translate安装完成后修改配置文件的skills列表把新Skill加进去再重启服务。这里提醒一句Skill不是装完就自动启用的很多Skill还需要在配置文件里填写对应的API Key或服务参数。比如“搜索”Skill可能需要你配置搜索服务的API Key“邮件”Skill需要你填SMTP账号密码。只装不配调用时会报一堆错。6.2 自定义Skill开发当Agent不够用时的正确解法官方Skill再多也覆盖不了所有人的需求。我在实际部署中自己写过一个定时巡检的Skill让Agent每隔一段时间去检查服务器磁盘使用率、内存占用和关键服务状态发现异常就通过消息通知推送给我。这个Skill的核心逻辑其实很简单用Python写一个函数放在Skills目录下遵循项目的接口规范然后在配置里注册。具体代码格式各个版本有差异但思路是共通的。你在写的时候参考项目里自带的示例Skill照着葫芦画瓢就行。有一点值得注意自定义Skill如果涉及敏感信息比如数据库密码、服务器SSH密钥不要硬编码在代码里放在.env里通过环境变量读取会更安全。6.3 云端跑Skill和本地跑有什么区别在云端部署之后最直观的变化是Skill的执行不再受本地网络和关机的影响。比如我设置了一个每天早上9点从RSS源抓取行业新闻并生成摘要的Skill它在云服务器上稳定跑了一个多月一次都没漏过。这在本地电脑上是做不到的因为我的笔记本不可能24小时开机。另外云端服务器的公网IP稳定Skill里如果有需要外部服务回调的逻辑比如创建了一个任务卡片等待用户点击后触发后续动作也能顺畅运行。7. 常见问题与排查技巧实录7.1 服务启动失败或端口被占用症状是执行启动命令后报错“Address already in use”。这通常是上一次运行的服务没有优雅退出。排查方式lsof -i:3000找到占用端口的进程PID然后kill -9 PID再重新启动。如果是systemd托管直接用sudo systemctl restart openclaw它会自动接管。7.2 WebSocket连接频繁断开OpenClaw的Companion与主服务之间以及某些前端页面与服务端之间会用到WebSocket。如果你用Nginx反代需要额外配置WebSocket升级头proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade;忘记加这段前端页面可能能打开但部分实时功能会出现“连接已断开”的提示很迷惑。7.3 模型API超时或返回空内容这个案例我遇到好几次。表现为Agent回复“我暂时无法回答”或者干脆一直转圈。排查顺序是先看OpenClaw的日志确认请求有没有发到模型服务商。用curl直接测试API服务商的接口确认网络链路通不通。检查Base URL是否正确——很多人复制配置时把/v1路径写错或者多加了空格。如果以上都没问题那就是模型服务商自己的限流或波动可以适当调大超时时间或者换成备用模型。7.4 跨域问题CORS导致浏览器端无法访问如果你从本地浏览器直接访问云服务器上的OpenClaw页面脚本向服务端发请求时可能被CORS拦截。项目配置里一般有允许跨域的开关或白名单设置。开发阶段可以先把允许的域名设成*生产环境再收紧到你自己的域名。7.5 排查问题时的日志观看法日志是排查一切问题的基础。systemd托管的服务看日志用journalctl -u openclaw -n 100 --no-pager实时跟踪用journalctl -u openclaw -f如果是手动启动的进程日志会直接打到终端。建议在配置里把日志级别设成DEBUG多打一点信息没坏处排完问题再改回INFO。8. 部署经验与成本控制心得8.1 实测资源占用2核4G到底够不够我把我这台2核4G服务器跑了一段时间日常OpenClaw服务在空闲时占用大约300MB内存跑一个轻量任务时CPU峰值在30%左右内存占用会到700MB-1GB。如果同时跑多个Skill比如批量处理文本、调用外部搜索内存会冲到1.5GB左右。所以结论是入门够用但别开太多重型Skill。如果你想在同一个服务器上再装个数据库、Redis、Nginx这些2核4G会有点紧张。预算允许的话直接上4核8G省心不少。8.2 省钱策略按需购买与数据备份华为云的计费方式有包年包月和按需付费。入门阶段我建议先用按需付费跑通核心流程之后再换算一下包年成本决定要不要转成包年。如果只是学习和测试用完关机并释放磁盘能省不少钱。数据备份方面.env配置文件、自定义Skill代码这些都属于“脑子里的财富”建议定期备份到你自己的代码仓库或本地磁盘。云服务器本身挂了都可以重装但配置丢了很麻烦。8.3 安全加固的几条底线云服务器暴露在公网上随时会招来扫描攻击。以下几点是我实测后认为必须做的SSH端口别用默认的22改成高位端口比如22022能挡住90%的暴力破解。用密钥登录禁用密码登录。OpenClaw的服务接口至少要加一层访问Token。定期更新系统补丁sudo apt update sudo apt upgrade -y。这些操作不复杂但每一个都能实打实地降低被入侵的风险。9. 写在最后从能跑到好用还有一段路要走部署OpenClaw到华为云服务器这件事本身不难难的是把“能跑”变成“好用”。我个人的建议是按顺序走完这套流程后接下来花点时间去研究Skill的深浅用法。比如把多个Skill串联起来做一个完整的自动化工作流或者写一个定时任务让Agent每天主动向你汇报云端服务的运行状态。我踩过几次坑之后最大的体会是不要一次性追求大而全的功能配置而是先把最小闭环跑通再逐步加料。这个思路在部署OpenClaw上特别适用。最后分享一个小技巧如果你在配置过程中遇到任何报错不要急着搜“OpenClaw xxx报错”先看日志。日志不会说谎它会把真正的线索藏在最后几行。养成看日志的习惯比记住任何教程都管用。希望这篇教程能让你少走一点弯路早日拥有一台真正为你自己工作的云端Agent。