1. 部署前准备:搞清楚 OpenClaw 是什么,以及为什么要上云端
如果你最近在逛技术社区,应该会发现 OpenClaw(原 Clawdbot)突然成了高频词。简单说,这是一个开源的智能体(Agent)运行框架,它把“大模型 + 工具调用 + 自动化流程”打包在一起,你给它一个任务目标,它能自己拆解步骤、调用命令行、读写文件、请求 API,像一个能长期驻守在服务器上的数字员工。相比之前在本地机器上跑,把它部署到云服务器上才是真正发挥价值的方式,因为云服务器 24 小时在线、公网可访问,智能体才能真正做到无人值守地处理消息、跑任务、对接外部服务。
这篇教程就围绕“阿里云 + OpenClaw”这套组合展开,我会从买服务器开始,一路讲到把智能体跑起来、配好技能,最后再聊几个我在实际操作中踩过的坑。整个过程全部基于我在 2026 年初的实测经验,你照着操作,基本可以在一到两个小时内完成部署,不需要有深厚的运维基础,但至少要会基本的 Linux 命令和 SSH 连接。
先说结论:OpenClaw 部署到阿里云,最省心的路径是“Docker 容器化运行”。我试过直接在系统里装二进制依赖、用 Node.js 裸跑,也试过包管理器安装,最后都因为依赖冲突和进程管理问题放弃了。Docker 方式的好处是环境隔离、升级回滚方便,还能把配置目录和日志目录挂在宿主机上,就算容器挂了也不丢数据。
部署之前,有几个关键词你需要先理解:workspace是智能体的工作目录,所有生成的文件、脚本都会放在这里;exec-approvals.json是命令执行审批记录文件,OpenClaw 出于安全考虑,默认不会让智能体随意执行命令,而是把需要审批的命令记录在这个文件中,等你自己确认;skill则是给智能体扩展能力的插件机制。这些概念后面都会反复出现,先有个印象就行。
2. 服务器选型与初始配置:别买错规格,也别把端口堵死
2.1 阿里云 ECS 怎么选:实例规格、系统镜像、带宽
OpenClaw 本身对硬件的要求不算极端,但它背后要接大模型的 API,智能体在推理过程中需要占用不少 CPU 和内存。我测试下来的经验是:最低配建议 2 核 4G,如果预算允许,直接上4 核 8G会更从容。别买 1 核 2G 的突发性能实例,OpenClaw 跑起来之后光是 Node.js 运行时加上各个进程,内存就接近 2G,再算上系统占用,很容易触发 OOM。
系统镜像选 Ubuntu 22.04 LTS 或 24.04 LTS 都可以,我建议 22.04,原因很简单:兼容性最稳,网上能找到的排错资料也最多。如果你熟悉 Debian 系以外的系统,比如 Rocky Linux,也不是不行,但后面很多命令要微调,新手就不建议给自己加难度了。
带宽方面,按量付费的 ECS 默认是 100M 峰值带宽,但要注意“按量付费带宽”和“固定带宽”的区别。OpenClaw 日常使用时,除非你要传大文件,否则流量消耗不大,选 3M 到 5M 的固定带宽就够用了。如果你的场景是智能体需要频繁下载模型文件(比如接本地 Ollama 部署),那带宽建议选高一点,或者改用按量付费,避免卡在下载上。
2.2 安全组规则:只暴露必要的端口
阿里云的 ECS 有安全组这个概念,相当于服务器外面的一道防火墙。很多人第一次部署时,明明服务起来了,就是访问不了,十有八九是安全组没放行端口。OpenClaw 本身不需要暴露出公网端口给浏览器访问,它主要通过命令行交互,但你会需要:
- 22 端口(SSH 远程连接)
- 如果你要给 OpenClaw 配 Web UI 或者接口回调,再按需放行 80/443 或其他自定义端口
这里有个安全建议:SSH 端口不要一直用默认的 22,至少把密码登录改成密钥登录,最好把 SSH 端口换成一个高位端口。阿里云控制台的安全组里,入方向规则可以自己加,来源 IP 尽量限制成你自己的公网 IP,而不是 0.0.0.0/0。
注意:安全组修改是即时生效的,改完不用重启服务器。万一你把 SSH 端口改了但忘了在安全组里放行,那你可能就把自己锁在外面了。我几乎每年都会看到有人犯这个错误,改端口之前先在本地开一个新的 SSH 会话测试能连上,再关掉旧的。
2.3 服务器初始化:创建一个非 root 用户
拿到一台全新的 ECS 之后,第一件事不是急着装 OpenClaw,而是做好基础配置。用 root 操作方便是方便,但一旦智能体在 workspace 里生成恶意脚本或者误操作,root 权限会造成不可逆的影响。我强烈建议创建一个普通用户,比如ops,加入sudo组,日常部署和操作都用这个用户。
# 以 root 登录后执行 adduser ops usermod -aG sudo ops之后在本地电脑上用密钥登录ops用户:
ssh-copy-id ops@你的服务器公网IP ssh ops@你的服务器公网IP如果ssh-copy-id这个命令在你的系统里不存在(Windows PowerShell 里就没有),可以手动把公钥写到服务器的~/.ssh/authorized_keys文件里,注意权限:.ssh目录 700,authorized_keys文件 600。
3. 安装 Docker 与基础环境:这一步值得慢慢来
3.1 用官方脚本安装 Docker 并配置镜像加速
OpenClaw 的官方部署文档里,Docker 是推荐方式。在 Ubuntu 上安装 Docker 很简单,官方提供了一键脚本:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh装完之后把ops用户加入 docker 组,避免每次都要 sudo:
sudo usermod -aG docker ops newgrp docker然后验证:
docker version docker compose version在国内网络环境下,拉取 Docker Hub 官方镜像经常很慢,这里就要用到阿里云的容器镜像加速器了。登录阿里云控制台,搜索“容器镜像服务 ACR”,进入之后在“镜像中心-镜像加速器”页面能找到属于你自己账号的加速地址,格式一般是https://xxxx.mirror.aliyuncs.com。然后写入 Docker 配置:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker注意:这里配置的是镜像加速器,不是仓库。它的作用是让 Docker 在拉取公共镜像时走阿里云的内网加速节点,速度从几十 KB/s 直接飙到几十 MB/s,实测效果非常明显。如果你要推送自己的镜像到阿里云 ACR,那是另一套登录和 tag 操作,这里不展开。
3.2 安装 Node.js、Git 等辅助工具
虽然 OpenClaw 用 Docker 运行,但后续很多技能脚本、工具链还是要依赖宿主机上的 Node.js、Git、Python 等环境。建议提前装好:
sudo apt update sudo apt install -y git curl wget python3 python3-pip # 安装 Node.js 20 LTS(用 NodeSource 源) curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs node -v npm -v为什么要装 Node.js?因为 OpenClaw 本身是基于 Node.js 开发的,虽然容器里自带运行时,但你在宿主机上要跑一些配套脚本(比如调试 skills、执行本地测试)时,有 Node 环境会方便很多。Git 则是从 GitHub 拉取技能包和更新代码时必备的。
4. 正式部署 OpenClaw:镜像选择、目录挂载、首次启动
4.1 获取镜像并创建数据目录
OpenClaw 的镜像发布在 GitHub Container Registry 上,镜像名根据版本不同会有变化。我在部署时使用的命令大致如下:
docker pull ghcr.io/openclaw/openclaw:latest如果这一步因为网络原因失败,可以考虑在你的项目目录下配置一个.env文件,把容器仓库地址替换为你自己的阿里云 ACR 镜像地址。因为 OpenClaw 是完全开源的,国内有热心的开发者会把镜像同步到阿里云 ACR 上,但来源需要你自己甄别,建议优先使用官方镜像,除非你有明确的网络优化需求。
接下来创建数据目录。OpenClaw 的配置和 workspace 默认都在~/.openclaw下,为了迁移和备份方便,我建议放在一个统一目录里:
mkdir -p ~/openclaw/{config,workspace,logs} mkdir -p ~/.openclaw这里解释一下目录结构:config目录用于存放 OpenClaw 的配置文件,比如模型服务商密钥、技能配置、审批规则等;workspace目录就是智能体的工作空间,它生成的代码、文档都在这里;logs目录则保存运行日志,排错时最重要的信息来源。
4.2 用 docker compose 完成编排
直接用docker run当然可以,但我推荐用 Compose 文件来管理,好处是以后改配置、升级镜像不用翻历史命令。创建一个docker-compose.yml:
version: '3.8' services: openclaw: image: ghcr.io/openclaw/openclaw:latest container_name: openclaw restart: unless-stopped ports: - "3000:3000" environment: - TZ=Asia/Shanghai - OPENCLAW_WORKSPACE=/workspace # 这里可以放你的模型 API Key,具体变量名以官方文档为准 # - OPENAI_API_KEY=sk-xxxx # - ANTHROPIC_API_KEY=sk-xxxx volumes: - ~/.openclaw:/root/.openclaw - ~/openclaw/config:/root/.openclaw/config - ~/openclaw/workspace:/workspace - ~/openclaw/logs:/root/.openclaw/logs这里的端口3000:3000是给 OpenClaw 的 Web 管理接口或者回调服务用的,如果你的部署场景完全不需要公网访问,可以去掉 ports 部分,只保留内部容器网络。我的建议是:初期不要暴露 3000 端口,先用命令行方式跑通全流程,确认智能体能正常工作之后再考虑开放 Web 功能。
restart: unless-stopped这个策略很关键,它保证容器在系统重启后自动拉起,这样智能体才能做到 7x24 小时在线。
启动:
docker compose up -d docker logs -f openclaw第一次启动日志会比较长,OpenClaw 会自动初始化配置目录、生成并写入审批规则文件、连接你配置的大模型供应商。看到类似Server is running或者Listening on port的输出,说明主进程已经起来了。
4.3 首次进入交互界面:用 exec-approvals 管住智能体的手
OpenClaw 启动后,你可能会疑惑“然后呢?我怎么跟它对话?”实际上 OpenClaw 默认提供的是一个命令行交互入口,你需要进入到容器内部:
docker exec -it openclaw bash # 在容器内部执行 openclaw进入之后,你会看到一个类似聊天的交互界面,在这里直接输入任务描述,比如“帮我写一个 Python 脚本,读取当前目录下的 CSV 文件并输出统计结果”,OpenClaw 就会开始工作。
这时候你会遇到一个专门针对安全设计的机制:exec-approvals.json。OpenClaw 在执行一些有副作用的命令(比如rm、curl、sudo、写文件到系统目录等)之前,会先把审批请求记录到这个文件里,然后停下来等你确认。日志里会提示你去检查这个文件:
cat /root/.openclaw/exec-approvals.json你会发现里面是一个 JSON 数组,每一条记录包含待执行的命令、参数、发起时间等信息。你需要手动修改这个文件,把对应记录的approved字段改成true,然后保存。OpenClaw 检测到文件变化后,会继续执行这条命令。
这个机制看起来很原始,但实际非常有用。它的设计思路是:智能体可以大胆提方案,但真正执行有风险的操作前,必须经过人的确认。我在实际使用中遇到过一次,OpenClaw 在完成一个数据抓取任务后,自作主张地想把整个 workspace 目录打包并删除中间文件。如果我不是提前设置了审批机制,那一整天的数据可能就被清掉了。所以,除非你非常信任自己的工作流,否则不要把审批级别改成 auto_approve。
如果你希望整个过程更自动,OpenClaw 也提供了环境变量来调整审批策略,比如:
OPENCLAW_EXEC_APPROVAL_MODE=auto # 自动审批所有命令,谨慎使用 OPENCLAW_EXEC_APPROVAL_MODE=basic # 只审批高风险命令,推荐日常使用4.4 配置模型服务商:OpenAI、Anthropic 还是本地模型
OpenClaw 本身不携带大模型,你需要给它配置推理后端。最常见的方式是配置 OpenAI 兼容的 API Key,你也可以配置 Anthropic、Google Gemini,或者通过 Ollama 接入本地开源模型(比如 Llama 3、Qwen 系列)。
在 OpenClaw 的配置目录(挂载到宿主机的~/openclaw/config)里,通常有一个环境变量文件.env或者config.json,把 API Key 填进去即可。配置完成后重启容器:
docker compose restart openclaw如果你选择接入本地模型,比如在阿里云服务器上部署 Ollama 并运行 Qwen 等模型,那你需要额外考虑显卡资源。阿里云的 GPU 实例价格不便宜,如果不是有特殊的数据安全要求,我建议前期直接用云端 API,成本更低,速度也稳定。等业务跑通了,再考虑迁移到本地模型也不迟。
这里有一句大实话:大模型 API 的延迟和稳定性直接决定 OpenClaw 的体验。我一开始在图便宜用了一个小厂 API,结果智能体经常超时,整个任务流程断断续续。后来换回 OpenAI 和 Anthropic 的官方接口,体验立刻正常了。在实际生产环境中,稳定性比单价重要得多。
5. 进阶配置与技能扩展:从“能跑”到“好用”
5.1 时区、日志、和自动备份
部署完成后,有几件小事建议顺手做掉。第一是时区,容器默认可能是 UTC,和国内时间差 8 小时,在容器内执行:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime不过更优雅的做法是在docker-compose.yml里通过环境变量TZ=Asia/Shanghai设置,这样每次重建容器都会自动生效。
第二是日志轮转。OpenClaw 跑久了,~/openclaw/logs里的日志文件会越来越大。建议在宿主机上配一个 logrotate 任务:
sudo tee /etc/logrotate.d/openclaw <<-'EOF' /home/ops/openclaw/logs/*.log { daily rotate 7 compress missingok notifempty copytruncate } EOF第三是备份。OpenClaw 的配置和工作成果基本都在~/.openclaw和~/openclaw/workspace里,你可以写一个简单的 cron 任务,每天把这个目录打包上传到阿里云 OSS。云服务器本身有快照功能,但快照是对整台机器做的,粒度比较大,针对重要目录做定时备份更精细。
5.2 安装 Skills:给智能体加装技能包
Skills 是 OpenClaw 的扩展机制,你可以把它理解为智能体的“插件”。官方和社区维护了一大批现成的技能包,比如:
- 网络搜索技能
- 发送邮件、短信技能
- 定时任务技能
- GitHub 操作技能
- 数据库查询技能
在 OpenClaw 交互界面中,输入技能安装命令(具体命令在不同版本略有差异,但思路一致):
openclaw skills install 技能名称安装完成后重启容器,技能就生效了。以“发送邮件”技能为例,它需要你在配置中填 SMTP 服务器的地址和凭证。如果你们公司有自己的邮件服务器,这算是最常见的一个自动化入口。
也有一个实际场景我想特别提一下。有人想把阿里云的各种能力(比如短信服务 SMSReport、对象存储 OSS、云数据库 RDS)接入 OpenClaw,让智能体直接调用阿里云 API。这个想法很好,但实现的时候不要自己从头写 HTTP 请求封装。优先查一下阿里云官方有没有对应的 Node.js SDK,把 SDK 集成到 skill 里去,代码量会小很多,而且 SDK 会自动处理签名、重试等细节。
提醒:在给 OpenClaw 配各种 API 密钥时,记住这些密钥会明文保存在配置文件里。如果服务器被攻破,攻击者可以直接拿走你的云厂商密钥。建议在阿里云 RAM 控制台里创建一个只包含最小权限的子账号,把密钥给 OpenClaw 用,而不是直接用主账号 AccessKey。
5.3 域名和 HTTPS:如果要暴露 Web 功能
如果后续你想让 OpenClaw 的 Web 管理界面可以被公网访问,或者你的智能体需要接受外部 Webhook 回调,那就需要考虑域名和 HTTPS。阿里云上申请 SSL 证书是目前很成熟的做法。
一个我在实践中遇到的真实问题:有朋友在群晖 NAS 上更换了阿里云签发的 SSL 证书后,访问面板出现“抱歉,您所指定的页面不存在”的提示。很多人第一反应是证书没装对,其实大多数情况下是反向代理配置里的proxy_pass目标地址写错了,或者证书文件权限不对。排查路径很简单:先用curl -v https://你的域名看证书链是否正常,确认证书本身没问题后,再去检查反向代理配置里的location匹配规则。
对于 OpenClaw 的 Web 功能,我的建议是用 Nginx 做反向代理,把公网的 443 端口转到容器的 3000 端口。证书放在 Nginx 层,OpenClaw 容器内部保持 HTTP 通信即可,这样不用每个容器都配一套证书。
6. 常见问题与排查技巧实录
6.1 日志与进程:第一手排错信息
任何人都会在部署过程中遇到问题,关键是掌握排查思路。OpenClaw 的日志是排错的第一现场。查看日志:
docker logs -f openclaw如果容器运行异常,先看容器状态:
docker ps -a docker inspect openclaw一个常见的坑是容器反复重启(restarting状态),多半是环境变量配置错误,比如模型服务商 API Key 填错、网络不通导致连接超时。这时候看docker logs的输出,一般会告诉你具体是哪个步骤挂了。
还有一个常见问题是“容器起来了,但宿主机访问不了 3000 端口”。先确认端口映射:
docker port openclaw再确认安全组入方向是否放行。很多时候你以为容器端口映射没问题,实际是安全组规则限制了来源 IP。
6.2 exec-approvals 机制相关问题的排查
如果你打开exec-approvals.json文件时发现里面积累了一堆未审批的记录,而 OpenClaw 在等待着你的确认,但你不确定哪些该批、哪些不该批。我的建议是:宁可漏批,不要错批。逐条查看命令内容和参数,判断是否和你交给智能体的任务相关。如果命令里出现了你完全不理解的下载地址或者rm -rf操作,直接拒绝并把该条记录删除,同时检查是不是被植入了恶意 skill。
如果 OpenClaw 提示审批文件格式错误,多半是你在编辑 JSON 时不小心多了个逗号或者引号。用python3 -m json.tool /root/.openclaw/exec-approvals.json检查合法性,比肉眼排查高效得多。
6.3 低配机器优化:2G 内存也能跑
如果你的服务器只有 2G 内存,OpenClaw 跑起来会比较吃力,但不是完全不能跑。几个优化建议:
- 给系统加上 swap 分区(但注意不要让智能体任务频繁触发 swap,否则会极慢)
- 限制 Docker 容器内存:
docker update -m 1g --memory-swap 1.5g openclaw - 关闭不必要的系统服务,把内存留给智能体主进程
我实测过,2G 内存机器上 OpenClaw 可以启动,但执行复杂任务时如果模型推理需要加载较多依赖,还是会明显卡顿。如果预算允许,强烈建议直接上 4G 内存,舒适度完全不同。
6.4 快速排查清单
| 现象 | 可能原因 | 排查步骤 |
|---|---|---|
| 容器反复重启 | 环境变量错误、API Key 无效 | docker logs openclaw查看具体报错 |
| 智能体不响应任务 | 模型服务商 API 不可达、Key 欠费 | 用 curl 测试 API 连通性,检查日志 |
| 审批文件格式报错 | JSON 语法错误 | python3 -m json.tool检查修复 |
| 端口访问不了 | 安全组未放行、容器端口映射错误 | docker port确认映射,再到阿里云控制台检查安全组 |
| 拉取镜像超时 | 网络问题 | 配置镜像加速器,或使用 ACR 中转 |
| 时区差 8 小时 | 容器时区默认 UTC | 在 compose 文件中设置TZ=Asia/Shanghai |
这个表格是我自己排错过程中经常看的速查表,你也可以用同样的思路建立自己环境的排错文档。
7. 写在最后:从部署到长期维护的一些体会
OpenClaw 部署本身不难,难的是把它训练成真正靠谱的“数字员工”。我在阿里云上跑了一段时间后,最大的体会是:配置一个智能体,本质上是在定义一套可执行的工作流程。你给它布置任务的方式越具体、约束条件越明确,它完成的质量就越高。
另外一个很实用的技巧是:给 OpenClaw 一个独立的工作邮箱或消息入口,让它通过邮件接收任务,把结果发回你的邮箱。这样即使你不在服务器旁边,也能随时给它派活。配合阿里云的邮件推送服务和 SMS 短信服务,这套系统可以变成一个非常顺手的自动化助理。
还有一点,如果你打算长期使用,建议给 OpenClaw 配一个专属的用户账号,而不是直接用 root。这不仅是安全考虑,也是日志和审计上的整洁性。我后来把所有服务都迁移到ops用户下,配置备份和权限管理都清爽了很多。
如果你在部署过程中遇到我这个教程里没覆盖到的问题,先去翻日志,再去看官方文档。大部分问题都是环境变量和网络配置引起的,冷静下来一步步排查,半小时内基本都能解决。希望这份教程能帮你少走一些弯路。