最近在好几个群里看到同一个问题:OpenClaw 到底怎么装?OpenClaw 的安装方式确实太多了,Windows 上要先折腾 WSL2,macOS 上要处理 Docker Desktop,安卓上有 Termux,还有人把它跑在树莓派或者群晖上。选择多本来是好事,但问题是多数教程只讲怎么装,不讲装完之后这台设备能不能持续稳定跑。我这几周把本地部署、云服务器部署都试了一遍,最终的结论很直接:如果你不是专门为了开发调试,直接选云厂商的轻量服务器,别在本地安装上浪费时间。下面我会把几个主流路线的真实成本拆开说清楚,也会给出我在云服务器上的完整操作过程,最后聊聊那些大家问得最多的问题,比如二维码过期、能发消息却收不到回复。
1. 先认清OpenClaw的部署选项,不止"本地"和"云"两派
1.1 我梳理出的五条路线
先说结论:OpenClaw 本质上是一个常驻的消息自动化框架,不是那种跑一次就退出的脚本,所以它的部署方式最终要回答一个问题:让它在哪台设备上七天二十四小时待命。
我身边实际有人在用的路线大致有五条:
- Windows 版 Docker Desktop(底层 WSL2):最常见也最容易中途放弃的路线。OpenClaw 在 Windows 上基本都要依赖 WSL2,而 WSL2 环境验证是很多人卡住的地方,网上那句 "could not safely verify the wsl2 environment" 就是从这里来的。
- 本机裸装 Python 环境:直接在电脑上创建虚拟环境后跑起来。适合开发调试,但要把电脑当成服务器一直开着,实际上很难坚持。
- 安卓 Termux 原生部署:社区里有人用 Termux 直接跑,不用 proot 更轻量。手机随身带,但 Android 的后台机制、网络切换和续航都让人头疼。
- 树莓派/NAS 小主机:二十四小时在线,成本低,适合动手能力强的人。但性能和后续维护完全靠自觉,普通用户容易踩坑。
- 云服务器 Docker 部署:这是我最终推荐的方式。公网 IP 天生就有,容器管理方便,快照备份也简单,几乎是为这一场景量身定做的。
1.2 一张表看清不同环境的门槛
我把这些路线放在一张表里对比,你一眼就能看出问题:
| 部署环境 | 上手难度 | 7x24 在线 | 公网回调 | 稳定程度 | 我的推荐指数 |
|---|---|---|---|---|---|
| Windows + WSL2 | 高 | 差 | 难 | 中 | 2/5 |
| macOS Docker Desktop | 中 | 差 | 难 | 中 | 3/5 |
| 安卓 Termux | 中 | 很差 | 最难 | 低 | 2/5 |
| 树莓派/NAS | 高 | 较好 | 难 | 中 | 3/5 |
| 云服务器 Docker | 低 | 好 | 容易 | 高 | 5/5 |
光看表格,你可能觉得本地部署也有不少人用,凭什么一棍子打死?原因在于 OpenClaw 这种项目的核心玩法是接消息渠道,比如微信、Telegram 这类 IM 工具。只要接上渠道,它就必须有一个公网能够访问到的入口。本地环境在这方面天然吃亏,后面我会专门展开。
1.3 我的结论:默认选云厂商
我理解很多人一开始想用本机,是因为觉得免费、可控、数据都在自己手里。这个想法没有错,但等真正跑起来,你会发现时间成本和调试成本远高于一台轻量服务器的月租。一台最低配的云服务器,新用户活动价可能就几十块钱一个月,算下来一天一块多,却省掉了 WSL2 校验、内网穿透、路由器端口转发、电脑休眠掉线这一整串问题。所以我把结论放在最前面:除非你有明确理由一定要数据留在本地,否则直接上云。
2. 本地安装的坑,比文档里写的多得多
2.1 WSL2 的环境校验失败
先说 Windows 上最著名的那个报错:could not safely verify the wsl2 environment.光这个提示,就劝退了好几个想入门的群友。
这个报错的本质是 OpenClaw 的安装脚本在启动前会检查 WSL2 环境是否满足运行条件,比如是否启用 systemd、WSL 内核版本是否够新、Docker Desktop 是否真的把 WSL2 作为后端。任何一个条件不满足,它都会给出这句模糊的提示。
排查顺序建议是这样的:
- 在 PowerShell 里执行
wsl --update,把 WSL 内核升到最新。 - 确认系统里存在一个默认的 WSL2 发行版,比如 Ubuntu,执行
wsl -l -v查看版本号,如果还是 1,用wsl --set-version <发行版名> 2转换。 - 启用 systemd。在发行版里编辑
/etc/wsl.conf,加一段[boot]和systemd=true,然后在 PowerShell 里执行wsl --shutdown再重新进去。 - 如果开的是 Docker Desktop,在设置里把 Use the WSL 2 based engine 勾上,然后再把 OpenClaw 要用到的发行版加入 Resources 列表。
- 重置 WSL 网络缓存:
wsl --shutdown后重启电脑往往能解决各种玄学问题。
这套流程走下来快则十分钟,慢则一晚上。而且就算你这次通过了,以后 Docker Desktop 更新、Windows 大版本更新后还有可能再次抽风。很多人的 OpenClaw 部署之路就是倒在这一步的,连软件的影子都没见到。
2.2 Termux 的"无 proot 轻量"只是看起来美
在安卓上部署 OpenClaw,社区里有个很吸引人的说法:原生 Termux 部署,无 proot,更轻量。对比起那些还要模拟 Linux 环境的方案,性能确实好一些。但手机部署的问题不在性能,而在系统层面对后台进程的压制。
Android 系统为了省电,会周期性清理后台任务。即使你把 Termux 的通知栏持久化打开,也只是降低了被杀的概率,并不能保证它一直活着。一旦进程被杀,OpenClaw 和消息渠道之间的长连接断了,消息就收不到了。另外,手机的网络切换很频繁,从 Wi-Fi 切到 5G、电梯里断网、夜间省电模式,都会造成连接中断。你不可能为了一个常驻服务把手机一直锁屏插着电,那样和一台服务器没有区别,但稳定性和散热又远不如服务器。
手机 Termux 的定位应该是小范围测试,或者临时在外面用一下,而不是长期当主力。也有人用旧手机刷机后专门跑这类服务,但那是另一个纯折腾向的玩法,不适合大多数人。
2.3 macOS:Docker Desktop 的资源占用和旧配置残留
macOS 算是我体验下来仅次于云的路线,但也有一些坑。Docker Desktop 在 macOS 上默认吃内存很凶,尤其当你同时开着浏览器和 IDE,8GB 内存的机器很快就捉襟见肘。OpenClaw 本身可能只占几百 MB,Docker Desktop 虚拟机却可能吃掉 2GB 以上。
另一个多发的坑是旧配置文件残留。之前装过其他容器项目的配置、环境变量、卷名称,和 OpenClaw 的 compose 文件冲突,容器起不来但日志又没报出明显的错。我建议在 macOS 上先用 Docker Desktop 的清理功能做一次大扫除,再开始部署。M 系列芯片的机器还要注意镜像是否提供了 arm64 版本,个别老的容器镜像在 Apple Silicon 下会有兼容性问题。
但 macOS 本地部署依然逃不掉公网可达性的问题,这是所有本地部署的共同宿命。
2.4 本地部署无法回避的"公网可达"问题
很多人遇到的现象是:配置好 OpenClaw 之后,主动发消息没问题,能发出去,但对方向它发消息,它没有任何反应。也就是热搜词里说的那句"能发消息但微信发消息没回复"。这往往不是 OpenClaw 配置错了,而是消息平台的回调请求根本没有到达你的电脑。
消息的主动发送是出站连接,你的电脑只要能上网就能发;被动回复依赖入站回调,也就是消息平台要把对方的消息推送到你的服务上。这台服务必须有一个公网可达的地址,比如http://你的公网IP或域名:端口/webhook。家庭宽带通常没有公网 IP,默认在运营商 NAT 后面,入站请求进不来。常见的解决办法是内网穿透,在本地和一台有公网 IP 的服务器之间建立隧道。可隧道服务不稳定,免费版限速还掉线,自己搭隧道又要维护服务器,绕了一大圈,等于还是变相在搞一台云主机。
所以我的判断很简单:如果 OpenClaw 要长期接消息渠道,就不要把部署重心放在本地。本地适合做开发调试,不适合当生产环境。
3. 云厂商部署为什么值得优先考虑
3.1 7x24 在线是消息类应用的硬门槛
OpenClaw 这类项目不是一次性的脚本,它更像一个"数字员工",要随时待命。接上消息渠道后,对方在凌晨三点发来一条消息,服务也应该能立刻处理。本地电脑做不到这一点:合上盖子待机,断网,Windows 更新重启,宿舍断电,任何一件小事都会让服务中断。云服务器有稳定的供电、网络和机房环境,云厂商还会提供基本的可用性保障。对个人使用来说,这已经远远足够了。
有人会说,我用 NAS 或者树莓派也能 7x24 在线。但家里网络的稳定性、光猫的 NAT 类型、路由器固件的 bug,都不是你能完全控制的。云服务器把这一整层东西都托管了,你只需要关心应用本身。
3.2 公网 IP 让架构简单很多
云服务器最直接的优势,就是天生带一个公网 IP。OpenClaw 需要配置回调地址时,直接填http://你的公网IP:端口/xxx就能被外部访问到。不用内网穿透、不用路由器端口转发、不用动态 DNS。排查问题时也少了一个中间层:回调到了云服务器,就一定能到 Docker 容器里,只要安全组放行了端口。
这也是我反复强调"云厂商部署"的原因。本地部署很多问题不是出在 OpenClaw 上,而是出在"怎么让外部流量进来"这一层。把这层交给云厂商,你的排查范围会缩小非常多。
3.3 成本账:不要只看云服务器价格
有人一听云服务器就觉得很贵。实际上拿国内云厂商的轻量应用服务器来说,新用户的入门款经常是几十元一个月,如果用按量付费或者参与活动,可能更低。这个价格对个人开发者来说基本没什么负担。
更关键的是时间成本。本地安装一次可能折腾一晚上,云服务器从购买到 OpenClaw 跑通,半小时内就能完成。省下来的时间用来学 OpenClaw 的插件机制、消息渠道配置,都比和 WSL2 做斗争有价值。如果你按小时折算自己的时间,这点月租成本几乎可以忽略。
3.4 快照、迁移和重装都更简单
云厂商控制台里有一键快照功能。部署 OpenClaw 之前先打个快照,之后哪怕配置全乱了、数据全没了,也能在几分钟内回到正常状态。升级 OpenClaw 之前也先打个快照,相当于给自己买了一份保险。
换机器时,把数据目录打包下载,再上传到新服务器,Docker 的方式下数据能无缝跟着走。本地环境要做到同样的事情,难度和成本都高很多。尤其是 Windows 上 WSL2 的发行版文件,迁移起来又大又慢,很容易出问题。
3.5 什么时候不应该上云?
把话说全面:不是所有场景都适合云。如果你的需求是纯离线实验,不接任何外部消息渠道;或者数据隐私要求极高,不能放到第三方机房;或者你只想在周末研究一下代码,不追求稳定在线,那么本地部署完全没问题。我反对的是"默认本地",而不是"不能用本地"。先想清楚自己的需求,再选部署方式。
4. 云厂商部署OpenClaw的可复现步骤
4.1 云服务器怎么选购
云服务器选择上,我建议别一上来就买最高配。OpenClaw 这种个人自动化框架,2 核 2G 内存起步就够用了;如果还要跑模型推理,建议上 4G 内存。系统选 Ubuntu 22.04 LTS 或 24.04 LTS,安全更新周期长,社区资料也多。
带宽按流量计费的灵活性更大,比如 3Mbps 到 5Mbps,日常收发消息和回调完全够用。地域选离你常用地区近的,延迟会低一些。存储方面,系统盘 40G 以上会比较舒服,数据目录单独挂载或者放在 /opt 下都行。
4.2 首次登录与基础加固
拿到云服务器第一件事,不要直接用 root 登录乱跑。创建一个普通用户,把 SSH 登录改成密钥方式,然后在防火墙里只放行必要端口。我以 Ubuntu 为例:
sudo apt update sudo apt install -y docker.io docker-compose-v2 sudo systemctl enable --now docker sudo usermod -aG docker "$USER"注意usermod之后要重新登录 SSH 才生效。这样后面执行 Docker 命令就不用一直加sudo。顺便强调一句:云厂商控制台的安全组里不要把所有端口都放行。默认只保留 22(或改到高位端口)、80/443(如果你要配域名)、以及 OpenClaw 控制台的端口。
4.3 Docker Compose 部署
接下来用 Docker Compose 启动。我直接给一份我在用的操作流程,具体镜像和环境变量名以你那个版本官方仓库为准。
mkdir -p ~/openclaw && cd ~/openclaw git clone <OpenClaw官方仓库地址> . cp .env.example .env vim .env在.env里至少要配置三样东西:数据目录、消息渠道凭据、模型服务地址。如果你要对接魔塔,就把模型服务的 Base URL 填成魔塔兼容接口的地址,再填入对应的密钥和模型名。
配置完后启动:
docker compose up -d docker compose logs -f看到启动日志里出现类似 ready 的提示,就说明服务已经起来了。如果你的 OpenClaw 版本只提供 Docker 镜像,没有仓库代码,那就把官方文档里的 compose 文件保存到本机,再执行docker compose up -d,步骤更少。
4.4 初始化与消息渠道绑定
首次打开控制台时,一般会看到一个二维码或一次性登录链接。二维码的作用是把你的账号与服务绑定,不是浏览器直接登录。扫码后,服务端会拿到登录凭证,之后会持续用凭证与消息平台保持连接。这个机制也解释了为什么很多人会遇到"二维码过期"——它本身就是短时效的一次性凭证。
渠道绑定这一步,不要贪多。先把一个渠道跑通,比如 Telegram 或者微信,发一条测试消息,确认能在日志里看到回调记录,再继续加其他渠道。一次绑定太多渠道,出了问题会很难定位到底是谁的问题。
4.5 配置模型服务和对接魔塔
很多人的 OpenClaw 不只是做消息转发,还要调用大模型来对话或执行任务。配置模型服务时,最容易犯三个错:Base URL 末尾多了斜杠、模型名填错、Key 没复制完整。对接魔塔这类平台时,先看它提供的接口是 OpenAI 兼容格式还是独立格式,OpenClaw 一般更支持 OpenAI 兼容格式,所以填地址时要按对应格式拼接。
验证方式也简单,在控制台里手动触发一次带模型调用的测试消息,如果日志里返回 401 或 404,优先检查 URL 和模型名。别一上来就怀疑 OpenClaw 坏了,大部分问题都是配置项写错了。
4.6 开机自启、日志与更新
Docker Compose 方式天然支持开机自启。在 compose 文件的 service 里加一行restart: unless-stopped,容器崩溃或机器重启后都会自动拉起来。
日常运维命令我整理一下:
docker compose logs -f # 查看实时日志 docker compose restart openclaw # 重启 OpenClaw 服务 docker compose pull && docker compose up -d # 升级镜像提示:升级之前,务必备份数据目录或打一个云快照。血的教训:升级一时爽,配置火葬场。
5. 部署后最常踩的几个坑
5.1 二维码过期和登录态掉线
二维码过期后,控制台通常有"重新登录"按钮。注意不要为了重新生成二维码而频繁重启容器,每次重启或重新登录都可能导致消息渠道短暂离线。更安全的做法是:先看日志确认是登录过期还是网络问题,再决定是否重新登录。
如果你发现登录态老是掉,还要检查一下是不是有多台设备同时登录,或者有其他会话把当前会话挤掉了。云服务器上部署时,登录凭证是保存在数据目录里的,备份数据之前要先知道这一点。
5.2 "能发消息但微信发消息没回复"的排查链路
这是社群问得最多的问题,也是最容易被误导的问题。我按排查顺序列出来:
- 打开日志:
docker compose logs -f --tail=100,让对方发一条消息,看 OpenClaw 有没有收到新的回调记录。 - 如果日志里完全没有请求,问题出在网络链路:检查消息平台里配置的回调地址是否是
http://公网IP:端口/...,云服务器安全组是否放行对应端口。 - 如果日志里有请求但没有回复,问题出在业务逻辑:检查消息渠道的路由配置、是不是被消息平台限流、模型服务是否返回了错误。
- 如果之前正常,某天开始不回复,优先怀疑登录态掉线,重新扫码。
这张排查表也可以收藏:
| 现象 | 可能原因 | 先查什么 |
|---|---|---|
| 完全没有日志 | 回调没进来 | 安全组、回调地址、公网IP |
| 有日志但无回复 | 配置或限流 | 路由、模型服务、渠道状态 |
| 之前正常后来失效 | 登录态过期 | 重新扫码/检查渠道连接 |
| 能主动发不能收 | 入站链路问题 | 公网可达性、端口映射 |
5.3 端口暴露过大的安全风险
新手最容易忽略的是安全组配置。为了省事,有人把所有端口直接放行,等于把服务器暴露在公网扫描之下。云服务器被扫描爆破是常态,如果你还用简单密码,中招概率很高。
建议:控制台端口只对你的家庭或办公 IP 放行;能用密钥登录就不要用密码;需要 HTTPS 访问时套一层 Nginx 反向代理,而不是直接把控制台裸奔公网。OpenClaw 控制台里如果包含登录凭证或渠道令牌,暴露在公网上就是一种风险。
5.4 卸载与重置
不想用了想清理干净:先docker compose down -v停止并删除容器和数据卷,然后删除~/openclaw目录。如果当初在云厂商打过快照,也可以直接回滚快照,让服务器回到干净状态。
卸载前想清楚哪些数据要留,模型服务的凭据、消息渠道的登录态都在数据目录里,删了就得重新扫码。很多人删完才想起来还有会话要保留,那就只能从头再来。
6. 我的部署习惯:本地开发,云上跑生产
6.1 为什么我保留了一套本地环境
我在云上跑生产的同时,本地还是保留了一个最小环境。本地环境只用来调试插件、改配置、测试新功能,跑通了再同步到云上。这样即使本地搞崩了也不影响线上服务,反过来也是一样。云上出问题时,本地环境还能作为对照,快速判断是配置问题还是网络问题。
6.2 配置同步和备份的做法
配置我用 Git 管理,把 compose 文件、.env.example、配置目录里的非敏感文件都放到一个私有仓库。.env这种包含密钥和令牌的文件绝不能提交到公开仓库。云上的数据目录每周打包一次,传到对象存储或者本地电脑;更省事的办法是依赖云厂商的快照功能,按周创建快照。
这个习惯让我在换服务器、重装系统时特别轻松:新机器上只要拉下代码、填入.env、执行docker compose up -d,几乎不用浪费时间重新配置。
6.3 维护节奏和心态
最后分享一下我的维护节奏:平时不折腾,不频繁重启,不盲目追最新版本。每周瞄一眼日志有没有异常报错,每月打一次快照,升大版本前先去项目仓库看更新说明。OpenClaw 这类工具的玩法还有很多,但前提是它能稳定跑着。先把稳定性做好,再谈各种花哨功能。
我个人现在的原则就一句话:能上云就上云,本地只做调试。OpenClaw 的安装方式再多,选一个能让你少操心的,才是最重要的。