跳到主要内容

OC 实例集群部署

架构概述

SayClaw 通过 OpenClaw 引擎为每个用户提供独立的 AI 实例。实例分布在三台服务器上:

  • 小龙:1 个主实例(oc-xialong-main)
  • 小二:10 个实例(oc-ai-jp-2-01 ~ 10)
  • 小三:8 个实例(oc-ai-jp-3-01 ~ 08)

每个实例是一个独立的 OpenClaw Gateway 进程,有自己的:

  • HOME 目录(/opt/oc-home-NN/
  • Workspace 目录(/opt/oc-workspace-NN/
  • Gateway 端口
  • openclaw.json 配置
  • auth-profiles.json(One API 认证)

小龙主实例 (oc-xialong-main)

禁止修改

此实例已交付客户,禁止任何修改(不改 config、不重启、不 SSH 进去改任何东西)。

项目
Serviceopenclaw.service
端口18789
HOME/root/.openclaw/
模型anthropic/claude-sonnet-4-6
Telegram Bot@Tianjilaoren_bot

systemd

[Unit]
Description=OpenClaw Gateway (小龙-主实例)
After=network-online.target

[Service]
Type=simple
User=root
Environment=HOME=/root
ExecStart=/usr/bin/openclaw gateway --bind lan
Restart=always
RestartSec=5
StandardOutput=append:/var/log/openclaw-gw.log
StandardError=append:/var/log/openclaw-gw.log

[Install]
WantedBy=multi-user.target

小二实例 (oc-ai-jp-2-01 ~ 10)

项目
服务器34.85.76.114
Service 命名openclaw.service (01) / openclaw-02.service ~ openclaw-10.service
HOME 目录01: /root/.openclaw/ / 02-10: /opt/oc-home-NN/.openclaw/
Workspace01: /root/.openclaw/workspace / 02-10: /opt/oc-workspace-NN/
Auth 模式trusted-proxy(02起)/ token(01)

systemd 模板(以 02 为例)

[Unit]
Description=OpenClaw Gateway Instance 02
After=network.target

[Service]
Type=simple
ExecStart=/bin/bash -c "export HOME=/opt/oc-home-02; exec /usr/bin/openclaw gateway --bind lan --auth trusted-proxy"
Restart=always
RestartSec=5
Environment=HOME=/opt/oc-home-02

[Install]
WantedBy=multi-user.target

openclaw.json 模板

{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-6"
},
"workspace": "/opt/oc-workspace-02",
"compaction": { "mode": "safeguard" }
}
},
"channels": {
"telegram": {
"enabled": true,
"botToken": "BOT_TOKEN_HERE",
"allowFrom": ["*"],
"dmPolicy": "open",
"groupPolicy": "allowlist",
"streaming": "partial",
"network": {
"autoSelectFamily": false,
"dnsResultOrder": "ipv4first"
}
}
},
"commands": {
"native": "auto",
"nativeSkills": "auto",
"restart": true,
"ownerDisplay": "raw"
},
"gateway": {
"port": 18810,
"mode": "local",
"bind": "lan",
"controlUi": {
"allowedOrigins": [
"https://app.sayclaw.ai",
"https://m.sayclaw.ai"
],
"dangerouslyDisableDeviceAuth": true
},
"auth": {
"mode": "trusted-proxy",
"trustedProxy": { "userHeader": "X-User-ID" }
},
"trustedProxies": ["35.243.76.69"]
},
"models": {
"providers": {
"litellm": {
"baseUrl": "http://35.243.76.69:3001",
"api": "openai-completions",
"models": [
{ "id": "claude-sonnet-4-6", "name": "Claude Sonnet" },
{ "id": "gpt-4o", "name": "GPT-4o" }
]
}
}
}
}

auth-profiles.json

路径:/opt/oc-home-NN/.openclaw/agents/main/agent/auth-profiles.json

{
"profiles": {
"litellm": {
"provider": "litellm",
"apiKey": "sk-S8P5FBKF72ArbZ5lVgbdlA",
"baseUrl": "http://35.243.76.69:3001"
}
}
}

小三实例 (oc-ai-jp-3-01 ~ 08)

项目
服务器34.180.81.148
Service 命名openclaw-01.service ~ openclaw-08.service
HOME 目录/opt/oc-home-NN/.openclaw/
Workspace/opt/oc-workspace-NN/
端口18910 ~ 18980(步进 10)

systemd 模板(以 08 为例)

[Unit]
Description=OpenClaw Gateway Instance jp3-08
After=network-online.target

[Service]
Type=simple
User=root
Environment=HOME=/opt/oc-home-08
ExecStart=/bin/bash -c "export HOME=/opt/oc-home-08; exec /usr/bin/openclaw gateway --bind lan --token TOKEN --allow-unconfigured"
Restart=always
RestartSec=5
StandardOutput=append:/var/log/openclaw-jp3-08.log
StandardError=append:/var/log/openclaw-jp3-08.log

[Install]
WantedBy=multi-user.target
小三与小二差异
  • 小三 service 名是 openclaw-01 ~ openclaw-08(不是 oc-ai-jp-3-NN
  • 小三无安全组限制(所有端口开放)
  • auth-profiles.json 路径:/opt/oc-home-NN/.openclaw/agents/main/agent/auth-profiles.json

新增实例步骤

1. 创建目录

N=09  # 新实例编号
mkdir -p /opt/oc-home-${N}/.openclaw/agents/main/agent
mkdir -p /opt/oc-workspace-${N}

2. 写入 openclaw.json

参照模板,修改 portworkspace 路径、botToken(如需 Telegram)。

3. 写入 auth-profiles.json

cat > /opt/oc-home-${N}/.openclaw/agents/main/agent/auth-profiles.json << 'EOF'
{
"profiles": {
"litellm": {
"provider": "litellm",
"apiKey": "sk-S8P5FBKF72ArbZ5lVgbdlA",
"baseUrl": "http://35.243.76.69:3001"
}
}
}
EOF

4. 创建 systemd service

cat > /etc/systemd/system/openclaw-${N}.service << EOF
[Unit]
Description=OpenClaw Gateway Instance ${N}
After=network-online.target

[Service]
Type=simple
User=root
Environment=HOME=/opt/oc-home-${N}
ExecStart=/bin/bash -c "export HOME=/opt/oc-home-${N}; exec /usr/bin/openclaw gateway --bind lan"
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable openclaw-${N}
systemctl start openclaw-${N}

5. 注册到 DB

INSERT INTO sayclaw_admin.oc_instances (id, server_id, name, gateway_port)
VALUES ('oc-ai-jp-X-09', 'srv-xiaosan-01', 'oc-ai-jp-X-09', 18990);

6. 更新 Nginx WS 路由

在小龙 /etc/nginx/conf.d/oc-ws-map.conf 追加:

oc-ai-jp-X-09     SERVER_IP:18990;
nginx -t && nginx -s reload