Skip to content

Multiple Gateways(同一主机)

大多数部署只需要一个 Gateway,因为单个 Gateway 就能处理多个消息连接与多个 agents。如果你需要更强的隔离或冗余(例如一个救援/兜底 bot),可以运行多个相互隔离的 Gateways,并使用独立的 profiles/ports。

隔离检查清单(必需)

  • OPENCLAW_CONFIG_PATH — 每个实例独立的 config 文件
  • OPENCLAW_STATE_DIR — 每个实例独立的 sessions、creds、caches
  • agents.defaults.workspace — 每个实例独立的 workspace root
  • gateway.port(或 --port)— 每个实例唯一
  • 派生端口(browser/canvas)不能重叠

如果这些被共享,你会遇到 config 竞争与端口冲突。

推荐:profiles(--profile

Profiles 会自动为 OPENCLAW_STATE_DIR + OPENCLAW_CONFIG_PATH 做作用域隔离,并给 service name 加后缀。

bash
# main
openclaw --profile main setup
openclaw --profile main gateway --port 18789

# rescue
openclaw --profile rescue setup
openclaw --profile rescue gateway --port 19001

按 profile 安装 services:

bash
openclaw --profile main gateway install
openclaw --profile rescue gateway install

Rescue-bot 指南

在同一台主机上运行第二个 Gateway,并为其分别配置:

  • profile/config
  • state dir
  • workspace
  • base port(以及派生端口)

这能让 rescue bot 与主 bot 隔离:当主 bot 出问题时,rescue bot 仍能用于调试或应用配置变更。

端口间隔:base ports 之间至少间隔 20 个端口,确保派生的 browser/canvas/CDP 端口永远不会撞。

安装方式(rescue bot)

bash
# Main bot(已有或新建,不带 --profile 参数)
# 运行在 18789 + Chrome CDC/Canvas/... 派生端口
openclaw onboard
openclaw gateway install

# Rescue bot(隔离 profile + 端口)
openclaw --profile rescue onboard
# Notes:
# - workspace 名称默认会后缀 -rescue
# - Port 至少应为 18789 + 20,
#   更好的做法是选择完全不同的 base port,比如 19789
# - 其余 onboarding 步骤与正常流程一致

# 安装 service(如果 onboarding 没有自动完成)
openclaw --profile rescue gateway install

端口映射(派生)

Base port = gateway.port(或 OPENCLAW_GATEWAY_PORT / --port)。

  • browser control service port = base + 2(仅 loopback)
  • canvasHost.port = base + 4
  • Browser profile CDP 端口从 browser.controlPort + 9 .. + 108 自动分配

如果你在 config 或 env 中覆盖了其中任何一个,就必须确保每个实例都唯一。

Browser/CDP 备注(常见踩坑点)

  • 不要把多个实例的 browser.cdpUrl 固定到同一组值。
  • 每个实例需要独立的 browser control port 与 CDP 范围(由其 gateway port 派生)。
  • 如果你需要显式的 CDP 端口,请为每个实例设置 browser.profiles.<name>.cdpPort
  • 远程 Chrome:使用 browser.profiles.<name>.cdpUrl(按 profile、按实例)。

手工 env 示例

bash
OPENCLAW_CONFIG_PATH=~/.openclaw/main.json \
OPENCLAW_STATE_DIR=~/.openclaw-main \
openclaw gateway --port 18789

OPENCLAW_CONFIG_PATH=~/.openclaw/rescue.json \
OPENCLAW_STATE_DIR=~/.openclaw-rescue \
openclaw gateway --port 19001

快速检查

bash
openclaw --profile main status
openclaw --profile rescue status
openclaw --profile rescue browser status