---
read_when:
    - 在同一台机器上运行多个 Gateway 网关
    - 你需要为每个 Gateway 网关提供独立隔离的配置、状态和端口
summary: 在一台主机上运行多个 OpenClaw Gateway 网关（隔离、端口和配置档案）
title: 多个 Gateway 网关
x-i18n:
    generated_at: "2026-04-27T07:11:15Z"
    model: gpt-5.4
    provider: openai
    source_hash: 655f9ea5100813d5836f24eb47a5646443f83d70953efa64122633a5a1341002
    source_path: gateway/multiple-gateways.md
    workflow: 15
---

大多数配置只需要一个 Gateway 网关，因为单个 Gateway 网关就可以处理多个消息连接和智能体。如果你需要更强的隔离性或冗余能力（例如救援机器人），请使用隔离的配置档案和端口运行独立的 Gateway 网关。

## 最佳推荐配置

对大多数用户来说，最简单的救援机器人配置是：

- 将主机器人保留在默认配置档案上
- 使用 `--profile rescue` 运行救援机器人
- 为救援账户使用一个完全独立的 Telegram 机器人
- 将救援机器人放在不同的基础端口上，例如 `19789`

这样可以让救援机器人与主机器人隔离，因此当主机器人宕机时，它仍然可以调试或应用配置更改。基础端口之间至少保留 20 个端口的间隔，这样派生出的浏览器 / canvas / CDP 端口就永远不会冲突。

## 救援机器人快速开始

除非你有充分理由采用其他方式，否则请将此作为默认路径：

```bash
# Rescue bot (separate Telegram bot, separate profile, port 19789)
openclaw --profile rescue onboard
openclaw --profile rescue gateway install --port 19789
```

如果你的主机器人已经在运行，通常这就是你所需要的全部操作。

在执行 `openclaw --profile rescue onboard` 期间：

- 使用独立的 Telegram 机器人令牌
- 保持使用 `rescue` 配置档案
- 使用比主机器人至少高 20 的基础端口
- 接受默认的救援工作区，除非你已经自行管理了一个

如果新手引导已经为你安装了救援服务，那么最后这条 `gateway install` 就不需要了。

## 为什么这样可行

救援机器人能够保持独立，是因为它拥有自己独立的：

- 配置档案 / 配置
- 状态目录
- 工作区
- 基础端口（以及派生端口）
- Telegram 机器人令牌

对于大多数配置，建议为救援配置档案使用一个完全独立的 Telegram 机器人：

- 易于保持为仅限操作员使用
- 具有独立的机器人令牌和身份
- 独立于主机器人的渠道 / 应用安装
- 当主机器人出现故障时，提供简单的基于私信的恢复路径

## `--profile rescue onboard` 会更改什么

`openclaw --profile rescue onboard` 使用正常的新手引导流程，但会将所有内容写入一个独立的配置档案。

在实际效果上，这意味着救援机器人会拥有自己独立的：

- 配置文件
- 状态目录
- 工作区（默认是 `~/.openclaw/workspace-rescue`）
- 托管服务名称

除此之外，其提示内容与普通新手引导相同。

## 通用多 Gateway 网关配置

上面的救援机器人布局是最简单的默认方案，但同样的隔离模式也适用于在一台主机上运行任意一对或一组 Gateway 网关。

对于更通用的配置，请为每个额外的 Gateway 网关分配它自己的命名配置档案以及它自己的基础端口：

```bash
# main (default profile)
openclaw setup
openclaw gateway --port 18789

# extra gateway
openclaw --profile ops setup
openclaw --profile ops gateway --port 19789
```

如果你希望两个 Gateway 网关都使用命名配置档案，也完全可行：

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

openclaw --profile ops setup
openclaw --profile ops gateway --port 19789
```

服务也遵循相同的模式：

```bash
openclaw gateway install
openclaw --profile ops gateway install --port 19789
```

当你想要一个后备的操作员通道时，请使用救援机器人快速开始。当你想为不同的渠道、租户、工作区或运维角色运行多个长期存在的 Gateway 网关时，请使用通用配置档案模式。

## 隔离检查清单

请确保每个 Gateway 网关实例以下项目都是唯一的：

- `OPENCLAW_CONFIG_PATH` — 每个实例各自的配置文件
- `OPENCLAW_STATE_DIR` — 每个实例各自的会话、凭证、缓存
- `agents.defaults.workspace` — 每个实例各自的工作区根目录
- `gateway.port`（或 `--port`）— 每个实例唯一
- 派生出的浏览器 / canvas / CDP 端口

如果这些内容被共享，你将遇到配置竞争和端口冲突。

## 端口映射（派生）

基础端口 = `gateway.port`（或 `OPENCLAW_GATEWAY_PORT` / `--port`）。

- 浏览器控制服务端口 = 基础端口 + 2（仅限 loopback）
- canvas host 由 Gateway 网关 HTTP 服务器提供（与 `gateway.port` 使用同一个端口）
- 浏览器配置档案 CDP 端口会从 `browser.controlPort + 9 .. + 108` 自动分配

如果你在配置或环境变量中覆盖其中任何项，必须确保它们在每个实例之间保持唯一。

## 浏览器 / CDP 说明（常见陷阱）

- **不要** 在多个实例上将 `browser.cdpUrl` 固定为相同的值。
- 每个实例都需要它自己的浏览器控制端口和 CDP 范围（从其 Gateway 网关端口派生）。
- 如果你需要显式的 CDP 端口，请为每个实例设置 `browser.profiles.<name>.cdpPort`。
- 远程 Chrome：使用 `browser.profiles.<name>.cdpUrl`（按配置档案、按实例分别设置）。

## 手动环境变量示例

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

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

## 快速检查

```bash
openclaw gateway status --deep
openclaw --profile rescue gateway status --deep
openclaw --profile rescue gateway probe
openclaw status
openclaw --profile rescue status
openclaw --profile rescue browser status
```

说明：

- `gateway status --deep` 有助于发现旧安装遗留下来的过时 launchd/systemd/schtasks 服务。
- 当你有意运行多个隔离的 Gateway 网关时，`gateway probe` 中出现诸如 `multiple reachable gateways detected` 之类的警告文本是预期行为。

## 相关内容

- [Gateway 网关操作手册](/zh-CN/gateway)
- [Gateway 网关锁](/zh-CN/gateway/gateway-lock)
- [配置](/zh-CN/gateway/configuration)
