1. 为什么我劝你先搞懂 OpenClaw 再动手部署
OpenClaw(曾用名 Clawdbot、Moltbot)是一个开源的本地 AI 智能体框架,它能让你用自然语言指挥服务器干活:整理文件、跑脚本、查资料、定时发邮件、生成代码,甚至把多个 Skills 串成一条自动化流水线。适合谁?适合想拥有一个 7×24 小时私有助手、又不想把数据交给第三方 SaaS 的个人开发者和小团队。它最大的特点是轻量、可扩展、能私有化部署,模型 endpoint 可以换成任意兼容 OpenAI 协议的服务。
但我在帮朋友排查部署问题时发现,新手卡住的地方高度集中:Docker 装不上、端口没放行、Skills 目录挂载错、模型 endpoint 填了却报 401。这些问题单看都不难,凑在一起就让人抓狂。所以这篇教程不玩虚的,直接给你一份能在阿里云 ECS 上复制粘贴跑通的 docker-compose 配置,把 Skills 挂载、环境变量、TaoToken 接入的 settings 片段全部写清楚,最后附上容器日志和接口连通性验证步骤。你照着做,10 到 20 分钟能跑起来。
需要提前说明的是,本文聚焦的是「自部署 + 模型接入」这条链路,不涉及任何网络加速工具,所有操作都在阿里云控制台和服务器命令行内完成。你只需要一台能正常访问公网的 ECS,以及一个可用的模型 API Key。下面从环境准备开始,一步步来。
2. 阿里云 ECS 环境准备与 Docker 安装踩坑记录
2.1 实例规格与系统镜像怎么选
在阿里云控制台创建 ECS 实例时,规格建议 2 核 2GB 起步,2 核 4GB 会更流畅,因为 OpenClaw 跑起来后还要留内存给 Skills 里的子进程。硬盘 40GB 足够,系统盘选高效云盘即可。地域方面,如果你主要在国内使用,选离你近的地域延迟更低;如果涉及联网搜索类 Skill,需要确认该地域的出网策略是否满足你的需求。
系统镜像我实测下来最省心的是 Alibaba Cloud Linux 3,它和 CentOS 7 的包管理兼容,Docker 官方脚本支持也好。Ubuntu 22.04 同样没问题,看你熟悉哪个。创建实例时设置好 root 密码或密钥对,记牢,后面远程连接要用。
安全组是新手第一大坑。默认安全组往往只开了 22 端口,OpenClaw 的 Web 面板默认走 18789,你必须手动加一条入方向规则:协议 TCP,端口 18789,授权对象 0.0.0.0/0(生产环境建议改成你的固定 IP)。这一步不做,后面浏览器打不开面板,你会以为是服务没起来,其实是流量根本没进来。
2.2 用官方脚本装 Docker 及常见报错处理
远程连接上服务器后,先更新依赖再装 Docker。Alibaba Cloud Linux 3 和 CentOS 系用 yum:
sudo yum update -y sudo yum install -y curl wget git curl -fsSL https://get.docker.com | sudo bash sudo systemctl start docker sudo systemctl enable docker docker --version如果你遇到Cannot connect to the Docker daemon,八成是服务没启动,执行sudo systemctl status docker看状态。如果卡在拉取镜像慢,可以配置阿里云镜像加速器,在/etc/docker/daemon.json里加上 registry-mirrors 地址,然后sudo systemctl daemon-reload && sudo systemctl restart docker。
Ubuntu 用户把 yum 换成 apt 即可。装完后用docker run hello-world验证,能打印出欢迎信息说明 Docker 正常。这一步别跳过,Docker 没通后面全白搭。
2.3 创建目录结构与权限设置
OpenClaw 需要持久化配置和数据,我习惯放在/opt/openclaw下,分 config、data、skills 三个子目录:
sudo mkdir -p /opt/openclaw/{config,data,skills} sudo chown -R $USER:$USER /opt/openclaw cd /opt/openclawskills 目录单独拎出来,是为了后面挂载自定义 Skill 时不用动容器内部。权限用当前用户即可,如果你用 root 操作就保持 root。目录建好后,ls -la /opt/openclaw应该能看到三个空目录,确认无误再往下走。
3. docker-compose 一键拉起 OpenClaw 与 Skills 挂载配置
3.1 完整 docker-compose.yml 可直接复制
比起一长串docker run,我更推荐用 docker-compose,配置清晰、改起来方便。在/opt/openclaw下新建docker-compose.yml:
version: "3.8" services: openclaw: image: openclaw/openclaw:2026-stable container_name: openclaw restart: always ports: - "18789:18789" volumes: - ./config:/app/config - ./data:/app/data - ./skills:/app/skills environment: - OPENCLAW_PORT=18789 - OPENCLAW_DATA_DIR=/app/data - OPENCLAW_SKILLS_DIR=/app/skills - OPENCLAW_LOG_LEVEL=info - OPENCLAW_MODEL_BASE_URL=https://taotoken.net/api - OPENCLAW_MODEL_API_KEY=sk-你的TaoToken密钥 - OPENCLAW_MODEL_ID=claude-sonnet-4-5 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:18789/health"] interval: 30s timeout: 10s retries: 3三个 volume 分别对应配置、数据、技能目录,容器重建数据不丢。environment 里的模型相关变量是接入 TaoToken 的关键,下一节细说。healthcheck 用来判断容器是否真的健康,不是只看进程在不在。
3.2 Skills 目录挂载与自定义技能加载
Skills 是 OpenClaw 的灵魂。官方镜像内置了一批常用技能,但你想加自己的,就往./skills里放。挂载后容器内路径是/app/skills,OpenClaw 启动时会扫描这个目录下的技能清单文件。
一个最小 Skill 的结构长这样:
skills/ my-skill/ manifest.json handler.pymanifest.json里声明技能名、触发词、入口文件。放好后重启容器,用docker exec -it openclaw openclaw skills list就能看到新技能。如果你只是用官方技能,可以进容器执行安装命令:
docker exec -it openclaw openclaw skills install file-manager docker exec -it openclaw openclaw skills install scheduler docker exec -it openclaw openclaw skills install weather安装完docker restart openclaw生效。注意:通过命令安装的技能会写进 data 目录,和挂载的 skills 目录是两套机制,别搞混。
3.3 环境变量清单与模型 endpoint 指向 TaoToken
环境变量里最关键的三个是OPENCLAW_MODEL_BASE_URL、OPENCLAW_MODEL_API_KEY、OPENCLAW_MODEL_ID。Base URL 填https://taotoken.net/api,Key 填你在 TaoToken 控制台生成的密钥,Model ID 填你要用的模型名。这三件套缺一不可,少一个就会在请求时报错。
如果你不想把 Key 写在 compose 文件里(推荐),可以改用.env文件:
OPENCLAW_MODEL_API_KEY=sk-你的密钥然后 compose 里写- OPENCLAW_MODEL_API_KEY=${OPENCLAW_MODEL_API_KEY}。这样 Key 不会进版本库。启动命令:
docker compose up -d docker compose logs -f看到日志里出现server listening on 18789和model endpoint loaded就说明起来了。
4. 验证请求:容器日志、健康检查与接口连通性
4.1 看容器日志确认启动成功
启动后第一件事是看日志:
docker logs -f openclaw正常启动会依次打印:加载配置、初始化数据库、扫描 skills 目录、注册模型 endpoint、监听端口。如果卡在某一步,日志会给出具体原因。我见过最多的是 skills 目录权限不对导致扫描失败,日志里会写permission denied,这时sudo chown -R 1000:1000 /opt/openclaw/skills再重启即可。
4.2 用 curl 验证模型接口连通性
容器起来不代表模型能通。进容器内部测一下:
docker exec -it openclaw sh curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer $OPENCLAW_MODEL_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"claude-sonnet-4-5","messages":[{"role":"user","content":"ping"}]}'返回里有choices字段就说明模型链路通了。如果返回 401,检查 Key 是否复制完整、有没有多余空格;如果返回model not found,检查 Model ID 拼写。这一步通了,Web 面板里的对话基本不会出问题。
4.3 Web 面板访问与首次配对
浏览器打开http://你的公网IP:18789,首次访问会要求配对,面板上会显示一个配对码或 Token,复制保存。进去后在设置里确认模型 endpoint 显示的是你配置的地址。随便发一句「你好」,能正常回复就大功告成。
如果面板打不开,先curl http://localhost:18789/health在服务器本地测,本地通说明是安全组问题,本地不通说明容器没起好。这个二分法能帮你快速定位。
5. 本篇常见报错排查:401、local proxy failed、reading choices
5.1 401 Unauthorized 与 Key 配置
401 几乎都是 Key 的问题。三种可能:Key 复制时带了换行或空格;Key 已过期或在控制台被禁用;环境变量没生效,容器读到的还是旧值。排查方法:docker exec -it openclaw env | grep MODEL看实际注入的值,和你以为的是否一致。改完 compose 后要docker compose up -d重建容器,光 restart 不会重新读 environment。
5.2 local proxy failed 与网络出口
local proxy failed通常出现在容器内请求外部接口时。先确认容器能出网:docker exec -it openclaw curl -I https://taotoken.net/api。如果超时,检查 ECS 的安全组出方向规则和路由表。注意,这里说的是正常的公网访问配置,不涉及任何特殊网络工具。如果 ECS 本身能出网而容器不能,检查 Docker 的 DNS 配置,在 daemon.json 里加"dns": ["223.5.5.5"]后重启 Docker。
5.3 reading choices 报错与响应解析
error reading choices说明请求发出去了、也收到响应了,但响应结构不符合预期。常见原因是 Base URL 写成了https://taotoken.net/api/v1而代码又自动拼了/v1,导致路径变成/api/v1/v1/...。正确写法是 Base URL 只到/api,让客户端自己拼版本路径。另一个原因是 Model ID 填了不存在的模型,服务端返回了错误结构。对照官方文档确认路径和模型名即可。
5.4 OAuth 与鉴权模式混淆
有些模型服务用 OAuth 流程,而 OpenClaw 默认走 API Key 鉴权。如果你看到 OAuth 相关报错,说明配置里混入了不匹配的鉴权方式。TaoToken 走的是标准 Bearer Token,不需要 OAuth。检查环境变量里有没有多余的 OAuth 相关字段,删掉后重建容器。记住三件套:Base URL、Key、Model ID,其他鉴权字段一律不加。
6. 长期编码与 Agent 场景:把 OpenClaw 用起来
跑通只是开始。如果你打算把 OpenClaw 当长期编码助手或自动化 Agent 用,建议去 TaoToken 控制台开一个 Coding Plan,额度更划算,适合高频调用。日常运维记住几条命令:docker compose logs -f看日志,docker compose pull && docker compose up -d升级镜像且数据不丢,cp -r /opt/openclaw /opt/openclaw-backup定期备份。
Skills 方面,先从 file-manager 和 scheduler 入手,把「定时整理日志」「自动归档文件」这类重复劳动交给它。等你熟悉了 manifest 结构,再写自己的 Skill 接内部系统。模型对话调试可以去模型对话页面直接试 prompt,确认效果再写进 Skill。API Key 管理和接入文档在控制台和文档页都能找到,遇到鉴权问题先翻文档再动手改配置。
最后提醒一句:所有配置改完,养成docker compose up -d重建而不是restart的习惯,环境变量和挂载变更才能真正生效。这套流程我在多台 ECS 上复现过,按顺序走基本一次成功。