跳到主要内容

服务器 & 实例管理

Sprint 2.5 实现。管理所有 OpenClaw 节点服务器、Docker 容器与 AI 实例。

核心概念

服务器(Server)
└── Docker 容器(Container)
└── OpenClaw 实例(OC Instance)
└── 绑定员工(User)

一台服务器可运行多个 Docker 容器,每个容器是一个独立的 OpenClaw 进程,绑定到一位或多位员工。


功能模块

🖥️ 服务器管理

功能说明
登记服务器IP、区域、规格、SSH 凭证(加密存储)
状态监控CPU / 内存 / 磁盘实时显示
容器列表该服务器上所有 Docker 容器一览
告警阈值CPU > 80% / 磁盘 > 85% 触发通知

🐳 Docker 容器管理

功能说明
容器列表名称 / 镜像 / 状态 / 端口 / 创建时间
启动/停止/重启调 Docker Remote API 执行
实时日志WebSocket 日志流
新建/删除填参数 → 自动拉镜像 → 启动(软删除)

🤖 OpenClaw 实例管理

功能说明
实例列表跨服务器汇总,健康状态徽章
实例配置模型 / Gateway Port / Token
健康检查每 60 秒 ping,连续 3 次失败告警
员工绑定实例 ↔ 员工多对多
用量归集每个实例的 Token 消耗图表

Docker 接入方案:Remote API + TLS

选择 方案 B — Docker Remote API(非 SSH 命令):

目标服务器开启 Docker TCP Socket(TLS 加密,仅内网)
admin-api → HTTPS 调用 Docker API(tcp://35.243.76.69:2376)

优点:

  • 标准化 REST API,响应快
  • 无需每次建 SSH 连接
  • TLS 双向认证,安全

配置步骤(每台服务器):

  1. 生成 CA + Server + Client TLS 证书
  2. 修改 Docker daemon 启用 TCP + TLS:
    /etc/docker/daemon.json:
    {
    hosts: [unix:///var/run/docker.sock, tcp://0.0.0.0:2376],
    tls: true,
    tlscacert: /etc/docker/tls/ca.pem,
    tlscert: /etc/docker/tls/server-cert.pem,
    tlskey: /etc/docker/tls/server-key.pem
    }
  3. admin-api 持有 client.pem + client-key.pem 调用 API

数据库设计

-- 服务器
CREATE TABLE servers (
id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()),
name VARCHAR(100),
ip VARCHAR(45),
region VARCHAR(50), -- gcp-japan / gcp-hk
provider VARCHAR(50), -- gcp / aws / aliyun
cpu_cores INT,
memory_gb INT,
disk_gb INT,
status VARCHAR(20) DEFAULT 'active',
ssh_user VARCHAR(50),
ssh_port INT DEFAULT 22,
docker_port INT DEFAULT 2376,
created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3),
deleted_at DATETIME(3)
);

-- Docker 容器
CREATE TABLE containers (
id VARCHAR(100) PRIMARY KEY,
server_id VARCHAR(36) REFERENCES servers(id),
name VARCHAR(100),
image VARCHAR(255),
status VARCHAR(20), -- running/stopped/error
port_mapping VARCHAR(255),
created_at DATETIME(3),
deleted_at DATETIME(3)
);

-- OpenClaw 实例
CREATE TABLE oc_instances (
id VARCHAR(100) PRIMARY KEY,
container_id VARCHAR(100) REFERENCES containers(id),
server_id VARCHAR(36),
name VARCHAR(100),
gateway_port INT,
gateway_token VARCHAR(255), -- 加密存储
model VARCHAR(100),
health_status VARCHAR(20) DEFAULT 'unknown',
last_health_at DATETIME(3),
created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3),
deleted_at DATETIME(3)
);

后台页面结构

/servers              服务器列表(卡片视图,CPU/内存 mini 图)
/servers/:id 服务器详情
├── 基础信息 + 实时资源占用
├── 容器列表(含状态徽章)
└── 实例列表

/instances 所有 OpenClaw 实例(跨服务器汇总)
/instances/:id 实例详情
├── 健康状态 + 最近心跳
├── 绑定员工列表
├── 用量图表(本周/本月)
└── 日志面板(WebSocket 实时)

/instances/new 新建实例(选服务器 → 填配置 → 一键部署)

Sprint 计划

Sprint 2.5(员工管理完成后):

  • Docker Remote API TLS 配置(小龙节点)
  • servers / containers / oc_instances 表迁移
  • admin-api:服务器 CRUD + Docker API 调用
  • admin 前台:服务器列表 + 实例列表
  • 健康检查 cron(60 秒轮询)
  • 实例日志 WebSocket