在 Oracle Cloud (OCI) 上部署 OpenClaw

目标

在 Oracle Cloud Always Free ARM 层上运行持久化的 OpenClaw Gateway。

Oracle 免费层可以很好地运行 OpenClaw(尤其是你已经有 OCI 账号的话),但有一些折中:

  • ARM 架构(大多数东西能跑,但有些二进制文件可能只有 x86 版本)
  • 容量和注册流程可能会遇到问题

价格对比(2026)

供应商方案配置月费备注
Oracle CloudAlways Free ARM最多 4 OCPU, 24GB RAM$0ARM,容量有限
HetznerCX222 vCPU, 4GB RAM~ $4付费最便宜
DigitalOceanBasic1 vCPU, 1GB RAM$6界面简单,文档好
VultrCloud Compute1 vCPU, 1GB RAM$6节点多
LinodeNanode1 vCPU, 1GB RAM$5现已归入 Akamai

前提条件

1) 创建 OCI 实例

  1. 登录 Oracle Cloud Console
  2. 导航到 Compute → Instances → Create Instance
  3. 配置:
    • Name: openclaw
    • Image: Ubuntu 24.04 (aarch64)
    • Shape: VM.Standard.A1.Flex(Ampere ARM)
    • OCPUs: 2(最多 4)
    • Memory: 12 GB(最多 24 GB)
    • Boot volume: 50 GB(最多 200 GB 免费)
    • SSH key: 添加你的公钥
  4. 点击 Create
  5. 记下公网 IP

提示: 如果创建实例时出现 “Out of capacity”,换个可用域或过会儿再试。免费层容量有限。

2) 连接并更新

# 通过公网 IP 连接
ssh ubuntu@YOUR_PUBLIC_IP

# 更新系统
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential

说明: build-essential 在 ARM 上编译某些依赖时是必需的。

3) 配置用户和主机名

# 设置主机名
sudo hostnamectl set-hostname openclaw

# 为 ubuntu 用户设置密码
sudo passwd ubuntu

# 启用 lingering(退出登录后保持用户服务运行)
sudo loginctl enable-linger ubuntu

4) 安装 Tailscale

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --ssh --hostname=openclaw

这会启用 Tailscale SSH,你可以从 tailnet 上任何设备通过 ssh openclaw 连接——不需要公网 IP。

验证:

tailscale status

从现在起通过 Tailscale 连接: ssh ubuntu@openclaw(或使用 Tailscale IP)。

5) 安装 OpenClaw

curl -fsSL https://openclaw.ai/install.sh | bash
source ~/.bashrc

出现 “How do you want to hatch your bot?” 时,选择 “Do this later”

说明:如果遇到 ARM 原生编译问题,先从系统包着手(如 sudo apt install -y build-essential),再考虑 Homebrew。

6) 配置 Gateway(loopback + token 认证)并启用 Tailscale Serve

默认使用 token 认证。可预测,不需要任何”不安全认证”的 Control UI 标记。

# Gateway 只在 VM 内部监听
openclaw config set gateway.bind loopback

# 要求 Gateway + Control UI 认证
openclaw config set gateway.auth.mode token
openclaw doctor --generate-gateway-token

# 通过 Tailscale Serve 暴露(HTTPS + tailnet 访问)
openclaw config set gateway.tailscale.mode serve
openclaw config set gateway.trustedProxies '["127.0.0.1"]'

systemctl --user restart openclaw-gateway

7) 验证

# 查看版本
openclaw --version

# 查看守护进程状态
systemctl --user status openclaw-gateway

# 查看 Tailscale Serve
tailscale serve status

# 测试本地响应
curl http://localhost:18789

8) 锁定 VCN 安全规则

一切就绪后,锁定 VCN 以阻止除 Tailscale 外的所有流量。OCI 的虚拟云网络在网络边缘充当防火墙——流量在到达实例之前就被拦截。

  1. 在 OCI Console 中进入 Networking → Virtual Cloud Networks
  2. 点击你的 VCN → Security Lists → Default Security List
  3. 删除除以下之外的所有入站规则:
    • 0.0.0.0/0 UDP 41641(Tailscale)
  4. 保留默认出站规则(允许所有出站)

这会在网络边缘阻止 SSH 22 端口、HTTP、HTTPS 和一切其他流量。从此只能通过 Tailscale 连接。


访问 Control UI

从 Tailscale 网络上的任何设备:

https://openclaw.<tailnet-name>.ts.net/

<tailnet-name> 替换为你的 tailnet 名称(在 tailscale status 中可见)。

不需要 SSH 隧道。Tailscale 提供:

  • HTTPS 加密(自动证书)
  • 通过 Tailscale 身份认证
  • 从 tailnet 上任何设备访问(笔记本、手机等)

安全:VCN + Tailscale(推荐基线)

VCN 锁定后(只开放 UDP 41641)加上 Gateway 绑定 loopback,你就有了扎实的纵深防御:公网流量在网络边缘被拦截,管理访问走 tailnet。

这种设置通常_不需要_额外的主机防火墙规则来阻止互联网 SSH 暴力破解——但你仍应保持系统更新,运行 openclaw security audit,并确认没有意外监听公网接口。

已受保护的部分

传统步骤还需要?原因
UFW 防火墙不需要VCN 在流量到达实例前就阻止了
fail2ban不需要VCN 阻止了 22 端口,没有暴力破解
sshd 加固不需要Tailscale SSH 不使用 sshd
禁用 root 登录不需要Tailscale 用 Tailscale 身份认证,不用系统用户
仅密钥 SSH 认证不需要Tailscale 通过 tailnet 认证
IPv6 加固通常不需要取决于 VCN/子网设置;确认实际分配/暴露的情况

仍建议做的

  • 凭证权限: chmod 700 ~/.openclaw
  • 安全审计: openclaw security audit
  • 系统更新: 定期 sudo apt update && sudo apt upgrade
  • 监控 Tailscale:Tailscale 管理控制台 检查设备

验证安全状态

# 确认没有公网端口在监听
sudo ss -tlnp | grep -v '127.0.0.1\|::1'

# 验证 Tailscale SSH 已启用
tailscale status | grep -q 'offers: ssh' && echo "Tailscale SSH active"

# 可选:完全禁用 sshd
sudo systemctl disable --now ssh

备选方案:SSH 隧道

如果 Tailscale Serve 不好使,用 SSH 隧道:

# 从你的本地机器(通过 Tailscale)
ssh -L 18789:127.0.0.1:18789 ubuntu@openclaw

然后打开 http://localhost:18789


故障排查

创建实例失败(“Out of capacity”)

免费层 ARM 实例很抢手。试试:

  • 换个可用域
  • 在非高峰时段重试(凌晨)
  • 选择 shape 时使用 “Always Free” 筛选

Tailscale 连不上

# 查看状态
sudo tailscale status

# 重新认证
sudo tailscale up --ssh --hostname=openclaw --reset

Gateway 无法启动

openclaw gateway status
openclaw doctor --non-interactive
journalctl --user -u openclaw-gateway -n 50

无法访问 Control UI

# 验证 Tailscale Serve 正在运行
tailscale serve status

# 检查 Gateway 是否在监听
curl http://localhost:18789

# 需要的话重启
systemctl --user restart openclaw-gateway

ARM 二进制问题

有些工具可能没有 ARM 构建。检查:

uname -m  # 应显示 aarch64

大多数 npm 包没问题。二进制文件找 linux-arm64aarch64 版本。


数据持久化

所有状态存储在:

  • ~/.openclaw/ — 配置、凭证、会话数据
  • ~/.openclaw/workspace/ — 工作区(SOUL.md、memory、artifacts)

定期备份:

tar -czvf openclaw-backup.tar.gz ~/.openclaw ~/.openclaw/workspace

延伸阅读