2026年4月,我干了一件事:把OpenClaw从本地开发机搬到了华为云上跑。为什么折腾这个?因为本机跑Agent,一开大模型对话风扇就起飞,出个差笔记本一合服务就断。OpenClaw这种AI Agent编排工具,天生就要7x24小时在线才划算——接需求、调模型、跑自动化流程,都得有个稳定的家。折腾完发现,从买服务器到配通百炼APIKey,熟练了其实8分钟真能搞定。这篇就把完整过程、当时为什么这么选、以及踩过的坑一次性写清楚,给准备动手的朋友做个参考。
1. 方案选型:为什么是华为云配百炼APIKey
1.1 先理清OpenClaw到底需要什么
先说结论:OpenClaw本身不生产模型,它是个"调度大脑"。你给它配好一个大模型API,它就能把对话、工具调用、技能执行这些事串起来。所以部署OpenClaw,核心要解决三件事:第一,它跑在什么机器上;第二,它调用哪个大模型服务;第三,你用什么凭证让它调通。
很多人一上来就卡在第二步。OpenClaw默认支持的主流模型服务商里,有的是OpenAI格式的接口,有的是Anthropic格式的接口,而国内大模型平台大多提供兼容协议。我选阿里云百炼,是因为它同时兼容OpenAI和Anthropic两种协议,而且通义千问系列的qwen-max、qwen-plus对工具调用的支持很稳,API价格也比直接调海外模型便宜不少。APIKey这东西,说白了就是你的使用凭证,配错了轻则鉴权失败,重则整个Agent起不来。
至于为什么把机器放在华为云而不是继续用本地电脑,原因很朴素:我需要一个固定公网地址,方便随时通过Web控制界面管理,并且数据存储和备份都在云端更省心。如果你手头已有其他云服务器,思路完全一样,只是控制台入口不同。
1.2 部署环境四个方案对比
当时我列了四个候选方案,逐个对比后才定的ECS:
| 方案 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|
| 本地电脑运行 | 零成本、调试方便 | 关机即断网、无公网IP、IP易变 | 临时体验、开发调试 |
| 华为云ECS | 配置灵活、公网IP固定、成本可控 | 需要自己装环境 | 个人长期运行、生产部署 |
| 华为云轻量应用服务器 | 操作简单、自带镜像 | 带宽和规格选择少 | 新手入门、低并发场景 |
| 华为云CCE容器引擎 | 弹性伸缩、适合集群 | 概念多、上手门槛高 | 企业级多实例部署 |
我最后选了2核4G的ECS,系统盘40G,Ubuntu 22.04。这个规格跑OpenClaw加一个SQLite数据库完全够用,日常内存占用稳定在1.5G左右。如果你打算同时接微信、Telegram多个渠道,建议直接上4核8G,别省这点钱。地域上我选了华东区域,访问速度和API延迟都表现不错。
注意:无论选哪个方案,都要记得在华为云控制台的“安全组”里放行Web控制界面端口。我默认用8080,OpenClaw的Web界面就监听这个端口,不放行的话浏览器永远打不开。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心原理:OpenClaw依赖什么,APIKey怎么生效
2.1 运行依赖:Docker以外的隐形门槛
OpenClaw官方推荐用Docker方式部署,这也是对新手最友好的方式。Docker能把服务、依赖、环境变量一次性打包,不用你在宿主机上装一堆Python、Node.js版本,避免环境冲突。
但Docker不是万能的,有俩隐形门槛值得注意。第一是镜像源问题,有些机器拉镜像特别慢,实际部署的时候如果你发现卡在pull image这一步,可以给Docker配置国内镜像加速源。第二是数据持久化,容器一旦重建,如果没把配置目录挂载出来,你之前配好的APIKey、聊天的历史记录全都会丢。所以务必把宿主机目录和容器内目录做volume映射。
我当时用的目录约定是~/.openclaw,OpenClaw会自动读取这个目录下的配置文件。这个目录里通常有config.yaml、日志、数据库文件。如果想要备份整台服务器,打包这个目录就够了。
2.2 环境变量与配置文件:APIKey的生效逻辑
很多教程只说“配一下APIKey就行了”,但从没讲清楚它到底在哪里生效。以我用的版本为例,OpenClaw读取配置的优先级是:命令行参数 > 环境变量 > 配置文件 config.yaml > 内置默认值。这意味着你在docker run里通过-e传的环境变量,优先级最高,测试时临时改配置最快。
如果你走Docker Compose,环境变量写在environment段里。大致需要关心四个字段:
- 模型提供方(provider):告诉OpenClaw你要连哪类接口,OpenAI兼容还是Anthropic兼容,或者本地Ollama。
- Base URL:也就是模型服务的接入地址。百炼的OpenAI兼容地址是
https://dashscope.aliyuncs.com/compatible-mode/v1,如果你用的是Anthropic协议,就以百炼控制台显示的地址为准。 - API Key:你的百炼密钥,通常是
sk-开头的一串字符。 - 模型名称:比如
qwen-max或qwen-plus,这个名称必须是百炼平台上真实开通的模型,否则就会报"unknown model"。
我习惯把APIKey写成环境变量,而不是直接写死在config.yaml里提交到代码仓库。万一你之后要同步配置到别的机器,至少不会把密钥裸奔在文本文件里。配置文件里只放非敏感项,模型名称和Base URL可以放。
3. 上手实操:华为云8分钟快速完成集成
3.1 第1-2分钟:华为云主机准备
登录华为云控制台,进入ECS云服务器页面,点“购买弹性云服务器”。计费模式选“按需计费”或“包年包月”,看你自己预算,我只是长期跑就选了包年。镜像选Ubuntu 22.04,规格2核4G,系统盘40G。网络方面默认VPC即可,安全组里务必新增一条入方向规则,放行TCP 8080端口。
创建完成后,通过控制台自带的“CloudShell”登录,或者你用自己电脑的SSH工具都行。第一次登录会让你设置root密码或SSH密钥,建议直接用密钥对,省得密码太简单被爆破。登录成功后先敲一条命令确认系统版本:
bash复制cat /etc/os-release
看到Ubuntu 22.04字样就对了。然后把系统软件包更新到最新:
bash复制apt update && apt upgrade -y
这部分其实超不过2分钟。如果发现apt更新很慢,检查一下DNS,换成公共DNS通常会有明显改善。
3.2 第3分钟:装Docker和Compose
华为云全新机器上没有Docker,所以这一步必须手动装。官方推荐用get.docker.com的脚本一键完成,实际执行就一条命令:
bash复制curl -fsSL https://get.docker.com | bash
装完之后验证一下版本:
bash复制docker --version
docker compose version
只要看到版本号就说明装好了。Compose插件现在普遍内置在Docker里,不需要单独装docker-compose。如果你的系统提示没有docker compose子命令,可以执行apt install docker-compose-plugin补上。
这里还有个可以优化的点:默认情况下Docker需要root权限,每次敲docker命令都要加sudo很麻烦。把当前用户加入docker用户组,重新登录后就不用再加sudo了:
bash复制usermod -aG docker $USER
注意这条命令要重新登录SSH才生效。
3.3 第4-6分钟:启动OpenClaw容器
OpenClaw官方提供了一键安装脚本,但也支持Docker方式手动启动。我更喜欢手动方式,因为每个参数都能看清。在home目录下建一个openclaw文件夹,然后写一个docker-compose.yml。
新建目录与文件:
bash复制mkdir -p ~/openclaw && cd ~/openclaw
nano docker-compose.yml
docker-compose.yml内容参考如下(以我当前用的stable版本命名,具体镜像版本请以官方文档为准):
yaml复制services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ~/.openclaw:/root/.openclaw
environment:
- OPENCLAW_WEB_PORT=8080
先保存,但先别急着填APIKey,首次启动先验证容器能正常跑起来。执行:
bash复制docker compose up -d
首次会拉取镜像,耗时取决于网络状况,慢的时候两分钟也有可能。拉取完,容器会自动启动。用下面命令看状态:
bash复制docker ps
看到openclaw容器状态是Up基本就成功了。这时候浏览器访问http://你的服务器公网IP:8080,如果安全组放行正确,就能看到OpenClaw的控制界面。第一次进界面会让你设置管理员账号,跟着提示走就行。
这个界面的存在很重要,日常管理模型、查看日志、配置技能都在这里,比命令行直观太多了。如果你访问不通,停一下,极大概率是华为云安全组没放行端口,或者服务器防火墙拦了,后面的排查章节会细说。
3.4 第7-8分钟:创建百炼APIKey并接入
这是整个流程里最关键的一步。打开阿里云百炼控制台,如果没开通服务先按提示开通。在控制台左侧找到“API-KEY”管理页面,点“创建API-KEY”,会生成一串sk-开头的密钥,复制保存好。
同时,你需要开通要用的模型,比如通义千问的qwen-max。百炼平台不是默认全部模型都可用的,需要你在“模型广场”找到对应模型点“开通”或“申请开通”,有的模型是免费额度,有的是按量付费,按提示操作即可。
拿到APIKey后,回到华为云服务器,修改docker-compose.yml,在environment段加上三个关键字段:
yaml复制 environment:
- OPENCLAW_WEB_PORT=8080
- OPENCLAW_MODEL_PROVIDER=openai_compatible
- OPENCLAW_MODEL_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
- OPENCLAW_MODEL_API_KEY=sk-你的百炼密钥
- OPENCLAW_MODEL_NAME=qwen-max
保存后重启容器让配置生效:
bash复制docker compose down
docker compose up -d
重启完成后,在OpenClaw控制界面里新建一个对话,随便问一句“你好,介绍一下你自己”,如果能正常返回通义千问的回答,就说明整套链路已经通了。整个配置过程熟练后不到2分钟,正好凑满8分钟。
提示:我演示用的是OpenAI兼容格式的Base URL。如果你安装的OpenClaw版本默认走Anthropic协议,那Base URL要换成百炼的Anthropic兼容地址,这个地址在百炼控制台的“接口兼容”说明页里可以直接复制,不要凭记忆填。
4. 常见报错与排查:我踩过的坑都在这
4.1 启动后Control UI打不开
症状:容器状态是Up,但浏览器访问http://IP:8080一直转圈或拒绝连接。
最先怀疑的应该是安全组规则。登录华为云控制台,找到这台ECS,进入“安全组”页面,确认入方向规则里有没有放行TCP 8080。很多新手只放行了22端口(SSH),忘了Web端口。另外,如果服务器上装了ufw防火墙,也会拦住连接,检查并放行:
bash复制ufw allow 8080/tcp
还有一种情况:你本地在VPC内部访问公网IP,可能被NAT策略影响。这种比较少见,但如果安全组和防火墙都确认没问题,可以试试在服务器本机用curl http://127.0.0.1:8080,如果本机通、外部不通,基本就是安全组或运营商端口封禁的问题。
4.2 对话报错 unknown model: deepsee
这个报错眼熟吗?“agent failed before reply: unknown model: deepseek”这类提示,意思是OpenClaw按你配置的模型名去找模型,但模型提供方不认这个名字。
我排查时发现两类原因。第一类,模型名写错了,比如百炼平台是qwen-max,你写成qwen-max-20261015或deepseek-v3,而该账号没开通对应模型。第二类是模型服务商不支持这个模型,比如免费零token的测试环境里只部署了某个固定的qwen模型,你非要去调用deepseek,当然找不到。
解决办法很简单:去百炼控制台“模型广场”确认你在用的是哪个模型ID,把配置里的MODEL_NAME改成一致。如果OpenClaw版本支持模型别名映射,也可以把unknown model: deepseek这种名字映射到百炼的实际模型上。
4.3 APIKey鉴权失败
这类问题表现是对话时返回401或403,日志里出现“authentication failed”或“invalid api key”。
我先检查APIKey是不是复制完整了。百炼APIKey比较长,复制时容易漏掉末尾几个字符。其次检查环境变量是否真的传进容器了,用一条命令确认:
bash复制docker exec openclaw env | grep OPENCLAW
如果环境变量没生效,多半是docker compose文件语法不对,比如YAML缩进有问题、字段名拼写错误。还要确认Base URL的协议是https还是http,以及路径是否是/compatible-mode/v1,这个后缀如果写错,就算Key对了鉴权也会失败。
4.4 接入微信等渠道失败
很多人部署OpenClaw不光是为了Web对话,还想接入微信、Telegram,让它7x24小时在线待命。这个方向没错,但接入微信的坑比预想多。
接入微信的方式通常分两种:一种是OpenClaw官方渠道插件,另一种是第三方登录协议库。官方插件相对稳定,但需要你提供一个真实的微信号或公众号,并且扫码授权后要保持在线状态。第三方协议库容易遇到封号风险,我个人的建议是,如果是个人使用,先用Telegram这类开放平台验证功能,等流程都跑顺了再考虑微信渠道。
如果你在日志里看到“control ui did not start”,其实不一定影响微信接入,这俩功能可能互相独立,但控制界面起不来会让人误以为整套服务挂了,还是先按4.1的办法把UI问题解决再排查渠道问题。
4.5 一键排查清单
| 症状 | 排查命令 / 操作 | 常见原因 |
|---|---|---|
| 8080端口访问不了 | 检查安全组、ufw状态、curl http://127.0.0.1:8080 |
安全组未放行、防火墙拦截 |
| 容器启动又退出 | docker logs openclaw |
端口占用、配置语法错误 |
| unknown model | 核对模型ID、账号是否开通 | 模型名写错、未开通对应模型 |
| 鉴权401/403 | `docker exec openclaw env | grep OPENCLAW` |
| 日志出现panic | docker logs --tail 100 openclaw |
镜像版本太旧、升级版本 |
排查的思路永远是先看日志,再查配置,最后才怀疑代码问题。docker logs永远是第一名好帮手,别一上来就重启容器。
5. 后续扩展与个人建议
跑通基础链路后,OpenClaw能玩的东西就多了。我现在把本地的NVIDIA NIM模型也接到了OpenClaw上,作为本地私有模型补充,遇到敏感数据就用本地模型推理,日常对话走百炼的qwen-max,这样既省钱又保证隐私。你还可以研究一下OpenClaw的Skill机制,把日常重复操作比如查天气、写周报、定时执行脚本做成预设技能,之后一条指令就能触发,是真的能省时间。
如果你准备把OpenClaw当生产环境用,我再补三个建议:第一,给ECS做快照备份,每周一次,防止误删配置;第二,不要用root直接跑业务,可以单独建一个低权限用户跑Docker;第三,日志定期清理,我遇到过日志文件撑满磁盘导致服务挂掉的尴尬情况。
最后说句掏心窝的话:OpenClaw的价值不在于你用什么云、配哪家API,而在于你把它用起来之后,能不能把那些重复的、费脑子的流程变成自动化任务。配置只是开始,后面的玩法和优化空间大得很。希望这篇8分钟指南能帮你少走几步弯路,早点用上自己的Agent。
