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 进去改任何东西)。
| 项目 | 值 |
|---|---|
| Service | openclaw.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/ |
| Workspace | 01: /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
参照模板,修改 port、workspace 路径、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