Files
HexaHost-GameCloud/README.md
smueller c4077d4673
Some checks failed
CI / Node — lint, typecheck, test, build (push) Failing after 10s
CI / Go — node-agent tests (push) Failing after 8s
CI / Go — edge-gateway build (push) Successful in 13s
Phase2
2026-06-26 12:01:25 +02:00

139 lines
3.2 KiB
Markdown

# HexaHost GameCloud
Selbstgehostete, mandantenfähige Plattform für On-Demand-Minecraft-Server.
Der Projektname **HexaHost GameCloud** ist ein Arbeitstitel und zentral über `APP_NAME` / `NEXT_PUBLIC_APP_NAME` konfigurierbar.
## Voraussetzungen
| Tool | Version |
|------|---------|
| Node.js | ≥ 22 |
| pnpm | 9.15.x (`corepack enable`) |
| Docker | für lokale Infrastruktur |
| Go | 1.23+ (Node Agent) |
## Schnellstart (lokal)
```bash
# Abhängigkeiten installieren
corepack enable
pnpm install
# Umgebung vorbereiten
cp .env.example .env
# SESSION_SECRET und ENCRYPTION_KEY auf mindestens 32 Zeichen setzen
# Infrastruktur (PostgreSQL, Redis, MinIO, Mailpit)
pnpm dev:infra
# Datenbankschema anwenden
pnpm db:push
# Entwicklungsserver (API, Worker, Web parallel)
pnpm dev
```
### Dienste (Entwicklung)
| Dienst | URL |
|--------|-----|
| Web | http://localhost:3000 |
| API | http://localhost:3001/api/v1 |
| OpenAPI | http://localhost:3001/api/v1/docs |
| Worker Health | http://localhost:3002/health |
| Mailpit | http://localhost:8025 |
| MinIO Console | http://localhost:9001 |
Optional für Docker Compose mit Traefik-Netzwerk:
```bash
docker network create traefik-network
```
## Monorepo-Struktur
```text
apps/
web/ Next.js Weboberfläche
api/ NestJS API (Fastify)
worker/ BullMQ Hintergrundjobs
node-agent/ Go-Daemon auf Game-Nodes
edge-gateway/ Go TCP/UDP Gateway (Phase 8)
packages/
database/ Prisma Schema & Client
contracts/ Zod-Schemas & API-Verträge
config/ Typisierte Konfiguration
auth/ Authentifizierungslogik
ui/ Gemeinsame UI-Komponenten
deploy/ Docker Compose, systemd, Ansible
docs/ Architektur, ADR, Betrieb
integrations/ WHMCS-Module (später)
```
## Befehle
```bash
pnpm build # Alle Pakete bauen
pnpm lint # Linting
pnpm typecheck # TypeScript-Prüfung
pnpm test # Unit-Tests
pnpm db:generate # Prisma Client generieren
pnpm db:migrate # Migrationen ausführen
```
Go Node Agent:
```bash
cd apps/node-agent
make test
make build
```
## Aktueller Stand
**Phase 2** (Single-Node Vertical Slice) — abgeschlossen.
Siehe [docs/IMPLEMENTATION_STATUS.md](docs/IMPLEMENTATION_STATUS.md) für Details.
### Minecraft-Server lokal testen
```bash
pnpm dev:infra
pnpm db:migrate # oder db:push bei frischer DB
pnpm db:seed # Free-Plan + Dev-Node
pnpm dev
# Separates Terminal — Node Agent (Go 1.23 + Docker Desktop)
cd apps/node-agent
# NODE_ID, NODE_TOKEN, NODE_AGENT_PUBLIC_URL aus .env.example setzen
make run
```
1. Registrieren / einloggen unter http://localhost:3000
2. Server erstellen unter `/servers/new`
3. Starten — Adresse `localhost:<port>` im Panel
4. Minecraft: Multiplayer → `localhost:<port>`
### Auth lokal testen
```bash
cp .env.example .env
pnpm dev:infra
pnpm db:migrate
pnpm dev
# Admin anlegen (keine Default-Zugangsdaten)
pnpm bootstrap:admin -- --email admin@localhost --password 'min-12-chars-here'
```
| Flow | URL |
|------|-----|
| Registrierung | http://localhost:3000/register |
| Login | http://localhost:3000/login |
| E-Mails (Dev) | http://localhost:8025 (Mailpit) |
## Lizenz
Proprietär — siehe Repository-Eigentümer.