如果你最近在折腾OpenClaw,大概率已经领教过它的安装方式到底有多杂。随手搜一下相关部署教程,能看到本地一键部署、Docker Compose、Mac下安装、安卓Termux原生部署、WSL2里跑、云服务器部署……每种方式都有人发教程,看起来都很轻松,真动手就发现坑一个接一个。我自己从本地Docker Desktop开始,一路试到Windows上的WSL2,后来又折腾了安卓Termux,最后干脆在云厂商买了一台轻量服务器,折腾一圈下来结论很直接:OpenClaw安装方式确实很多,但长期用,还是建议直接用云厂商。
这篇文章就把我踩过的坑、对比过的方案、以及在云厂商上从零跑通OpenClaw的完整过程都写出来。你不需要再花一个周末去试错,按我给的思路走,半天内就能有一个稳定在线的AI助理。
1. 装之前先搞清楚:OpenClaw到底是个什么东西
1.1 它做的是“消息路由 + 任务调度”,不是普通聊天机器人
很多教程默认你已经知道OpenClaw是什么,上来就让你复制命令。但如果你是从搜索“OpenClaw安装”进来的,我建议先花两分钟理解它解决的问题。
OpenClaw本质上是一个开源的智能助理框架。它自己不带大模型,而是负责把你已有的AI能力“接”到各种消息平台上,比如微信、Telegram、Discord、Slack。有人给它发消息,它负责接收、解析、调用大模型,再把结果回过去。它还能执行一些工具调用,比如查天气、写备忘录、触发某个脚本、调用第三方API。
这决定了它的运行姿势:它不是一个用完就关的工具,而是一个必须长时间挂机的常驻服务。你可能会让它7x24小时待命,随时响应消息。
这个特点直接影响了安装方式的选择。只要能长期稳定运行、能随时访问、能方便维护,就是好方案。那些“装完就跑”的本地方案,往往在新鲜感过去之后变成负担。
1.2 安装方式再多,本质就是三类
网上各种教程看着花样百出,归纳下来就三类:
| 安装路线 | 典型玩法 | 优点 | 痛点 |
|---|---|---|---|
| 本地单机部署 | 电脑上装Docker Desktop或直接跑一键脚本 | 数据在自己手里,不额外花钱 | 机器不能关机,网络出口受限,环境依赖多 |
| 手机Termux部署 | 安卓手机用Termux跑原生Node.js | 成本低,闲置手机能利用 | 容易被系统杀后台,耗电发热,网络不稳定 |
| 云服务器部署 | 在阿里云、腾讯云等云厂商买一台轻量服务器 | 公网IP直连,7x24稳定在线,方便备份迁移 | 要花一点钱,需要最基础的Linux操作能力 |
理解这三类之后,你就明白我为什么最终推荐云厂商了。本地部署和手机部署适合“体验一下”,但如果真想让OpenClaw成为日常工具,稳定性和可维护性才是核心指标。
2. 本地安装路线盘点:每一条都有人踩坑
2.1 Windows本地一键部署:WSL2是绕不开的门槛
先说热度最高的“本地一键部署”。这个脚本在真正的Linux服务器上确实很省事,但很多人的日常电脑是Windows,于是问题来了:绝大多数一键脚本都假设你在Linux环境里,Windows上必须借助WSL2或者Docker Desktop来做兼容层。
WSL2本身没问题,问题在于它的前置条件太多。你需要先确认Windows功能里打开了“适用于Linux的Windows子系统”和“虚拟机平台”,然后还得升级内核、把默认版本设成WSL2、重启电脑。这中间只要有一环没对上,后面就全是连锁反应。
而且Docker Desktop在Windows上默认走WSL2后端,等于你装OpenClaw之前,先得把整套容器环境伺候明白。很多人的安装过程轻则报权限错误,重则卡在“Docker Desktop启动不了”这一步,根本轮不到OpenClaw出场。
我见过最快的翻车案例:下载了一键脚本,双击运行,终端直接抛出一段红色报错。原因只是用户从来没装过WSL2,也没有管理员权限。这不是脚本写得差,而是本地环境的不可控因素太多了。
2.2 “could not safely verify the WSL2 environment”报错排查
如果你在Windows上安装时遇到过这句报错,说明你并不孤单,这几乎是Windows部署OpenClaw最常见的问题之一。这句提示字面意思是“无法安全验证WSL2环境”,但实际上很少是OpenClaw自己的问题,几乎都是环境没准备好。
我当时的排查过程是这样的:
第一步,先在管理员PowerShell里检查WSL状态,执行wsl --status和wsl --version。如果看到版本号很旧,或者提示没有WSL2内核,直接执行wsl --update升级内核。
第二步,升级完重新设置默认版本,执行wsl --set-default-version 2。这一步是为了确保当前用的发行版跑在WSL2而不是WSL1上,很多验证脚本会检查这个标识。
第三步,确认Windows功能。到“控制面板 - 程序 - 启用或关闭Windows功能”里,勾选“适用于Linux的Windows子系统”和“虚拟机平台”,然后重启电脑。别嫌重启麻烦,这个功能改完不重启,检测程序依然有可能认为环境不合格。
第四步,如果你用的是旧版Windows,比如还在Windows 10的某个老版本,建议先把系统更新到最新版,否则WSL2内核组件的完整度会受影响。
我最后就是靠前三步解决的。整个过程和环境本身有关。顺便说一句,如果你只是想体验OpenClaw,Windows下还额外装Docker Desktop,负担确实有点重。建议用WSL2里的Linux环境直接跑,比套一层Docker Desktop清爽很多。
2.3 Mac、树莓派和安卓Termux:看着轻便,坑也不少
Mac下安装OpenClaw?比Windows省心不少。macOS本身就是类Unix系统,Docker Desktop跑起来也顺,或者直接装Node.js环境裸跑也行。但这不代表没有隐患——MacBook的合盖睡眠机制和系统更新重启,都会让常驻进程悄悄断掉。你睡一觉起来可能发现机器人失联了一整晚。
树莓派的情况类似。优点是功耗低,适合24小时挂机,但SD卡寿命、供电稳定性都是变量。我认识一个朋友在树莓派上部署完,跑了不到一周SD卡就出问题了,最后又迁回云服务器。
再来说热词里提到的“在安卓Termux原生部署OpenClaw:无proot轻”。这个方案的说法是“无proot”,意思是直接在Termux里跑原生Linux二进制,不需要套一层proot虚拟化,性能和兼容性更好。
实际操作确实可行,安装Node.js之类的依赖比proot方案干净一些。但手机运行的麻烦在于后台管理:安卓系统出于省电考虑,会疯狂杀掉后台进程。你装得再好,锁屏一会儿进程就没了。要解决这个问题,你得在系统设置里为Termux开启“忽略电池优化”,同时允许后台自启动,还要在Termux里运行termux-wake-lock保持CPU唤醒。
就算这些都做完了,手机长时间插电运行也有发热风险,Wi-Fi波动、系统更新、来电打断都可能影响稳定性。用来做“临时实验”可以,真要当成生产环境用,风险不小。
3. 为什么不建议本地长期跑:稳定、网络与成本
3.1 长期运行的第一需求是“不掉线”
OpenClaw这类服务最怕的就是掉线。你把它接上微信,人家发消息没人回,体验就很差。本地电脑天然存在各种掉线场景:笔记本合盖睡眠、公司停电、家里路由器被拔了、系统半夜自动更新重启……每一件小事都可能让服务中断。
有人会说,我把电脑电源设置改成“永不休眠”不就行了?但笔记本合盖物理上就不方便,台式机的电费又摆在那里,长期开着也会加速硬件老化。手机Termux更不用说了,安卓系统杀后台是常态,就算设了忽略电池优化,系统更新一次可能就把你的权限重置掉。
而云服务器本身就是为“7x24小时在线”设计的。机房有UPS,有冗余网络,有硬件监控,重启后还能自动拉起服务。OpenClaw这种常驻型服务,天然应该放在这种环境里。
3.2 网络出入口和端口回调的问题
本地部署还有一个容易被忽略的问题:网络出入口。很多消息平台的回调机制需要服务端能被动接收请求,或者至少能在公网环境里稳定访问外部API。
本地局域网环境通常没有独立公网IP,路由器拨号拿到的还是动态地址。你如果想从外部访问本地的OpenClaw服务,要么手动做端口映射,要么依赖内网穿透工具。这些东西不是说不能用,而是稳定性欠佳:穿透服务断线、域名变更、路由器重启导致IP变化,都是日常状况。
云服务器就不一样了,自带公网IP。部署完,消息平台可以直接和你的服务建立通信,也可以让远程客户端随时访问。这个“省心”程度,在本地网络环境里很难复现。
3.3 换机器时的备份迁移成本
本地部署的另一个隐藏成本是数据备份和迁移。OpenClaw运行过程中会产生配置文件、登录态、数据库文件、日志等,这些数据分散在不同目录里。你要换电脑、换手机、重装系统,首先得搞清楚数据都在哪,然后手动打包、恢复,再重新配一遍环境。中间漏掉一个目录,服务可能就起不来。
我最早在本地跑的时候,换了一次电脑,光是重新配置依赖环境就花了一个晚上。后来上云之后,迁移就变成了“做一个快照,再在另一台服务器上恢复快照”的事。数据备份既可以定时快照,也可以把数据目录同步到对象存储,基本不需要操心。
3.4 算一笔电费和机器损耗的账
你以为是云服务器更花钱,其实算下来未必。一台普通台式机待机功耗大概80W到150W,满载更高。我们就按100W算,每天24小时开着,一个月用电约72度。各地电费不一样,按每度0.6元算,一个月电费就是43元左右,一年接近520元。
云厂商的轻量应用服务器呢?配置差不多2核2G或者2核4G,一年续费价格通常在两百到五百元之间,遇上促销活动还会更便宜。而且这个价格里包含了公网IP、基础机房带宽、防火墙策略,省掉了你自己维护公网访问的成本。
所以从纯财务角度算,云服务器并没有比本地部署贵,甚至持平。但它多出来的稳定性和可维护性,价值早就超过了那点差价。
4. 云厂商部署实操:从买机器到稳定运行
4.1 服务器怎么选:别买贵也别买错
我建议从国内主流云厂商的“轻量应用服务器”入手,比如阿里云轻量应用服务器、腾讯云Lighthouse、华为云HECS都行。这类产品买起来简单,配置选择也清楚,不用和复杂的ECS产品页纠缠。
个人使用的话,2核2G的内存起步,带宽3M到5M就够用了。如果你不只跑OpenClaw,还想在上面挂点别的服务,就选2核4G,容错空间更大。系统镜像优先选Ubuntu 22.04 LTS,LTS版本生命周期长,依赖库也全,遇到问题网上资料也多。
还有一个关键动作:先按量付费买一周,把环境搭好、确认跑通了,再转包年。不要一上来就包年包月买一年,万一中途发现不合适,退款流程再简单也麻烦。
4.2 必需的初始化:安全组、密钥和基础软件
服务器到手后,第一件事不是装OpenClaw,而是做基础安全加固。
先用SSH密钥登录代替密码登录。在云厂商控制台创建密钥对,下载私钥,然后安全组里把SSH的密码登录方式禁用掉,只允许密钥登录。这一步能防住绝大多数扫描爆破。
再检查安全组规则。轻量服务器一般自带防火墙,默认只放行了22端口,其他端口要按需开放。比如Web管理界面用的3000端口,如果不想对外开放,可以只放行你当前IP的访问权限,或者干脆关闭公网端口,自己通过SSH隧道访问。
基础软件方面,更新环境、装Docker、装Git:
sudo apt update && sudo apt upgrade -y sudo apt install -y git curl vim curl -fsSL https://get.docker.com | bash这里为什么用get.docker.com的安装脚本,而不是直接apt install docker.io?因为我踩过坑:Ubuntu官方源的Docker版本更新偏慢,某些新镜像要求Docker版本不低于某个值,版本太旧会导致兼容问题。官方的安装脚本会配置好Docker的官方源,装的就是当前稳定版,后续apt upgrade也能正常升级。
装完之后把当前用户加进docker组,这样不用每次敲sudo:
sudo usermod -aG docker $USER newgrp docker最后验证一下:
docker --version docker compose version如果提示没有docker compose命令,说明你用的是旧版Docker或者插件没装上。新版Docker默认自带compose插件,命令是docker compose(注意中间有空格),不需要单独装docker-compose。
4.3 用Docker Compose把OpenClaw跑起来
OpenClaw的官方部署文档里会提供多种方式,我推荐用Docker Compose,原因就一条:好卸载、好备份、好升级。所有数据通过卷挂载到宿主机目录,以后想迁移就是拷贝整个目录的事。
先创建项目目录:
mkdir -p ~/openclaw cd ~/openclaw然后写一个docker-compose.yml文件。下面这段是示意结构,具体镜像名、环境变量名、数据挂载路径,务必以你实际部署时官方文档为准:
version: "3.8" services: openclaw: image: openclaw/openclaw:latest # 以官方仓库实际镜像名为准 container_name: openclaw restart: unless-stopped ports: - "3000:3000" volumes: - ./openclaw-data:/root/.openclaw environment: - OPENCLAW_LOGIN_MODE=qr - OPENCLAW_MODEL_PROVIDER=openai-compatible逐个解释一下我写这几个配置的想法:
restart: unless-stopped很关键。容器崩了Docker会自动拉起来,服务器重启后Docker服务起来时容器也会跟着起,不用手动干预。
ports里的3000:3000是Web管理界面的映射。如果你不想对外开放,就把左边的3000改成127.0.0.1:3000:3000,只允许本机访问。
volumes是把容器里的配置目录挂载到宿主机。以后备份数据,直接打包宿主机上的./openclaw-data目录就行,容器删了也不会丢数据。
environment里的变量是接大模型和设置登录方式用的。不同版本配置项名称不太一样,以你使用的版本文档为准。
写完文件后启动:
docker compose up -d docker compose logs -f openclaw第一次启动会拉取镜像,看日志确认没有报错后,再去配置消息渠道和大模型API。如果日志里出现权限问题,多半是数据目录的属主和容器内用户不一致,chown -R 1000:1000之类的操作可以解决,具体以容器内用户ID为准。
4.4 消息渠道和大模型API配置
OpenClaw的配置一般分两部分:接大模型、接消息渠道。
先说大模型。OpenClaw本身不绑定某一家模型,只要是大模型平台能提供OpenAI兼容接口,就可以填进去。核心配置就是两个:接口地址和API密钥。有一些平台还要指定模型名称,比如“qwen-max”或“glm-4-plus”。
再比如热词里提到的“OpenClaw对接魔塔”。魔塔社区(ModelScope)开放平台也提供兼容OpenAI的接口能力,你在控制台创建好API密钥之后,把请求地址填进OpenClaw的模型配置里,模型名填你开通的具体模型,基本就能通了。如果你用的是国内大模型服务商,很多都提供这类兼容接口,理论上都能接。
再说消息渠道。微信的接入通常是通过扫码登录方式实现。启动OpenClaw之后,日志里会出现一个登录链接或二维码图片路径,终端里会显示二维码图片生成到了数据目录。你用手机微信扫码确认后,登录态会保存到本地文件,以后重启服务不需要重复扫码。
Telegram的接入更标准化:去BotFather创建一个机器人,拿到Bot Token,填到配置里就能跑。相比之下,微信登录容易出现各种账号相关的问题,这个我在下一部分详细说。
4.5 用systemd保证开机自启和异常恢复
如果你的OpenClaw是用Docker Compose方式跑的,restart: unless-stopped已经能处理容器崩溃和Docker重启的场景。但为了更保险,我还喜欢加一个systemd服务,把Docker Compose的启停纳入系统进程管理。
创建服务文件/etc/systemd/system/openclaw.service:
[Unit] Description=OpenClaw Service After=docker.service Requires=docker.service [Service] Restart=always RestartSec=10 WorkingDirectory=/home/ubuntu/openclaw ExecStart=/usr/bin/docker compose up ExecStop=/usr/bin/docker compose down [Install] WantedBy=multi-user.target然后加载并启动:
sudo systemctl daemon-reload sudo systemctl enable openclaw sudo systemctl start openclaw这里有个细节:WorkingDirectory必须指向你docker-compose.yml所在的目录,否则systemd找不到配置文件。路径里的用户名要改成你自己的实际用户。
有了这个服务,就算服务器因为意外重启,系统起来后会自动把Docker服务拉起,然后Docker把OpenClaw容器拉起,整个过程不需要人干预。
5. 高频问题与排查记录
5.1 二维码图片找不到或过期太快
云服务器没有桌面环境,扫码登录时生成的二维码图片是一个图片文件。很多人遇到的情况是:日志里显示了二维码路径,但ls去看那个目录,什么也没找到。
这种问题多半是路径不对。OpenClaw运行在容器里,日志里显示的路径可能是容器内的路径,而不是宿主机路径。你的数据目录挂载到了宿主机的./openclaw-data,所以要去宿主机对应目录里找,同时确认目录权限没有导致文件写入失败。
还有一个常见问题是二维码过期太快。微信扫码登录的二维码本身有时效,几十分钟就会失效。如果你是在服务器上部署,建议扫码前先把日志打开,确认二维码生成成功后再扫,不要提前生成好二维码,等了半天才扫,那肯定过期。还有,如果微信账号之前在别处登录,也可能会导致扫码后提示重复登录或无法确认,需要先在手机上退出其他登录设备。
5.2 微信能发消息但对方回复没反应
这个现象在热词里出现了:“OpenClaw能发消息微信.但微信发消息没回复”。我排查过类似的问题,情况通常分几步来看。
先看服务日志。发一条测试消息后,立刻去看docker compose logs -f openclaw,确认声明是否收到了消息事件。如果日志里压根没有新消息的记录,说明消息就没有推送到服务端,问题出在登录态或者消息通道上,基本得重新扫码修复登录状态。
如果日志里有消息到达,但完全没有回复,那问题多数出在模型调用上。检查大模型API密钥是否还有效、接口地址是否填写正确、账户余额是否用完了。我遇到过最典型的场景是:API密钥过了有效期,日志里没有任何明显报错,但消息也一直没有回复。把密钥换掉之后立刻恢复。
还有一个容易被忽略的点:不要用自动化脚本频繁发同样的内容,或者高频给同一个联系人发消息。消息平台的风控机制会对这类行为比较敏感,频率一高可能短暂限制你的消息权限。解决方案就是控制测试频率,不要短时间反复触发同一条命令。
5.3 对接魔塔(ModelScope)大模型报错
对接魔塔时最常见的报错是“模型不存在”或者“接口鉴权失败”。前者通常是模型名称填错,魔塔平台上同一个模型可能有很多版本,模型标识符要填API文档里推荐的那一串,而不是你自己起的别名。
后者是密钥或者请求地址填错。注意有些平台的接口地址根路径是v1开头,有些不是,配错的话请求会404或者401。建议先用curl手动调试接口,确认通了再填到OpenClaw里,避免在配置里来回猜。
如果对话能通,但工具调用类任务不执行,就要看看模型是否支持function calling。个别模型在纯对话场景下表现正常,但OpenClaw需要它输出结构化工具调用参数,模型不支持的话就无法完成任务。选模型时优先选支持工具调用的版本,能省很多时间。
5.4 内存和磁盘占用过高
云服务器配置一般不会太高,跑OpenClaw通常没问题,但时间久了日志文件会膨胀。Docker默认日志驱动如果不限制,一个容器日志可能涨到好几个GB,把小磁盘撑爆。
在docker-compose.yml里给日志加个上限是个好习惯:
logging: driver: "json-file" options: max-size: "10m" max-file: "3"这个配置会把单个日志文件限制在10MB,最多保留3个文件。加了之后就不用频繁手动清理日志了。
内存方面,用docker stats看实时占用。如果你的OpenClaw容器长时间内存占用很高,可以在compose配置里加mem_limit: 1g之类限制,防止系统内存被吃满。限制容器内存不会导致服务不可用,反而能逼出异常占用的问题,让你有精力去排查是什么插件或者任务在消耗资源。
6. 卸载、迁移与收尾
6.1 干净卸载OpenClaw
如果你先在本地试过,又决定迁到云上,或者只是想彻底卸载,卸载的关键是把容器、数据、服务配置全清干净,不留残留。
首先在项目目录里执行:
docker compose down -v-v参数会连带删除compose文件里定义的卷,这一步会把容器里的数据一并清掉。删完容器之后再把镜像删掉:
docker images | grep openclaw docker rmi <镜像ID>然后是数据目录。OpenClaw的配置和登录态一般挂在项目目录下,也就是~/openclaw/openclaw-data这一类路径。确认不再需要后直接删除整个项目目录:
rm -rf ~/openclaw如果你部署过systemd服务,记得把服务文件也清掉:
sudo systemctl disable openclaw sudo rm /etc/systemd/system/openclaw.service sudo systemctl daemon-reload如果在Windows本地环境装过,还要检查之前加的WSL2发行版、Docker Desktop是否要一并卸载,这些按常规卸载流程走就行。整个流程走完,系统回到安装之前的状态,不会留下开机自启的残留进程。
6.2 本地迁移到云端的最短路径
如果你已经在本地部署出了不少配置,想迁到云服务器,不需要重头再配一遍,直接把数据目录打包带走就行。
本地执行:
tar czf openclaw-data.tar.gz ~/openclaw/openclaw-data把打包文件上传到云服务器,然后解压到你新建的项目目录:
scp openclaw-data.tar.gz ubuntu@你的服务器IP:~/ ssh ubuntu@你的服务器IP mkdir -p ~/openclaw tar xzf openclaw-data.tar.gz -C ~/openclaw然后按前面的步骤写好docker-compose.yml,把本地目录对应挂载进去,启动容器。
需要注意的是,如果你迁移微信登录态,迁移后大概率需要重新扫码。因为登录态和会话信息通常绑定运行环境。不要抱有“登录状态也一起搬过去”的期望,重新扫码反而更稳。其他渠道比如Telegram的Token一般不受影响,迁移后能直接继续用。
最后再分享一点个人体会
我在实际使用中最大的感受是:OpenClaw的安装方式确实多,但真正有意义的区别不在安装命令,而在运行环境。本地部署和手机Termux适合折腾、适合验证想法,但一旦你想让它稳定地成为日常工具,一台云服务器几乎是绕不开的归宿。
也不是说云服务器就一定完美。它也有成本,也有学习门槛,但相比本地部署的掉线焦虑、环境冲突和备份噩梦,云的稳定性和省心程度高太多了。如果你刚接触OpenClaw,我的建议是先按量买一台最低配的云服务器,跑一天试试,把扫码、对话、模型调用都验一遍,再决定要不要长期用。这比看完所有教程再纠结十分钟管用。