基于 Kubernetes 集群的 OpenClaw 多租户部署与编排平台:ClawHost

2次阅读
没有评论

共计 4876 个字符,预计需要花费 13 分钟才能阅读完成。

本文要介绍的 ClawHost 是 fastclaw-ai 开发的基于 Kubernetes 原生多租户的编排项目,而不是 bfzli 开发的一键 VPS 云托管平台 https://clawhost.cloud/ ,这两个开源项目想要解决的是 OpenClaw 部署场景中的不同问题。本文重点介绍前者,基于 K8s 集群的多租户部署面板。

背景

[[OpenClaw]](前身为 Clawdbot / Moltbot)是 2025 年底由奥地利开发者 Peter Steinberger 创建的开源 AI Agent 框架,上线不到三个月就获得了超过 19 万 GitHub Star。OpenClaw 的核心设计是单用户个人助手,通过 Node.js 长驻服务将 LLM([[Anthropic]]、[[OpenAI]]、本地模型等)连接到本地机器和各种即时通讯平台。

但在企业或 SaaS 场景下,需要为成百上千个用户各自运行一个独立的 OpenClaw 实例。如果每个租户单独部署一台 VPS,成本过高;如果所有人共用一个实例,又无法保证内存和数据的隔离。fastclaw-ai/clawhost 就是为了解决这个矛盾而诞生的。

什么是 ClawHost(fastclaw-ai)

ClawHost 是一个用 [[Go]] 编写的 [[Kubernetes]] 原生平台,提供 RESTful API 来创建、部署和管理多租户环境下的 OpenClaw Bot 实例。每个 Bot 作为独立的 K8s Pod 运行,拥有自己的 Deployment 和 Service,通过子域名路由对外暴露,无需为每个 Bot 单独配置 Ingress。

项目采用 Apache 2.0 协议开源,主要技术栈为 Go 和 TypeScript。

核心架构

ClawHost 的架构分为三层:

Client ──▶ ClawHost(API + Proxy) ──▶ K8s Cluster

具体来说:

  • ClawHost 本体:包含 Bot API、Admin API 和 HTTP/WebSocket 反向代理
  • [[PostgreSQL]]:存储 App、Bot、Channel 等元数据,与 Pod 内配置双向同步
  • K8s 集群:每个 Bot 运行在隔离的 Pod 中,附带 Gateway、IM Channel 和 Device 管理

ClawHost 本身不需要运行在 K8s 集群内部,只需要一个能访问集群 API 的 kubeconfig 即可。这意味着可以在集群外部的管理节点上运行 ClawHost,通过 API 远程控制集群内的 Bot 实例。

核心功能

Bot 生命周期管理。通过 API 对 Bot 实例执行创建、启动、停止、重启、升级和删除操作。每次启动 Bot 时,ClawHost 自动在 K8s 中创建对应的 Deployment 和 Service。

多租户隔离。通过 App 层级实现租户隔离,每个 App 拥有独立的 API Token,App 下的 Bot 按 user_id 归属到具体用户。不同租户之间的 Bot 运行在各自的 Pod 中,计算和网络完全隔离。

IM 渠道集成。支持将 Bot 连接到 [[Telegram]]、[[Slack]]、[[Discord]]、Teams、LINE、[[飞书]] 等即时通讯平台。提供设备配对审批和自动审批机制。

Skills 管理。可以动态地为运行中的 Bot 添加、更新或删除 Skills,无需重新部署。

多模型提供商。支持配置 Anthropic、OpenAI、MiniMax 等多个 AI 模型提供商,可以按 Bot 单独设置。

子域名路由代理。所有流量通过 ClawHost 的代理层转发,支持 HTTP 和 WebSocket。Bot 通过 {bot-id}.{domain} 的子域名模式访问,不需要每个 Bot 单独创建 Ingress 资源。

自动清理。通过 K8s CronJob 定期运行清理任务,自动停止和回收过期的 Bot。默认在过期 72 小时后执行清理,每次批量处理 50 个,优先清理最早过期的 Bot。清理时只删除 K8s 资源释放计算资源,数据库记录和 PVC 数据保留以备恢复。

内置管理面板。在 /admin 路径下提供 Web 管理界面,使用 [[Next.js]] + [[shadcn/ui]] 构建,静态导出后嵌入到 Go 二进制文件中。支持 App 和 Bot 的增删改查、API Token 的复制和重置,在桌面端显示表格视图,移动端自动切换为卡片布局。

部署方式

ClawHost 提供三种部署方式。

Helm Chart 安装(推荐)。先本地构建镜像,然后通过 Helm 一键部署 ClawHost、PostgreSQL 和 RBAC 到 K8s 集群:

docker build -t clawhost:latest .
helm install clawhost deploy/helm/clawhost \
  -n clawhost --create-namespace \
  --set adminToken="my-admin-token" \
  --set domain.botDomain="clawhost.loc"

kubectl 手动部署。依次 apply namespace、RBAC、PVC、secrets、PostgreSQL 和 ClawHost 的 YAML 清单文件。

本地二进制运行。直接在主机上运行 ClawHost 二进制,通过 kubeconfig 连接远程 K8s 集群。适合开发和调试。

Helm values 中可以配置 Bot 的 CPU 和内存限制(默认 2000m CPU、4Gi 内存)、共享 PVC 大小(默认 10Gi)、PostgreSQL 连接、Ingress 等参数。

API 概览

ClawHost 的 API 以 /bot/api/v1 为前缀,通过 Bearer Token 鉴权。主要分为以下几组:

  • Admin API:管理 App(创建、列表、更新、删除、重置 Token)和批量升级 Bot
  • Bot API:Bot 的 CRUD 和生命周期操作(start/stop/restart),获取状态和连接信息
  • Skills API:按名称对 Bot 的 Skill 进行增删改
  • IM Channels API:添加、列表、删除渠道,管理设备配对和审批
  • Devices API:列出设备、审批设备、撤销设备
  • Model Providers API:按提供商管理 AI 模型配置
  • Proxy:通过路径 /proxy/{bot_id}/* 或子域名将请求转发到目标 Bot

使用流程示例

# 1. 创建 App,获取 API Token
curl -X POST http://localhost:18080/bot/api/v1/admin/apps \
  -H "Authorization: Bearer my-admin-token" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-app"}'

# 2. 使用 App Token 创建 Bot
curl -X POST http://localhost:18080/bot/api/v1/bots \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": "user-001",
    "name": "my-bot",
    "slug": "my-bot",
    "config": {
      "model": "claude-sonnet-4-20250514",
      "api_key": "sk-ant-xxx"
    }
  }'

# 3. 启动 Bot(在 K8s 中创建 Deployment + Service)
curl -X POST http://localhost:18080/bot/api/v1/bots/$BOT_ID/start \
  -H "Authorization: Bearer $API_TOKEN"

# 4. 通过代理访问 Bot
curl http://localhost:18080/proxy/$BOT_ID/

本地开发中的子域名路由

Bot 的 Web UI 通过子域名访问(如 my-bot.clawhost.loc)。本地开发时可以用 [[Caddy]] 处理 TLS 和子域名转发:

clawhost.loc {
    tls internal
    reverse_proxy localhost:18080
}

*.clawhost.loc {
    tls internal
    reverse_proxy localhost:18080
}

由于 /etc/hosts 不支持通配符,需要使用 dnsmasq 或本地 DNS 解析器。在 macOS 上使用 OrbStack 时,可以直接利用 *.orb.local 域名。

与 bfzli/clawhost 的对比

市面上有两个叫 ClawHost 的项目,面向不同的使用场景:

维度 fastclaw-ai/clawhost bfzli/clawhost
定位 K8s 原生多租户编排平台 一键 VPS 云托管平台
语言 Go + TypeScript TypeScript(Hono + React)
隔离方式 K8s Pod 级别隔离 每用户独立 VPS
适用规模 数十到数千个 Bot 单用户到小规模
云提供商 任意 K8s 集群 Hetzner / DigitalOcean / Vultr
计费 自行实现 内置 Polar.sh 集成
许可证 Apache 2.0 MIT
GitHub Star 307 286

如果目标是构建多租户 SaaS 平台或为团队提供 Bot 服务,fastclaw-ai/clawhost 更合适;如果只是想快速给自己或少量用户部署独立的 OpenClaw 实例,bfzli/clawhost 更简单直接。

同类方案对比

OpenClaw 多租户部署领域还有其他方案:

  • [[ClawTank]]:托管式 OpenClaw 平台,每个用户一个 Docker 容器,无需技术背景,月费 9 美元起
  • [[ClawPod]]:另一个托管式方案,提供多种部署配置
  • openclaw-multitenant(OCMT):社区 Fork,提供容器隔离、加密 Vault 和团队协作功能
  • openclaw-rocks/k8s-operator:[[Kubernetes]] Operator 方式部署 OpenClaw,提供生产级安全和可观测性
  • aws-samples/sample-multi-tenancy-openclaw-on-eks:AWS 官方的 EKS 多租户参考架构

与这些方案相比,ClawHost(fastclaw-ai)的特点在于它是一个完整的编排控制面,不仅管理 Pod 生命周期,还集成了 IM 渠道管理、Skills 管理、模型提供商配置和子域名代理,提供了开箱即用的 Admin UI 和完整的 RESTful API。

适用场景

  • 为企业内部多个团队或部门提供各自独立的 AI Agent 服务
  • 构建面向外部用户的 OpenClaw SaaS 托管平台
  • 教育或培训场景中为每个学员分配独立的 Bot 实例
  • 需要集中管理大量 OpenClaw Bot 并实现自动扩缩和清理的运维团队

前置要求

  • Go 1.24+(从源码构建时)
  • Node.js 20+ 和 npm(构建 Admin UI 时)
  • Kubernetes 1.28+ 集群(本地可使用 [[OrbStack]] 或 Docker Desktop)
  • kubectl,可选 [[Helm]] v3

相关链接

正文完
 0
评论(没有评论)