update readme and add license (#5)
* update deployment * Simplify README structure and add license
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 ClawManager contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
+93
-221
@@ -5,7 +5,7 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
Die weltweit erste Plattform, die speziell fuer Batch-Deployment und Betrieb von OpenClaw im Cluster-Massstab entwickelt wurde.
|
||||
Eine Kubernetes-first-Kontrollplattform zur zentralen Verwaltung von OpenClaw- und Linux-Desktop-Runtimes fuer Teams und Cluster im grossen Massstab.
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -25,218 +25,39 @@
|
||||
<img src="https://img.shields.io/badge/License-MIT-2ea44f?style=for-the-badge" alt="MIT License" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/OpenClaw-Desktop-f97316?style=flat-square&logo=linux&logoColor=white" alt="OpenClaw Desktop" />
|
||||
<img src="https://img.shields.io/badge/Webtop-Browser%20Desktop-0f766e?style=flat-square&logo=firefoxbrowser&logoColor=white" alt="Webtop" />
|
||||
<img src="https://img.shields.io/badge/Proxy-Secure%20Access-7c3aed?style=flat-square&logo=nginxproxymanager&logoColor=white" alt="Secure Proxy" />
|
||||
<img src="https://img.shields.io/badge/WebSocket-Realtime-2563eb?style=flat-square&logo=socketdotio&logoColor=white" alt="WebSocket" />
|
||||
<img src="https://img.shields.io/badge/i18n-5%20Languages-db2777?style=flat-square&logo=googletranslate&logoColor=white" alt="5 Languages" />
|
||||
</p>
|
||||
## Was Es Ist
|
||||
|
||||
## 🚀 News
|
||||
ClawManager hilft Teams dabei, Desktop-Runtimes auf Kubernetes zentral zu deployen, zu betreiben und darauf zuzugreifen.
|
||||
|
||||
- [03/20/2026] **ClawManager Neuveröffentlichung** - ClawManager ist jetzt als Virtual-Desktop-Management-Plattform veroeffentlicht und bietet Batch-Deployment, Webtop-Unterstuetzung, Desktop-Portal-Zugriff, Runtime-Image-Einstellungen, OpenClaw-Speicher-/Praeferenz-Markdown-Backup und Migration, Cluster-Ressourcenuebersicht sowie mehrsprachige Dokumentation.
|
||||
Es ist fuer Umgebungen gedacht, in denen:
|
||||
|
||||
## 👀 Overview
|
||||
- Desktop-Instanzen fuer mehrere Benutzer erstellt werden muessen
|
||||
- Quotas, Images und Lebenszyklen zentral verwaltet werden sollen
|
||||
- Desktop-Dienste innerhalb des Clusters bleiben sollen
|
||||
- sicherer Browser-Zugriff ohne direkte Pod-Freigabe gebraucht wird
|
||||
|
||||
ClawManager ist eine Plattform zur Verwaltung virtueller Desktops auf Kubernetes. Sie bietet eine vollstaendige Kontroll- und Betriebsplattform fuer Desktop-Runtimes, Benutzer-Governance und sicheren In-Cluster-Zugriff.
|
||||
## Warum Nutzer Es Waehlen
|
||||
|
||||
ClawManager vereint Batch-Deployment, Instanz-Lifecycle-Management, Admin-Konsole, proxybasierten Desktop-Zugriff, Runtime-Image-Steuerung, Cluster-Ressourcen-Transparenz sowie Backup- und Migrationsfunktionen fuer OpenClaw-Speicher und Praeferenzen in einer Plattform.
|
||||
|
||||
ClawManager ist fuer Umgebungen gedacht, in denen:
|
||||
|
||||
- virtuelle Desktop-Instanzen fuer mehrere Benutzer erstellt und verwaltet werden muessen
|
||||
- Administratoren Quotas, Images und Instanzen zentral steuern muessen
|
||||
- Desktop-Dienste innerhalb von Kubernetes bleiben und ueber authentifizierte Proxys bereitgestellt werden sollen
|
||||
- Betreiber eine einheitliche Sicht auf Instanzzustand, Cluster-Kapazitaet und Runtime-Status benoetigen
|
||||
|
||||
Kurz gesagt ist ClawManager:
|
||||
|
||||
- eine zentrale Betriebskonsole fuer OpenClaw- und Linux-Desktop-Runtimes
|
||||
- eine Multi-User-Desktop-Management-Plattform auf Kubernetes
|
||||
- eine sichere Zugriffsschicht fuer interne Desktop-Dienste ueber token-authentifizierte Proxys
|
||||
|
||||
## ✨ At a Glance
|
||||
|
||||
- Multi-Tenant-Desktop-Instanzverwaltung
|
||||
- Batch-Deployment von Desktop-Instanzen ueber Benutzer oder Runtime-Profile hinweg
|
||||
- Benutzer-Quota-Kontrolle fuer CPU, Speicher, Storage, GPU und Instanzanzahl
|
||||
- Unterstuetzung fuer OpenClaw, Webtop, Ubuntu, Debian, CentOS und benutzerdefinierte Runtimes
|
||||
- Sicherer Desktop-Proxy-Zugriff mit Token-Generierung und WebSocket-Weiterleitung
|
||||
- Backup und Migration von OpenClaw-Speicher-, Praeferenz- und Markdown-Konfigurationsdaten
|
||||
- Admin-Dashboards fuer Benutzer, Instanzen, Image-Karten und Cluster-Ressourcen
|
||||
- Mehrsprachige UI: Englisch, Chinesisch, Japanisch, Koreanisch und Deutsch
|
||||
|
||||
> 🧭 ClawManager vereint Admin-Kontrolle, sicheren Desktop-Zugriff und Runtime-Operationen in einer Kontrollplattform.
|
||||
- Ein Admin-Panel fuer Benutzer, Quotas, Instanzen und Runtime-Images
|
||||
- OpenClaw-Unterstuetzung mit Import und Export von Speicher und Einstellungen
|
||||
- Sicherer Desktop-Zugriff ueber die Plattform statt direkter Service-Freigabe
|
||||
- Kubernetes-naher Deployment- und Betriebsablauf
|
||||
- Geeignet sowohl fuer zentral gesteuerte Rollouts als auch fuer Self-Service-Erstellung
|
||||
|
||||
<p align="center">
|
||||
<img src="frontend/public/clawmanager_overview.png" alt="ClawManager Overview" width="100%" />
|
||||
</p>
|
||||
|
||||
## 📚 Table of Contents
|
||||
## Schnellstart
|
||||
|
||||
- [News](#news)
|
||||
- [Overview](#overview)
|
||||
- [ClawManager New Features](#clawmanager-new-features)
|
||||
- [Key Features](#key-features)
|
||||
- [Typical Workflow](#typical-workflow)
|
||||
- [Architecture](#architecture)
|
||||
- [Project Structure](#project-structure)
|
||||
- [Tech Stack](#tech-stack)
|
||||
- [Kubernetes Prerequisites](#kubernetes-prerequisites)
|
||||
- [Installation](#installation)
|
||||
- [Quick Start](#quick-start)
|
||||
- [Configuration](#configuration)
|
||||
- [License](#license)
|
||||
### Voraussetzungen
|
||||
|
||||
## 🆕 ClawManager New Features
|
||||
|
||||
Dies sind die wichtigsten Funktionen von ClawManager:
|
||||
|
||||
- 🖥 `webtop`-Runtime-Unterstuetzung fuer browserbasierten Desktop-Zugriff
|
||||
- 📦 Batch-Deployment-Funktionen fuer grossflaechige Desktop-Bereitstellung
|
||||
- 🚪 Desktop-Portal-Seite zum Wechseln zwischen laufenden Instanzen an einem Ort
|
||||
- 🔐 Tokenbasierter Instanzzugriff und Reverse-Proxy-Routing
|
||||
- 🔄 WebSocket-Weiterleitung fuer Desktop-Sitzungen und Statusaktualisierungen
|
||||
- 🧠 Backup-/Import-APIs fuer OpenClaw-Speicher-, Praeferenz- und Markdown-Konfigurationsdaten
|
||||
- 🧩 Runtime-Image-Kartenverwaltung fuer jeden unterstuetzten Instanztyp
|
||||
- 📊 Cluster-Ressourcenuebersicht fuer Nodes, CPU, Speicher und Storage
|
||||
- 👨💼 Globale Admin-Instanzverwaltung mit benutzeruebergreifender Filterung und Steuerung
|
||||
- 📥 CSV-basierter Benutzerimport mit Generierung von Standardpasswoertern
|
||||
- 🌍 Internationalisiertes Frontend mit 5 Sprachen
|
||||
|
||||
## 🛠 Key Features
|
||||
|
||||
- ⚙️ Instanz-Lifecycle-Management: erstellen, starten, stoppen, neu starten, loeschen, anzeigen und erzwungen synchronisieren
|
||||
- 📦 Batch-Deployment-Unterstuetzung fuer gross angelegte Desktop-Rollouts
|
||||
- 🧱 Unterstuetzte Runtime-Typen: `openclaw`, `webtop`, `ubuntu`, `debian`, `centos`, `custom`
|
||||
- 🔒 Sicherer Desktop-Zugriff ueber authentifizierte Proxy-Endpunkte
|
||||
- 📡 WebSocket-basierte Echtzeit-Statusupdates
|
||||
- 📝 Archiv-Backup/-Import fuer OpenClaw-Speicher-, Praeferenz- und Markdown-Konfigurationsdaten
|
||||
- 📏 Benutzerbezogene Quota-Verwaltung fuer Instanzen, CPU, Speicher, Storage und GPU
|
||||
- 🖼 Verwaltung von Runtime-Image-Overrides ueber das Admin-Panel
|
||||
- 🛰 Admin-Dashboard fuer Cluster-Ressourcenuebersicht und Instanzgesundheit
|
||||
- 👥 CSV-basierter Massenimport von Benutzern und zentrale Quota-Zuweisung
|
||||
- 🌐 Mehrsprachige UI sowie rollenbasierte Admin-/Benutzeransichten
|
||||
|
||||
## 🔄 Typical Workflow
|
||||
|
||||
1. 👨💼 Ein Administrator meldet sich an und konfiguriert Benutzer, Quotas und Runtime-Image-Einstellungen.
|
||||
2. 🖥 Ein Benutzer erstellt eine Desktop-Instanz wie OpenClaw, Webtop oder Ubuntu.
|
||||
3. ☸️ ClawManager erstellt die Kubernetes-Ressourcen und haelt den Runtime-Status synchron.
|
||||
4. 🔐 Der Benutzer greift ueber das Portal oder den tokenbasierten Proxy-Endpunkt auf den Desktop zu.
|
||||
5. 📊 Administratoren ueberwachen Instanzgesundheit und Cluster-Ressourcen ueber das Admin-Dashboard.
|
||||
|
||||
## 🏗 Architecture
|
||||
|
||||
```text
|
||||
Browser
|
||||
-> ClawManager Frontend (React + Vite)
|
||||
-> ClawManager Backend (Go + Gin)
|
||||
-> MySQL
|
||||
-> Kubernetes API
|
||||
-> Pod / PVC / Service
|
||||
-> OpenClaw / Webtop / Linux Desktop Runtime
|
||||
```
|
||||
|
||||
### High-Level Design
|
||||
|
||||
- Frontend: React 19 + TypeScript + Tailwind CSS
|
||||
- Backend: Go + Gin + upper/db + MySQL
|
||||
- Runtime: Kubernetes
|
||||
- Zugriffsschicht: authentifizierter Reverse Proxy mit WebSocket-Weiterleitung
|
||||
- Datenschicht: MySQL fuer Geschaeftsdaten, PVC fuer persistente Instanzdaten
|
||||
|
||||
## 🗂 Project Structure
|
||||
|
||||
```text
|
||||
ClawManager/
|
||||
├── backend/ # Go-Backend-API
|
||||
├── frontend/ # React-Frontend
|
||||
├── deployments/ # Container- und Kubernetes-Deployment-Dateien
|
||||
├── dev_docs/ # Design- und Implementierungsdokumente
|
||||
├── scripts/ # Hilfsskripte
|
||||
├── TASK_BREAKDOWN.md # Detaillierte Aufgabenaufschluesselung
|
||||
└── dev_progress.md # Entwicklungsfortschrittsprotokoll
|
||||
```
|
||||
|
||||
## 💻 Tech Stack
|
||||
|
||||
### Backend
|
||||
|
||||
- Go 1.21+
|
||||
- Gin
|
||||
- upper/db
|
||||
- MySQL 8.0+
|
||||
- JWT-Authentifizierung
|
||||
|
||||
### Frontend
|
||||
|
||||
- React 19
|
||||
- TypeScript 5.9
|
||||
- Vite 7
|
||||
- Tailwind CSS 4
|
||||
- React Router
|
||||
|
||||
### Infrastructure
|
||||
|
||||
- Kubernetes
|
||||
- Docker
|
||||
- Nginx
|
||||
|
||||
## ☸️ Kubernetes Prerequisites
|
||||
|
||||
ClawManager ist ein Kubernetes-first-Projekt. Verwaltete Nodes muessen einem Kubernetes-Cluster beitreten, bevor ClawManager Instanzen planen, Ressourcen pruefen oder zentralisierte Operationen bereitstellen kann.
|
||||
|
||||
Vor der Installation von ClawManager sollte eine funktionierende Kubernetes-Umgebung vorhanden sein, und `kubectl` muss Zugriff auf den Cluster haben:
|
||||
|
||||
```bash
|
||||
kubectl get nodes
|
||||
```
|
||||
|
||||
### Linux-Setup-Beispiele
|
||||
|
||||
Mit `k3s`:
|
||||
|
||||
```bash
|
||||
curl -sfL https://get.k3s.io | sh -
|
||||
sudo kubectl get nodes
|
||||
```
|
||||
|
||||
Mit `microk8s`:
|
||||
|
||||
```bash
|
||||
sudo snap install microk8s --classic
|
||||
sudo microk8s status --wait-ready
|
||||
sudo microk8s kubectl get nodes
|
||||
```
|
||||
|
||||
### Grundlegende Kubernetes-Befehle
|
||||
|
||||
```bash
|
||||
kubectl get nodes
|
||||
kubectl get pods -A
|
||||
kubectl get pvc -A
|
||||
kubectl cluster-info
|
||||
```
|
||||
|
||||
### Mindestempfehlung
|
||||
|
||||
- 1 Kubernetes-Node
|
||||
- 4 CPU
|
||||
- 8 GB RAM
|
||||
- 20+ GB freier Speicher
|
||||
|
||||
Wenn mehrere Desktop-Instanzen gleichzeitig laufen sollen, sollten mehr CPU, RAM und Storage eingeplant werden.
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
Vor der Installation sicherstellen, dass:
|
||||
|
||||
- Kubernetes verfuegbar ist
|
||||
- Ein funktionierender Kubernetes-Cluster
|
||||
- `kubectl get nodes` funktioniert
|
||||
|
||||
Direkt mit dem mitgelieferten Kubernetes-YAML deployen:
|
||||
### Deployment
|
||||
|
||||
Das mitgelieferte Manifest direkt anwenden:
|
||||
|
||||
```bash
|
||||
kubectl apply -f deployments/k8s/clawmanager.yaml
|
||||
@@ -244,31 +65,85 @@ kubectl get pods -A
|
||||
kubectl get svc -A
|
||||
```
|
||||
|
||||
## ⚡ Quick Start
|
||||
## Aus Dem Quellcode Bauen
|
||||
|
||||
### Default Accounts
|
||||
Wenn du ClawManager aus dem Quellcode starten oder paketieren moechtest, statt das mitgelieferte Kubernetes-Manifest zu verwenden:
|
||||
|
||||
### Frontend
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Backend
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
go mod tidy
|
||||
go build -o bin/clawreef cmd/server/main.go
|
||||
```
|
||||
|
||||
### Docker-Image
|
||||
|
||||
Das komplette Applikations-Image im Repository-Root bauen:
|
||||
|
||||
```bash
|
||||
docker build -t clawmanager:latest .
|
||||
```
|
||||
|
||||
### Standardkonten
|
||||
|
||||
- Standard-Admin-Konto: `admin / admin123`
|
||||
- Standardpasswort fuer importierte Admin-Benutzer: `admin123`
|
||||
- Standardpasswort fuer importierte regulaere Benutzer: `user123`
|
||||
|
||||
### First Login
|
||||
### Erste Schritte
|
||||
|
||||
1. 👨💼 Als Administrator anmelden.
|
||||
2. 👥 Benutzer erstellen oder importieren und Quotas zuweisen.
|
||||
3. 🧩 Optional Runtime-Image-Karten in den Systemeinstellungen konfigurieren.
|
||||
4. 🖥 Als Benutzer anmelden und eine Instanz erstellen.
|
||||
5. 🔗 Ueber Portal View oder Desktop Access auf den Desktop zugreifen.
|
||||
1. Als Administrator anmelden.
|
||||
2. Benutzer erstellen oder importieren und Quotas vergeben.
|
||||
3. Runtime-Image-Karten in den Systemeinstellungen pruefen oder aktualisieren.
|
||||
4. Als normaler Benutzer anmelden und eine Instanz erstellen.
|
||||
5. Ueber Portal View oder Desktop Access auf den Desktop zugreifen.
|
||||
|
||||
## ⚙️ Configuration
|
||||
## Hauptfunktionen
|
||||
|
||||
ClawManager folgt einem klaren Sicherheitsmodell:
|
||||
- Instanz-Lifecycle-Management: erstellen, starten, stoppen, neu starten, loeschen, anzeigen und synchronisieren
|
||||
- Unterstuetzte Runtimes: `openclaw`, `webtop`, `ubuntu`, `debian`, `centos`, `custom`
|
||||
- Runtime-Image-Kartenverwaltung im Admin-Panel
|
||||
- Benutzerbezogene Quota-Kontrolle fuer CPU, Speicher, Storage, GPU und Instanzanzahl
|
||||
- Cluster-Ressourcenuebersicht fuer Nodes, CPU, Speicher und Storage
|
||||
- Tokenbasierter Desktop-Zugriff mit WebSocket-Weiterleitung
|
||||
- CSV-basierter Massenimport von Benutzern
|
||||
- Mehrsprachige Oberflaeche
|
||||
|
||||
- Instanz-Services verwenden das interne Kubernetes-Netzwerk
|
||||
- Desktop-Zugriff laeuft ueber den authentifizierten ClawManager-Backend-Proxy
|
||||
- backend sollte idealerweise im Cluster betrieben werden
|
||||
- Runtime-Images koennen zentral ueber die Systemeinstellungen verwaltet werden
|
||||
- alle verwalteten Nodes sollten zum selben Kubernetes-Cluster gehoeren
|
||||
## Produktablauf
|
||||
|
||||
1. Ein Administrator definiert Benutzer, Quotas und Runtime-Image-Richtlinien.
|
||||
2. Ein Benutzer erstellt eine OpenClaw- oder Linux-Desktop-Instanz.
|
||||
3. ClawManager erstellt und verfolgt die Kubernetes-Ressourcen.
|
||||
4. Der Benutzer greift ueber die Plattform auf den Desktop zu.
|
||||
5. Administratoren ueberwachen Zustand und Kapazitaet ueber das Dashboard.
|
||||
|
||||
## Architektur
|
||||
|
||||
```text
|
||||
Browser
|
||||
-> ClawManager Frontend
|
||||
-> ClawManager Backend
|
||||
-> MySQL
|
||||
-> Kubernetes API
|
||||
-> Pod / PVC / Service
|
||||
-> OpenClaw / Webtop / Linux Desktop Runtime
|
||||
```
|
||||
|
||||
## Konfigurationshinweise
|
||||
|
||||
- Instanz-Services laufen im internen Kubernetes-Netzwerk
|
||||
- Desktop-Zugriff geht ueber den authentifizierten Backend-Proxy
|
||||
- Runtime-Images koennen in den Systemeinstellungen ueberschrieben werden
|
||||
- Das Backend sollte idealerweise innerhalb des Clusters deployt werden
|
||||
|
||||
Wichtige Backend-Umgebungsvariablen:
|
||||
|
||||
@@ -281,9 +156,7 @@ Wichtige Backend-Umgebungsvariablen:
|
||||
- `DB_NAME`
|
||||
- `JWT_SECRET`
|
||||
|
||||
Im Frontend-Entwicklungsmodus wird `/api` ueber Vite an das Backend weitergeleitet.
|
||||
|
||||
### CSV Import Template
|
||||
### CSV-Importvorlage
|
||||
|
||||
```csv
|
||||
Username,Email,Role,Max Instances,Max CPU Cores,Max Memory (GB),Max Storage (GB),Max GPU Count (optional)
|
||||
@@ -294,12 +167,11 @@ Hinweise:
|
||||
- `Email` ist optional
|
||||
- `Max GPU Count (optional)` ist optional
|
||||
- alle anderen Spalten sind erforderlich
|
||||
- Quota-Werte sollten zur Kapazitaetsplanung des Clusters passen
|
||||
|
||||
## 📄 License
|
||||
## Lizenz
|
||||
|
||||
Dieses Projekt ist unter der MIT License veroeffentlicht.
|
||||
|
||||
## ❤️ Open Source
|
||||
## Open Source
|
||||
|
||||
Issues und Pull Requests sind willkommen, einschliesslich Verbesserungen an Funktionen, Dokumentation und Tests.
|
||||
Issues und Pull Requests sind willkommen.
|
||||
|
||||
+100
-228
@@ -5,7 +5,7 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
OpenClaw のクラスタ一括配備と運用のために設計された世界初のプラットフォームです。
|
||||
チーム規模からクラスタ規模まで、OpenClaw と Linux デスクトップランタイムを一元管理するための Kubernetes-first コントロールプレーンです。
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -25,218 +25,39 @@
|
||||
<img src="https://img.shields.io/badge/License-MIT-2ea44f?style=for-the-badge" alt="MIT License" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/OpenClaw-Desktop-f97316?style=flat-square&logo=linux&logoColor=white" alt="OpenClaw Desktop" />
|
||||
<img src="https://img.shields.io/badge/Webtop-Browser%20Desktop-0f766e?style=flat-square&logo=firefoxbrowser&logoColor=white" alt="Webtop" />
|
||||
<img src="https://img.shields.io/badge/Proxy-Secure%20Access-7c3aed?style=flat-square&logo=nginxproxymanager&logoColor=white" alt="Secure Proxy" />
|
||||
<img src="https://img.shields.io/badge/WebSocket-Realtime-2563eb?style=flat-square&logo=socketdotio&logoColor=white" alt="WebSocket" />
|
||||
<img src="https://img.shields.io/badge/i18n-5%20Languages-db2777?style=flat-square&logo=googletranslate&logoColor=white" alt="5 Languages" />
|
||||
</p>
|
||||
## これは何か
|
||||
|
||||
## 🚀 News
|
||||
ClawManager は、Kubernetes 上でデスクトップランタイムの配備、運用、アクセスを一か所で管理できるようにします。
|
||||
|
||||
- [03/20/2026] **ClawManager 新規リリース** - ClawManager は仮想デスクトップ管理プラットフォームとして正式にリリースされ、バッチデプロイ、Webtop 対応、デスクトップ Portal アクセス、ランタイムイメージ設定、OpenClaw の記憶・設定 Markdown バックアップ移行、クラスタ資源概要、多言語ドキュメントを提供します。
|
||||
次のような環境に向いています:
|
||||
|
||||
## 👀 Overview
|
||||
- 複数ユーザー向けにデスクトップインスタンスを作成したい
|
||||
- quota、イメージ、ライフサイクルを集中管理したい
|
||||
- デスクトップサービスをクラスタ内部に保持したい
|
||||
- Pod を直接公開せず、安全なブラウザアクセスを提供したい
|
||||
|
||||
ClawManager は Kubernetes 向けの仮想デスクトップ管理プラットフォームです。デスクトップランタイム運用、ユーザー統制、安全なクラスタ内アクセスを含む完全な制御プレーンを提供します。
|
||||
## 選ばれる理由
|
||||
|
||||
ClawManager はバッチデプロイ、インスタンスライフサイクル管理、管理コンソール、プロキシベースのデスクトップアクセス、ランタイムイメージ制御、クラスタ資源の可視化、OpenClaw の記憶・設定バックアップ移行機能を一つのプラットフォームに統合しています。
|
||||
|
||||
ClawManager は次のような環境を想定しています:
|
||||
|
||||
- 複数ユーザー向けに仮想デスクトップインスタンスを作成・管理したい
|
||||
- 管理者が quota、イメージ、インスタンスを集中的に統制したい
|
||||
- デスクトップサービスを Kubernetes 内部に保持し、認証付きプロキシ経由で公開したい
|
||||
- オペレーターがインスタンス健全性、クラスタ容量、ランタイム状態を一元的に把握したい
|
||||
|
||||
要するに ClawManager は:
|
||||
|
||||
- OpenClaw と Linux デスクトップランタイムの集中運用コンソール
|
||||
- Kubernetes 上のマルチユーザーデスクトップ管理プラットフォーム
|
||||
- トークン認証プロキシによる内部デスクトップ向け安全アクセス層
|
||||
|
||||
## ✨ At a Glance
|
||||
|
||||
- マルチテナントなデスクトップインスタンス管理
|
||||
- ユーザー単位またはランタイムプロファイル単位でのデスクトップ一括デプロイ
|
||||
- CPU、メモリ、ストレージ、GPU、インスタンス数に対するユーザー quota 制御
|
||||
- OpenClaw、Webtop、Ubuntu、Debian、CentOS、カスタムランタイムをサポート
|
||||
- トークン生成と WebSocket 転送による安全なデスクトッププロキシアクセス
|
||||
- OpenClaw の記憶、設定、Markdown 構成データのバックアップと移行
|
||||
- ユーザー、インスタンス、イメージカード、クラスタ資源向けの管理ダッシュボード
|
||||
- 多言語 UI:英語、中国語、日本語、韓国語、ドイツ語
|
||||
|
||||
> 🧭 ClawManager は管理制御、安全なデスクトップアクセス、ランタイム運用を一つの制御プレーンにまとめます。
|
||||
- ユーザー、quota、インスタンス、ランタイムイメージを一つの管理画面で運用
|
||||
- OpenClaw の記憶や設定のインポート/エクスポートに対応
|
||||
- サービスを直接公開せず、プラットフォーム経由で安全にデスクトップへアクセス
|
||||
- Kubernetes に自然に合う配備・運用フロー
|
||||
- 管理者による配布運用とユーザーのセルフサービス作成の両方に対応
|
||||
|
||||
<p align="center">
|
||||
<img src="frontend/public/clawmanager_overview.png" alt="ClawManager Overview" width="100%" />
|
||||
</p>
|
||||
|
||||
## 📚 Table of Contents
|
||||
## クイックスタート
|
||||
|
||||
- [News](#news)
|
||||
- [Overview](#overview)
|
||||
- [ClawManager New Features](#clawmanager-new-features)
|
||||
- [Key Features](#key-features)
|
||||
- [Typical Workflow](#typical-workflow)
|
||||
- [Architecture](#architecture)
|
||||
- [Project Structure](#project-structure)
|
||||
- [Tech Stack](#tech-stack)
|
||||
- [Kubernetes Prerequisites](#kubernetes-prerequisites)
|
||||
- [Installation](#installation)
|
||||
- [Quick Start](#quick-start)
|
||||
- [Configuration](#configuration)
|
||||
- [License](#license)
|
||||
### 前提条件
|
||||
|
||||
## 🆕 ClawManager New Features
|
||||
|
||||
ClawManager の主要機能:
|
||||
|
||||
- 🖥 ブラウザ内デスクトップアクセス向け `webtop` ランタイム対応
|
||||
- 📦 大規模デスクトップ展開向けのバッチデプロイ機能
|
||||
- 🚪 実行中インスタンスを一箇所で切り替えられる Desktop Portal ページ
|
||||
- 🔐 トークンベースのインスタンスアクセスエンドポイントとリバースプロキシ経路
|
||||
- 🔄 デスクトップセッションおよび状態更新のための WebSocket 転送
|
||||
- 🧠 OpenClaw の記憶、設定、Markdown 構成データのバックアップ/インポート API
|
||||
- 🧩 対応インスタンスタイプごとのランタイムイメージカード管理
|
||||
- 📊 ノード、CPU、メモリ、ストレージを対象としたクラスタ資源概要
|
||||
- 👨💼 ユーザー横断でのフィルタと操作が可能なグローバル管理者インスタンス管理
|
||||
- 📥 デフォルトパスワード生成付き CSV ユーザーインポート
|
||||
- 🌍 5 言語対応の国際化フロントエンド
|
||||
|
||||
## 🛠 Key Features
|
||||
|
||||
- ⚙️ インスタンスライフサイクル管理: 作成、起動、停止、再起動、削除、参照、強制同期
|
||||
- 📦 大規模デスクトップ展開を支えるバッチデプロイ対応
|
||||
- 🧱 対応ランタイムタイプ: `openclaw`、`webtop`、`ubuntu`、`debian`、`centos`、`custom`
|
||||
- 🔒 認証付きプロキシエンドポイントによる安全なデスクトップアクセス
|
||||
- 📡 WebSocket ベースのリアルタイム状態更新
|
||||
- 📝 OpenClaw の記憶、設定、Markdown 構成データのアーカイブバックアップ/インポート
|
||||
- 📏 インスタンス数、CPU、メモリ、ストレージ、GPU に対するユーザー単位 quota 管理
|
||||
- 🖼 管理パネルからのランタイムイメージ上書き管理
|
||||
- 🛰 クラスタ資源概要とインスタンス健全性を提供する管理ダッシュボード
|
||||
- 👥 CSV による一括ユーザー導入と集中 quota 割り当て
|
||||
- 🌐 多言語 UI と管理者/一般ユーザーのロール別ビュー
|
||||
|
||||
## 🔄 Typical Workflow
|
||||
|
||||
1. 👨💼 管理者がログインし、ユーザー、quota、ランタイムイメージ設定を構成します。
|
||||
2. 🖥 ユーザーが OpenClaw、Webtop、Ubuntu などのデスクトップインスタンスを作成します。
|
||||
3. ☸️ ClawManager が Kubernetes リソースを作成し、ランタイム状態を同期し続けます。
|
||||
4. 🔐 ユーザーは Portal またはトークンベースのプロキシエンドポイント経由でデスクトップにアクセスします。
|
||||
5. 📊 管理者は管理ダッシュボードからインスタンス健全性とクラスタ資源を監視します。
|
||||
|
||||
## 🏗 Architecture
|
||||
|
||||
```text
|
||||
Browser
|
||||
-> ClawManager Frontend (React + Vite)
|
||||
-> ClawManager Backend (Go + Gin)
|
||||
-> MySQL
|
||||
-> Kubernetes API
|
||||
-> Pod / PVC / Service
|
||||
-> OpenClaw / Webtop / Linux Desktop Runtime
|
||||
```
|
||||
|
||||
### High-Level Design
|
||||
|
||||
- フロントエンド: React 19 + TypeScript + Tailwind CSS
|
||||
- バックエンド: Go + Gin + upper/db + MySQL
|
||||
- ランタイム: Kubernetes
|
||||
- アクセス層: WebSocket 転送対応の認証付きリバースプロキシ
|
||||
- データ層: 業務データ用 MySQL、永続ストレージ用 PVC
|
||||
|
||||
## 🗂 Project Structure
|
||||
|
||||
```text
|
||||
ClawManager/
|
||||
├── backend/ # Go バックエンド API
|
||||
├── frontend/ # React フロントエンド
|
||||
├── deployments/ # コンテナと Kubernetes デプロイ設定
|
||||
├── dev_docs/ # 設計・実装ドキュメント
|
||||
├── scripts/ # 補助スクリプト
|
||||
├── TASK_BREAKDOWN.md # 詳細タスク分解
|
||||
└── dev_progress.md # 開発進捗記録
|
||||
```
|
||||
|
||||
## 💻 Tech Stack
|
||||
|
||||
### Backend
|
||||
|
||||
- Go 1.21+
|
||||
- Gin
|
||||
- upper/db
|
||||
- MySQL 8.0+
|
||||
- JWT 認証
|
||||
|
||||
### Frontend
|
||||
|
||||
- React 19
|
||||
- TypeScript 5.9
|
||||
- Vite 7
|
||||
- Tailwind CSS 4
|
||||
- React Router
|
||||
|
||||
### Infrastructure
|
||||
|
||||
- Kubernetes
|
||||
- Docker
|
||||
- Nginx
|
||||
|
||||
## ☸️ Kubernetes Prerequisites
|
||||
|
||||
ClawManager は Kubernetes-first のプロジェクトです。管理対象ノードが Kubernetes クラスタに参加してはじめて、インスタンススケジューリング、資源確認、統合運用が可能になります。
|
||||
|
||||
ClawManager を導入する前に、利用可能な Kubernetes 環境を準備し、`kubectl` でアクセスできることを確認してください:
|
||||
|
||||
```bash
|
||||
kubectl get nodes
|
||||
```
|
||||
|
||||
### Linux セットアップ例
|
||||
|
||||
`k3s` を使う場合:
|
||||
|
||||
```bash
|
||||
curl -sfL https://get.k3s.io | sh -
|
||||
sudo kubectl get nodes
|
||||
```
|
||||
|
||||
`microk8s` を使う場合:
|
||||
|
||||
```bash
|
||||
sudo snap install microk8s --classic
|
||||
sudo microk8s status --wait-ready
|
||||
sudo microk8s kubectl get nodes
|
||||
```
|
||||
|
||||
### Kubernetes 基本コマンド
|
||||
|
||||
```bash
|
||||
kubectl get nodes
|
||||
kubectl get pods -A
|
||||
kubectl get pvc -A
|
||||
kubectl cluster-info
|
||||
```
|
||||
|
||||
### 最低推奨構成
|
||||
|
||||
- Kubernetes ノード 1 台
|
||||
- 4 CPU
|
||||
- 8 GB RAM
|
||||
- 20+ GB の空きディスク
|
||||
|
||||
複数のデスクトップインスタンスを同時に動かす場合は、より多くの CPU、メモリ、ストレージを割り当ててください。
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
インストール前に以下を確認してください:
|
||||
|
||||
- Kubernetes が利用可能
|
||||
- 利用可能な Kubernetes クラスタ
|
||||
- `kubectl get nodes` が正常に動作する
|
||||
|
||||
同梱の Kubernetes YAML をそのまま適用します:
|
||||
### デプロイ
|
||||
|
||||
同梱のマニフェストをそのまま適用します:
|
||||
|
||||
```bash
|
||||
kubectl apply -f deployments/k8s/clawmanager.yaml
|
||||
@@ -244,31 +65,85 @@ kubectl get pods -A
|
||||
kubectl get svc -A
|
||||
```
|
||||
|
||||
## ⚡ Quick Start
|
||||
## ソースコードからビルド
|
||||
|
||||
### Default Accounts
|
||||
同梱の Kubernetes マニフェストを使わず、ソースコードから ClawManager を実行またはパッケージしたい場合:
|
||||
|
||||
- 既定の管理者アカウント: `admin / admin123`
|
||||
- インポートされた管理者ユーザーの既定パスワード: `admin123`
|
||||
- インポートされた一般ユーザーの既定パスワード: `user123`
|
||||
### フロントエンド
|
||||
|
||||
### First Login
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
1. 👨💼 管理者としてログインします。
|
||||
2. 👥 ユーザーを作成またはインポートし、quota を割り当てます。
|
||||
3. 🧩 必要に応じてシステム設定でランタイムイメージカードを構成します。
|
||||
4. 🖥 一般ユーザーとしてログインし、インスタンスを作成します。
|
||||
5. 🔗 Portal View または Desktop Access からデスクトップにアクセスします。
|
||||
### バックエンド
|
||||
|
||||
## ⚙️ Configuration
|
||||
```bash
|
||||
cd backend
|
||||
go mod tidy
|
||||
go build -o bin/clawreef cmd/server/main.go
|
||||
```
|
||||
|
||||
ClawManager は明確なセキュリティモデルに従います:
|
||||
### Docker イメージ
|
||||
|
||||
- インスタンスサービスは Kubernetes 内部ネットワークを使用します
|
||||
- デスクトップアクセスは ClawManager バックエンドの認証付きプロキシを経由します
|
||||
- backend はクラスタ内に配置するのが最適です
|
||||
- ランタイムイメージはシステム設定から集中管理できます
|
||||
- 管理対象ノードは同一 Kubernetes クラスタに属している必要があります
|
||||
リポジトリのルートでアプリ全体のイメージをビルドします:
|
||||
|
||||
```bash
|
||||
docker build -t clawmanager:latest .
|
||||
```
|
||||
|
||||
### デフォルトアカウント
|
||||
|
||||
- デフォルトの管理者アカウント: `admin / admin123`
|
||||
- インポートした管理者ユーザーのデフォルトパスワード: `admin123`
|
||||
- インポートした一般ユーザーのデフォルトパスワード: `user123`
|
||||
|
||||
### 最初の利用手順
|
||||
|
||||
1. 管理者としてログインします。
|
||||
2. ユーザーを作成またはインポートし、quota を割り当てます。
|
||||
3. システム設定でランタイムイメージカードを確認または更新します。
|
||||
4. 一般ユーザーとしてログインし、インスタンスを作成します。
|
||||
5. Portal View または Desktop Access からデスクトップにアクセスします。
|
||||
|
||||
## 主な機能
|
||||
|
||||
- インスタンスのライフサイクル管理: 作成、起動、停止、再起動、削除、参照、同期
|
||||
- 対応ランタイム: `openclaw`, `webtop`, `ubuntu`, `debian`, `centos`, `custom`
|
||||
- 管理画面からのランタイムイメージカード管理
|
||||
- CPU、メモリ、ストレージ、GPU、インスタンス数に対するユーザー単位の quota 制御
|
||||
- ノード、CPU、メモリ、ストレージを対象にしたクラスタ資源概要
|
||||
- トークンベースのデスクトップアクセスと WebSocket 転送
|
||||
- CSV による一括ユーザー導入
|
||||
- 多言語インターフェース
|
||||
|
||||
## 利用の流れ
|
||||
|
||||
1. 管理者がユーザー、quota、ランタイムイメージ方針を設定します。
|
||||
2. ユーザーが OpenClaw または Linux デスクトップインスタンスを作成します。
|
||||
3. ClawManager が Kubernetes リソースを作成し、状態を追跡します。
|
||||
4. ユーザーがプラットフォーム経由でデスクトップにアクセスします。
|
||||
5. 管理者がダッシュボードから健全性と容量を確認します。
|
||||
|
||||
## アーキテクチャ
|
||||
|
||||
```text
|
||||
Browser
|
||||
-> ClawManager Frontend
|
||||
-> ClawManager Backend
|
||||
-> MySQL
|
||||
-> Kubernetes API
|
||||
-> Pod / PVC / Service
|
||||
-> OpenClaw / Webtop / Linux Desktop Runtime
|
||||
```
|
||||
|
||||
## 設定メモ
|
||||
|
||||
- インスタンスサービスは Kubernetes の内部ネットワーク上で動作します
|
||||
- デスクトップアクセスは認証済みバックエンドプロキシを経由します
|
||||
- ランタイムイメージはシステム設定から上書きできます
|
||||
- バックエンドはクラスタ内部に配置するのが最適です
|
||||
|
||||
主なバックエンド環境変数:
|
||||
|
||||
@@ -281,25 +156,22 @@ ClawManager は明確なセキュリティモデルに従います:
|
||||
- `DB_NAME`
|
||||
- `JWT_SECRET`
|
||||
|
||||
フロントエンド開発モードでは、Vite により `/api` がバックエンドへプロキシされます。
|
||||
|
||||
### CSV Import Template
|
||||
### CSV インポートテンプレート
|
||||
|
||||
```csv
|
||||
Username,Email,Role,Max Instances,Max CPU Cores,Max Memory (GB),Max Storage (GB),Max GPU Count (optional)
|
||||
```
|
||||
|
||||
注意点:
|
||||
メモ:
|
||||
|
||||
- `Email` は任意
|
||||
- `Max GPU Count (optional)` は任意
|
||||
- それ以外の列は必須
|
||||
- quota 値はクラスタの容量計画と整合している必要があります
|
||||
- `Email` は任意です
|
||||
- `Max GPU Count (optional)` は任意です
|
||||
- それ以外の列は必須です
|
||||
|
||||
## 📄 License
|
||||
## ライセンス
|
||||
|
||||
本プロジェクトは MIT License の下で公開されています。
|
||||
|
||||
## ❤️ Open Source
|
||||
## オープンソース
|
||||
|
||||
機能、ドキュメント、テスト改善を含む issue と pull request を歓迎します。
|
||||
issue と pull request を歓迎します。
|
||||
|
||||
+97
-225
@@ -5,7 +5,7 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
OpenClaw의 클러스터 단위 배치 배포와 운영을 위해 설계된 세계 최초의 플랫폼입니다.
|
||||
팀 규모부터 클러스터 규모까지 OpenClaw와 Linux 데스크톱 런타임을 통합 관리하기 위한 Kubernetes-first 제어 평면입니다.
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -25,218 +25,39 @@
|
||||
<img src="https://img.shields.io/badge/License-MIT-2ea44f?style=for-the-badge" alt="MIT License" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/OpenClaw-Desktop-f97316?style=flat-square&logo=linux&logoColor=white" alt="OpenClaw Desktop" />
|
||||
<img src="https://img.shields.io/badge/Webtop-Browser%20Desktop-0f766e?style=flat-square&logo=firefoxbrowser&logoColor=white" alt="Webtop" />
|
||||
<img src="https://img.shields.io/badge/Proxy-Secure%20Access-7c3aed?style=flat-square&logo=nginxproxymanager&logoColor=white" alt="Secure Proxy" />
|
||||
<img src="https://img.shields.io/badge/WebSocket-Realtime-2563eb?style=flat-square&logo=socketdotio&logoColor=white" alt="WebSocket" />
|
||||
<img src="https://img.shields.io/badge/i18n-5%20Languages-db2777?style=flat-square&logo=googletranslate&logoColor=white" alt="5 Languages" />
|
||||
</p>
|
||||
## 이것은 무엇인가
|
||||
|
||||
## 🚀 News
|
||||
ClawManager는 Kubernetes 위에서 데스크톱 런타임의 배포, 운영, 접근을 한 곳에서 관리할 수 있게 해줍니다.
|
||||
|
||||
- [03/20/2026] **ClawManager 신규 출시** - ClawManager는 가상 데스크톱 관리 플랫폼으로 정식 출시되었으며, 배치 배포, Webtop 지원, 데스크톱 Portal 접근, 런타임 이미지 설정, OpenClaw 메모리/환경설정 Markdown 백업 및 마이그레이션, 클러스터 자원 개요, 다국어 문서를 제공합니다.
|
||||
다음과 같은 환경에 적합합니다:
|
||||
|
||||
## 👀 Overview
|
||||
- 여러 사용자용 데스크톱 인스턴스를 만들어야 하는 경우
|
||||
- quota, 이미지, 라이프사이클을 중앙에서 관리해야 하는 경우
|
||||
- 데스크톱 서비스를 클러스터 내부에 유지하고 싶은 경우
|
||||
- Pod를 직접 노출하지 않고 안전한 브라우저 접근을 제공하고 싶은 경우
|
||||
|
||||
ClawManager는 Kubernetes 기반 가상 데스크톱 관리 플랫폼입니다. 데스크톱 런타임 운영, 사용자 거버넌스, 안전한 클러스터 내부 접근을 포함하는 완전한 제어 평면을 제공합니다.
|
||||
## 왜 선택하는가
|
||||
|
||||
ClawManager는 배치 배포, 인스턴스 생명주기 관리, 관리자 콘솔, 프록시 기반 데스크톱 접근, 런타임 이미지 제어, 클러스터 자원 가시성, OpenClaw 메모리/환경설정 백업 및 마이그레이션 기능을 하나의 플랫폼에 통합합니다.
|
||||
|
||||
ClawManager는 다음과 같은 환경을 위해 설계되었습니다:
|
||||
|
||||
- 여러 사용자용 가상 데스크톱 인스턴스를 생성하고 관리해야 하는 환경
|
||||
- 관리자가 quota, 이미지, 인스턴스를 중앙에서 통제해야 하는 환경
|
||||
- 데스크톱 서비스가 Kubernetes 내부에 유지되고 인증 프록시를 통해 노출되어야 하는 환경
|
||||
- 운영자가 인스턴스 상태, 클러스터 용량, 런타임 상태를 통합해서 봐야 하는 환경
|
||||
|
||||
요약하면 ClawManager는:
|
||||
|
||||
- OpenClaw 및 Linux 데스크톱 런타임을 위한 중앙 운영 콘솔
|
||||
- Kubernetes 기반 다중 사용자 데스크톱 관리 플랫폼
|
||||
- 토큰 인증 프록시를 통한 내부 데스크톱 보안 접근 계층
|
||||
|
||||
## ✨ At a Glance
|
||||
|
||||
- 멀티테넌트 데스크톱 인스턴스 관리
|
||||
- 사용자 또는 런타임 프로파일 기준의 데스크톱 인스턴스 배치 배포
|
||||
- CPU, 메모리, 스토리지, GPU, 인스턴스 수에 대한 사용자 quota 제어
|
||||
- OpenClaw, Webtop, Ubuntu, Debian, CentOS, 사용자 정의 런타임 지원
|
||||
- 토큰 생성과 WebSocket 포워딩을 통한 안전한 데스크톱 프록시 접근
|
||||
- OpenClaw 메모리, 환경설정, Markdown 구성 데이터의 백업 및 마이그레이션
|
||||
- 사용자, 인스턴스, 이미지 카드, 클러스터 자원을 위한 관리자 대시보드
|
||||
- 다국어 UI: 영어, 중국어, 일본어, 한국어, 독일어
|
||||
|
||||
> 🧭 ClawManager는 관리자 제어, 안전한 데스크톱 접근, 런타임 운영을 하나의 제어 평면에 통합합니다.
|
||||
- 사용자, quota, 인스턴스, 런타임 이미지를 하나의 관리자 화면에서 운영
|
||||
- OpenClaw 메모리와 설정의 가져오기/내보내기 지원
|
||||
- 서비스를 직접 노출하지 않고 플랫폼을 통한 안전한 데스크톱 접근
|
||||
- Kubernetes에 자연스럽게 맞는 배포 및 운영 흐름
|
||||
- 관리자 주도 배포와 사용자 셀프서비스 생성 모두 지원
|
||||
|
||||
<p align="center">
|
||||
<img src="frontend/public/clawmanager_overview.png" alt="ClawManager Overview" width="100%" />
|
||||
</p>
|
||||
|
||||
## 📚 Table of Contents
|
||||
## 빠른 시작
|
||||
|
||||
- [News](#news)
|
||||
- [Overview](#overview)
|
||||
- [ClawManager New Features](#clawmanager-new-features)
|
||||
- [Key Features](#key-features)
|
||||
- [Typical Workflow](#typical-workflow)
|
||||
- [Architecture](#architecture)
|
||||
- [Project Structure](#project-structure)
|
||||
- [Tech Stack](#tech-stack)
|
||||
- [Kubernetes Prerequisites](#kubernetes-prerequisites)
|
||||
- [Installation](#installation)
|
||||
- [Quick Start](#quick-start)
|
||||
- [Configuration](#configuration)
|
||||
- [License](#license)
|
||||
### 전제 조건
|
||||
|
||||
## 🆕 ClawManager New Features
|
||||
- 사용 가능한 Kubernetes 클러스터
|
||||
- `kubectl get nodes` 가 정상 동작
|
||||
|
||||
ClawManager의 주요 기능:
|
||||
### 배포
|
||||
|
||||
- 🖥 브라우저 기반 데스크톱 접근을 위한 `webtop` 런타임 지원
|
||||
- 📦 대규모 데스크톱 프로비저닝을 위한 배치 배포 기능
|
||||
- 🚪 실행 중인 인스턴스를 한 곳에서 전환할 수 있는 Desktop Portal 페이지
|
||||
- 🔐 토큰 기반 인스턴스 접근 엔드포인트와 리버스 프록시 라우팅
|
||||
- 🔄 데스크톱 세션 및 상태 업데이트를 위한 WebSocket 포워딩
|
||||
- 🧠 OpenClaw 메모리, 환경설정, Markdown 구성 데이터 백업/가져오기 API
|
||||
- 🧩 지원되는 각 인스턴스 타입별 런타임 이미지 카드 관리
|
||||
- 📊 노드, CPU, 메모리, 스토리지를 포함한 클러스터 자원 개요
|
||||
- 👨💼 사용자 간 필터링과 제어가 가능한 전역 관리자 인스턴스 관리
|
||||
- 📥 기본 비밀번호 생성이 포함된 CSV 사용자 가져오기
|
||||
- 🌍 5개 언어를 지원하는 국제화 프론트엔드
|
||||
|
||||
## 🛠 Key Features
|
||||
|
||||
- ⚙️ 인스턴스 생명주기 관리: 생성, 시작, 중지, 재시작, 삭제, 조회, 강제 동기화
|
||||
- 📦 대규모 데스크톱 롤아웃을 위한 배치 배포 지원
|
||||
- 🧱 지원 런타임 타입: `openclaw`, `webtop`, `ubuntu`, `debian`, `centos`, `custom`
|
||||
- 🔒 인증된 프록시 엔드포인트를 통한 안전한 데스크톱 접근
|
||||
- 📡 WebSocket 기반 실시간 상태 업데이트
|
||||
- 📝 OpenClaw 메모리, 환경설정, Markdown 구성 데이터 아카이브 백업/가져오기
|
||||
- 📏 인스턴스 수, CPU, 메모리, 스토리지, GPU에 대한 사용자 단위 quota 관리
|
||||
- 🖼 관리자 패널에서의 런타임 이미지 오버라이드 관리
|
||||
- 🛰 클러스터 자원 개요와 인스턴스 상태를 제공하는 관리자 대시보드
|
||||
- 👥 CSV 일괄 사용자 가져오기와 중앙 quota 할당
|
||||
- 🌐 다국어 UI 및 관리자/일반 사용자 역할별 뷰
|
||||
|
||||
## 🔄 Typical Workflow
|
||||
|
||||
1. 👨💼 관리자가 로그인하여 사용자, quota, 런타임 이미지 설정을 구성합니다.
|
||||
2. 🖥 사용자가 OpenClaw, Webtop, Ubuntu 같은 데스크톱 인스턴스를 생성합니다.
|
||||
3. ☸️ ClawManager가 Kubernetes 자원을 생성하고 런타임 상태를 계속 동기화합니다.
|
||||
4. 🔐 사용자는 Portal 또는 토큰 기반 프록시 엔드포인트를 통해 데스크톱에 접근합니다.
|
||||
5. 📊 관리자는 관리자 대시보드에서 인스턴스 상태와 클러스터 자원을 모니터링합니다.
|
||||
|
||||
## 🏗 Architecture
|
||||
|
||||
```text
|
||||
Browser
|
||||
-> ClawManager Frontend (React + Vite)
|
||||
-> ClawManager Backend (Go + Gin)
|
||||
-> MySQL
|
||||
-> Kubernetes API
|
||||
-> Pod / PVC / Service
|
||||
-> OpenClaw / Webtop / Linux Desktop Runtime
|
||||
```
|
||||
|
||||
### High-Level Design
|
||||
|
||||
- 프론트엔드: React 19 + TypeScript + Tailwind CSS
|
||||
- 백엔드: Go + Gin + upper/db + MySQL
|
||||
- 런타임: Kubernetes
|
||||
- 접근 계층: WebSocket 포워딩을 지원하는 인증 리버스 프록시
|
||||
- 데이터 계층: 업무 데이터용 MySQL, 인스턴스 영속 스토리지용 PVC
|
||||
|
||||
## 🗂 Project Structure
|
||||
|
||||
```text
|
||||
ClawManager/
|
||||
├── backend/ # Go 백엔드 API
|
||||
├── frontend/ # React 프론트엔드
|
||||
├── deployments/ # 컨테이너 및 Kubernetes 배포 파일
|
||||
├── dev_docs/ # 설계 및 구현 문서
|
||||
├── scripts/ # 보조 스크립트
|
||||
├── TASK_BREAKDOWN.md # 상세 작업 분해
|
||||
└── dev_progress.md # 개발 진행 기록
|
||||
```
|
||||
|
||||
## 💻 Tech Stack
|
||||
|
||||
### Backend
|
||||
|
||||
- Go 1.21+
|
||||
- Gin
|
||||
- upper/db
|
||||
- MySQL 8.0+
|
||||
- JWT 인증
|
||||
|
||||
### Frontend
|
||||
|
||||
- React 19
|
||||
- TypeScript 5.9
|
||||
- Vite 7
|
||||
- Tailwind CSS 4
|
||||
- React Router
|
||||
|
||||
### Infrastructure
|
||||
|
||||
- Kubernetes
|
||||
- Docker
|
||||
- Nginx
|
||||
|
||||
## ☸️ Kubernetes Prerequisites
|
||||
|
||||
ClawManager는 Kubernetes-first 프로젝트입니다. 관리 대상 노드가 Kubernetes 클러스터에 가입해야만 인스턴스 스케줄링, 자원 확인, 통합 운영이 가능합니다.
|
||||
|
||||
ClawManager를 설치하기 전에 동작 가능한 Kubernetes 환경을 준비하고, `kubectl`이 클러스터에 접근 가능한지 확인하세요:
|
||||
|
||||
```bash
|
||||
kubectl get nodes
|
||||
```
|
||||
|
||||
### Linux 설치 예시
|
||||
|
||||
`k3s` 사용:
|
||||
|
||||
```bash
|
||||
curl -sfL https://get.k3s.io | sh -
|
||||
sudo kubectl get nodes
|
||||
```
|
||||
|
||||
`microk8s` 사용:
|
||||
|
||||
```bash
|
||||
sudo snap install microk8s --classic
|
||||
sudo microk8s status --wait-ready
|
||||
sudo microk8s kubectl get nodes
|
||||
```
|
||||
|
||||
### Kubernetes 기본 명령
|
||||
|
||||
```bash
|
||||
kubectl get nodes
|
||||
kubectl get pods -A
|
||||
kubectl get pvc -A
|
||||
kubectl cluster-info
|
||||
```
|
||||
|
||||
### 최소 권장 사양
|
||||
|
||||
- Kubernetes 노드 1개
|
||||
- 4 CPU
|
||||
- 8 GB RAM
|
||||
- 20+ GB 사용 가능 디스크
|
||||
|
||||
여러 데스크톱 인스턴스를 동시에 실행하려면 더 많은 CPU, 메모리, 스토리지를 할당하세요.
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
설치 전에 다음을 확인하세요:
|
||||
|
||||
- Kubernetes 사용 가능
|
||||
- `kubectl get nodes` 정상 동작
|
||||
|
||||
저장소에 포함된 Kubernetes YAML로 바로 배포합니다:
|
||||
저장소에 포함된 매니페스트를 바로 적용합니다:
|
||||
|
||||
```bash
|
||||
kubectl apply -f deployments/k8s/clawmanager.yaml
|
||||
@@ -244,31 +65,85 @@ kubectl get pods -A
|
||||
kubectl get svc -A
|
||||
```
|
||||
|
||||
## ⚡ Quick Start
|
||||
## 소스 코드에서 빌드
|
||||
|
||||
### Default Accounts
|
||||
저장소에 포함된 Kubernetes 매니페스트를 사용하지 않고, 소스 코드에서 직접 ClawManager를 실행하거나 패키징하려는 경우:
|
||||
|
||||
### 프론트엔드
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
### 백엔드
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
go mod tidy
|
||||
go build -o bin/clawreef cmd/server/main.go
|
||||
```
|
||||
|
||||
### Docker 이미지
|
||||
|
||||
저장소 루트에서 전체 애플리케이션 이미지를 빌드합니다:
|
||||
|
||||
```bash
|
||||
docker build -t clawmanager:latest .
|
||||
```
|
||||
|
||||
### 기본 계정
|
||||
|
||||
- 기본 관리자 계정: `admin / admin123`
|
||||
- 가져온 관리자 사용자의 기본 비밀번호: `admin123`
|
||||
- 가져온 일반 사용자의 기본 비밀번호: `user123`
|
||||
|
||||
### First Login
|
||||
### 첫 사용 흐름
|
||||
|
||||
1. 👨💼 관리자 계정으로 로그인합니다.
|
||||
2. 👥 사용자를 생성하거나 가져오고 quota를 할당합니다.
|
||||
3. 🧩 필요하면 시스템 설정에서 런타임 이미지 카드를 구성합니다.
|
||||
4. 🖥 일반 사용자로 로그인하여 인스턴스를 생성합니다.
|
||||
5. 🔗 Portal View 또는 Desktop Access를 통해 데스크톱에 접근합니다.
|
||||
1. 관리자 계정으로 로그인합니다.
|
||||
2. 사용자를 생성하거나 가져오고 quota를 할당합니다.
|
||||
3. 시스템 설정에서 런타임 이미지 카드를 확인하거나 수정합니다.
|
||||
4. 일반 사용자로 로그인하여 인스턴스를 생성합니다.
|
||||
5. Portal View 또는 Desktop Access를 통해 데스크톱에 접근합니다.
|
||||
|
||||
## ⚙️ Configuration
|
||||
## 주요 기능
|
||||
|
||||
ClawManager는 명확한 보안 모델을 따릅니다:
|
||||
- 인스턴스 생명주기 관리: 생성, 시작, 중지, 재시작, 삭제, 조회, 동기화
|
||||
- 지원 런타임: `openclaw`, `webtop`, `ubuntu`, `debian`, `centos`, `custom`
|
||||
- 관리자 화면에서의 런타임 이미지 카드 관리
|
||||
- CPU, 메모리, 스토리지, GPU, 인스턴스 수에 대한 사용자 단위 quota 제어
|
||||
- 노드, CPU, 메모리, 스토리지를 포함한 클러스터 자원 개요
|
||||
- 토큰 기반 데스크톱 접근과 WebSocket 포워딩
|
||||
- CSV 기반 일괄 사용자 가져오기
|
||||
- 다국어 인터페이스
|
||||
|
||||
- 인스턴스 서비스는 Kubernetes 내부 네트워크를 사용합니다
|
||||
- 데스크톱 접근은 ClawManager 백엔드 인증 프록시를 거칩니다
|
||||
- backend는 클러스터 내부에 배포하는 것이 가장 좋습니다
|
||||
- 런타임 이미지는 시스템 설정에서 중앙 관리할 수 있습니다
|
||||
- 관리 대상 노드는 모두 동일한 Kubernetes 클러스터에 속해야 합니다
|
||||
## 사용 흐름
|
||||
|
||||
1. 관리자가 사용자, quota, 런타임 이미지 정책을 설정합니다.
|
||||
2. 사용자가 OpenClaw 또는 Linux 데스크톱 인스턴스를 생성합니다.
|
||||
3. ClawManager가 Kubernetes 자원을 생성하고 상태를 추적합니다.
|
||||
4. 사용자가 플랫폼을 통해 데스크톱에 접근합니다.
|
||||
5. 관리자가 대시보드에서 상태와 용량을 확인합니다.
|
||||
|
||||
## 아키텍처
|
||||
|
||||
```text
|
||||
Browser
|
||||
-> ClawManager Frontend
|
||||
-> ClawManager Backend
|
||||
-> MySQL
|
||||
-> Kubernetes API
|
||||
-> Pod / PVC / Service
|
||||
-> OpenClaw / Webtop / Linux Desktop Runtime
|
||||
```
|
||||
|
||||
## 설정 메모
|
||||
|
||||
- 인스턴스 서비스는 Kubernetes 내부 네트워크에서 동작합니다
|
||||
- 데스크톱 접근은 인증된 백엔드 프록시를 통해 전달됩니다
|
||||
- 런타임 이미지는 시스템 설정에서 덮어쓸 수 있습니다
|
||||
- 백엔드는 클러스터 내부에 배포하는 것이 가장 적합합니다
|
||||
|
||||
주요 백엔드 환경 변수:
|
||||
|
||||
@@ -281,25 +156,22 @@ ClawManager는 명확한 보안 모델을 따릅니다:
|
||||
- `DB_NAME`
|
||||
- `JWT_SECRET`
|
||||
|
||||
프론트엔드 개발 모드에서는 Vite가 `/api`를 백엔드로 프록시합니다.
|
||||
|
||||
### CSV Import Template
|
||||
### CSV 가져오기 템플릿
|
||||
|
||||
```csv
|
||||
Username,Email,Role,Max Instances,Max CPU Cores,Max Memory (GB),Max Storage (GB),Max GPU Count (optional)
|
||||
```
|
||||
|
||||
참고:
|
||||
메모:
|
||||
|
||||
- `Email`은 선택 사항입니다
|
||||
- `Max GPU Count (optional)`은 선택 사항입니다
|
||||
- 그 외 모든 열은 필수입니다
|
||||
- quota 값은 클러스터 용량 계획과 맞아야 합니다
|
||||
- `Email` 은 선택 항목입니다
|
||||
- `Max GPU Count (optional)` 은 선택 항목입니다
|
||||
- 나머지 열은 모두 필수입니다
|
||||
|
||||
## 📄 License
|
||||
## 라이선스
|
||||
|
||||
이 프로젝트는 MIT License로 배포됩니다.
|
||||
|
||||
## ❤️ Open Source
|
||||
## 오픈소스
|
||||
|
||||
기능, 문서, 테스트 개선을 포함한 issue와 pull request를 환영합니다.
|
||||
issue 와 pull request를 환영합니다.
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
The world's first platform purpose-built for batch deployment and operations of OpenClaw at cluster scale.
|
||||
A Kubernetes-first control plane for managing OpenClaw and Linux desktop runtimes at team and cluster scale.
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -25,218 +25,39 @@
|
||||
<img src="https://img.shields.io/badge/License-MIT-2ea44f?style=for-the-badge" alt="MIT License" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/OpenClaw-Desktop-f97316?style=flat-square&logo=linux&logoColor=white" alt="OpenClaw Desktop" />
|
||||
<img src="https://img.shields.io/badge/Webtop-Browser%20Desktop-0f766e?style=flat-square&logo=firefoxbrowser&logoColor=white" alt="Webtop" />
|
||||
<img src="https://img.shields.io/badge/Proxy-Secure%20Access-7c3aed?style=flat-square&logo=nginxproxymanager&logoColor=white" alt="Secure Proxy" />
|
||||
<img src="https://img.shields.io/badge/WebSocket-Realtime-2563eb?style=flat-square&logo=socketdotio&logoColor=white" alt="WebSocket" />
|
||||
<img src="https://img.shields.io/badge/i18n-5%20Languages-db2777?style=flat-square&logo=googletranslate&logoColor=white" alt="5 Languages" />
|
||||
</p>
|
||||
## What It Is
|
||||
|
||||
## 🚀 News
|
||||
ClawManager helps teams deploy, operate, and access desktop runtimes on Kubernetes from one place.
|
||||
|
||||
- [03/20/2026] **ClawManager New Release** - ClawManager is now released as a virtual desktop management platform featuring batch deployment, Webtop support, desktop portal access, runtime image settings, OpenClaw memory/preferences Markdown backup and migration, cluster resource overview, and multilingual documentation.
|
||||
It is built for environments where you need to:
|
||||
|
||||
## 👀 Overview
|
||||
- create desktop instances for multiple users
|
||||
- control quotas, runtime images, and lifecycle centrally
|
||||
- keep desktop services inside the cluster
|
||||
- give users secure browser access without exposing pods directly
|
||||
|
||||
ClawManager is a virtual desktop management platform built for Kubernetes. It provides a complete control plane for desktop runtime operations, user governance, and secure in-cluster access.
|
||||
## Why Users Pick It
|
||||
|
||||
ClawManager combines batch deployment, instance lifecycle management, admin console capabilities, proxy-based desktop access, runtime image control, cluster resource visibility, and OpenClaw memory/preferences backup and migration into one platform.
|
||||
|
||||
ClawManager is designed for environments where:
|
||||
|
||||
- virtual desktop instances need to be created and managed for multiple users
|
||||
- administrators need centralized quota, image, and instance governance
|
||||
- desktop services should remain inside Kubernetes and be exposed through authenticated proxying
|
||||
- operators need a unified view of instance health, cluster capacity, and runtime status
|
||||
|
||||
In short, ClawManager is:
|
||||
|
||||
- a centralized operations console for OpenClaw and Linux desktop runtimes
|
||||
- a multi-user desktop management platform on Kubernetes
|
||||
- a secure access layer for internal desktop services through token-authenticated proxying
|
||||
|
||||
## ✨ At a Glance
|
||||
|
||||
- Multi-tenant desktop instance management
|
||||
- Batch deployment of desktop instances across users or runtime profiles
|
||||
- User quota control for CPU, memory, storage, GPU, and instance count
|
||||
- OpenClaw, Webtop, Ubuntu, Debian, CentOS, and custom runtime support
|
||||
- Secure desktop proxy access with token generation and WebSocket forwarding
|
||||
- OpenClaw memory, preferences, and Markdown configuration backup/migration
|
||||
- Admin dashboards for users, instances, image cards, and cluster resources
|
||||
- Multilingual UI: English, Chinese, Japanese, Korean, and German
|
||||
|
||||
> 🧭 ClawManager combines admin control, secure desktop access, and runtime operations in one control plane.
|
||||
- One admin panel for users, quotas, instances, and runtime images
|
||||
- OpenClaw support with import/export for memory and preferences
|
||||
- Secure desktop access through the platform instead of direct pod exposure
|
||||
- Kubernetes-native deployment and operations flow
|
||||
- Works for both admin-managed rollout and self-service instance creation
|
||||
|
||||
<p align="center">
|
||||
<img src="frontend/public/clawmanager_overview.png" alt="ClawManager Overview" width="100%" />
|
||||
</p>
|
||||
|
||||
## 📚 Table of Contents
|
||||
## Quick Start
|
||||
|
||||
- [News](#news)
|
||||
- [Overview](#overview)
|
||||
- [ClawManager New Features](#clawmanager-new-features)
|
||||
- [Key Features](#key-features)
|
||||
- [Typical Workflow](#typical-workflow)
|
||||
- [Architecture](#architecture)
|
||||
- [Project Structure](#project-structure)
|
||||
- [Tech Stack](#tech-stack)
|
||||
- [Kubernetes Prerequisites](#kubernetes-prerequisites)
|
||||
- [Installation](#installation)
|
||||
- [Quick Start](#quick-start)
|
||||
- [Configuration](#configuration)
|
||||
- [License](#license)
|
||||
### Prerequisites
|
||||
|
||||
## 🆕 ClawManager New Features
|
||||
|
||||
These are the major capabilities of ClawManager:
|
||||
|
||||
- 🖥 `webtop` runtime support for browser-based desktop access
|
||||
- 📦 Batch deployment workflows for large-scale desktop provisioning
|
||||
- 🚪 Desktop Portal page for switching between running instances from one place
|
||||
- 🔐 Token-based instance access endpoint and reverse proxy routing
|
||||
- 🔄 WebSocket forwarding for desktop sessions and status updates
|
||||
- 🧠 OpenClaw memory, preferences, and Markdown configuration backup/import APIs
|
||||
- 🧩 Runtime image card management for each supported instance type
|
||||
- 📊 Cluster resource overview for nodes, CPU, memory, and storage
|
||||
- 👨💼 Global admin instance management with cross-user filtering and control
|
||||
- 📥 CSV-based user import with default password generation
|
||||
- 🌍 Internationalized frontend with 5 languages
|
||||
|
||||
## 🛠 Key Features
|
||||
|
||||
- ⚙️ Instance lifecycle management: create, start, stop, restart, delete, inspect, and force sync
|
||||
- 📦 Batch deployment support for large-scale desktop rollout
|
||||
- 🧱 Supported runtime types: `openclaw`, `webtop`, `ubuntu`, `debian`, `centos`, `custom`
|
||||
- 🔒 Secure desktop access through authenticated proxy endpoints
|
||||
- 📡 WebSocket-based real-time status updates
|
||||
- 📝 OpenClaw memory, preferences, and Markdown configuration archive backup/import
|
||||
- 📏 User-level quota management for instances, CPU, memory, storage, and GPU
|
||||
- 🖼 Runtime image override management from the admin panel
|
||||
- 🛰 Admin dashboard for cluster resource overview and instance health
|
||||
- 👥 CSV-based bulk user import and centralized quota assignment
|
||||
- 🌐 Multilingual UI and role-based admin/user views
|
||||
|
||||
## 🔄 Typical Workflow
|
||||
|
||||
1. 👨💼 An administrator logs in and configures users, quotas, and runtime image settings.
|
||||
2. 🖥 A user creates a desktop instance such as OpenClaw, Webtop, or Ubuntu.
|
||||
3. ☸️ ClawManager creates the Kubernetes resources and keeps runtime status synchronized.
|
||||
4. 🔐 The user accesses the desktop through the portal or token-based proxy endpoint.
|
||||
5. 📊 Administrators monitor instance health and cluster resources from the admin dashboard.
|
||||
|
||||
## 🏗 Architecture
|
||||
|
||||
```text
|
||||
Browser
|
||||
-> ClawManager Frontend (React + Vite)
|
||||
-> ClawManager Backend (Go + Gin)
|
||||
-> MySQL
|
||||
-> Kubernetes API
|
||||
-> Pod / PVC / Service
|
||||
-> OpenClaw / Webtop / Linux Desktop Runtime
|
||||
```
|
||||
|
||||
### High-Level Design
|
||||
|
||||
- Frontend: React 19 + TypeScript + Tailwind CSS
|
||||
- Backend: Go + Gin + upper/db + MySQL
|
||||
- Runtime: Kubernetes
|
||||
- Access layer: authenticated reverse proxy with WebSocket forwarding
|
||||
- Data layer: MySQL for business data, PVC for persistent instance storage
|
||||
|
||||
## 🗂 Project Structure
|
||||
|
||||
```text
|
||||
ClawManager/
|
||||
├── backend/ # Go backend API
|
||||
├── frontend/ # React frontend
|
||||
├── deployments/ # Container and Kubernetes deployment files
|
||||
├── dev_docs/ # Design and implementation documents
|
||||
├── scripts/ # Helper scripts
|
||||
├── TASK_BREAKDOWN.md # Detailed task breakdown
|
||||
└── dev_progress.md # Development progress log
|
||||
```
|
||||
|
||||
## 💻 Tech Stack
|
||||
|
||||
### Backend
|
||||
|
||||
- Go 1.21+
|
||||
- Gin
|
||||
- upper/db
|
||||
- MySQL 8.0+
|
||||
- JWT authentication
|
||||
|
||||
### Frontend
|
||||
|
||||
- React 19
|
||||
- TypeScript 5.9
|
||||
- Vite 7
|
||||
- Tailwind CSS 4
|
||||
- React Router
|
||||
|
||||
### Infrastructure
|
||||
|
||||
- Kubernetes
|
||||
- Docker
|
||||
- Nginx
|
||||
|
||||
## ☸️ Kubernetes Prerequisites
|
||||
|
||||
ClawManager is Kubernetes-first. Managed nodes must join a Kubernetes cluster before ClawManager can schedule instances, inspect resources, or provide unified operations.
|
||||
|
||||
Before installing ClawManager, prepare a working Kubernetes environment and verify that `kubectl` can access it:
|
||||
|
||||
```bash
|
||||
kubectl get nodes
|
||||
```
|
||||
|
||||
### Linux Setup Examples
|
||||
|
||||
Using `k3s`:
|
||||
|
||||
```bash
|
||||
curl -sfL https://get.k3s.io | sh -
|
||||
sudo kubectl get nodes
|
||||
```
|
||||
|
||||
Using `microk8s`:
|
||||
|
||||
```bash
|
||||
sudo snap install microk8s --classic
|
||||
sudo microk8s status --wait-ready
|
||||
sudo microk8s kubectl get nodes
|
||||
```
|
||||
|
||||
### Basic Kubernetes Commands
|
||||
|
||||
```bash
|
||||
kubectl get nodes
|
||||
kubectl get pods -A
|
||||
kubectl get pvc -A
|
||||
kubectl cluster-info
|
||||
```
|
||||
|
||||
### Minimum Recommendation
|
||||
|
||||
- 1 Kubernetes node
|
||||
- 4 CPU
|
||||
- 8 GB RAM
|
||||
- 20+ GB available disk
|
||||
|
||||
If you plan to run multiple desktop instances simultaneously, allocate more CPU, memory, and storage.
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
Before installation, make sure:
|
||||
|
||||
- Kubernetes is available
|
||||
- A working Kubernetes cluster
|
||||
- `kubectl get nodes` works
|
||||
|
||||
Deploy with the bundled Kubernetes manifest:
|
||||
### Deploy
|
||||
|
||||
Apply the bundled manifest:
|
||||
|
||||
```bash
|
||||
kubectl apply -f deployments/k8s/clawmanager.yaml
|
||||
@@ -244,7 +65,33 @@ kubectl get pods -A
|
||||
kubectl get svc -A
|
||||
```
|
||||
|
||||
## ⚡ Quick Start
|
||||
## Build From Source
|
||||
|
||||
If you want to run or package ClawManager from source instead of using the bundled Kubernetes manifest:
|
||||
|
||||
### Frontend
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Backend
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
go mod tidy
|
||||
go build -o bin/clawreef cmd/server/main.go
|
||||
```
|
||||
|
||||
### Docker Image
|
||||
|
||||
Build the full application image from the repository root:
|
||||
|
||||
```bash
|
||||
docker build -t clawmanager:latest .
|
||||
```
|
||||
|
||||
### Default Accounts
|
||||
|
||||
@@ -252,23 +99,51 @@ kubectl get svc -A
|
||||
- Default password for imported admin users: `admin123`
|
||||
- Default password for imported regular users: `user123`
|
||||
|
||||
### First Login
|
||||
### First Use
|
||||
|
||||
1. 👨💼 Log in as admin.
|
||||
2. 👥 Create or import users and assign quotas.
|
||||
3. 🧩 Optionally configure runtime image cards in system settings.
|
||||
4. 🖥 Log in as a user and create an instance.
|
||||
5. 🔗 Access the desktop through Portal View or Desktop Access.
|
||||
1. Log in as admin.
|
||||
2. Create or import users and assign quotas.
|
||||
3. Review or update runtime image cards in system settings.
|
||||
4. Log in as a user and create an instance.
|
||||
5. Access the desktop through Portal View or Desktop Access.
|
||||
|
||||
## ⚙️ Configuration
|
||||
## Main Capabilities
|
||||
|
||||
ClawManager follows a clear security model:
|
||||
- Instance lifecycle management: create, start, stop, restart, delete, inspect, and sync
|
||||
- Runtime types: `openclaw`, `webtop`, `ubuntu`, `debian`, `centos`, `custom`
|
||||
- Runtime image card management from the admin panel
|
||||
- User quota control for CPU, memory, storage, GPU, and instance count
|
||||
- Cluster resource overview for nodes, CPU, memory, and storage
|
||||
- Token-based desktop access with WebSocket forwarding
|
||||
- CSV-based bulk user import
|
||||
- Multilingual interface
|
||||
|
||||
- instance services use Kubernetes internal networking
|
||||
- desktop access goes through the authenticated ClawManager backend proxy
|
||||
- backend is best deployed inside the cluster
|
||||
- runtime images can be managed centrally through system settings
|
||||
- managed nodes should all belong to the Kubernetes cluster
|
||||
## Product Flow
|
||||
|
||||
1. An admin defines users, quotas, and runtime image policies.
|
||||
2. A user creates an OpenClaw or Linux desktop instance.
|
||||
3. ClawManager creates and tracks the Kubernetes resources.
|
||||
4. The user accesses the desktop through the platform.
|
||||
5. Admins monitor health and capacity from the dashboard.
|
||||
|
||||
## Architecture
|
||||
|
||||
```text
|
||||
Browser
|
||||
-> ClawManager Frontend
|
||||
-> ClawManager Backend
|
||||
-> MySQL
|
||||
-> Kubernetes API
|
||||
-> Pod / PVC / Service
|
||||
-> OpenClaw / Webtop / Linux Desktop Runtime
|
||||
```
|
||||
|
||||
## Configuration Notes
|
||||
|
||||
- Instance services stay on Kubernetes internal networking
|
||||
- Desktop access goes through the authenticated backend proxy
|
||||
- Runtime images can be overridden from system settings
|
||||
- Backend deployment is best kept inside the cluster
|
||||
|
||||
Common backend environment variables:
|
||||
|
||||
@@ -281,8 +156,6 @@ Common backend environment variables:
|
||||
- `DB_NAME`
|
||||
- `JWT_SECRET`
|
||||
|
||||
Frontend development mode proxies `/api` to the backend through Vite.
|
||||
|
||||
### CSV Import Template
|
||||
|
||||
```csv
|
||||
@@ -294,12 +167,12 @@ Notes:
|
||||
- `Email` is optional
|
||||
- `Max GPU Count (optional)` is optional
|
||||
- all other columns are required
|
||||
- quota values should match your cluster capacity planning
|
||||
|
||||
## 📄 License
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License.
|
||||
|
||||
## ❤️ Open Source
|
||||
## Open Source
|
||||
|
||||
Issues and pull requests are welcome, including improvements to features, docs, and tests.
|
||||
Issues and pull requests are welcome.
|
||||
|
||||
+97
-225
@@ -5,7 +5,7 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
全球首款面向 OpenClaw 集群批量部署与运维的平台。
|
||||
一个面向团队和集群规模场景的 Kubernetes-first 控制平面,用于统一管理 OpenClaw 与 Linux 桌面运行时。
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -25,218 +25,39 @@
|
||||
<img src="https://img.shields.io/badge/License-MIT-2ea44f?style=for-the-badge" alt="MIT License" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/OpenClaw-Desktop-f97316?style=flat-square&logo=linux&logoColor=white" alt="OpenClaw Desktop" />
|
||||
<img src="https://img.shields.io/badge/Webtop-Browser%20Desktop-0f766e?style=flat-square&logo=firefoxbrowser&logoColor=white" alt="Webtop" />
|
||||
<img src="https://img.shields.io/badge/Proxy-Secure%20Access-7c3aed?style=flat-square&logo=nginxproxymanager&logoColor=white" alt="Secure Proxy" />
|
||||
<img src="https://img.shields.io/badge/WebSocket-Realtime-2563eb?style=flat-square&logo=socketdotio&logoColor=white" alt="WebSocket" />
|
||||
<img src="https://img.shields.io/badge/i18n-5%20Languages-db2777?style=flat-square&logo=googletranslate&logoColor=white" alt="5 Languages" />
|
||||
</p>
|
||||
## 它是什么
|
||||
|
||||
## 🚀 News
|
||||
ClawManager 帮助团队在 Kubernetes 上统一部署、运维和访问桌面运行时。
|
||||
|
||||
- [03/20/2026] **ClawManager 全新发布** - ClawManager 正式发布,作为虚拟桌面管理平台,提供批量部署、Webtop 支持、桌面 Portal 访问、运行时镜像设置、OpenClaw 记忆/偏好 Markdown 备份迁移、集群资源总览和多语言文档。
|
||||
它适合这些场景:
|
||||
|
||||
## 👀 Overview
|
||||
- 需要为多个用户创建桌面实例
|
||||
- 需要集中管理配额、镜像和生命周期
|
||||
- 希望桌面服务保持在集群内部
|
||||
- 希望通过安全的浏览器访问方式,而不是直接暴露 Pod
|
||||
|
||||
ClawManager 是一个面向 Kubernetes 的虚拟桌面管理平台,提供完整的桌面运行时运营平面,覆盖运行控制、用户治理和安全的集群内访问。
|
||||
## 为什么用户会选择它
|
||||
|
||||
ClawManager 将批量部署、实例生命周期管理、管理员控制台、基于代理的桌面访问、运行时镜像控制、集群资源可视化,以及 OpenClaw 记忆/偏好备份迁移能力统一到一个平台中。
|
||||
|
||||
ClawManager 适用于这些环境:
|
||||
|
||||
- 需要为多个用户创建和管理虚拟桌面实例
|
||||
- 管理员需要集中治理 quota、镜像和实例
|
||||
- 桌面服务需要保留在 Kubernetes 内部,并通过鉴权代理对外访问
|
||||
- 运维需要统一查看实例健康、集群容量和运行状态
|
||||
|
||||
简而言之,ClawManager 是:
|
||||
|
||||
- OpenClaw 与 Linux 桌面运行时的集中运维控制台
|
||||
- Kubernetes 上的多用户桌面管理平台
|
||||
- 基于令牌鉴权代理的内部桌面安全访问层
|
||||
|
||||
## ✨ At a Glance
|
||||
|
||||
- 多租户桌面实例管理
|
||||
- 面向用户或运行时模板的桌面实例批量部署
|
||||
- 针对 CPU、内存、存储、GPU 和实例数量的用户 quota 控制
|
||||
- 支持 OpenClaw、Webtop、Ubuntu、Debian、CentOS 和自定义运行时
|
||||
- 通过令牌生成和 WebSocket 转发实现安全桌面代理访问
|
||||
- OpenClaw 记忆、偏好和 Markdown 配置数据的备份与迁移
|
||||
- 管理员后台提供用户、实例、镜像卡片和集群资源视图
|
||||
- 多语言界面:英文、中文、日文、韩文、德文
|
||||
|
||||
> 🧭 ClawManager 将管理员控制、安全桌面访问和运行时运维整合到一个控制平面中。
|
||||
- 一个后台统一管理用户、配额、实例和运行时镜像
|
||||
- 支持 OpenClaw,并提供记忆与偏好设置的导入导出
|
||||
- 通过平台提供安全桌面访问,而不是直接暴露服务
|
||||
- 天然适配 Kubernetes 的部署和运维方式
|
||||
- 同时支持管理员统一发放和用户自助创建实例
|
||||
|
||||
<p align="center">
|
||||
<img src="frontend/public/clawmanager_overview.png" alt="ClawManager Overview" width="100%" />
|
||||
</p>
|
||||
|
||||
## 📚 Table of Contents
|
||||
## 快速开始
|
||||
|
||||
- [News](#news)
|
||||
- [Overview](#overview)
|
||||
- [ClawManager New Features](#clawmanager-new-features)
|
||||
- [Key Features](#key-features)
|
||||
- [Typical Workflow](#typical-workflow)
|
||||
- [Architecture](#architecture)
|
||||
- [Project Structure](#project-structure)
|
||||
- [Tech Stack](#tech-stack)
|
||||
- [Kubernetes Prerequisites](#kubernetes-prerequisites)
|
||||
- [Installation](#installation)
|
||||
- [Quick Start](#quick-start)
|
||||
- [Configuration](#configuration)
|
||||
- [License](#license)
|
||||
### 前置条件
|
||||
|
||||
## 🆕 ClawManager New Features
|
||||
- 有一个可用的 Kubernetes 集群
|
||||
- `kubectl get nodes` 可以正常执行
|
||||
|
||||
这些是 ClawManager 的主要能力:
|
||||
### 部署
|
||||
|
||||
- 🖥 `webtop` 运行时支持,用于浏览器内桌面访问
|
||||
- 📦 支持大规模桌面实例分发的批量部署能力
|
||||
- 🚪 Desktop Portal 页面,可在一个入口中切换运行中的实例
|
||||
- 🔐 基于令牌的实例访问端点和反向代理路由
|
||||
- 🔄 桌面会话和状态更新的 WebSocket 转发
|
||||
- 🧠 OpenClaw 记忆、偏好和 Markdown 配置数据的备份/导入 API
|
||||
- 🧩 面向各实例类型的运行时镜像卡片管理
|
||||
- 📊 节点、CPU、内存和存储的集群资源总览
|
||||
- 👨💼 支持跨用户筛选与控制的全局管理员实例管理
|
||||
- 📥 带默认密码生成的 CSV 用户导入
|
||||
- 🌍 提供 5 种语言的国际化前端
|
||||
|
||||
## 🛠 Key Features
|
||||
|
||||
- ⚙️ 实例生命周期管理:创建、启动、停止、重启、删除、查看和强制同步
|
||||
- 📦 面向大规模桌面发放场景的批量部署支持
|
||||
- 🧱 支持运行时类型:`openclaw`、`webtop`、`ubuntu`、`debian`、`centos`、`custom`
|
||||
- 🔒 通过鉴权代理端点提供安全桌面访问
|
||||
- 📡 基于 WebSocket 的实时状态更新
|
||||
- 📝 OpenClaw 记忆、偏好和 Markdown 配置数据归档备份/导入
|
||||
- 📏 用户级 quota 管理:实例数、CPU、内存、存储和 GPU
|
||||
- 🖼 管理后台中的运行时镜像覆盖管理
|
||||
- 🛰 管理员仪表盘提供集群资源总览和实例健康视图
|
||||
- 👥 CSV 批量用户导入和集中 quota 分配
|
||||
- 🌐 多语言 UI 与管理员/普通用户双角色视图
|
||||
|
||||
## 🔄 Typical Workflow
|
||||
|
||||
1. 👨💼 管理员登录并配置用户、quota 和运行时镜像设置。
|
||||
2. 🖥 用户创建一个桌面实例,例如 OpenClaw、Webtop 或 Ubuntu。
|
||||
3. ☸️ ClawManager 创建对应的 Kubernetes 资源并持续同步运行状态。
|
||||
4. 🔐 用户通过 Portal 或基于令牌的代理端点访问桌面。
|
||||
5. 📊 管理员在后台监控实例健康和集群资源。
|
||||
|
||||
## 🏗 Architecture
|
||||
|
||||
```text
|
||||
Browser
|
||||
-> ClawManager Frontend (React + Vite)
|
||||
-> ClawManager Backend (Go + Gin)
|
||||
-> MySQL
|
||||
-> Kubernetes API
|
||||
-> Pod / PVC / Service
|
||||
-> OpenClaw / Webtop / Linux Desktop Runtime
|
||||
```
|
||||
|
||||
### High-Level Design
|
||||
|
||||
- 前端:React 19 + TypeScript + Tailwind CSS
|
||||
- 后端:Go + Gin + upper/db + MySQL
|
||||
- 运行环境:Kubernetes
|
||||
- 访问层:带 WebSocket 转发的鉴权反向代理
|
||||
- 数据层:MySQL 存储业务数据,PVC 存储实例持久化数据
|
||||
|
||||
## 🗂 Project Structure
|
||||
|
||||
```text
|
||||
ClawManager/
|
||||
├── backend/ # Go 后端 API
|
||||
├── frontend/ # React 前端
|
||||
├── deployments/ # 容器和 Kubernetes 部署文件
|
||||
├── dev_docs/ # 设计与实现文档
|
||||
├── scripts/ # 辅助脚本
|
||||
├── TASK_BREAKDOWN.md # 详细任务拆解
|
||||
└── dev_progress.md # 开发进展记录
|
||||
```
|
||||
|
||||
## 💻 Tech Stack
|
||||
|
||||
### Backend
|
||||
|
||||
- Go 1.21+
|
||||
- Gin
|
||||
- upper/db
|
||||
- MySQL 8.0+
|
||||
- JWT 鉴权
|
||||
|
||||
### Frontend
|
||||
|
||||
- React 19
|
||||
- TypeScript 5.9
|
||||
- Vite 7
|
||||
- Tailwind CSS 4
|
||||
- React Router
|
||||
|
||||
### Infrastructure
|
||||
|
||||
- Kubernetes
|
||||
- Docker
|
||||
- Nginx
|
||||
|
||||
## ☸️ Kubernetes Prerequisites
|
||||
|
||||
ClawManager 是一个 Kubernetes-first 项目。只有当被管理节点加入 Kubernetes 集群后,ClawManager 才能进行实例调度、资源检查和统一运维。
|
||||
|
||||
在安装 ClawManager 之前,请准备好可用的 Kubernetes 环境,并确认 `kubectl` 可以访问集群:
|
||||
|
||||
```bash
|
||||
kubectl get nodes
|
||||
```
|
||||
|
||||
### Linux 安装示例
|
||||
|
||||
使用 `k3s`:
|
||||
|
||||
```bash
|
||||
curl -sfL https://get.k3s.io | sh -
|
||||
sudo kubectl get nodes
|
||||
```
|
||||
|
||||
使用 `microk8s`:
|
||||
|
||||
```bash
|
||||
sudo snap install microk8s --classic
|
||||
sudo microk8s status --wait-ready
|
||||
sudo microk8s kubectl get nodes
|
||||
```
|
||||
|
||||
### Kubernetes 基础命令
|
||||
|
||||
```bash
|
||||
kubectl get nodes
|
||||
kubectl get pods -A
|
||||
kubectl get pvc -A
|
||||
kubectl cluster-info
|
||||
```
|
||||
|
||||
### 最低建议配置
|
||||
|
||||
- 1 个 Kubernetes 节点
|
||||
- 4 CPU
|
||||
- 8 GB RAM
|
||||
- 20+ GB 可用磁盘
|
||||
|
||||
如果你计划同时运行多个桌面实例,请分配更多 CPU、内存和存储。
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
安装前请确认:
|
||||
|
||||
- Kubernetes 可用
|
||||
- `kubectl get nodes` 正常工作
|
||||
|
||||
直接使用仓库内置的 Kubernetes YAML 部署:
|
||||
直接应用仓库自带的清单:
|
||||
|
||||
```bash
|
||||
kubectl apply -f deployments/k8s/clawmanager.yaml
|
||||
@@ -244,31 +65,85 @@ kubectl get pods -A
|
||||
kubectl get svc -A
|
||||
```
|
||||
|
||||
## ⚡ Quick Start
|
||||
## 从源码构建
|
||||
|
||||
### Default Accounts
|
||||
如果你想从源码运行或打包 ClawManager,而不是直接使用仓库自带的 Kubernetes 清单:
|
||||
|
||||
### 前端
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
### 后端
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
go mod tidy
|
||||
go build -o bin/clawreef cmd/server/main.go
|
||||
```
|
||||
|
||||
### Docker 镜像
|
||||
|
||||
在仓库根目录构建完整应用镜像:
|
||||
|
||||
```bash
|
||||
docker build -t clawmanager:latest .
|
||||
```
|
||||
|
||||
### 默认账号
|
||||
|
||||
- 默认管理员账号:`admin / admin123`
|
||||
- 导入的管理员用户默认密码:`admin123`
|
||||
- 导入的普通用户默认密码:`user123`
|
||||
- 导入管理员用户时的默认密码:`admin123`
|
||||
- 导入普通用户时的默认密码:`user123`
|
||||
|
||||
### First Login
|
||||
### 首次使用
|
||||
|
||||
1. 👨💼 使用管理员账号登录。
|
||||
2. 👥 创建或导入用户,并分配 quota。
|
||||
3. 🧩 可选地在系统设置中配置运行时镜像卡片。
|
||||
4. 🖥 使用普通用户登录并创建实例。
|
||||
5. 🔗 通过 Portal View 或 Desktop Access 访问桌面。
|
||||
1. 先使用管理员账号登录。
|
||||
2. 创建或导入用户,并分配配额。
|
||||
3. 在系统设置中查看或更新运行时镜像卡片。
|
||||
4. 使用普通用户登录并创建实例。
|
||||
5. 通过 Portal View 或 Desktop Access 访问桌面。
|
||||
|
||||
## ⚙️ Configuration
|
||||
## 核心能力
|
||||
|
||||
ClawManager 遵循清晰的安全模型:
|
||||
- 实例生命周期管理:创建、启动、停止、重启、删除、查看和同步
|
||||
- 支持的运行时类型:`openclaw`、`webtop`、`ubuntu`、`debian`、`centos`、`custom`
|
||||
- 后台运行时镜像卡片管理
|
||||
- 用户级 CPU、内存、存储、GPU 和实例数量配额控制
|
||||
- 节点、CPU、内存和存储的集群资源总览
|
||||
- 基于令牌的桌面访问与 WebSocket 转发
|
||||
- 基于 CSV 的批量用户导入
|
||||
- 多语言界面
|
||||
|
||||
## 产品使用流程
|
||||
|
||||
1. 管理员配置用户、配额和运行时镜像策略。
|
||||
2. 用户创建 OpenClaw 或 Linux 桌面实例。
|
||||
3. ClawManager 创建并跟踪对应的 Kubernetes 资源。
|
||||
4. 用户通过平台访问桌面。
|
||||
5. 管理员通过仪表盘查看健康状态和容量。
|
||||
|
||||
## 架构
|
||||
|
||||
```text
|
||||
Browser
|
||||
-> ClawManager Frontend
|
||||
-> ClawManager Backend
|
||||
-> MySQL
|
||||
-> Kubernetes API
|
||||
-> Pod / PVC / Service
|
||||
-> OpenClaw / Webtop / Linux Desktop Runtime
|
||||
```
|
||||
|
||||
## 配置说明
|
||||
|
||||
- 实例服务运行在 Kubernetes 内部网络中
|
||||
- 桌面访问统一经过 ClawManager 后端鉴权代理
|
||||
- backend 最佳部署位置是在集群内部
|
||||
- 运行时镜像可通过系统设置集中管理
|
||||
- 被管理节点应全部属于同一个 Kubernetes 集群
|
||||
- 桌面访问通过已认证的后端代理转发
|
||||
- 运行时镜像可在系统设置中覆盖
|
||||
- 后端最佳部署位置是集群内部
|
||||
|
||||
常用后端环境变量:
|
||||
|
||||
@@ -281,9 +156,7 @@ ClawManager 遵循清晰的安全模型:
|
||||
- `DB_NAME`
|
||||
- `JWT_SECRET`
|
||||
|
||||
前端开发模式会通过 Vite 将 `/api` 代理到后端。
|
||||
|
||||
### CSV Import Template
|
||||
### CSV 导入模板
|
||||
|
||||
```csv
|
||||
Username,Email,Role,Max Instances,Max CPU Cores,Max Memory (GB),Max Storage (GB),Max GPU Count (optional)
|
||||
@@ -291,15 +164,14 @@ Username,Email,Role,Max Instances,Max CPU Cores,Max Memory (GB),Max Storage (GB)
|
||||
|
||||
说明:
|
||||
|
||||
- `Email` 是可选项
|
||||
- `Max GPU Count (optional)` 是可选项
|
||||
- 其他列都是必填
|
||||
- quota 数值应与你的集群容量规划保持一致
|
||||
- `Email` 为可选项
|
||||
- `Max GPU Count (optional)` 为可选项
|
||||
- 其他列均为必填项
|
||||
|
||||
## 📄 License
|
||||
## 许可证
|
||||
|
||||
本项目基于 MIT License 发布。
|
||||
|
||||
## ❤️ Open Source
|
||||
## 开源
|
||||
|
||||
欢迎提交 issue 和 pull request,包括功能、文档和测试方面的改进。
|
||||
欢迎提交 issue 和 pull request。
|
||||
|
||||
Reference in New Issue
Block a user