第十一篇:把 AI 助手搬上云 —— OpenClaw 部署全攻略
第十一篇:把 AI 助手搬上云 —— OpenClaw 部署全攻略
上一篇结尾我说”Agent 一直跑在你笔记本上终究不是长久之计”。
这话是有感而发。我有一次出差,合上笔记本赶飞机,落地后才想起来 —— OpenClaw 的 Gateway 跟着关了。Telegram 上攒了一下午的消息没人处理,Cron 早报也没发,邮件分类停了六个小时。
你精心配好的自动化工作流,依赖一台笔记本的开合状态,这事想想就不靠谱。
好消息是,OpenClaw 从一开始就为服务器部署设计。Gateway 是个标准的 Node.js 长运行进程,Docker 容器里跑得很稳,云平台几分钟就能部署好。远程访问走 Tailscale,手机上随时操作。
所以这篇就一件事:帮你把 OpenClaw 从笔记本搬到一个永远在线的地方。

先搞清楚:你需要什么样的部署
不是所有人都需要上云。先对号入座:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如果你只是自己玩玩,有一台 Mac mini 或者群晖 NAS 常开着,根本不用花钱上云。配个守护进程让 Gateway 开机自启,再用 Tailscale 打通远程访问,效果和云服务器一模一样。
没有常开设备,或者想要更省心的方案?那就上云。往下看。
本地部署:守护进程配置
最简单的”永远在线”方案:让 OpenClaw 以守护进程方式运行。
# 安装并启动守护进程openclaw onboard --install-daemon
这条命令干了两件事:
-
1. 创建系统级服务(macOS 用 launchd,Linux 用 systemd) -
2. 设置开机自启
之后 Gateway 会在后台跑着,关掉终端、合上笔记本都不影响 —— 前提是电脑没关机。
macOS:launchd 配置
onboard --install-daemon 会自动创建 plist 文件。想手动调整的话,文件在这里:
~/Library/LaunchAgents/ai.openclaw.gateway.plist
常用操作:
# 查看 Gateway 状态openclaw gateway status# 手动停止launchctl unload ~/Library/LaunchAgents/ai.openclaw.gateway.plist# 手动启动launchctl load ~/Library/LaunchAgents/ai.openclaw.gateway.plist# 查看日志openclaw logs --tail
Linux:systemd 配置
Linux 上用 systemd,更标准也更可控:
# 查看服务状态systemctl --user status openclaw-gateway# 重启systemctl --user restart openclaw-gateway# 查看日志journalctl --user -u openclaw-gateway -f
如果你的 Linux 服务器是无头的(没有桌面环境),需要额外启用 lingering,让用户服务在未登录时也能运行:
sudo loginctl enable-linger $USER
不加这一行的话,你 SSH 登录时 Gateway 跑着,退出 SSH 就停了。很多人在这里踩坑。
健康检查
不管哪个平台,配好守护进程之后都跑一遍诊断:
openclaw doctor
这个命令会检查 Node.js 版本、端口占用、配置文件格式、API Key 可用性。全部绿色就没问题。
openclaw health
实时看 Gateway 的健康状态:内存占用、连接数、Agent 活跃状态。

Docker 部署:一行命令搞定
本地守护进程的问题是环境依赖。Node.js 版本不对、系统升级把服务搞挂、多个项目的 Node 版本冲突 —— 这些破事 Docker 全帮你解决。
最小化启动
docker run -d \ --name openclaw \ --restart unless-stopped \ -p 18789:18789 \ -v openclaw-data:/root/.openclaw \ -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \ openclaw/openclaw:latest
拆开看:
-
• -d:后台运行 -
• --restart unless-stopped:崩溃自动重启,除非你手动停了 -
• -p 18789:18789:暴露 Gateway 端口 -
• -v openclaw-data:/root/.openclaw:持久化数据(配置、记忆、会话) -
• -e ANTHROPIC_API_KEY:传入 API Key
数据卷很重要。不挂数据卷的话,容器重启后配置和记忆全丢。你精心调教的 Agent 人格、积累的长期记忆,一夜回到解放前。
Docker Compose(推荐)
生产环境推荐用 docker-compose,配置更清晰,管理更方便:
# docker-compose.ymlversion: "3.8"services: openclaw: image: openclaw/openclaw:latest container_name: openclaw restart: unless-stopped ports: - "18789:18789" volumes: - openclaw-data:/root/.openclaw - ./skills:/root/.openclaw/skills environment: - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - OPENAI_API_KEY=${OPENAI_API_KEY} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:18789/health"] interval: 30s timeout: 10s retries: 3volumes: openclaw-data:
注意 ./skills 那一行 —— 把本地 Skills 目录映射进去,方便你在宿主机上编辑 Skills,不用每次进容器改。
# 启动docker compose up -d# 查看日志docker compose logs -f openclaw# 更新版本docker compose pull && docker compose up -d
Podman:无 Root 方案
Docker 要 root 权限,有些场景下不允许。Podman 是 Docker 的无 Root 替代品,命令几乎一样:
podman run -d \ --name openclaw \ --restart unless-stopped \ -p 18789:18789 \ -v openclaw-data:/root/.openclaw \ -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \ openclaw/openclaw:latest
把 docker 换成 podman,其他不用改。Podman 在安全性上更好 —— 以普通用户权限运行容器,不需要 daemon 进程。
云平台部署:七家对比
本地部署零成本,但机器得你自己伺候。懒得折腾的话,每月花一杯咖啡的钱扔到云上,什么都不用管。
OpenClaw 官方支持的云平台不少,我按个人用户最关心的维度列了个对比:
|
|
|
|
|
|---|---|---|---|
| Fly.io |
|
|
|
| Railway |
|
|
|
| Render |
|
|
|
| DigitalOcean |
|
|
|
| Hetzner |
|
|
|
| GCP |
|
|
|
| Northflank |
|
|
|

个人推荐:Fly.io
如果只让我推荐一个,选 Fly.io。
理由:便宜、快、部署简单、全球节点。Fly.io 的机器跑在离你最近的数据中心,延迟比固定在美西某个机房的方案低得多。
部署流程:
# 安装 Fly CLIcurl -L https://fly.io/install.sh | sh# 登录fly auth login# 在项目目录创建 fly.tomlfly launch --image openclaw/openclaw:latest# 设置环境变量(API Key)fly secrets set ANTHROPIC_API_KEY=sk-ant-xxxfly secrets set OPENAI_API_KEY=sk-xxx# 创建持久化存储fly volumes create openclaw_data --size 1# 部署fly deploy
fly.toml 配置文件长这样:
app = "my-openclaw"primary_region = "nrt" # 东京,亚洲延迟最低[build] image = "openclaw/openclaw:latest"[mounts] source = "openclaw_data" destination = "/root/.openclaw"[http_service] internal_port = 18789 force_https = true[[vm]] size = "shared-cpu-1x" memory = "512mb"
primary_region 设成 nrt(东京)或 hkg(香港),对国内用户延迟最友好。
月费大概 $5 左右:shared-cpu-1x 约 $3,1GB 持久化卷 $0.15,加上流量费用。
新手首选:Railway
如果你连命令行都不想碰,Railway 更适合你。
-
1. 打开 railway.app,用 GitHub 登录 -
2. 点”New Project → Deploy from Docker Image” -
3. 输入 openclaw/openclaw:latest -
4. 添加环境变量(ANTHROPIC_API_KEY) -
5. 点 Deploy
五步,全在网页上操作。Railway 会自动分配域名,自动配置 HTTPS,自动设置健康检查。
月费大约 $5 起(按用量计费,空闲时几乎不花钱)。
性价比之王:Hetzner
Hetzner 是德国的 VPS 提供商,以”便宜 + 性能好”著称。
最低配 CX22(2 vCPU / 4GB RAM)月费 €3.99(约 $4.3),跑 OpenClaw 绰绰有余。
# SSH 登录 Hetzner 服务器后curl -fsSL https://openclaw.ai/install.sh | bashopenclaw onboard --install-daemon
Hetzner 适合有一点 Linux 基础的人。没有一键部署按钮,需要自己配置防火墙、设置 systemd、管理更新。但胜在便宜,而且是你自己的服务器,数据完全自主。
DigitalOcean:一键到位
DigitalOcean Marketplace 有 OpenClaw 的预装镜像:
-
1. 打开 DigitalOcean Marketplace 搜索 “OpenClaw” -
2. 选择 Droplet 规格(最低 $6/月的就够) -
3. 选择机房区域 -
4. 创建
创建完成后 SSH 进去,跑一遍 openclaw onboard 配置 API Key 和初始设置。镜像里 Node.js、OpenClaw、systemd 服务全预装好了。
远程访问:Tailscale 是正解
部署到云上之后,你怎么从手机、从其他电脑访问?
最蠢的做法是把 18789 端口直接暴露到公网。Gateway 的默认认证机制不是为公网设计的,你等于把家门大敞着。上一篇的安全审计里说了 —— 近 1000 个公开安装实例无认证。别成为第 1001 个。
Tailscale 是目前最靠谱的远程访问方案。底层用的 WireGuard,把你所有设备组成一个私有网络。设备之间直连,不走公网,延迟低,而且天然加密。
配置步骤
服务器端(OpenClaw 所在机器):
# 安装 Tailscalecurl -fsSL https://tailscale.com/install.sh | sh# 启动并登录sudo tailscale up# 记下分配的 IP(通常是 100.x.x.x)tailscale ip -4
客户端(你的手机、笔记本):
-
1. 在手机 / 电脑上安装 Tailscale App -
2. 用同一个账号登录 -
3. 访问 http://100.x.x.x:18789
搞定。不用配防火墙,不用买域名,不用折腾 SSL 证书。Tailscale 的流量是端到端加密的,安全性比你自己配 HTTPS 还靠谱。
SSH 隧道:临时替代方案
如果不想装 Tailscale,SSH 隧道是最简单的临时方案:
ssh -N -L 18789:127.0.0.1:18789 user@your-server
这条命令把远程服务器的 18789 端口映射到本地。之后在浏览器打开 http://127.0.0.1:18789 就能访问。
缺点:每次都要手动建隧道,手机上不好操作,断网就断了。Tailscale 能 set-and-forget,SSH 隧道做不到。

实战:Fly.io + Tailscale 完整部署
方案讲完了,该动手了。下面是一套我自己验证过的完整流程:Fly.io 部署 + 安全远程访问。
第一步:准备工作
# 确认本地 OpenClaw 配置可用openclaw doctor# 导出当前配置(可选,方便迁移)cp ~/.openclaw/openclaw.json ./openclaw-backup.json
第二步:Fly.io 部署
# 创建 Dockerfile(Fly.io 需要)cat > Dockerfile << 'EOF'FROM openclaw/openclaw:latestEXPOSE 18789CMD ["openclaw", "gateway", "--host", "0.0.0.0"]EOF# 创建 fly.tomlcat > fly.toml << 'EOF'app = "my-openclaw-agent"primary_region = "nrt"[build] dockerfile = "Dockerfile"[mounts] source = "openclaw_data" destination = "/root/.openclaw"[[services]] internal_port = 18789 protocol = "tcp" [[services.ports]] port = 18789EOF# 创建应用fly apps create my-openclaw-agent# 创建存储卷fly volumes create openclaw_data --region nrt --size 1# 设置密钥fly secrets set ANTHROPIC_API_KEY=sk-ant-xxx# 部署fly deploy
第三步:验证部署
# 查看运行状态fly status# 查看日志fly logs# SSH 进容器检查fly ssh consoleopenclaw health
第四步:配置 Tailscale
在 Fly.io 容器里安装 Tailscale 需要特殊处理。更简单的做法是在 Fly.io 侧不开放公网端口,直接通过 Fly 的 WireGuard 网络访问:
# 建立到 Fly 内网的 WireGuard 隧道fly wireguard create# 之后就能通过 Fly 内网 IP 访问 Gateway# 或者用 fly proxy 做端口转发fly proxy 18789:18789
如果你更喜欢 Tailscale 的方式,可以用 Fly.io 的 Tailscale 扩展:
# fly.toml 里添加[env] TAILSCALE_AUTHKEY = "tskey-auth-xxx"
配好之后,你的 Fly.io 实例会出现在 Tailscale 的设备列表里,像局域网设备一样直接访问。
第五步:迁移配置
把本地的配置和 Skills 同步到云端:
# 复制配置到 Fly 容器fly ssh sftp shellput openclaw-backup.json /root/.openclaw/openclaw.json# 或者用 fly ssh console 进去手动配fly ssh consoleopenclaw onboard
验证清单
-
• [ ] openclaw doctor全绿 -
• [ ] openclaw health显示 Gateway 运行中 -
• [ ] openclaw gateway status显示端口 18789 监听中 -
• [ ] Telegram / WhatsApp 发消息能收到回复 -
• [ ] Cron 任务按时触发 -
• [ ] 从手机通过 Tailscale 能访问控制面板
Nix 和 Ansible:给极客的选择
大多数人用不到这两个,但如果你恰好是 Nix 或 Ansible 用户,OpenClaw 都有原生支持。
Nix:可复现环境
# flake.nix{ inputs.openclaw.url = "github:openclaw/openclaw"; outputs = { self, nixpkgs, openclaw }: { nixosConfigurations.myhost = nixpkgs.lib.nixosSystem { modules = [ openclaw.nixosModules.default { services.openclaw = { enable = true; settings = { # openclaw.json 的内容 }; }; } ]; }; };}
Nix 的好处是环境完全可复现。换台机器,nixos-rebuild switch 一下,和原来的环境一模一样。
Ansible:批量部署
如果你管理多台服务器(比如给团队每个人部署一个实例),Ansible 能帮你自动化:
# playbook.yml- hosts: openclaw_servers roles: - role: openclaw.gateway vars: openclaw_version: "latest" anthropic_api_key: "{{ vault_anthropic_key }}"
ansible-playbook -i inventory playbook.yml
一行命令,十台服务器同时部署。
多 Gateway 部署:高可用场景
个人用户一般不需要。但如果你把 OpenClaw 用到了生产环境 —— 比如给公司客服接了 AI 助手 —— 单点故障就不能容忍了。
OpenClaw 支持多 Gateway 实例运行,通过共享状态目录实现数据同步。
┌─────────┐ ┌─────────┐│ Gateway │ │ Gateway ││ (主) │────▶│ (备) ││ Fly NRT │ │ Fly HKG │└────┬────┘ └────┬────┘ │ │ └───────┬───────┘ │ ┌──────▼──────┐ │ 共享存储 │ │ (Fly Volume) │ └─────────────┘
注意:多 Gateway 是实验性功能。对于大多数个人和小团队场景,单 Gateway + 自动重启 + 模型故障转移已经足够可靠。
更新与维护
部署完不是结束。OpenClaw 更新很频繁(用日历版本号,几乎每周有新版),你需要有一套更新策略。
Docker 环境更新
# 拉取最新镜像docker compose pull# 重启服务(数据不会丢,因为在卷里)docker compose up -d# 确认版本docker compose exec openclaw openclaw --version
Fly.io 更新
# 重新部署(会拉取最新镜像)fly deploy# 查看版本fly ssh console -C "openclaw --version"
更新别太莽
先看 CHANGELOG。OpenClaw 偶尔有破坏性变更,盲目 pull 可能导致配置格式不兼容,Gateway 起不来。
更新前顺手备份一下 openclaw.json 和 Skills 目录。数据卷里的东西不会丢,但保险起见 —— 我吃过一次亏,某个版本改了记忆存储格式,回滚的时候发现没备份,手动修了半小时。
如果跑了多 Gateway,先更新一台观察几小时,没问题再更新其他的。
部署后的安全加固
上了云之后,安全问题比本地运行严峻得多。几个必做的事:
1. 绝对不要暴露裸端口
Gateway 默认监听 127.0.0.1:18789,只接受本地连接。上了云之后,通过 Tailscale 或 SSH 隧道访问,不要改成 0.0.0.0 暴露到公网。
如果实在需要公网访问(比如 Webhook 回调),在前面加一层反向代理(Nginx / Caddy),配好认证:
# Caddy 反向代理示例my-openclaw.example.com { reverse_proxy localhost:18789 basicauth / { admin $2a$14$xxx # bcrypt 哈希 }}
2. 配置 Gateway 认证令牌
// openclaw.json{ gateway: { auth: { token: "${OPENCLAW_AUTH_TOKEN}" } }}
设了 token 之后,所有 WebSocket 连接都要带上这个令牌。没有令牌的连接会被拒绝。
3. 定期检查安全状态
openclaw security audit
这个命令检查已知安全问题:Skills 漏洞、认证配置、端口暴露情况。
Agent 跑在笔记本上,你出门它就歇菜。跑在服务器上,你睡着它还在干活。这个区别,用过就回不去了。
怕选择困难症犯了?直接看这个决策树:
-
• 有常开设备 → 本地守护进程 + Tailscale(免费) -
• 没有常开设备 + 想省心 → Railway 或 DigitalOcean($5-$6/月) -
• 没有常开设备 + 要性能 → Fly.io($5/月) -
• 预算紧 + 会 Linux → Hetzner($4/月) -
• 团队用 → Docker Compose + 你们自己的服务器
下一篇我们聊跨平台体验 —— macOS 菜单栏常驻、Android App、语音唤醒、Canvas 可视化工作区。部署解决了”在哪跑”的问题,跨平台解决的是”怎么用”的问题。你的 AI 助手应该在你触手可及的每一块屏幕上。
FutureCraft AI · 未来构界
2026年3月
夜雨聆风