224 lines
4.6 KiB
Markdown
224 lines
4.6 KiB
Markdown
# 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.
|