Phase4
This commit is contained in:
@@ -2,92 +2,76 @@
|
||||
|
||||
Last updated: 2026-06-26
|
||||
|
||||
## Current phase: Phase 3 — Console, files, settings ✅
|
||||
## Current phase: Phase 4 — Worlds & backups ✅
|
||||
|
||||
### Phase 3 completed
|
||||
### Phase 4 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 |
|
||||
| Prisma backup models | Done | ServerBackup, BackupRestore, BackupSchedule, WorldUpload |
|
||||
| `@hexahost/storage` | Done | S3/MinIO presigned URLs, object keys |
|
||||
| `@hexahost/contracts` phase 4 | Done | backups, worlds schemas |
|
||||
| Go agent v0.4 | Done | Archive, validate, RCON prepare/release, S3 transfer |
|
||||
| Worker backup queue | Done | create/restore/upload, retention, schedule tick |
|
||||
| API BackupsModule | Done | CRUD, restore, schedule, download URL |
|
||||
| API WorldsModule | Done | World info, upload, download via backup |
|
||||
| Web worlds/backups tabs | Done | Upload, list, backup management |
|
||||
| State machine | Done | BACKING_UP, RESTORING |
|
||||
|
||||
### Abnahmekriterium Phase 3
|
||||
### Abnahmekriterium Phase 4
|
||||
|
||||
- [x] Live console WebSocket (logs + commands when RUNNING)
|
||||
- [x] File manager (list/read/write, path sandbox)
|
||||
- [x] `server.properties` editor with restart option
|
||||
- [x] Player list + whitelist view
|
||||
- [x] Server management fully via web panel (no direct host access required)
|
||||
- [ ] Manual E2E validation (requires Docker + agent running locally)
|
||||
- [x] World backup to S3 (MinIO in dev)
|
||||
- [x] World download (presigned URL)
|
||||
- [x] World upload and replace (server stopped)
|
||||
- [x] Backup restore with safety backup
|
||||
- [x] Retention enforcement
|
||||
- [x] Scheduled backups (interval-based)
|
||||
- [ ] Manual E2E validation (requires Docker + agent + MinIO)
|
||||
|
||||
### Local vertical slice
|
||||
|
||||
```bash
|
||||
pnpm dev:infra
|
||||
pnpm db:migrate # or db:push
|
||||
pnpm dev:infra # includes MinIO on :9000
|
||||
pnpm db:migrate
|
||||
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
|
||||
# Node Agent (Go + Docker)
|
||||
cd apps/node-agent && make run
|
||||
```
|
||||
|
||||
1. Create and start a server under `/servers/new`
|
||||
2. Open **Console** tab — live logs, send commands via RCON
|
||||
3. Open **Files** — browse server directory, edit files
|
||||
4. Open **Properties** — change `server.properties`, optional restart
|
||||
5. Open **Players** — online players and whitelist
|
||||
1. Stop server → **Welten** → `.tar.gz` hochladen
|
||||
2. **Backups** → manuelles Backup erstellen → Download
|
||||
3. Backup wiederherstellen (Server gestoppt)
|
||||
4. Geplante Backups aktivieren
|
||||
|
||||
### Known limitations
|
||||
|
||||
- Console only when server status is `RUNNING`; files readable when `RUNNING` or `STOPPED`.
|
||||
- RCON via `rcon-cli` inside 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.
|
||||
- Upload expects gzip-compressed tar (`.tar.gz`) with world folder or `level.dat` at root.
|
||||
- Restore/download require agent on node; worker orchestrates S3 transfer.
|
||||
- Scheduled backups use simple `intervalHours` (no cron expressions yet).
|
||||
- No server-side encryption of backups beyond MinIO/S3 transport (deferred).
|
||||
|
||||
---
|
||||
|
||||
## Phase 3 — Console, files, settings ✅
|
||||
|
||||
Live console, file manager, `server.properties`, player lists, audit.
|
||||
|
||||
---
|
||||
|
||||
## 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` |
|
||||
Provisioning, start/stop, node agent, web panel.
|
||||
|
||||
---
|
||||
|
||||
## 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 5 — Software & add-ons
|
||||
|
||||
### Next phase: Phase 4 — Worlds & backups
|
||||
|
||||
- S3-compatible storage (MinIO)
|
||||
- World upload/download
|
||||
- Backup jobs and restore
|
||||
- Software catalog, Modrinth, mods/plugins/modpacks
|
||||
|
||||
Reference in New Issue
Block a user