第 15 章 部署方式全景单机、本地网络、云端混合OpenClaw 的「本地优先」特性意味着它有多种部署拓扑可以选择。本章系统梳理从最简单的本机运行到更复杂的多设备加云端辅助的各种部署方案以及它们适合的场景和需要注意的地方。15.1 在个人电脑上跑 OpenClaw最简拓扑15.1.1 单机部署这是最基础的方式Gateway 和 Agent Runtime 都运行在你的个人电脑上Nodes 也是这台电脑本身。你的 MacBook / Linux PCInternetInternetGateway :18789SlackChannelDiscordChannelAgent RuntimeSkillsManager\n(gmail, github…)macOS Node\n(filesystem, shell)Slack ServerGmail / GitHub API这种方式的好处是零配置、最快上手所有数据留在本地隐私性最好也不需要云服务账号。缺点是电脑关机或休眠后 Gateway 就停服了如果离开家庭网络某些 Webhook 和 Cron 功能可能受影响取决于你的家庭网络是否有公网 IP。适合个人使用、快速尝鲜和家庭办公。15.1.2 让单机部署更稳定如果你的电脑会关机但又希望 OpenClaw 24 小时可用有几个选项。最简单的做法是设置电脑不进入休眠状态macOS 在 System Settings → Battery → Prevent from sleeping 里设置。另一个常见选择是树莓派方案把 Gateway 迁移到一台始终开着的低功耗设备Raspberry Pi 4/5个人 PC 只负责偶尔连上去操作。还有不少 OpenClaw 用户选择一台 M 系列 Mac Mini 作为专用主机功耗低、性能充足配合 macOS launchd 守护进程完美适配。15.2 Docker 部署更好的隔离与可复现性15.2.1 官方 Docker 支持OpenClaw 仓库提供了Dockerfile和docker-compose.yml可以快速用容器方式运行gitclone https://github.com/openclaw/openclaw.gitcdopenclaw# 用 docker-compose 启动dockercompose up-ddocker-compose.yml大致内容# version: 3.9 # 已废弃Docker Compose V2 不再需要此字段services:gateway:build:context:.dockerfile:Dockerfileports:-127.0.0.1:18789:18789# 只暴露到本机不直接对外volumes:-./data:/app/data# 持久化 Session、配置、审计日志等-${HOME}/.openclaw:/app/config:ro# 挂载配置文件只读environment:-ANTHROPIC_API_KEY${ANTHROPIC_API_KEY}-NODE_ENVproductionrestart:unless-stoppedhealthcheck:test:[CMD,curl,-f,http://localhost:18789/health]interval:30stimeout:5sretries:315.2.2 沙盒化 Browser 容器Browser 工具需要 Chromium 支持这会带来不小的依赖体积。OpenClaw 提供了单独的沙盒容器用于浏览器操作# 构建 Browser 沙盒镜像基于仓库中的 Dockerfile.sandbox-browserdockerbuild-fDockerfile.sandbox-browser-topenclaw-sandbox-browser.# 启动 Gateway 及 Browser 沙盒服务dockercompose up-ddocker-compose.yml中已引用openclaw-sandbox-browser镜像。如果你使用 Docker Compose profiles也可以通过docker compose --profile sandbox-browser up -d按需启动。这样 Browser 操作在独立容器里运行即使被恶意页面利用也不会直接影响主 Gateway 或宿主机文件系统。15.2.3 Podman 支持对于不想用 Docker 的用户例如 RHEL/Fedora 环境OpenClaw 也提供了 Podman 支持# 仓库里有 openclaw.podman.env 和 setup-podman.shbashsetup-podman.sh15.3 使用 Tailscale / SSH Tunnel 做远程访问15.3.1 为什么需要远程访问几个典型场景你在办公室想用手机上的 Slack 触发家里电脑上的 OpenClaw朋友或同事想访问你的 OpenClaw 实例Webhook来自 GitHub、Sentry 等需要访问你的 Gateway而家庭宽带通常没有固定公网 IP。15.3.2 Tailscale Serve / FunnelTailscale 是一个零配置的 VPN 方案OpenClaw 对它有原生支持# 在 Tailscale 网络内部暴露 Gateway只有你的设备能访问tailscale serve httpsinsecure://localhost:18789# 或者通过 Tailscale Funnel 对公网暴露适合 Webhooktailscale funnel18789# 这会给你一个 https://yourdevice.tailscale.io 的公网地址在 OpenClaw 配置里启用 Tailscale 的 Token 认证// ~/.openclaw/openclaw.json宽松 JSON{gateway:{auth:{token:your-strong-random-token},tailscale:{enabled:true}}}Tailscale Serve 和 Funnel 的区别在于Serve 只在你的 Tailscale 设备网络内可访问安全性较高适合多设备个人使用Funnel 对公网可访问需要额外 Token 认证适合 Webhook 接收场景。15.3.3 SSH Tunnel如果你有一台有固定 IP 的云服务器可以用 SSH Tunnel 把 Gateway 转发出去# 在本地电脑上执行把本地 18789 转发到云服务器的 18789ssh-N-R18789:localhost:18789 useryour-cloud-server.com# 加 -f 后台运行-o ServerAliveInterval60 保持连接ssh-N-f-oServerAliveInterval60-R18789:localhost:18789 useryour-cloud-server.com在云服务器的 nginx 上配置一个反向代理记得加认证server { listen 443 ssl; server_name openclaw.yourdomain.com; # Lets Encrypt SSL 证书 ssl_certificate /etc/letsencrypt/live/openclaw.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/openclaw.yourdomain.com/privkey.pem; location / { # 验证 Bearer Token if ($http_authorization ! Bearer your-secret-token) { return 401; } proxy_pass http://127.0.0.1:18789; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; # WebSocket 支持 proxy_set_header Host $host; } }15.4 Fly.io 和 Render一键云端部署对于希望 Gateway「永远在线」但又不想自己管服务器的用户OpenClaw 官方仓库提供了 Fly.io 和 Render.com 的配置文件。15.4.1 Fly.io 部署仓库根目录包含fly.toml公开版和fly.private.toml私有实例版# 安装 flyctlbrewinstallflyctl flyctl auth login# 初始化第一次部署flyctl launch--configfly.toml# 设置 SecretsAPI Key 等flyctl secretssetANTHROPIC_API_KEYsk-ant-... flyctl secretssetSLACK_BOT_TOKENxoxb-...# 部署flyctl deploy部署后 Gateway 运行在 Fly.io 的边缘节点自带 HTTPS 域名如your-app.fly.dev可直接用于 Webhook。有几点需要注意。云端部署时system.run和 Node 设备命令在 Fly 容器里执行不是你的本机。如果仍需要访问本地设备摄像头、屏幕等需要让本地设备作为 Node 连接到云端 Gateway。生产部署强烈建议设置gateway.auth.token强随机字符串防止 Gateway 被公网随意访问。15.4.2 Render.com 部署仓库根目录包含render.yaml支持一键部署到 Render# 在 Render Dashboard → New Blueprint → 指向你 fork 的仓库# Render 会自动读取 render.yaml 创建所需服务Render 免费套餐有休眠限制闲置 15 分钟后休眠对于需要 24/7 响应的个人助手不太合适。推荐使用付费计划或 Fly.io。15.4.3 云端 Gateway 的「远程 Node」模式README 专门提到这个架构Gateway 跑在云端Fly.io / Render / VPS负责 Channel 连接和基本计算设备 Node 跑在本地你的 Mac / iPhone负责设备本地操作摄像头、屏幕录制、本机 shell两者通过 Tailscale 或 SSH Tunnel 保持连接。这个架构兼顾了「Gateway 永远在线」和「设备功能可用」是最推荐的进阶部署方式。15.5 Nix 模式声明式配置管理对 Nix 用户OpenClaw 提供了 Nix 模块支持通过官方的nix-openclaw仓库# 在你的 NixOS configuration.nix 里 { imports [ (fetchTarball https://github.com/openclaw/nix-openclaw/archive/main.tar.gz) ]; services.openclaw { enable true; port 18789; configFile ./openclaw.json; # 或者用 Nix 属性集直接描述配置完全声明式 }; }Nix 方式的优势在于配置和系统状态完全声明式可以纳入版本管理升级和回滚通过 Nix 统一管理不会污染系统环境天然支持多机器、多环境家庭、公司、服务器一致性部署。15.6 多设备、多节点、多用户的进阶拓扑15.6.1 多 Node 拓扑一台主机运行 Gateway多个设备作为 Node 连接进来工作手机iPadiPhoneMac MiniGateway 主机WiFi / TailscaleWiFi / TailscaleWiFi / TailscaleGateway :18789macOS NodeiOS NodeiOS NodeAndroid Node这样 Agent 就可以用 iPhone 摄像头拍照在 iPad 的 Canvas 上展示结果或者通过 Android 获取公司 VPN 环境下的位置和通知。15.6.2 多用户家庭 / 团队OpenClaw 目前主要针对单用户设计但可以通过一些方式支持有限的多用户场景。一种做法是多 Agent 多白名单为不同家庭成员各配一个 Agent 和通道组合互相隔离。另一种做法是多 Gateway 实例每个用户跑自己的 Gateway共享同一台服务器但进程隔离。还可以设置只读 Observer 模式某个成员只能触发查询类操作无法执行高危工具通过 AgentPolicy 控制。真正的多租户支持细粒度的账单、权限管理等更接近企业级需求目前超出了 OpenClaw 的设计范围。15.7 小结本章介绍了 OpenClaw 的主要部署选项方案适合场景主要优势单机守护进程个人使用、快速尝鲜零配置、最简单Docker / Podman需要隔离或团队共用环境可复现、Browser 沙盒Tailscale多设备、需要公网 Webhook零配置 VPN、无需公网 IPSSH Tunnel已有云服务器复用已有基础设施NixNix/NixOS 用户完全声明式、可版本管理多 Node希望调用多台设备的能力最大化能力扩展根据自己的使用场景可以组合以上方案例如Mac Mini 运行 Docker 中的 Gateway Tailscale Funnel 对外 iPhone/iPad 作为 Node。下一章讨论 OpenClaw 跑起来之后日常运维层面该关注什么、如何排查问题。