☰
2026年OpenClaw(Clawdbot)一键部署攻略:Docker+阿里云11分钟自动化运行实操
2026/10/1 6:57:57 网站建设 项目流程

1. 为什么要在阿里云 ECS 上用 Docker 跑 OpenClaw

OpenClaw(社区里也常被叫 Clawdbot、Moltbot)是一个开源的本地 AI 智能体框架,它能用自然语言驱动文件管理、日程规划、代码生成、信息检索、定时任务这些操作,再通过插件把能力扩展到邮件、天气、摘要等场景。说白了,它就是一个可以 7×24 小时挂在服务器上、随时听你指令干活的私人助理。适合谁?适合想拥有一个私有化 AI 代理、又不想把数据交给第三方平台的开发者、学生和小团队。

我这次选的是阿里云 ECS + Docker 的组合。原因很直接:ECS 的镜像、安全组、快照都成熟,Docker 又能把 OpenClaw 的运行环境、依赖、数据目录全部封装进容器,升级和迁移都只是换一个镜像标签的事。相比直接在宿主机装 Python 依赖,容器方案不会污染系统环境,出问题删掉容器重来就行,对新手特别友好。

整篇攻略围绕「一键部署 + 自动化运行」展开,我会给出可直接复制的 docker-compose 配置、环境变量清单、端口映射,以及部署完成后验证自动化任务是否真的被触发的具体命令。全程在阿里云 ECS 上操作,系统用 Ubuntu 22.04,OpenClaw 用 2026 稳定版镜像。你只要跟着敲命令,11 分钟左右能跑起来。

需要提前准备的东西不多:一台阿里云 ECS(2 核 2GB 起步,2 核 4GB 更稳),系统盘 40GB,安全组放行 18789 端口,一个能调用的大模型 API Key。地域建议选中国香港或新加坡,免备案、网络也顺。下面从零开始。

2. 部署前的 TaoToken 前置准备与 API Key 获取

OpenClaw 本身不带大模型,它需要你给它一个能调用的模型接口。这里我用 TaoToken 来做模型接入层,原因是它同时兼容 OpenAI 风格的接口和 Anthropic 风格接口,OpenClaw 里配置 Base URL 和 Key 就能用,不用改代码。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。

先说清楚三个概念,避免你后面配置时懵:

Base URL 是模型服务的请求地址,OpenClaw 会把对话请求发到这里;API Key 是你的身份凭证,相当于门禁卡;Model ID 是你具体要调用的模型名字,比如某个对话模型或代码模型。这三样东西在 OpenClaw 的配置里必须成套出现,缺一个都会报错。

获取 Key 的路径:登录 TaoToken 控制台,进入 API Keys 页面创建一个新 Key,复制保存。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。创建时建议给 Key 起个能认出来的名字,比如 openclaw-ecs,方便以后排查是哪个服务在用。

如果你后面想长期跑编码类或 Agent 类任务,可以了解下 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,它更适合高频调用的场景。想先在网页里验证模型通不通,可以用模型对话页面 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 直接发一条消息试试。

这里有个我踩过的坑要提醒你:Key 只在创建时完整显示一次,页面刷新后就看不到了,所以复制后先存到本地密码管理器里。另外,OpenClaw 容器里读的是环境变量,不要把 Key 硬编码进镜像,用 .env 文件或者 compose 的 environment 字段注入,这样换 Key 不用重建镜像。

准备好 Key 之后,我们进入 ECS 上的实际操作。先确认你的 ECS 已经能 SSH 登录,安全组入方向放行了 22 和 18789 两个端口。22 是 SSH,18789 是 OpenClaw 的 Web 面板和 API 端口。放行方式:ECS 控制台 → 安全组 → 配置规则 → 入方向 → 添加 TCP 18789,授权对象 0.0.0.0/0。这一步不做,后面浏览器打不开面板,90% 的新手卡在这。

3. 可复制的 docker-compose 配置与环境变量清单

这一节是核心,给你一份能直接用的 docker-compose.yml,以及配套的 .env 文件。我把它放在 /opt/openclaw 目录下,数据、配置、日志都挂载到宿主机,容器删了数据还在。

先装 Docker 和 compose 插件。Ubuntu 22.04 上执行:

sudo apt update sudo apt install -y ca-certificates curl gnupg 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-compose-plugin sudo systemctl enable --now docker docker --version docker compose version

看到 Docker 版本号和 compose 版本号输出就说明装好了。接着创建工作目录:

sudo mkdir -p /opt/openclaw/{config,data,logs} sudo chown -R $USER:$USER /opt/openclaw cd /opt/openclaw

现在写 .env 文件,把模型接入的三件套填进去。注意 Base URL 用 TaoToken 的 API 地址:

cat > /opt/openclaw/.env <<'EOF' # 模型接入配置 OPENCLAW_MODEL_PROVIDER=openai-compatible OPENCLAW_BASE_URL=https://taotoken.net/api OPENCLAW_API_KEY=sk-你的TaoToken密钥 OPENCLAW_MODEL_ID=gpt-4o-mini # 服务配置 OPENCLAW_PORT=18789 OPENCLAW_ADMIN_TOKEN=换成一串你自己的随机字符串 OPENCLAW_LOG_LEVEL=info # 数据目录 OPENCLAW_DATA_DIR=/app/data OPENCLAW_CONFIG_DIR=/app/config EOF

OPENCLAW_ADMIN_TOKEN 是访问 Web 面板的管理令牌,自己生成一串足够长的随机字符,别用默认值。可以用openssl rand -hex 24生成。

然后是 docker-compose.yml:

services: openclaw: image: openclaw/openclaw:2026-stable container_name: openclaw restart: always ports: - "18789:18789" env_file: - /opt/openclaw/.env volumes: - /opt/openclaw/config:/app/config - /opt/openclaw/data:/app/data - /opt/openclaw/logs:/app/logs healthcheck: test: ["CMD", "curl", "-f", "http://localhost:18789/healthz"] interval: 30s timeout: 5s retries: 3 start_period: 20s logging: driver: json-file options: max-size: "10m" max-file: "3"

几个关键点解释一下。ports 把容器 18789 映射到宿主机 18789,和安全组放行的端口对应。env_file 让容器读取 .env,换 Key 只改这个文件再docker compose up -d即可。volumes 三个挂载保证配置、数据、日志持久化。healthcheck 每 30 秒探一次 /healthz,容器状态会显示 healthy 或 unhealthy,比只看 running 靠谱。logging 限制日志大小,避免磁盘被写满。

启动:

cd /opt/openclaw docker compose up -d docker compose ps

如果docker compose ps里 STATUS 显示 Up (healthy),说明容器起来了。第一次启动会拉镜像,取决于网络,通常一两分钟。到这里,配置部分就完成了,下面是验证。

4. 验证请求与自动化任务是否正常触发

容器起来不等于模型能通、任务能跑。这一节给你几条验证命令,从服务健康、模型连通、到自动化任务触发,逐层确认。

先看服务健康:

curl -s http://localhost:18789/healthz

返回类似{"status":"ok"}就说明服务进程正常。如果返回空或连接拒绝,看日志:

docker compose logs --tail=100 openclaw

接着验证模型连通。OpenClaw 一般提供一个测试接口,或者你可以直接进容器用 CLI 发一条消息:

docker exec -it openclaw openclaw model test --prompt "你好,回复一句话确认连通"

如果配置正确,会返回模型生成的一句话。这一步报错,多半是 Base URL、Key 或 Model ID 三件套里有一个不对,对照 .env 检查。

再验证 Web 面板。浏览器打开http://你的ECS公网IP:18789,首次访问会让你输入管理令牌,就是 .env 里的 OPENCLAW_ADMIN_TOKEN。进去后能看到对话界面和技能列表。

最后是重点:验证自动化任务是否真的被触发。OpenClaw 的自动化靠 scheduler 技能,我们装一个定时任务,让它每分钟写一条日志,然后观察是否按时执行。

docker exec -it openclaw openclaw skills install scheduler docker exec -it openclaw openclaw task create \ --name heartbeat-test \ --schedule "*/1 * * * *" \ --command "echo triggered at $(date) >> /app/logs/heartbeat.log"

等两分钟,然后查看日志:

tail -f /opt/openclaw/logs/heartbeat.log

如果每隔一分钟出现一行triggered at ...,说明调度器正常工作,自动化任务被成功触发。这个心跳测试很实用,以后你加任何定时任务,都可以先用它确认调度链路是通的。

再补一条查看任务列表的命令,确认任务已注册:

docker exec -it openclaw openclaw task list

看到 heartbeat-test 在列表里,状态为 active,就齐活了。到这里,部署、模型接入、自动化触发三层都验证通过,你的 OpenClaw 已经是一个能干活的状态。

5. 本篇常见报错排查对照

部署过程中最容易撞上的几个报错,我按真实错误信息对照给你排查思路。

报错一:401 Unauthorized 或 invalid api key

这是模型接入层最常见的。原因通常是 OPENCLAW_API_KEY 填错、Key 已失效、或者 Base URL 写成了带路径的完整地址导致拼接错误。检查 .env 里 OPENCLAW_BASE_URL 是否为https://taotoken.net/api,Key 是否复制完整没有多余空格。改完执行docker compose up -d重建容器让新环境变量生效。注意,只docker restart不会重新读 .env,必须 up -d。

报错二:local proxy failed 或 connection refused

容器内访问外部模型接口失败。先确认 ECS 出方向没被限制,再进容器测一下网络:

docker exec -it openclaw curl -s -o /dev/null -w "%{http_code}" https://taotoken.net/api

返回 200 或 401 都说明网络通,返回 000 就是网络层不通,检查 ECS 安全组出方向规则和 DNS。

报错三:reading choices 相关解析错误

这类报错说明请求发出去了,但返回结构不是 OpenClaw 预期的格式。多半是 Model ID 填了一个不存在的模型名,或者 Provider 类型选错。确认 OPENCLAW_MODEL_PROVIDER 和实际接口风格匹配,Model ID 用你账号下确实可用的模型名。可以在模型对话页面先手动发一条消息,确认这个模型名能用,再填回 .env。

报错四:OAuth 相关报错

如果你用的是需要 OAuth 的接入方式,报错通常和 token 过期或回调地址不匹配有关。OpenClaw 里更推荐用 API Key 方式,简单直接。如果确实要走 OAuth,检查回调地址是否和你在平台登记的一致,token 是否过期。

报错五:端口占用或容器名冲突

docker compose up -d报端口已被占用,先看谁占了 18789:

sudo lsof -i :18789

如果是旧容器,docker rm -f openclaw删掉再起。容器名冲突同理,删掉旧的即可,数据在挂载目录里不会丢。

报错六:healthcheck 一直 unhealthy

容器 running 但 unhealthy,通常是启动时间不够或健康检查路径不对。先看日志确认服务是否真的起来了,如果日志显示正常但健康检查失败,把 start_period 调大,比如 60s,给服务更多初始化时间。

排查的核心思路就一条:先看日志docker compose logs,再分层验证——服务进程、模型连通、任务触发。大部分问题都能在日志里找到直接线索。

6. 长期运行与后续接入建议

跑通之后,有几件事值得做,能让你的 OpenClaw 更稳、更好用。

第一,把常用技能装齐。除了 scheduler,文件管理、摘要、天气这些都可以按需装:

docker exec -it openclaw openclaw skills install file-manager docker exec -it openclaw openclaw skills install summary docker exec -it openclaw openclaw skills install weather docker compose restart openclaw

第二,设置开机自启。compose 里已经写了restart: always,ECS 重启后容器会自动拉起,不用手动干预。可以重启一次 ECS 验证:sudo reboot,等一分钟后重新 SSH,docker compose ps应该还是 healthy。

第三,定期备份数据目录。配置和任务都在 /opt/openclaw 下,一条命令打包:

tar -czf /opt/openclaw-backup-$(date +%F).tar.gz /opt/openclaw

第四,升级镜像。改 compose 里的 tag 或直接拉最新稳定版,然后重建:

docker compose pull docker compose up -d

数据在挂载卷里,升级不丢。

如果你后面要接更多模型或做更复杂的 Agent 编排,建议把模型接入统一走 TaoToken,Base URL 保持https://taotoken.net/api,换模型只改 Model ID,不用动其他配置。需要管理多个 Key 时,去 API Keys 页面 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 按服务拆分,方便审计和吊销。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,遇到接口细节可以对照查。

最后说个实用技巧:把心跳测试任务保留着,它相当于一个探针。哪天你发现自动化任务不触发了,先看 heartbeat.log 有没有断,断了就是调度器或容器的问题,没断就是具体任务配置的问题,能帮你快速定位方向。整套跑下来,从装 Docker 到验证自动化触发,熟练后 11 分钟足够。

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

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

立即咨询