☰
OpenClaw两步部署实战:阿里云ECS+Docker容器化AI助手落地
2026/10/1 11:36:19 网站建设 项目流程

最近群里好几个朋友都在问我同一个问题:OpenClaw 到底怎么落地跑起来?说实话,第一次搞这个项目的时候我也被它的部署方式折腾了一会,文档写得不算差,但总有些细节要自己试错。后来我在阿里云的一台 2核4G 的 ECS 上把流程顺了一遍,发现真正常用的路径可以压缩成两条命令:一条准备环境,一条拉起容器,整个过程基本能做到“一键秒级部署”。今天就把这套方案完整写出来,包括我踩过的坑、调过的参数以及排查问题的思路,希望对正在折腾 OpenClaw 的朋友有点帮助。

OpenClaw 是一个开源的个人 AI 助手框架,核心思路是把大模型能力接到日常工具链里:聊天工具、日程、笔记、邮件、语音通话之类的应用都能通过它串起来。你可以理解成给大模型装了一双手和一套通讯录,让它不只会聊天,还能替你执行任务。这个项目最适合三类人:一是想自建 AI 助手的开发者,二是对数据隐私有要求、不愿把对话全交给云端产品的用户,三是对自动化和 Agent 工作流感兴趣的研究者。配合阿里云 ECS,主要是稳定性好、带宽可控、安全组规则灵活,而且国内访问速度有保障,部署完成后不管接钉钉、飞书还是微信公众号,延迟都比较低。

下面我会从项目思路、选型考量、完整实操、常见问题排查到扩展玩法一条条讲清楚,尽量做到你照着敲就能跑通。

1. 项目整体拆解:OpenClaw 部署的本质是什么

1.1 OpenClaw 到底是什么,解决什么问题

OpenClaw 本质上是把大模型 API、消息通道、任务执行器三者粘合在一起的运行时。它对外提供统一的接口,对内连接各种服务:你可以用对话的方式让它查天气、管理待办、整理文档,甚至触发定时任务。项目名字里的 Claw 可以理解成“爪子”,意思是让 AI 能真正抓到外部工具,而不是只在对话框里打转。

部署 OpenClaw 要做的核心事情其实就三件:

  • 有一个能长期运行的环境(云服务器)。
  • 把这个服务跑起来,并且配置好大模型的 API 接入。
  • 把消息渠道对接进去,比如钉钉、飞书、Telegram、微信公众号等。

从架构看,OpenClaw 本身就提供了容器化方案,官方推荐的部署方式就是 Docker。所以我们真正要解决的只是“怎么在阿里云上把 Docker 环境准备到顺手的状态”和“怎么把容器参数一次配对”。

1.2 为什么选择阿里云而不是本地机器

很多朋友问我,能不能用自己电脑跑?当然可以,但有几个现实问题:家里宽带没有公网 IP 或者 IP 经常变,聊天工具回调地址不稳定;电脑休眠了服务就断了;电费和维护成本算下来并不比云服务器便宜。阿里云 ECS 的优势在于:公网 IP 固定、安全组可控、带宽可按需调整,而且新用户通常有免费试用额度,测试阶段基本不花钱。

我选择阿里云还有一个原因是它的容器镜像加速服务。国内直连 Docker Hub 拉镜像经常慢到怀疑人生,阿里云容器镜像服务提供的个人版加速器可以明显改善这个问题,这和后续部署体验直接相关。

1.3 “两步部署”的核心思路

所谓两步,其实是把常用的初始化动作固化成一个命令,再把启动动作固化成一个命令。第一步是准备运行环境,包括安装 Docker、配置镜像加速、创建数据目录;第二步是拉取 OpenClaw 镜像并启动容器,同时完成端口映射和持久化目录挂载。

这样做的好处是显而易见的:不管你是新买的服务器还是以前用过的服务器,只要执行这两步,环境就一致了。不需要记一堆零散的安装步骤,也不容易出现“漏了一步导致服务起不来”的情况。

2. 部署前准备:ECS 选型、系统镜像和安全组

2.1 ECS 实例怎么选才不浪费钱

OpenClaw 本身对资源要求不算高,真正的资源消耗大头在你后面接入的大模型推理,而那个一般通过 API 调用完成,不占用本地资源。所以我给你的建议是:

使用场景推荐规格说明
轻量测试/尝鲜2核2G跑单容器够用,但并发高时会明显卡顿
日常稳定运行2核4G我的推荐配置,多接几个渠道也稳
同时跑多个 Agent/任务4核8G适合重度使用者,例如同时接多个对话渠道

磁盘建议选 40G 起步,因为 Docker 镜像、日志、附件缓存都会慢慢占空间。带宽方面,如果只是普通聊天文本交互,5M 峰值足够;如果要传图片、语音,建议按量计费或者选更高带宽,这个看实际需求。

2.2 操作系统选择与安全组设置

系统镜像我推荐 Ubuntu 22.04 LTS 或 Debian 12,原因是 Docker 官方对这两个系统的支持最好,命令示例也最常见。CentOS 不是不行,但 Stream 版本的配置路径有些差异,新手容易踩坑。

安全组是大家最容易忽略的环节。阿里云的安全组规则默认只开放少数端口,而 OpenClaw 的 Web 服务要对外提供服务,就必须在安全组里放行对应端口。我习惯的规则是:

  • 22 端口:只允许自己的 IP 访问,避免 SSH 被暴力破解。
  • 8080 端口(OpenClaw 主服务):按需开放,如果只是内部调试可先不开放。
  • 80/443 端口:如果后面要挂域名和 HTTPS 证书,这两个必须开放。

注意:安全组的放行是双向的,但阿里云控制台一般只需要配置“入方向”规则即可,出方向默认全放行,这点不必额外处理。

2.3 服务器基础环境检查

在跑部署脚本之前,先确认几件事:登录服务器之后执行uname -a看内核版本,确认是 64 位系统;执行df -h看磁盘剩余空间,free -h看内存。如果磁盘剩余不到 10G,建议先清理。

这一步看起来很基础,但确实有人拿到全新服务器就直接跑脚本,结果因为系统镜像没初始化完导致 Docker 装到一半报错。别急这几分钟,把基础检查做了能省后面很多事。

3. 实操全过程:两条命令完成 OpenClaw 部署

3.1 第一步:一条脚本搞定 Docker 环境

我不建议你手动一步步apt install docker.io再配置加速器,因为不同系统版本的命令有差异,写成一个脚本统一执行才不会出错。以下是我在 Ubuntu 22.04 上验证过的部署脚本,你可以直接复制保存为init_env.sh:

#!/bin/bash # OpenClaw 部署环境初始化脚本 # 适用于 Ubuntu 22.04 / Debian 12 set -e echo ">>> 更新系统包索引..." apt-get update echo ">>> 安装 Docker 依赖..." apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release echo ">>> 添加 Docker 官方 GPG 密钥..." install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc echo ">>> 添加 Docker 软件源..." echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ tee /etc/apt/sources.list.d/docker.list > /dev/null apt-get update echo ">>> 安装 Docker 引擎..." apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin echo ">>> 配置阿里云镜像加速器..." mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://你的加速器地址.mirror.aliyuncs.com"] } EOF echo ">>> 重启 Docker 并设置开机自启..." systemctl restart docker systemctl enable docker echo ">>> 初始化完成,Docker 版本:" docker --version

脚本里镜像加速器地址需要你到阿里云控制台搜“容器镜像服务”,打开个人版,找到“镜像加速器”,里面会给你一个专属的 HTTPS 地址。这个地址是免费的,绑定你的阿里云账号,用起来也很稳定。

执行方式很简单:

chmod +x init_env.sh ./init_env.sh

脚本跑完,docker --version能正常输出就说明环境没问题了。

3.2 第二步:启动 OpenClaw 容器

环境准备好之后,OpenClaw 的启动就一句话:

docker run -d \ --name openclaw \ --restart unless-stopped \ -p 8080:8080 \ -v /opt/openclaw:/app/data \ -e CLAW_ENV=production \ ghcr.io/openclaw/openclaw:latest

我来逐项解释一下这些参数为什么这么写:

  • -d:后台运行,不占据当前终端。
  • --name openclaw:给容器固定一个名字,后续查看日志和重启都方便。
  • --restart unless-stopped:Docker 守护进程启动时自动拉起容器,除非你手动 stop 它。服务器重启之后服务能自动恢复,这对没有运维经验的人太重要了。
  • -p 8080:8080:把容器的 8080 端口映射到宿主机的 8080 端口。OpenClaw 默认监听 8080,理论上也可以改成别的,但我建议别改,减少不必要的干扰。
  • -v /opt/openclaw:/app/data:把配置和数据文件持久化到宿主机。这一步一定不能省,否则容器更新或重装之后,所有配置、会话数据全没了。
  • -e CLAW_ENV=production:指定生产环境模式,会关闭一些调试输出,减少日志噪音。
  • ghcr.io/openclaw/openclaw:latest:官方镜像地址,latest 标签跟随最新稳定版。

运行成功后会输出一串容器 ID,这时候执行docker logs -f openclaw可以看到启动日志,看到Server started或类似字样就说明服务已经起来了。用浏览器访问http://你的服务器IP:8080,如果安全组放行了端口,应该能看到管理界面或者健康检查页面。

3.3 配置大模型 API:以 DeepSeek 和 DashScope 为例

OpenClaw 本身不带大模型,它相当于一个调度层,需要你提供大模型的 API 才能对话。目前主流的接入方式有两种:一种是直接配 OpenAI 兼容接口,另一种是配各家云厂商的专用 SDK。阿里云百炼(DashScope)的接口我实测过,和 OpenAI 格式高度兼容,所以配置起来非常直接。

以阿里云百炼为例,你需要在后台创建 API Key,然后在 OpenClaw 的配置文件里填写模型名称和 Base URL。模型名称可以用qwen-plus或qwen-max这类通义千问系列,Base URL 填 DashScope 提供的兼容地址。如果你用的是 DeepSeek,就填 DeepSeek 官方 API 的 Base URL,模型填deepseek-chat。

配置完成之后,一定要在后台的测试面板发一条消息验证。很多人会在这里卡住,问题往往是 API Key 填错、Base URL 末尾多了一个斜杠、或者模型名不在你的账号权限范围内。最简单的排查方式是先用curl直接调 API 接口,确认返回正常再来看 OpenClaw 的配置。

3.4 挂域名和全站 HTTPS

如果你的 OpenClaw 要长期使用,我强烈建议配域名加 HTTPS。原因很直接:很多聊天平台的回调地址要求必须是 HTTPS,而裸 IP 加端口的方式在微信、飞书这类平台上根本过不了审核。

我的做法是用 Nginx 做反向代理,把 80 端口的请求转发到 8080。先安装 Nginx:

apt-get install -y nginx

然后在/etc/nginx/sites-available/openclaw.conf里写转发配置:

server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:8080; 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; } }

启用配置并重载 Nginx:

ln -s /etc/nginx/sites-available/openclaw.conf /etc/nginx/sites-enabled/ nginx -t systemctl reload nginx

HTTPS 证书我推荐直接用阿里云免费的 SSL 证书,在云盾控制台申请,验证域名后下载 Nginx 格式的证书文件,然后填到 Nginx 配置里。免费证书一般一年有效期,到期后重新申请即可,具体路径在控制台里都很清晰,这里不再展开。

4. 常见问题与排查技巧实录

4.1 Docker 拉取镜像慢或直接超时

这是国内服务器最常见的问题。镜像加速器已经配置了,但还是拉不动,怎么办?先检查 daemon.json 是否生效:

docker info | grep -A 5 "Registry Mirrors"

如果显示你的加速器地址,说明配置没问题。如果没显示,那就重启一下 Docker 再试。还有种情况是加速器地址填错了,注意阿里云的加速器地址每人是不同的,不能直接抄网上别人的。另外,latest标签的镜像体积通常比较大,第一次拉取慢是正常的,耐心等一等,不要轻易 Ctrl+C。

实在拉不动的极端情况下,可以尝试先拉一个较小的基础镜像测试网络连通性:

docker pull hello-world

如果这个都拉不动,那就不是 OpenClaw 的问题,而是 Docker 网络本身有问题,建议检查服务器 DNS 配置或重启 Docker 服务。

4.2 容器启动失败:端口占用和内存不足

有一种情况是启动瞬间报错port is already allocated,说明 8080 端口被占了。执行ss -tlnp | grep 8080看看是谁占用的,如果你以前部署过其他服务,很可能是端口冲突。解决方式是停掉旧服务,或者把 OpenClaw 映射到其他端口,比如-p 9090:8080。

还有一种情况是明明内存够,但容器起来之后又马上退出。这时候别瞎猜,直接看日志:

docker logs --tail 200 openclaw

日志里一般会写明原因,最常见的是配置文件里的某个路径写错了,或者是启动时连不上你配置的 API 服务。OpenClaw 不像很多 Web 应用那样能容忍配置错误,它启动阶段会做连接检查,连不上就直接退出。

4.3 对话时大模型接口返回报错

这个问题大多出现在用户接入了自己的 API 之后。常见报错有三种:

报错信息可能原因解决方案
401 UnauthorizedAPI Key 错误或没有对应模型权限重新检查 Key,确认模型名是否在白名单内
404 Not FoundBase URL 填错,接口路径不对对照官方文档确认 Base URL 是否以/v1结尾
429 Too Many Requests并发超限或余额不足降低请求频率,检查账号余额和限流阈值

我用阿里云百炼时遇到最多的是第一种和第三种。第一种通常是复制 Key 时多复制了空格,第三种是测试的时候连续发消息触发了限流。这里也顺带说一句,别一开始就上qwen-max这类大模型,日常对话用qwen-plus或者更小的模型性价比更高。

4.4 服务器重启后 OpenClaw 没自动恢复

如果你的容器启动命令里写了--restart unless-stopped,那 Docker 服务启动时容器应该会自动拉起。如果重启后 OpenClaw 没起来,先检查 Docker 服务本身是否正常运行:

systemctl status docker

如果 Docker 没开机自启,执行systemctl enable docker再重启测试一遍。还有一种情况是重启时数据目录没挂载好,容器虽然起来了但配置丢失,这就要检查你的-v挂载路径是否正确,以及数据目录权限是否匹配容器内运行用户。

5. 进阶玩法:把 OpenClaw 玩出价值

5.1 接入钉钉、飞书和微信公众号

OpenClaw 的价值在于接入你日常用的平台,否则只是本地一个没人在乎的 API 服务。以钉钉为例,你需要先在钉钉开放平台创建一个企业内部应用,拿到 AppKey 和 AppSecret,然后配置消息回调地址为https://你的域名/openclaw/callback之类的路径,具体路径取决于 OpenClaw 版本。

飞书的配置思路类似,也是在飞书开放平台建应用,然后把回调地址填进去。这块最容易出问题的是回调地址的校验:平台会发送一个验证请求,如果你的 Nginx 反向代理没有正确透传请求头,验证就会失败。所以前面 Nginx 配置里的proxy_set_header四行一定要写全,缺了Host大概率出错。

5.2 用 systemd 守护 Nginx 和 Docker 服务

生产环境最怕服务悄悄挂掉。Docker 那边已经用--restart unless-stopped兜底了,Nginx 也可以用 systemd 托管。Ubuntu 上 Nginx 安装后自动就有 systemd 服务,你只需要确认:

systemctl enable nginx

另外建议写一个简单的健康检查脚本,每分钟用 curl 请求一次健康检查接口,如果连续几次失败就通过 Webhook 通知自己。这个不复杂,但能让你在用户发现问题之前先知道服务异常。

5.3 成本控制、日志清理与数据备份

OpenClaw 占用的磁盘主要是日志和数据目录。容器长期运行后/var/lib/docker/containers/下的 json 日志文件会越来越大,建议在/etc/docker/daemon.json里加上日志大小限制:

{ "log-driver": "json-file", "log-opts": { "max-size": "50m", "max-file": "3" } }

改完重启 Docker 才生效。数据备份也很简单,因为我们已经把数据目录挂载到/opt/openclaw,只需要定期打包这个目录上传到 OSS 就行。我习惯写一个 cron:

0 3 * * * tar czf /backup/openclaw_$(date +\%F).tar.gz /opt/openclaw

然后把这个备份文件同步到阿里云 OSS,异地容灾都省了。

5.4 关联本地部署的大模型:从 Ollama 到 Jetson

如果你不想用云端 API,也可以在另一台机器上本地部署大模型,比如用 Ollama 跑一个 7B 模型,然后把 OpenClaw 的 Base URL 指向 Ollama 的地址http://内部IP:11434/v1。这样做的好处是数据完全不出内网,缺点是回答质量和速度取决于你的硬件。

有朋友问过 RK3588 开发板能不能跑,我实测下来小模型可以跑,但流畅度一般;Jetson Orin 系列会好很多,能跑更大的模型。整体上,如果你追求稳定,建议云端 API 和本地模型都配上,OpenClaw 支持按场景切换模型,日常闲聊用本地小模型,重要任务用云端强模型,成本和体验都能兼顾。

6. 最后说几句实践体会

整套部署流程我跑了不止一遍,最大的感受是“两步部署”虽然听起来简单,但真正决定成败的往往是细节:镜像加速器有没有生效、安全组端口有没有开、数据目录有没有挂载、Nginx 请求头有没有透传。任何一步漏了,后面都会以很奇怪的方式报错,让你误以为是 OpenClaw 本身的问题。

如果非要给一句建议,我会说:先把最小闭环跑通,再接花哨功能。我曾经一上来就想把 Obsidian、Teams、邮件全部接好,结果配置互相干扰,排查了大半天。后来老老实实从容器启动、大模型对话、单一聊天渠道三步走,半小时内就全部打通。这个项目的上限很高,但地基一定要一步一步打。

最后再给你一个小技巧:阿里云控制台支持“快照”功能,在部署 OpenClaw 之后、开始做复杂配置之前,给系统盘打一个快照。这样后面不管怎么折腾,一条命令就能回到干净状态,省下的时间绝对对得起点这几下鼠标的成本。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询