server-master/docs/WIKI.md

224 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WingsEmu Server Master Wiki
> Praktische Gesamtdoku für Setup, Betrieb, Docker, Troubleshooting und Dev-Workflow.
---
## 1) Überblick
Dieses Repository enthält einen verteilten WingsEmu-Server-Stack mit mehreren Diensten:
- **Core**: `master`, `login`, `gamechannel`
- **Feature/Domain Services**: `database`, `bazaar`, `family`, `relation`, `mail`, `translation`, `logs`, `scheduler`
- **Infra**: `postgres`, `redis`, `mongodb`, `mqtt`
Der Stack läuft lokal vollständig via **Docker Compose** (Windows + Linux kompatibel).
---
## 2) Voraussetzungen
- Docker Desktop / Docker Engine
- Git
- Für lokale Builds: .NET SDK (wenn du ohne Docker baust)
Benötigte Daten/Ordner:
- `resources/dat/*` (mindestens `Item.dat`, idealerweise vollständige Datensätze)
- `translations/*`
- `config/*` (falls featurespezifische Konfigurationen benötigt werden)
---
## 3) Schnellstart (Docker)
1. `.env` anlegen (von `.env.example` ableiten)
2. Services starten:
```bash
docker compose up -d --build
```
3. Status prüfen:
```bash
docker compose ps
```
4. Logs prüfen:
```bash
docker compose logs -f --tail=200
```
Details siehe auch: `docs/docker-run.md`
---
## 4) Wichtige Ports
### App Services
- `20500` Master
- `4004` Login
- `8000` GameChannel
- `17500` GameChannel HTTP
- `29999` Database
- `25555` Bazaar
- `26666` Family
- `21111` Relation
- `27777` Mail
- `28888` Logs
- `19999` Translation
### Infrastruktur
- `5432` PostgreSQL
- `6379` Redis
- `27017` MongoDB
- `1883` MQTT
- `18083` EMQX Dashboard
---
## 5) Architektur (vereinfacht)
1. **master** als zentrale Koordination
2. **login** registriert/kommuniziert mit master
3. **gamechannel** (World) kommuniziert mit:
- master
- database
- bazaar/family/relation/mail/translation
- redis/mqtt/mongo je nach Feature
4. Persistenz:
- Postgres (Core DB)
- Redis (Cache/Bus)
- Mongo (Logs/zusätzliche Daten)
---
## 6) Konfiguration
### Env-Variablen (Auszug)
- `POSTGRES_USER`
- `POSTGRES_PASSWORD`
- `POSTGRES_DB`
- `MONGO_ROOT_USERNAME`
- `MONGO_ROOT_PASSWORD`
- `JWT_PRIVATE_KEY`
- `HEALTHCHECK_API_KEY`
### Laufzeitdaten
- `resources/` → ingame Ressourcen
- `translations/` → Übersetzungen
- `config/` → Feature-Konfigurationen und Scripts
---
## 7) Docker-Dateien
- `docker-compose.yml` Full-Stack Orchestrierung
- `docker/Dockerfile.service` generisches Runtime-Image für Service-DLLs
- `docker/.dockerignore`
- `scripts/docker-up.sh` / `scripts/docker-down.sh`
---
## 8) Betrieb (Operations)
### Start
```bash
docker compose up -d --build
```
### Stop
```bash
docker compose down
```
### Voller Reset (Achtung: löscht Volumes)
```bash
docker compose down -v --remove-orphans
docker compose up -d --build
```
### Einzelnen Dienst neu bauen/starten
```bash
docker compose up -d --build gamechannel
```
---
## 9) Troubleshooting
### A) `gamechannel` crasht beim Start
- Prüfe `resources/dat` (mind. `Item.dat`)
- Prüfe `translations/*`
- Prüfe `config/scripts/*`
- Logs:
```bash
docker logs --tail 200 wingsemu-gamechannel
```
### B) DB-Auth schlägt fehl
- `.env` Werte für Postgres prüfen
- Bei Altlasten in Volumes: Hard Reset ausführen
### C) Services starten, aber Feature fehlt
- Prüfen ob benötigte YAML/Config-Dateien unter `config/` existieren
- Service-Logs und Stack-Logs vergleichen
### D) MQTT/Infra unhealthy
- `docker compose ps`
- gezielte Logs:
- `wingsemu-mqtt`
- `wingsemu-postgres`
- `wingsemu-redis`
- `wingsemu-mongodb`
---
## 10) Security & Hardening (bereits umgesetzt)
- Unsichere Defaults für Secrets/Passwörter reduziert/entfernt
- Healthcheck-Key-Verifikation korrigiert
- Secret-Leaks in `ToString()` maskiert
- Paket-Updates für bekannte Vulnerabilities (u. a. JWT/Mongo)
- Docker-Setup als reproduzierbarer Full Stack
---
## 11) Dev-Workflow
### Build lokal
```bash
dotnet build WingsEmu.sln -c Debug
```
### Standard-Checks
- Build grün
- Docker stack läuft
- Port-Checks grün
- Keine frischen `Unhandled/Exception/FAIL_ADD` in Logs
### Git
- Lokale Runtime-Daten sind ignoriert (`.env`, `resources/`, `translations/`)
- Relevante Config-Templates und Docs werden committed
---
## 12) Empfohlene nächste Schritte
1. Optional: net5 → LTS Migration (langfristig)
2. Optional: Healthchecks für alle App-Services weiter schärfen
3. Optional: CI-Job für Docker Smoke-Test + Log-Sanity
4. Optional: `docs/` in einzelne Kapitel splitten (Architecture, Ops, Security)
---
## 13) TL;DR
- Full-Stack ist dockerisiert und lauffähig.
- Kernservices + Infra starten zusammen.
- Wiki + Runbook vorhanden (`docs/WIKI.md`, `docs/docker-run.md`).
- Für Probleme zuerst `docker compose ps` + `docker logs` nutzen.