1. 项目概述:为什么你的AI智能体需要一个云上“家”
如果你正在捣鼓一个像OpenClaw这样的本地优先、自主运行的AI智能体框架,那你肯定已经体会过那种“甜蜜的烦恼”:在本地笔记本上跑得风生水起,一旦你合上盖子、重启电脑,或者只是网络波动一下,你的智能体就瞬间“失联”了。它就像一个需要24小时不间断供电和联网的超级大脑,你的个人电脑显然不是它理想的“家”。
这就是我花大量时间折腾和总结这份《DisierTECH OpenClaw Stack》部署指南的核心原因。OpenClaw(前身是Moltbot和ClawdBot)不是一个简单的聊天机器人,它是一个具备持久化状态、本地向量数据库(SQLite FTS5)、并能执行操作系统级命令的真正数字替身。把它丢到云端VPS上,不仅仅是让它“在线”,更是为它提供了一个生产级的、可靠的运行环境。想象一下,你需要它7x24小时监听Webhook、执行定时任务、处理邮件,这些都不是偶尔开机的个人电脑能胜任的。
所以,这篇指南不是简单的“怎么在云服务器上装个软件”。它是我在多个主流云平台(DigitalOcean、Google Cloud、Oracle Cloud、Azure、Hostinger)上反复部署、测试、踩坑后,为你梳理出的一份保姆级、带避坑指南的云基础设施选型与部署手册。我会告诉你,在不同预算(从免费到付费)、不同需求(从学生党到生产环境)下,如何选择最合适的“房子”,并一键把它装修成OpenClaw的完美家园。
2. 核心需求解析:为AI智能体挑选“硬件”
在冲进云平台控制台之前,我们必须先搞清楚OpenClaw这位“房客”对“硬件”有什么硬性要求。盲目选择配置,要么性能瓶颈,要么浪费金钱。
2.1 内存(RAM):智能体的“工作记忆”
这是最关键的资源,没有之一。OpenClaw在运行时,会将上下文、技能模块以及向量索引加载到内存中。根据我的实测,一个基础配置的OpenClaw实例,内存占用量通常在300MB到700MB之间浮动。如果你的智能体加载了大量自定义技能或处理大型文档,占用超过1GB也是常事。
注意:这里说的内存是可用内存。操作系统本身、Docker守护进程、以及其他系统服务也会占用一部分。因此,绝对不要选择总内存刚好1GB的VPS来跑OpenClaw,那几乎必然会导致因内存不足(OOM)而被系统强制终止。
我的经验是:为生产环境预留至少1.5GB 到 2GB 的可用内存空间。这意味着你的VPS总内存至少需要2GB。这也是为什么在免费套餐中,Google Cloud的e2-micro(仅1GB内存)需要额外配置Swap(交换分区)才能勉强运行,而Azure学生套餐的B2pts(4GB内存)或Hostinger的KVM 1(4GB内存)会是更从容的选择。
2.2 存储(Storage):向量数据库的“书架”
OpenClaw使用SQLite FTS5作为其混合检索向量数据库。虽然SQLite以轻量著称,但它的性能极度依赖磁盘I/O延迟。当智能体需要从海量记忆(向量索引)中快速检索相关信息时,慢速的机械硬盘(HDD)会成为巨大的瓶颈,导致响应迟钝。
因此,NVMe或SSD存储是必须项。它们的低延迟和高IOPS(每秒输入/输出操作次数)能确保向量查询和日志写入飞快完成。在对比表中你会看到,像Hostinger这类提供商将NVMe作为标配,而Oracle Cloud的免费块存储也是基于高性能SSD,这都是为这类应用场景做的优化。
2.3 CPU与架构:单核性能与兼容性“暗礁”
Node.js是单线程事件循环模型,这意味着OpenClaw的核心逻辑主要跑在一个CPU线程上。因此,高单核性能比多核数量更重要。一个主频3.0GHz的单核,通常比两个主频1.5GHz的核更适合OpenClaw。
另一个容易被忽视的陷阱是CPU架构。目前市面上的VPS主要分为x86_64(Intel/AMD)和ARM64(如AWS Graviton、Oracle Ampere)两种架构。绝大多数Linux软件和Docker镜像都优先支持x86_64。虽然ARM64生态日益完善,但一些Node.js的本地依赖(通过node-gyp编译)可能在ARM上缺乏预编译的二进制包,导致安装时需要从源码编译,这常常会失败。
实操心得:对于新手或求稳的生产部署,优先选择x86_64架构。如果你选择了ARM64实例(如Oracle的免费Ampere A1),务必在部署脚本中确保安装了完整的编译工具链(build-essential,python3)。
2.4 网络与安全:智能体的“门窗”
- 网络带宽:对于主要处理文本和API调用的AI智能体,带宽通常不是瓶颈。但如果你计划让智能体处理图像、音频或频繁进行网络爬取,那么需要注意云服务商的出站流量(Egress)限制。Google Cloud免费套餐每月仅1GB免费出站流量,超出部分费用不菲。
- 安全隔离:这一点至关重要。OpenClaw被设计为可以执行Shell命令,这意味着它拥有不小的系统权限。永远不要在与你个人数据或工作环境共享的机器上以生产模式运行它。使用独立的VPS提供了天然的沙箱环境,即使智能体行为出现意外,也不会危及你的主系统。
3. 五大云平台实战部署与深度对比
了解了需求,我们进入实战环节。我将为你拆解五个主流平台的具体操作步骤、隐藏陷阱和最优策略。
3.1 DigitalOcean:开发者的“舒适区”
DigitalOcean(DO)以其极简的界面和可预测的性能著称。它的Droplet(虚拟机)采用KVM全虚拟化,资源独享,没有“吵闹的邻居”问题(即其他用户不会挤占你的CPU性能)。
部署步骤精讲:
- 注册与羊毛:通过 推荐链接 注册,可以拿到200美元60天的试用金。学生用户通过GitHub学生包可以申请200美元长达1年的额度,这是绝佳的起步资源。
- 创建Droplet:
- 镜像:选择Debian 12或Ubuntu 24.04 LTS。我个人偏好Debian,因为它更精简,系统开销更小。
- 套餐:对于初期测试,6美元/月的基础型(1 vCPU, 1GB内存,25GB SSD)配合Swap可以运行。但如前所述,为了稳定,我建议至少选择12美元/月(1 vCPU, 2GB内存)的套餐。
- 认证:务必使用SSH密钥,禁用密码登录。这是保障服务器安全的第一步。
- 一键安装:通过SSH连接后,运行我们的统一安装脚本。这个脚本会处理好所有依赖。
ssh root@你的Droplet-IP curl -fsSL https://raw.githubusercontent.com/disi3r/DisierTECH-OpenClaw-Stack/main/install.sh | bash为什么推荐DO?除了性能稳定,DO的生态很好。他们甚至有应用市场(Marketplace),未来如果OpenClaw入驻,可以实现真正的一键部署。对于开发者而言,其API和文档的友好度是顶级的。
3.2 Google Cloud Platform (GCP):永远的“免费层”策略
GCP提供永久免费的e2-micro实例,这是“永远免费”的吸引力所在。但它也是限制最多的选择。
核心挑战与应对:e2-micro只有1 vCPU(共享核心)和 1 GB内存。1GB内存直接运行OpenClaw几乎必然OOM。因此,创建Swap文件是强制步骤。幸运的是,我们的install.sh脚本已经自动包含了这一步,它会创建一个2GB的Swap文件,并将系统内存交换倾向(vm.swappiness)调低至10,让系统优先使用物理内存,仅在必要时使用Swap,以平衡性能。
部署要点:
- 注册获得300美元90天试用金。
- 创建VM时,机器类型选择
e2-micro。区域必须选择 us-west1, us-central1, us-east1 中的一个,否则不享受免费额度。 - 防火墙规则中,记得允许HTTP/HTTPS流量(例如端口3000,如果你开放了OpenClaw的Web仪表板)。
- 连接后直接运行安装脚本,Swap问题无需再手动干预。
重要提示:GCP免费套餐每月仅提供1GB出站流量到北美地区,其他地区更少。如果你的智能体需要频繁调用外部API(如OpenAI),请密切监控流量,以免产生意外账单。
3.3 Oracle Cloud:高风险高回报的“资源怪兽”
Oracle Cloud的免费套餐是业界良心,提供最高4个ARM核心和24GB内存的Ampere A1实例。但它的获取和使用过程充满挑战。
两大核心风险:
- 资源紧缺(Out of Capacity):热门区域(如美国东部、欧洲)的免费ARM实例资源经常售罄。你需要尝试冷门区域(如巴西圣保罗、沙特吉达)。
- 闲置回收政策(Idle Reclamation):这是最大的坑!如果你的免费实例连续7天CPU/内存/网络利用率低于10%,Oracle有权直接终止它。你的数据和配置将一并丢失。
针对闲置回收的保活策略:你不能让服务器完全空闲。一个简单粗暴但有效的方法是设置一个Cron定时任务,定期制造一点CPU负载。
# 编辑当前用户的crontab crontab -e # 在文件末尾添加以下行,意思是每6小时运行一次`yes`命令(会占满一个核心),持续120秒,输出重定向到空设备。 0 */6 * * * /usr/bin/timeout 120 /usr/bin/yes > /dev/null 2>&1当然,更优雅的方式是确保你的OpenClaw智能体本身有定期的任务在执行(例如定时拉取数据、生成报告),这本身就是有效的保活活动。
ARM64兼容性问题: 如前所述,在ARM实例上运行npm install可能会遇到本地模块编译失败。安装脚本已预装build-essential。如果仍失败,尝试安装更完整的依赖:
sudo apt install -y python3 python3-pip libx11-dev或者,直接使用Docker镜像运行,这是规避架构兼容性问题的最佳实践。
3.4 Microsoft Azure:学生用户的“免信用卡天堂”
对于在校学生,Azure提供了最友好的入口:通过验证.edu邮箱,即可获得100美元信用额度和12个月的免费服务,而且无需绑定信用卡。这解除了最大的心理门槛。
关键步骤:
- 访问 Azure for Students 页面,用学校邮箱验证。
- 创建虚拟机时,在“实例”选择页面,务必从“免费服务”分类下选择。推荐
B2pts v2(2 vCPU, 4 GB RAM, ARM64)或B2ats v2(AMD x86, 4 GB RAM)。4GB内存对于OpenClaw来说非常宽裕。 - 注意,这12个月的免费服务有750小时/月的限制,但单台VM运行一个月是绰绰有余的。
3.5 Hostinger VPS:性价比之王的“长期住所”
当免费试用期结束,你需要一个长期稳定且高性价比的归宿时,Hostinger的VPS是我认为的“性价比之王”。以KVM 1套餐为例,约4.24美元/月(使用优惠码后),你就能获得:1 vCPU, 4 GB内存, 50 GB NVMe存储。
为什么是它?
- NVMe存储:相比普通SSD,NVMe的IOPS高出一个数量级,这对SQLite向量数据库的随机读写性能提升是质的飞跃。
- KVM虚拟化:资源独享,性能稳定。
- 价格与配置比:4GB内存在这个价位段极具竞争力,完全满足OpenClaw生产需求且留有冗余。
- 无闲置回收焦虑:你付了钱,它就是你的,不会因为CPU闲置而被回收。
部署与优惠:
- 通过 推荐链接 进入,选择VPS下的KVM 1或KVM 2套餐。
- 在结算页面,输入优惠码
CEVPS,可以获得最高72%的折扣。 - 系统选择Debian 12,之后通过SSH连接并运行统一安装脚本即可。
4. 一键安装脚本深度拆解
我们的核心工具是那个一键安装脚本install.sh。它不仅仅是一个命令集合,而是针对生产环境做了深度优化的初始化工具。我们来拆解它每一步背后的考量:
curl -fsSL https://raw.githubusercontent.com/disi3r/DisierTECH-OpenClaw-Stack/main/install.sh | bash4.1 架构检测与适配
脚本首先会检测系统是x86_64还是ARM64。这对于后续选择正确的软件源(如NodeSource的安装脚本)和预判可能出现的兼容性问题至关重要。
4.2 系统更新与基础工具
更新包列表并安装curl,wget,git,ufw等基础工具。ufw(Uncomplicated Firewall)是简化iptables配置的工具,脚本会默认设置只允许SSH(22端口)连接,这是安全基线。
4.3 Node.js与Docker安装
- Node.js:通过NodeSource仓库安装最新的LTS版本。这比系统自带的旧版本更稳定,且对ARM64有良好支持。
- Docker & Docker Compose:使用Docker官方仓库安装。Docker Compose已整合为Docker CLI的一个插件(
docker compose),脚本安装的是此现代版本。
4.4 交换空间(Swap)的智慧配置
对于小内存实例(如1GB),Swap是救命稻草。但Swap使用硬盘,速度慢。脚本的优化在于:
- 使用
fallocate快速创建2GB的Swap文件,比传统的dd命令更快。 - 将
vm.swappiness的值设置为10(默认通常是60)。这个参数控制系统使用Swap的倾向。设为10意味着系统会尽可能使用物理内存,直到用到差不多90%以上时,才不情愿地开始用Swap,从而在防止OOM和保持性能之间取得平衡。
4.5 内核网络参数调优
脚本会修改/etc/sysctl.conf中的几个TCP/IP参数,例如增加TCP连接队列大小、启用TCP快速打开等。这些调整对于需要处理并发网络请求的AI智能体服务(例如处理Webhook)有积极影响,能提升连接效率和稳定性。
5. Docker Compose部署与配置详解
使用Docker部署OpenClaw是推荐的方式,它能解决环境依赖问题,并方便管理。以下是一个生产环境可用的docker-compose.yml文件详解:
services: openclaw: image: openclaw/gateway:latest # 使用官方镜像 container_name: openclaw_agent # 指定容器名,便于管理 restart: unless-stopped # 自动重启策略,除非手动停止 network_mode: "host" # 使用主机网络模式,简化网络配置 volumes: # 持久化智能体的身份、密钥和配置 - ~/.openclaw:/root/.openclaw # 映射工作空间,方便从宿主机管理智能体生成的文件 - ./workspace:/root/workspace environment: - NODE_ENV=production # 设置为生产环境 - AGENT_secret_key=${SECRET_KEY} # 从环境变量文件读取密钥,增强安全 deploy: resources: limits: memory: 900M # 内存上限。在1GB总内存的机器上,为宿主机预留100MB cpus: '1.5' # CPU限制。在共享核心实例上,防止单个容器吃满所有CPU关键配置解析:
network_mode: "host":让容器直接使用宿主机的网络栈。这样容器内应用监听的端口(如3000)就是主机端口,无需再做端口映射,也避免了Docker内部网络带来的额外开销和复杂度。对于单服务部署,这是最简洁的方式。volumes:数据持久化是核心。~/.openclaw目录保存了智能体的“身份”和长期记忆,必须持久化,否则重启后智能体会“失忆”。workspace目录是智能体执行文件操作的地方,持久化方便你查看和备份结果。resources.limits:资源限制不是必须的,但强烈建议设置。它防止了Bug或异常导致的应用无限占用资源,从而拖垮整个VPS。cpus: '1.5'意味着容器最多可以使用1.5个CPU核心的计算时间。
启动与管理命令:
# 在docker-compose.yml所在目录执行,后台启动 docker compose up -d # 查看实时日志,用于调试 docker compose logs -f openclaw # 停止服务 docker compose down # 停止并删除容器和映射的网络(不会删除volume中的数据) docker compose down -v6. 疑难杂症排查实录
在实际部署中,你几乎一定会遇到下面这些问题。这里是我踩坑后的解决方案汇总。
6.1 端口无法访问(尤其是Oracle Cloud)
现象:你在服务器上运行了OpenClaw,docker compose logs显示服务已启动,监听3000端口,但你就是无法通过浏览器http://<服务器IP>:3000访问。
根本原因:云平台通常有两层防火墙。第一层是云服务商控制台的安全组/防火墙规则(VCN, Security Groups),第二层是操作系统内部的iptables/ufw。只开一层是没用的。
解决方案(以Oracle Cloud为例):
- 云控制台防火墙(必须做):
- 登录OCI控制台,进入网络 -> 虚拟云网络 -> 你的VCN -> 安全列表。
- 找到关联了你实例的安全列表,添加一条入口规则:
- 源CIDR:
0.0.0.0/0(或你的IP段以更安全) - 目标端口范围:
3000(或你应用的实际端口) - 协议: TCP
- 源CIDR:
- 系统防火墙(我们的脚本已配置ufw):
- 如果使用
ufw,确保规则已添加:sudo ufw allow 3000/tcp - 如果使用
iptables,可能需要手动添加规则并保存。
- 如果使用
6.2 内存不足(OOM)导致进程崩溃
现象:OpenClaw运行一段时间后突然消失,docker compose logs看不到新日志,使用docker ps发现容器处于退出状态。
诊断:
# 查看系统日志,搜索OOM Killer记录 sudo dmesg | grep -i "oom\|kill"如果看到有进程因内存不足被终止的记录,那就是OOM问题。
解决:
- 确认Swap已启用:运行
free -h,查看Swap行是否有使用量。如果全是0,说明Swap未激活。 - 手动创建Swap(如果安装脚本失败):
# 创建2GB的Swap文件 sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 永久生效 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 优化Swap使用倾向 echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf sudo sysctl -p - 调整Docker内存限制:在
docker-compose.yml中,适当降低memory限制(如从900M降到700M),给系统留出更多余量。
6.3 Docker权限错误
现象:运行docker compose命令时提示Permission denied。
原因:当前用户不在docker用户组中。
解决:
# 将当前用户加入docker组 sudo usermod -aG docker $USER # 退出当前SSH会话,重新登录,使组权限生效 # 或者执行以下命令立即生效(针对当前shell) newgrp docker6.4 SSH连接失败(修改端口后)
现象:为了安全修改了SSH默认端口(如从22改为22022),保存配置重启sshd服务后,自己也被踢出并无法重新连接。
原因:新的防火墙规则未在重启sshd前放行。
避坑操作流程:
- 修改SSH配置文件
/etc/ssh/sshd_config中的Port。 - 在重启sshd服务之前,先放行新端口:
sudo ufw allow 22022/tcp sudo ufw reload - 然后重启SSH服务:
sudo systemctl restart sshd。 - 使用新端口测试连接:
ssh -p 22022 user@host。 - 确认新端口可以连接后,再禁用旧端口:
sudo ufw deny 22/tcp。
7. 长期维护与优化建议
部署成功只是第一步,要让你的AI智能体稳定、高效地长期运行,还需要一些维护技巧。
7.1 日志管理与监控
不要只靠docker compose logs看实时日志。生产环境需要持久化日志以便排查历史问题。
方法一:Docker日志驱动在docker-compose.yml中配置日志驱动,将日志重定向到文件或外部日志系统(如Loki)。
services: openclaw: # ... 其他配置 ... logging: driver: "json-file" options: max-size: "10m" # 每个日志文件最大10MB max-file: "3" # 最多保留3个文件(滚动覆盖)之后日志文件位于/var/lib/docker/containers/<容器ID>/<容器ID>-json.log。
方法二:进入容器查看
# 进入容器内部 docker exec -it openclaw_agent /bin/bash # 查看OpenClaw应用自身的日志(假设日志写在/root/.openclaw/logs/) tail -f /root/.openclaw/logs/app.log7.2 备份策略
你的智能体的“记忆”(向量数据库)和配置都在持久化卷里。定期备份至关重要。
简单手动备份:
# 假设你的docker-compose.yml在~/openclaw目录 cd ~/openclaw # 创建一个带时间戳的备份压缩包 tar -czvf backup-openclaw-$(date +%Y%m%d).tar.gz workspace/ .openclaw/ # 可以将此压缩包通过scp下载到本地,或上传到云存储 scp backup-openclaw-*.tar.gz your-local-machine:~/backups/自动化备份(Cron Job): 可以编写一个备份脚本,并使用Cron定时执行(例如每天凌晨3点)。
# 编辑crontab crontab -e # 添加一行 0 3 * * * /home/your-user/backup-openclaw.sh
7.3 性能调优观察
部署后,观察一段时间系统的资源使用情况:
# 查看实时系统资源占用(按q退出) htop # 或使用更简洁的top top # 查看Docker容器资源占用 docker stats重点关注:
- 内存:是否持续接近限制?Swap是否被频繁使用(
si/so值高)?频繁Swap会极大降低性能,考虑升级套餐。 - CPU:是否长期处于高负载?OpenClaw在空闲时CPU应接近0,持续高负载可能意味着有任务卡死或循环。
- 磁盘I/O:使用
iostat或iotop命令,观察NVMe/SSD的利用率。如果长期很高,说明向量数据库操作频繁,可以考虑优化查询或升级磁盘。
7.4 安全加固 Checklist
- 禁用root SSH登录:修改
/etc/ssh/sshd_config,设置PermitRootLogin no,然后使用普通用户+sudo。 - 使用SSH密钥,禁用密码:确保
PasswordAuthentication设置为no。 - 保持系统更新:定期运行
sudo apt update && sudo apt upgrade。 - 限制防火墙端口:使用
ufw,只开放SSH端口和OpenClaw应用端口(如3000),其他全部deny。 - 保护环境变量:不要将
SECRET_KEY等敏感信息硬编码在docker-compose.yml中。使用.env文件,并确保该文件不被提交到Git。# 创建.env文件 echo "SECRET_KEY=your_super_secret_key_here" > .env # 在docker-compose.yml中引用 # environment: # - AGENT_secret_key=${SECRET_KEY} # 启动时指定环境文件 docker compose --env-file .env up -d - 定期审查日志:检查
/var/log/auth.log是否有异常登录尝试,检查应用日志是否有错误堆栈。
经过以上步骤,你的OpenClaw智能体就已经在一个稳固、安全、可维护的云环境中安家了。从免费试玩的探索,到性价比长期持有的选择,再到生产环境的调优与维护,这套流程覆盖了一个AI智能体项目从原型到产品的主要基础设施阶段。记住,稳定的环境是智能体可靠工作的基石,前期的精心搭建能为后续的开发和迭代省去无数烦恼。如果在部署中遇到上面没覆盖的新问题,多查看日志,善用搜索引擎,或者回到OpenClaw和Docker的社区寻找答案,这才是工程师的常态。