多 Gateway 部署(同一主機)
大多數情境只需要一個 Gateway,因為單一 Gateway 就能同時處理多個通訊連線和代理。如果你需要更強的隔離或備援能力(例如一個救援機器人),可以用獨立的 profile 和連接埠來跑多個 Gateway。
隔離檢查清單(必要)
OPENCLAW_CONFIG_PATH— 每個實例各自的設定檔OPENCLAW_STATE_DIR— 每個實例各自的 session、憑證、快取目錄agents.defaults.workspace— 每個實例各自的工作區根目錄gateway.port(或--port)— 每個實例必須使用不同的連接埠- 衍生連接埠(瀏覽器/canvas)也不能重疊
如果這些路徑或連接埠共用,會出現設定競爭和連接埠衝突。
建議做法:使用 profile(--profile)
Profile 會自動區隔 OPENCLAW_STATE_DIR 和 OPENCLAW_CONFIG_PATH,並在服務名稱後加上後綴。
# 主要
openclaw --profile main setup
openclaw --profile main gateway --port 18789
# 救援
openclaw --profile rescue setup
openclaw --profile rescue gateway --port 19001
以 profile 為單位安裝服務:
openclaw --profile main gateway install
openclaw --profile rescue gateway install
救援機器人指南
在同一台主機上執行第二個 Gateway,各自擁有獨立的:
- profile/設定檔
- 狀態目錄
- 工作區
- 基礎連接埠(加上衍生連接埠)
這樣即使主要機器人掛掉,救援機器人仍能獨立運作,用來除錯或調整設定。
連接埠間距:基礎連接埠之間至少保留 20 個連接埠的距離,避免衍生的瀏覽器/canvas/CDP 連接埠撞號。
安裝方式(救援機器人)
# 主要機器人(既有或全新安裝,不帶 --profile 參數)
# 在 port 18789 + Chrome CDC/Canvas/... 連接埠上運行
openclaw onboard
openclaw gateway install
# 救援機器人(獨立 profile + 連接埠)
openclaw --profile rescue onboard
# 注意:
# - 工作區名稱預設會自動加上 -rescue 後綴
# - 連接埠至少要設定在 18789 + 20 以上,
# 建議直接選一個完全不同的基礎連接埠,像 19789
# - 其餘 onboarding 流程與一般安裝相同
# 安裝服務(如果 onboarding 過程中沒有自動安裝的話)
openclaw --profile rescue gateway install
連接埠對應(衍生連接埠)
基礎連接埠 = gateway.port(或 OPENCLAW_GATEWAY_PORT / --port)。
- 瀏覽器控制服務連接埠 = 基礎 + 2(僅限 loopback)
- canvas host 與 Gateway HTTP 伺服器共用同一連接埠(即
gateway.port) - 瀏覽器 profile CDP 連接埠從
browser.controlPort + 9 .. + 108自動分配
如果你在設定或環境變數中覆寫了以上任何連接埠,必須確保每個實例的值都不重複。
瀏覽器/CDP 注意事項(常見地雷)
- 不要在多個實例中把
browser.cdpUrl設成相同的值。 - 每個實例都需要自己的瀏覽器控制連接埠和 CDP 範圍(從各自的 gateway 連接埠衍生)。
- 如果需要明確指定 CDP 連接埠,請在每個實例中分別設定
browser.profiles.<name>.cdpPort。 - 遠端 Chrome:使用
browser.profiles.<name>.cdpUrl(每個 profile、每個實例各自設定)。
手動環境變數範例
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
快速檢查
openclaw --profile main status
openclaw --profile rescue status
openclaw --profile rescue browser status