3.4 KiB
3.4 KiB
HexaHost GameCloud — Implementation Status
Last updated: 2026-06-26
Current phase: Phase 3 — Console, files, settings ✅
Phase 3 completed
| Area | Status | Notes |
|---|---|---|
| Go agent v0.3 | Done | Log stream, RCON commands, safe file I/O |
@hexahost/contracts phase 3 |
Done | console, files, properties, players |
| API NodeBridge | Done | Sync request/response over Redis |
| API Console | Done | Token + WS /api/v1/servers/:id/console/ws |
| API Files | Done | List, read, write with path validation |
| API Properties | Done | GET/PATCH server.properties |
| API Players | Done | Online list + whitelist |
| API Restart | Done | POST /servers/:id/restart?skip=true |
| Audit events | Done | console.command, file.write, properties.update |
| Web server tabs | Done | Console, files, properties, players |
| Unit tests | Done | Properties parser, path validation, route contracts |
Abnahmekriterium Phase 3
- Live console WebSocket (logs + commands when RUNNING)
- File manager (list/read/write, path sandbox)
server.propertieseditor with restart option- Player list + whitelist view
- Server management fully via web panel (no direct host access required)
- Manual E2E validation (requires Docker + agent running locally)
Local vertical slice
pnpm dev:infra
pnpm db:migrate # or db:push
pnpm db:seed
pnpm dev
# Terminal 2 — Node Agent (requires Go + Docker)
cd apps/node-agent
set NODE_ID=00000000-0000-4000-8000-000000000001
set NODE_TOKEN=local-dev-enrollment-token-change-me-32chars
set NODE_AGENT_PUBLIC_URL=ws://localhost:3001/api/v1/nodes/ws
make run
- Create and start a server under
/servers/new - Open Console tab — live logs, send commands via RCON
- Open Files — browse server directory, edit files
- Open Properties — change
server.properties, optional restart - Open Players — online players and whitelist
Known limitations
- Console only when server status is
RUNNING; files readable whenRUNNINGorSTOPPED. - RCON via
rcon-cliinside Minecraft container (itzg image). - File writes limited to server data directory; no upload/download archives yet (Phase 4).
- Player management read-only (whitelist view); add/remove deferred.
- Single-node only; no scheduler fairness yet.
Phase 2 — Single-Node Vertical Slice ✅
| Area | Status | Notes |
|---|---|---|
| Prisma lifecycle models | Done | Allocations, server fields, node enrollment |
@hexahost/contracts servers |
Done | Zod schemas for create/list/action |
| API ServersModule | Done | CRUD, start/stop, BullMQ jobs |
| API NodesModule | Done | WebSocket /api/v1/nodes/ws, Redis command bridge |
| Worker provisioning | Done | Port allocation, Redis commands, response wait |
| Go node-agent v0.2 | Done | WebSocket, Docker (itzg/minecraft-server:java21) |
| Web server UI | Done | Create, list, detail, start/stop |
| Migration | Done | 20260626140000_phase2_game_servers |
Phase 1 — Authentication ✅
Session cookies, register/login/logout, email verify, password reset, TOTP 2FA, recovery codes, audit baseline. See docs/adr/0002-session-authentication.md.
Phase 0 — Monorepo foundation ✅
pnpm + Turborepo monorepo, PostgreSQL/Redis/MinIO/Mailpit compose, CI, ADRs.
Next phase: Phase 4 — Worlds & backups
- S3-compatible storage (MinIO)
- World upload/download
- Backup jobs and restore