云服务器上部署OpenClaw,打造7×24小时在线的AI私人助手

📅 发布时间:2026/10/19 5:16:05
云服务器上部署OpenClaw,打造7×24小时在线的AI私人助手
你有没有过这种时刻临时想查个东西手机解锁、打开App、输入问题、等回复一整套流程下来自己都忘了刚才想干什么。我折腾OpenClaw之前总觉得大模型挺好用但每次都缺一个随手能喊出来的入口。后来我换了个思路把OpenClaw部署到云服务器上做成一个7×24小时在线的AI私人助手随时通过消息窗口发一句话就能得到响应。这篇文章记录的就是整个部署过程从服务器选购、基础环境初始化到跑通第一条消息再到保障它长期稳定运行的所有细节。适合刚接触Linux、想自己动手搭一个专属AI助手的人照着做完全能复现。1. 为什么用OpenClaw搭私人AI助手1.1 从真实需求倒推方案选型说实话我一开始也动过直接用大模型官方App的念头。装个应用、充个值、打开就能聊体验确实流畅。但真正用了两周之后几个硬伤越来越明显第一消息是碎片化的今天想问的问题散落在不同对话里根本没办法沉淀和回顾第二我想让AI在特定时间主动提醒我比如每天早上九点把当天天气和待办事项推过来官方App做不到第三数据全部留在别人服务器上有些工作相关的信息我始终不太敢往上放。所以我的核心需求其实只有三条随时能找它、它能主动找我、数据尽量可控。OpenClaw这类开源AI助手框架正好完整覆盖了这三件事。它本质上是一个运行在你自己的服务器上的消息调度中枢接上大模型API就有了对话能力再接上消息渠道就有了交互入口再配上定时任务就有了主动性。和直接用大模型App相比自建方案牺牲了一点开箱即用换来的是完全可控、可扩展、可私有化。我把两种方案放在一起对比过思路大概是这样对比项直接用大模型App自建OpenClaw消息沉淀各对话互相孤立本地存储可检索可备份定时/主动推送基本不支持秒级定时任务任意时间推送接入渠道只有官方App企业微信、钉钉、网页端等数据可控性在厂商服务器在自己服务器部署难度零门槛需要基础Linux/docker知识维护成本无偶尔看日志、更新版本对我来说切换成本很值。这套方案折腾一次后面长期受益尤其是当你长期稳定运行之后你会越来越离不开这种发一句话就有响应的入口。1.2 OpenClaw是怎么跑起来的在动手之前建议先花五分钟把这个框架的运行逻辑想清楚后面配置的时候就不会一头雾水。OpenClaw的整体架构可以拆成四块核心引擎负责理解指令、调度任务、管理会话状态相当于大脑中枢渠道适配器负责把不同聊天工具的消息翻译成统一格式这是它能接企业微信、钉钉等多种渠道的原因模型接入层统一封装大模型API调用让你可以随时换模型服务商不需要改业务代码存储层保存会话记录、任务配置、用户资料保证重启后状态不丢。打个不太严谨但很好理解的比方OpenClaw像你雇的一个24小时值班助理他坐在云服务器里通过企业微信、钉钉这些前台窗口跟你对话。遇到不懂的问题他会打电话给外面的专家团队大模型API获取答案再把结果转述给你。你给他的指令、他收到的信息全都记在工位上本地存储每天下班也不用清空。想跑通这套逻辑前提条件就两个一个稳定的公网环境让消息渠道能随时找到它一个不让进程随便死掉的运行环境保证凌晨三点那条定时提醒能准时发出去。这两个前提恰恰是云服务器天生的优势也是我为什么没有在自家旧电脑上折腾的原因。家里那台机器偶尔断电、断网重启后还得人肉点一下启动脚本根本不满足7×24小时这个底线。2. 部署前的准备工作2.1 云服务器选型不追求高配追求稳定我用的这台服务器是2核4G内存、40G SSD、带宽选了5M系统用的Ubuntu 22.04。这个配置可能比你预想的低——其实非常保守。为什么不需要高配因为OpenClaw本身只是个调度中枢真正的AI计算发生在云端的大模型API那边服务器只负责转译请求、管理队列、存聊天记录占用的CPU和内存都极低。除非你打算在服务器本地跑开源大模型否则完全没必要碰GPU主机。预算紧张的话1核2G也能勉强跑起来但系统内存余量太小日志一多容易把内存或磁盘打满建议至少给2G。选服务器的时候有几个容易踩的坑先写在前面地域别乱选。如果你主要在国内使用就选国内主流云厂商的国内节点消息渠道的回调延迟低、链路稳定选海外节点虽然有时便宜但回调不稳定排查起来非常头疼。带宽计费模式优先选固定带宽不要用流量计费否则有人在深夜触发大量扫描请求流量账单可能让你肉疼。登录方式首选密钥对而不是密码。云厂商控制台创建实例时一般都能直接生成密钥对这比事后手动改安全得多。系统镜像用Debian系Ubuntu/Debian最省事后面所有依赖用apt一把梭完事没必要为难自己去用不熟的发行版。2.2 登录与基础环境初始化服务器创建完成之后第一件事是SSH登录。假设你的服务器公网IP是123.123.123.123在本地终端里执行ssh -i ~/.ssh/your_key.pem ubuntu123.123.123.123登录成功后我习惯先把系统软件源更新一遍再装几个基础工具。这一步看似简单但在干净系统上做一次能帮你省掉后面很多莫名的兼容问题sudo apt update sudo apt upgrade -y sudo apt install -y curl git vim ca-certificates gnupg接着安装Docker。如果决定用容器部署这是最省心的一步。官方提供的安装脚本一条命令就能完成在国内网络环境下执行稍慢但通常都能顺利通过curl -fsSL https://get.docker.com | bash sudo systemctl enable --now docker安装完验证一下docker版本能输出版本号就说明环境就绪。我为这台服务器单独创建了一个普通用户claw日常操作都用这个用户执行root只在安装系统级软件时用sudo。这个习惯能有效防止在root权限下手滑做出不可逆操作——比如误删目录、改错权限。下面所有部署步骤我都会以claw用户的视角来写。3. 一步步部署OpenClaw核心实操3.1 方案一Docker容器部署OpenClaw官方仓库通常都提供Docker镜像这也是我最推荐的部署方式。原因很简单依赖全在镜像里升级是拉一个新镜像重建容器回滚是指定旧tag重跑环境不会越搞越脏。先建一个工作目录准备好docker-compose编排文件。下面是我实际使用的配置模板里面的镜像名和路径以你手上仓库的README为准整体结构可以直接照抄# docker-compose.yml version: 3.8 services: openclaw: image: your-registry/openclaw:latest container_name: openclaw restart: unless-stopped ports: - 8080:8080 environment: - TZAsia/Shanghai - OPENCLAW_CONFIG_DIR/data volumes: - ./data:/data logging: driver: json-file options: max-size: 20m max-file: 5我特意加了TZ环境变量设置成Asia/Shanghai。这个看着不起眼但不设置的话定时任务和日志时间会默认按UTC算——你写早上九点的定时提醒它八点就给你推出来你排查半天才发现是时区问题。日志限制也一定要加OpenClaw会打印每条消息的处理过程时间长了日志文件能悄悄涨到几个G把磁盘塞满。配置写好后启动容器前先在data目录下手动创建config.yaml把大模型API信息填进去。我建议API Key这类敏感信息用环境变量引用不要直接写死在配置文件里。启动命令很简单docker compose up -d docker compose logs -f看到日志里出现service started或类似的关键字说明核心引擎已经跑起来。这时候先别急着接渠道优先测试API连通性。3.2 方案二源码部署如果你想做二次开发比如改OpenClaw的插件逻辑、在调度层加自己的过滤器源码部署会更合适。Docker镜像里改代码不方便源码方式改完直接重启服务就能生效。我以Python生态为例描述这个过程如果你拿到的项目是Node.js或Go写的思路完全一样。git clone https://github.com/your-org/openclaw.git cd openclaw python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt cp config.example.yaml config.yaml vim config.yaml配置改完之后用systemd保证它在开机时自动启动、崩了自动拉起。在/etc/systemd/system/openclaw.service里写入[Unit] DescriptionOpenClaw AI Assistant Afternetwork-online.target Wantsnetwork-online.target [Service] Userclaw WorkingDirectory/home/claw/openclaw ExecStart/home/claw/openclaw/.venv/bin/python main.py Restartalways RestartSec3 [Install] WantedBymulti-user.target然后执行sudo systemctl daemon-reload sudo systemctl enable --now openclaw systemctl status openclaw这里解释一下Restartalways和RestartSec3的含义前者告诉systemd不管进程是异常退出还是被kill都给我拉起来后者控制重启前的等待时间防止程序启动失败后陷入疯狂重启的循环。日志排查用journalctl -u openclaw -f就能实时看到输出。两种方式的取舍我再直接一点只是日常使用选Docker打算改代码选源码。如果你的服务器磁盘很紧张源码方式占用空间更小但依赖管理需要自己维护。我自己是Docker派因为升级实在太省事了。3.3 接入大模型API让AI真正开口说话框架跑起来之后最关键的配置就是接大模型API。这一步相当于给上面说的值班助理接通了专家团队的热线。我建议你选择国内合规可用、且API兼容主流开放协议格式的服务商这样OpenClaw的模型接入层基本不用改填上base_url、api_key、model_name就能用。无论最后选哪家有几个通用原则API Key只存在服务器环境变量或配置文件中绝不提交到任何Git仓库。模型名称要填对方API文档里能查到的准确名称随便填一个不存在的别名会直接报model not found。先建一个有限额的API Key设好月度用量上限防止意外超支。有些服务商支持受限Key设个上限比自己记账靠谱得多。config.yaml里模型部分大概是这样的形态model: provider: openai-compatible base_url: https://your-api.example.com/v1 api_key: ${OPENCLAW_API_KEY} model_name: your-model-name temperature: 0.7 max_tokens: 2048temperature是生成回复的随机性参数范围0到2。做问答助手我会设0.7左右既保持稳定又不会太机械如果用来写文案、写段子可以调到1.0以上让回复更有发散性。max_tokens控制单次回复的最大长度不用调太大2048对日常对话完全够用调太大会拖慢响应时间、浪费调用额度。配置完成后在OpenClaw的网页管理端或直接发一条测试消息看能不能收到模型回复。这一步通了整个链路的核心就打通了。4. 接入消息渠道让AI真正可用4.1 优先用官方机器人接口别碰非官方协议OpenClaw的渠道适配器是它最吸引人的部分但渠道接入时一定要擦亮眼睛。市面上有一些开源工具通过非官方协议模拟个人微信登录账号行为特征一旦异常随时可能被限制非常不值得。我的建议很明确优先使用服务方官方开放的机器人能力。企业微信群机器人安全稳定支持Webhook和主动推送个人和团队都能用。钉钉自定义机器人支持加签校验能收到消息配置也直观。网页管理后台OpenClaw自带适合配置、测试、查看任务状态不用另外申请权限。我首选企业微信因为回调配置最直观而且不需要走复杂审批创建一个群聊就能把机器人拉进去试用。以企业微信为例在群里添加一个机器人后能拿到一个Webhook地址。把Webhook地址填到OpenClaw的渠道配置里再开启接收消息的回调模式填上回调URL和Token。回调URL必须是云服务器上能公网访问的地址这就是为什么前面反复强调公网IP的重要性。4.2 配置回调与基础指令渠道配置里有个细节很容易踩坑回调URL填http还是https、端口是多少一定要和docker-compose里映射的端口对应。我曾经把回调URL写成https但服务器上其实没配证书回调一直失败日志里只有一条摸不着头脑的握手异常。改成http之后五分钟内就收到了测试消息。如果你打算长期使用还是建议通过反向代理加证书把公网通道升级成https否则消息内容是明文传输的。OpenClaw支持自定义指令相当于给预置了成语手册。我一开始就把最常用的几个指令写好commands: - trigger: /todo action: add_todo - trigger: /weather action: query_weather - trigger: /daily action: send_daily_report这样我在群里发一句/todo 买牛奶它就会把待办事项存下来发/weather它走天气插件查完直接返回。指令系统的价值在于它让大模型的对话能力和工具能力真正合在了一起而不是做一个只能陪聊的复读机。5. 7×24小时稳定运行的保障手段5.1 进程守护让程序崩了自动复活无论用Docker还是systemd第一步都是保证进程不会死得悄无声息。Docker方式里restart: unless-stopped的含义是容器异常退出时自动重启但如果你手动stop了它系统会尊重你的选择不再自动拉起。这个策略很适合绝大多数场景。不过仅靠容器重启还不够。我遇过一次容器看着是up状态但内部线程死锁消息发过去半天没反应的情况。这种活着但没反应的假死最坑人。后来我写了一个简单的健康检查脚本每两分钟探一次端口连续探测失败就重启容器再把异常记录写到日志里#!/bin/bash # /home/claw/healthcheck.sh if ! curl -sf http://127.0.0.1:8080/health /dev/null; then echo $(date %Y-%m-%d %H:%M:%S) health check failed, restarting /home/claw/healthcheck.log docker restart openclaw fi再用crontab挂上去*/2 * * * * /home/claw/healthcheck.sh这属于轻量级保命手段。如果对监控有更高要求可以把健康检查结果上报到一些免费监控平台配置好之后晚上基本能睡个安心觉。5.2 日志查看与异常排查日志是7×24服务里最宝贵的排障线索。Docker方式docker logs -f openclaw docker logs --tail 200 openclawsystemd方式sudo journalctl -u openclaw -f sudo journalctl -u openclaw --since 1 hour ago我自己的习惯是每次更改配置后先清掉日志再看新输出避免被旧内容干扰。比如docker logs --since 1m openclaw只显示最近一分钟的日志配合-f实时看能快速定位配置改完到底有没有生效。还有一个容易忽略的点磁盘空间。日志轮转配置我在前面已经给了但建议定期执行df -h看一眼磁盘使用率。OpenClaw的data目录里会存会话记录时间久了体量必然膨胀最好在运维计划里加一个每月备份并清理旧数据的任务别等塞满了才临时抱佛脚。5.3 安全加固清单云服务器暴露在公网上安全这块我列了个清单每一条都是实际做过或者吃过亏总结出来的SSH登录用密钥禁用root直接登录。修改/etc/ssh/sshd_config里的PermitRootLogin为no、PasswordAuthentication为no改完重启sshd。安全组只放行必要端口。网页管理端如果没有公网访问需求就把它的端口只允许你本地IP访问或者干脆只绑在127.0.0.1用SSH隧道访问。给服务器装fail2ban。它会对多次登录失败或端口扫描的IP自动封禁安装配置都很简单sudo apt install -y fail2ban sudo systemctl enable --now fail2banAPI Key不要出现在任何代码仓库、聊天截图、公开配置里。我在各类平台见过太多把Key泄露到配置文件里的案例泄露之后一夜之间账单爆掉非常痛。数据目录定期备份。OpenClaw的配置文件和会话数据都在data目录用tar打包传到独立存储就行不一定要用复杂工具关键是有备份这个动作本身。6. 常见问题与排查技巧实录6.1 高频问题速查表我把实际运行中碰到的高频问题整理成了一张速查表建议直接存下来遇到问题先查一遍再翻日志。症状可能原因排查方向解决参考发消息没有任何回复渠道回调没配置好检查回调URL、Token、端口映射用webhook测试工具直接模拟回调请求回复特别慢大模型API本身慢或触发限流查模型服务商控制台的调用记录换更快的模型、调低max_tokens定时任务不触发时区不对执行timedatectl检查系统时区容器或服务设置TZAsia/Shanghai容器反复重启配置错误或API Key无效用docker logs查看启动时报错修正配置确认Key有效磁盘被日志占满日志轮转没生效执行df -h查看使用率加上logging配置清理旧日志外网访问管理端超时安全组没放行查云平台控制台安全组规则只放行必要IP和端口6.2 我踩过的一些坑很多坑并不是项目本身的问题而是没仔细看配置就开始跑造成的。举三个印象最深的例子。第一个坑是环境变量没生效。我在docker-compose里写了OPENCLAW_API_KEY但OpenClaw读的是配置文件里的同名引用两者没对上测试时一直报401。排查了二十分钟才发现原来启动命令里根本没有把env_file加载进去。记住一个原则改完环境变量或配置文件之后一定要用docker compose down加docker compose up -d重建容器而不是只restart。环境变量在容器创建时就固定了restart不会重新读取。第二个坑是云平台安全组和系统防火墙的双保险问题。有次我在云厂商的安全组里放行了8080端口但系统里装了ufw忘了放行同端口外部怎么都连不上。以后排查网络问题先看云平台安全组再看服务器本机防火墙两边都对上了才通。第三个坑和主动推送有关。OpenClaw主动推送消息时如果目标企业微信机器人的Webhook地址暂时不可达消息是不会自动重发的丢掉就没了。我后来在定时任务里加了失败重试机制把没发出去的消息重新入队才算彻底解决。7. 进阶玩法把AI助手从能用变成好用7.1 定时日报与主动推送当OpenClaw稳定运行一个星期后你一定会想让它做更多事。我最满意的功能是每天早上九点的日报推送先读取前一天记录的待办再调天气接口最后结合模型生成一段简洁的当日计划。这个功能的本质就是定时任务加多个插件的编排。配置上不复杂在任务定义里声明cron表达式和动作就行。比如0 9 * * *就是每天早上九点触发。我建议新手先跑一个最简单的例子比如每小时推送一次当前时间确认能触发后再慢慢加插件。一上来就做复杂的多插件编排出了问题反而分不清是哪一环挂了。7.2 多模型路由与个人知识库OpenClaw支持配置多个模型可以根据任务类型走不同模型。日常问答用响应更快的模型长文档摘要用能力更强的模型定时提醒这种短消息能用便宜模型就尽量不用贵的。在模型接入层配置多个provider之后给每个任务指定model_name就行。如果你想让它真正了解你的信息可以挂一个个人知识库。最简单的做法是把常用资料整理成文本通过OpenClaw的索引功能导入之后问相关问题时它会先检索再回答。这个玩法前期上手慢一点但收益最大等于把自己的私有知识和AI的通用能力组合在了一起。我个人用下来的体会是进阶功能不用一次性全部加上。先让基础链路稳定跑几周等对日志、任务、渠道都有了感觉再按需扩展。毕竟7×24服务的核心指标不是功能多而是不乱、不挂、随时找得到人。希望这篇记录能让你少踩几个坑早点拥有自己的AI私人助手。