
前两天有个做自动化运营的朋友问我有没有办法把本地那套OpenClaw智能体框架搬到云上跑省得每天开着笔记本让风扇嗡嗡转。我给的答案就是直接用阿里云ECS部署——不折腾硬件、不担心断电、带宽和公网IP都是现成的两步走完半小时之内就能把一个集群版的OpenClaw跑起来。今天我们就把这套流程拆开揉碎讲清楚从买机器、做安全组到跑一键部署脚本、配Windows Companion全流程踩坑记录都在这里了。先说OpenClaw是干什么的。它是一个基于大语言模型的智能体运行框架可以挂接Clawdbot这类自动化工作流编排各类工具调用、消息推送、定时任务和模型调度。正因为要长期在线承担任务所以把它放在阿里云上比放在本机更合理——云主机本身就有固定公网IP模型API的调用链路更稳定出问题随时能重建环境。我们这篇文章只解决一件事怎么在阿里云上以最快速度把OpenClaw部署起来并确保它能被本地Windows客户端正常调用。1. 为什么OpenClaw值得部署在阿里云从本地折腾到云端方案1.1 本地部署的三个硬伤我最早是在自己电脑上跑OpenClaw的用的是WSL2里的Ubuntu环境。当时感觉一切都好但连续跑了两个星期之后就发现三个问题很要命。第一公网可达性几乎没有。你本地起了一个OpenClaw服务最多就是局域网内自己访问想在外面通过手机或者公司电脑连回来看任务状态就得做内网穿透或者配置路由器的端口转发。这一层折腾下来安全性和稳定性都很难兼顾。第二断电解锁不省心。笔记本合盖、路由器重启、小区突发停电都会让智能体任务中断。本地跑的服务一旦没有守护进程保护脑补一下半夜两点任务排队到一半直接断掉的感觉。第三本机资源不够分。OpenClaw跑起来之后模型推理和全家桶组件Redis、PostgreSQL、消息队列会叠加吃掉不少内存。如果你同时还在用电脑做别的事情八个G的内存基本不够看。这就是为什么我后来直接把OpenClaw整体搬上阿里云ECS。你只需要一台2核4G起步的实例操作系统选Ubuntu 22.04装好Docker然后跑一条命令。剩下的网络、存储、重启策略、监控报警都交给阿里云。1.2 “两步”到底指哪两步市面上讲部署的文章很多但大部分让读者在终端里敲几十条命令黏贴半天。我讲的“两步”是把整个流程压缩到两个最关键的动作第一步在阿里云控制台完成ECS实例的创建和初始化。包括选机型、选镜像、配安全组、设置密钥对。这一步在控制台点几分钟就完事。第二步SSH登录到机器执行OpenClaw一键部署脚本并完成配置。脚本会自动拉取项目代码、构建Docker镜像、初始化数据库、写入环境变量。整个过程不需要手动安装Node.js、Python或者PostgreSQL。一键脚本会把依赖全部装好。按照我测试的配置2C4G、华东地区的ECS、Ubuntu 22.04从执行脚本到服务完全起来一般在一分半到两分钟之间。注意阿里云轻量应用服务器和ECS都能跑OpenClaw。如果你只是为了个人测试选轻量应用服务器更便宜一点但后面要升级配置、扩容带宽还是ECS更灵活。本文以ECS为例。2. 部署前30分钟账号、实例、镜像与安全组的一次性准备2.1 阿里云账号与新用户资源如果你还没有阿里云账号先去官网注册一个顺便完成实名认证。新用户一般能领到免费试用或代金券拿来跑OpenClaw这种小负载应用完全够。我这里重点提醒一句很多人喜欢用主账号直接买机器、配安全组、操作生产资源这是运维大忌。尤其OpenClaw将来要对接API密钥、数据库连接串一旦主账号信息在配置过程中被泄漏风险非常大。我平时的做法是创建RAM子账号只给它授予ECS相关的操作权限。这倒不是说买了机器之后必须这么干而是说当你部署完OpenClaw、准备长期使用的时候用子账号登录控制台做日常管理更安全。RAM的配置在阿里云控制台搜“RAM访问控制”就能找到创建用户时选择“OpenAPI调用访问”和“控制台访问”两个方式然后附加AliyunECSFullAccess策略就行。2.2 选实例配置我不建议买最小规格如果说只打算试试OpenClaw的API能不能通那1核2G也不是不能用。但如果你想让它真正跑起定时任务、挂接Clawdbot工作流、承担一点并发调用1核2G很快就会被压垮。我的建议是至少选2核4G预算够就直接上2核8G。这个规格跑Docker全家桶不会太紧张也留出了内存给系统缓存和日志。具体到实例规格族我推荐通用型或计算型。比如ecs.g7.xlarge4核16G就属于杀鸡用牛刀但跑得很爽。如果预算有限ecs.c6.large2核4G已经是我实测过能流畅运行OpenClaw整套组件的最低配置线。带宽方面按量付费的按固定带宽计费即可5Mbps足够个人使用如果后面要传输大量日志或者模型文件再升到10Mbps不迟。2.3 系统镜像、数据盘与密钥对镜像这里不要选默认的CentOS。虽然CentOS用户基数大但很多CentOS版本已经进入维护尾声很多新软件源适配不及时。我更建议直接选Ubuntu 22.04 LTS对Docker的兼容性最省心OpenClaw官方文档里的命令也几乎都是按Ubuntu/Debian的包管理风格写的。选镜像的时候找“Ubuntu 22.04 64位 UEFI版”或类似选项即可。数据盘不是必选项但如果你希望把Docker的数据目录独立开我建议加一块40G的云盘。挂载到/mnt/data之后把OpenClaw所有容器的Volume路径指向这个挂载点将来实例本身出了问题数据盘拆下来挂到新机器上就能恢复。这一点我后面在备份章节还会再提。密钥对一定要做。在控制台创建实例时直接选择“密钥对”登录方式创建或导入一个密钥对下载私钥文件并妥善保存。有多重要用密码登录一旦被人爆破大概率直接接管服务器。用密钥对登录哪怕别人知道IP没有私钥文件也进不来。2.4 安全组少开端口不要裸奔安全组是大多数人装完系统后最容易忽略的一步但它决定了你部署的东西能不能被正常访问以及这台机器会不会成为黑客的肉鸡。如果OpenClaw只让少数几个IP来访问Web控制台安全组规则里就只放行这些IP。这里有个常识要纠正不要为了省事把0.0.0.0/0全部放行到22端口。因为SSH暴力破解无时无刻不在发生你可以把22端口限制为公司IP或家庭宽带IP。动态IP怎么处理用阿里云的“前缀列表”功能把允许访问的IP段维护在一个列表里改一次就行。OpenClaw一键部署脚本默认会把Web服务端口和API服务端口都映射出来我这里自定义成28080管理端和28081API端两个端口避开常见端口可以减少被扫描工具盯上的概率。安全组规则形如方向协议端口范围授权对象说明入方向TCP22你的办公网IP/32SSH登录入方向TCP28080你的办公网IP/32OpenClaw管理面板入方向TCP280810.0.0.0/0开放API时需要全放行注意如果只是自己远程连过来用28081也建议限制IP。真的要给外部系统调用再单独给调用方的IP开白名单。2.5 域名与HTTPS前置如果你只是自己用直接用http://服务器公网IP:28080访问管理面板就够了。但OpenClaw的Web端有一些现代浏览器能力比如麦克风、摄像头、剪贴板要求安全上下文也就是HTTPS。如果你未来想让手机端、网页端全功能使用需要提前给ECS绑定一个域名并申请免费SSL证书。阿里云提供免费DV证书每年可以申请一定额度。流程是先买一个域名或用自己的存量域名到云解析DNS控制台加一条A记录指向ECS公网IP然后在SSL证书控制台申请证书、验证域名归属下载Nginx格式的证书文件。这个步骤我只建议做一次因为后面所有HTTP流量到HTTPS的升级都依赖它。3. 秒级部署核心一键脚本的执行细节与参数解析3.1 连接服务器检查环境基线创建完实例后在控制台找到公网IP然后用本地终端SSH登录。以macOS/Linux为例命令是ssh -i ~/.ssh/aliyun.pem root你的公网IPWindows用户我建议直接用Windows Terminal里的PowerShell 7同样支持OpenSSH客户端命令一样ssh -i C:\Users\你的用户名\.ssh\aliyun.pem root你的公网IP登录之后第一件事不是马上跑部署脚本先用三条命令看环境基线uname -a cat /etc/os-release free -h确认系统是Ubuntu 22.04、内存识别正常再继续。如果内存偏小或者系统盘不足先回控制台做变配或扩容不要在资源受限的环境里硬跑。3.2 安装Docker与Compose插件OpenClaw官方的一键部署脚本通常会帮你判断Docker是否就位如果没有就自动安装。但我仍然建议你手动装一遍踩过坑的人都懂自动安装经常会遇到官方源下载慢、GPG键过期的乱七八糟问题手动确认一遍反而更快。sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) 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 CE而不是直接用apt仓库里自带的老版本docker.io。因为OpenClaw项目使用的docker compose v2语法和很多新特性老版Docker不支持后面跑起来会莫名其妙报错。装完之后验证docker --version docker compose version只要两个版本号都能打印出来环境就绪。3.3 跑一键部署脚本时它到底做了什么接下来执行OpenClaw部署脚本。不同下载源对应的脚本路径略有差异我这边用的是从项目发布页拿到的推荐方式curl -fsSL https://get.openclaw.example.com/deploy.sh -o deploy.sh chmod x deploy.sh sudo ./deploy.sh执行后脚本会在后台做这些事检查端口冲突。如果28080/28081被占用会提示你改端口或者停掉旧服务。克隆OpenClaw的Docker编排仓库到/opt/openclaw目录。读取.env配置文件模板生成随机密钥写入数据库密码、Redis密码、JWT签名Key。拉取OpenClaw服务镜像、数据库镜像、队列镜像。通过docker compose up -d启动全部容器。等待数据库初始化完成自动创建管理员账号并输出初始化密码。整个过程中终端会滚动打印日志。你只需要等待它出现类似OpenClaw started successfully字样。3.4 配置环境变量模型API Key与外部工具脚本跑完只是把框架起了OpenClaw真正能用起来还要在配置里确定接哪个大模型。进入/opt/openclaw目录你会看到.env文件核心编辑项如下cd /opt/openclaw nano .env需要关注的核心变量OPENCLAW_MODEproduction OPENCLAW_HOST0.0.0.0 OPENCLAW_PORT28081 WEB_PORT28080 DATABASE_URLpostgresql://openclaw:随机密码db:5432/openclaw REDIS_URLredis://:随机密码redis:6379/0 MODEL_PROVIDERanthropic MODEL_API_KEY你的模型服务密钥 DEFAULT_MODELclaude-sonnet-4-20250514如果你用的是阿里云百炼或其他国产模型服务只需要把MODEL_PROVIDER改成对应值再把MODEL_API_KEY换成平台生成的API Key即可。不要用默认的假密钥不然后续任务全部会报鉴权失败。提示.env文件涉及大量敏感信息部署完成后建议执行chmod 600 .env限制读写权限。在阿里云RAM子账号体系下还可以给实例绑定RAM角色让容器内部的SDK自动获取临时凭证连密钥都省了。3.5 端口映射与容器健康检查脚本启动的容器默认会映射到宿主机端口。用docker compose ps查看当前容器状态可以看到类似这样NAME IMAGE STATUS PORTS openclaw-web openclaw/web:latest Up 0.0.0.0:28080-80/tcp openclaw-server openclaw/server:latest Up 0.0.0.0:28081-8000/tcp openclaw-db postgres:16-alpine Up 5432/tcp openclaw-redis redis:7-alpine Up 6379/tcp注意数据库和Redis容器只暴露了容器内部端口没有映射到宿主机这是脚本默认的安全策略。如果数据库需要外部访问我建议不要直接改端口映射而是用SSH隧道或者堡垒机的端口转发方式避免把PostgreSQL暴露到公网。容器全部显示Up状态之后不代表OpenClaw已经可用还要看核心服务的健康日志docker logs -f openclaw-server --tail 200出现Uvicorn running on http://0.0.0.0:8000基本说明API服务已经起来了。再用一条命令探测管理面板curl -I http://127.0.0.1:28080能返回200或302状态码本地服务端就完全OK。4. Windows Companion联动用WSL搞定本地控制端的配置4.1 为什么要装Windows Companion很多人部署完服务端发现浏览器打开管理面板也能用就以为结束了。但OpenClaw更顺滑的用法是配合Windows桌面端的Companion程序——它会在系统托盘里驻留一个图标把本地文件系统、剪贴板、通知中心和OpenClaw服务端连接起来。比如你在本地复制一段文字可以直接推给OpenClaw让它执行后续任务或者OpenClaw处理完的结果可以直接写入你本地的某个目录。Companion和云端服务端的通信协议是WebSocket。所以你的Windows机器只需要能访问到ECS的28081端口并且正确配置服务端地址和访问令牌就行。4.2 WSL环境的常见坑“无法安全验证”和wsl -- status这里就要提到很多人在Windows上配置Companion时踩得最深的一个坑了。Companion本质上是一个Linux环境下的辅助进程官方推荐用户在Windows上通过WSL2来运行它。装好WSL之后给Companion配置服务端地址时它会先做一次“安全验证”本质上是到服务端交换一个SSL/TSL证书指纹。如果你用的是自签名HTTPS或者服务端容器没有正确挂载证书验证时就会报类似“无法安全验证”的提示。网上大部分教程会告诉你重启WSL或者重新安装证书但实际根因一般在两步WSL2的发行版没有正常启动。在PowerShell里运行wsl --status如果看到发行版处于Stopped状态直接执行wsl --shutdown再重新登录。服务端的证书链不完整尤其当你还没有配置合法HTTPS证书时Companion会拒绝与一个验证失败的服务端建立加密连接。我当时用的是自签证书做测试Companion报“无法安全验证”后我直接在WSL里用curl访问服务端点发现是证书链缺了中间证书。解决办法也很简单在服务端用cat fullchain.cer root.cer combined.pem把证书合并再在docker compose的挂载配置里指向合并后的文件。如果你对证书这块不太熟更省事的方式是先用HTTP跑通功能再回来升级HTTPS。4.3 Companion连接参数的配置流程假定你已经完成了WSL2的安装并且Ubuntu发行版能正常启动。整个配置流程分这几步第一步在WSL里安装Companion的Linux版本。以Debian/Ubuntu为例wget https://github.com/openclaw/companion/releases/latest/download/openclaw-companion-linux-amd64.tar.gz tar -xzf openclaw-companion-linux-amd64.tar.gz sudo mv openclaw-companion /usr/local/bin/第二步初始化Companion的配置文件openclaw-companion init它会自动生成~/.config/openclaw-companion/config.toml。打开这个文件nano ~/.config/openclaw-companion/config.toml重点配置[server] endpoint https://你的ECS公网IP:28081 token 部署时生成的管理令牌 skip_verify false [storage] download_dir /home/你的WSL用户名/Downloads [notify] enable true配置里的token哪里来在服务端执行docker exec -it openclaw-server openclaw tokens create --name windows-companion输出的字符串就是访问令牌。注意这个令牌会打印一次建议复制后立即保存。第三步启动Companionopenclaw-companion run如果一切正常终端里会持续滚动WebSocket连接日志。在Windows托盘区不会直接看到图标因为它是纯Linux进程。要让它在后台运行可以用systemd用户服务或者screen。我这里用的是systemdsudo tee /etc/systemd/system/openclaw-companion.service /dev/null EOF [Unit] DescriptionOpenClaw Companion Afternetwork-online.target [Service] ExecStart/usr/local/bin/openclaw-companion run Restartalways User你的WSL用户名 [Install] WantedBymulti-user.target EOF sudo systemctl enable --now openclaw-companion这样Windows开机后WSL发行版如果配置了开机自启Companion进程就能自动拉起本机和云端的连接就变成常驻通道了。5. 部署后必须做的四件事验证、加固、日志与备份5.1 功能验证清单服务端和客户端都装好之后不要急着开跑正式任务先按下面这个清单快速验证一遍管理面板登录浏览器访问http://公网IP:28080用部署脚本输出的管理员账号密码登录。首次登录会要求改密码。API连通性在管理面板里随便发一个简单的执行任务比如让智能体解析一句文本看任务是否正常进入队列并返回结果。如果任务一直Pending重点看数据库连接和Redis队列日志。模型调用链路在配置页填写的API Key如果是无效的执行任务时会报401 Authentication Error。这一步暴露问题最直接。Companion通道在本地WSL里执行openclaw-companion status如果显示Connected说明WebSocket链路已打通。把这些全部跑通再谈挂接Clawdbot或其他业务逻辑。5.2 容器自启动与宕机恢复ECS实例本身如果被重启Docker服务默认会跟随系统启动但容器未必会自动恢复。所以要在系统层面设置Docker服务开机自启并设置容器重启策略。一键部署脚本一般已经让docker compose接管了容器生命周期你还可以在docker-compose.yml里为每个服务显式设置restart: unless-stopped。这行配置的意思很简单除非你手动停止否则容器一旦崩溃或宿主机重启Docker会在下次可用时自动拉起来。另外阿里云控制台可以给ECS实例设置“重启实例”的定时任务但这只是底层机器层面的保障。OpenClaw的应用层自愈还是要靠Docker的重启策略来实现。两者叠加遇到极端情况基本不用人工干预。5.3 日志轮转与磁盘水位OpenClaw的容器如果开启了调试日志几天下来能产生数GB的日志文件。没有日志轮转的话系统盘会被写满表现为页面访问变慢、接口超时甚至服务假死。我的建议是直接启用Docker的json-file日志驱动在/etc/docker/daemon.json里写上{ log-driver: json-file, log-opts: { max-size: 50m, max-file: 5 } }写完执行sudo systemctl restart docker注意这个操作会重启所有容器所以尽量安排在业务低峰期。更细的日志分析可以把容器日志交给阿里云日志服务SLS通过Logtail采集到日志仓库里保留周期和告警规则都可以在控制台配置。5.4 数据备份与灾难恢复OpenClaw长跑之后真正值钱的东西是配置、任务历史、凭证信息基本都存在PostgreSQL里。备份数据库我用的方式最简单粗暴——用crontab每小时做一次pg_dumpsudo crontab -e加这一行0 * * * * docker exec openclaw-db pg_dump -U openclaw openclaw | gzip /mnt/data/backups/openclaw_$(date \%Y\%m\%d_\%H\%M).sql.gz别忘了先创建备份目录并设置好权限。然后利用阿里云OSS的同步工具把备份目录定期同步到OSS桶里这样即使整个ECS实例报废数据也能从OSS恢复。恢复的时候只要在新机器上把容器跑起来再用gunzip backup.sql.gz | docker exec -i openclaw-db psql -U openclaw openclaw导回去十分钟之内就能满血复活。6. 我踩过的坑和你的捷径6.1 部署脚本跑完后页面打不开这是我帮别人排查时遇到最多的一个问题。脚本明明显示成功docker ps也看到容器在跑但浏览器访问公网IP就是不通。九成情况是安全组规则没生效——阿里云安全组是默认拒绝所有入站流量的你买完机器如果不手动配置放行什么端口都进不来。打开防火墙页面对照一下28080和28081的规则基本立刻破案。另外还有一成情况是ECS实例本身开启了系统防火墙。Ubuntu 22.04默认没有启用ufw但如果之前手动开过很容易出现安全组放行了、ufw却把端口拦了的情况。排查命令sudo ufw status如果是active且有拦截规则执行sudo ufw allow 28080/tcp sudo ufw allow 28081/tcp6.2 API Key填了但任务一直报错如果你使用的是阿里云百炼平台的模型服务OpenClaw配置里填的API Key和模型名必须完全匹配。有一个容易踩的坑是平台默认的Base URL有时候不是OpenClaw脚本默认的那个。你需要在.env里显式指定MODEL_BASE_URL否则SDK会去连接默认的海外地址自然连不通。百炼平台每个地域的Endpoint略有差异以你控制台API Key管理页面显示的Endpoint为准填进去基本就通了。6.3 内存不足导致容器不断重启我最早用1核2G实例跑过一次系统装完还剩1.2G内存Docker一拉起来三个容器内存直接见底。OpenClaw服务端进程被OOM Killer杀掉容器处于重启循环中docker ps看到的状态永远在Restarting。这种事就别指望调参数解决了老老实实变配到2核4G及以上才顺滑。6.4 定时任务时区问题如果你的OpenClaw里配置了每天上午9点执行任务但是执行时间总是差8小时那是容器默认时区为UTC导致的。在docker-compose.yml里给服务加一个环境变量TZAsia/Shanghai然后重建容器docker compose up -d --force-recreate这个问题不解决你凌晨爬起来看任务状态时会非常崩溃。根据我自己的实操体感OpenClaw在阿里云上的部署难度其实集中在环境初始化和安全组真正跑通之后后续维护非常省心。如果你之前被各种教程里零零碎碎的步骤折磨过按照这篇的顺序从买机器到双击命令一路走完30分钟就能看到管理面板正常打开的样子。后面要做的就是把自己的工作流一步一步搬进去让它真正成为你的长期在线助手。