4.6 KiB
4.6 KiB
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/*(mindestensItem.dat, idealerweise vollständige Datensätze)translations/*config/*(falls featurespezifische Konfigurationen benötigt werden)
3) Schnellstart (Docker)
.envanlegen (von.env.exampleableiten)- Services starten:
docker compose up -d --build
- Status prüfen:
docker compose ps
- Logs prüfen:
docker compose logs -f --tail=200
Details siehe auch: docs/docker-run.md
4) Wichtige Ports
App Services
20500Master4004Login8000GameChannel17500GameChannel HTTP29999Database25555Bazaar26666Family21111Relation27777Mail28888Logs19999Translation
Infrastruktur
5432PostgreSQL6379Redis27017MongoDB1883MQTT18083EMQX Dashboard
5) Architektur (vereinfacht)
- master als zentrale Koordination
- login registriert/kommuniziert mit master
- gamechannel (World) kommuniziert mit:
- master
- database
- bazaar/family/relation/mail/translation
- redis/mqtt/mongo je nach Feature
- Persistenz:
- Postgres (Core DB)
- Redis (Cache/Bus)
- Mongo (Logs/zusätzliche Daten)
6) Konfiguration
Env-Variablen (Auszug)
POSTGRES_USERPOSTGRES_PASSWORDPOSTGRES_DBMONGO_ROOT_USERNAMEMONGO_ROOT_PASSWORDJWT_PRIVATE_KEYHEALTHCHECK_API_KEY
Laufzeitdaten
resources/→ ingame Ressourcentranslations/→ Übersetzungenconfig/→ Feature-Konfigurationen und Scripts
7) Docker-Dateien
docker-compose.yml– Full-Stack Orchestrierungdocker/Dockerfile.service– generisches Runtime-Image für Service-DLLsdocker/.dockerignorescripts/docker-up.sh/scripts/docker-down.sh
8) Betrieb (Operations)
Start
docker compose up -d --build
Stop
docker compose down
Voller Reset (Achtung: löscht Volumes)
docker compose down -v --remove-orphans
docker compose up -d --build
Einzelnen Dienst neu bauen/starten
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:
docker logs --tail 200 wingsemu-gamechannel
B) DB-Auth schlägt fehl
.envWerte 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-mqttwingsemu-postgreswingsemu-rediswingsemu-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
dotnet build WingsEmu.sln -c Debug
Standard-Checks
- Build grün
- Docker stack läuft
- Port-Checks grün
- Keine frischen
Unhandled/Exception/FAIL_ADDin Logs
Git
- Lokale Runtime-Daten sind ignoriert (
.env,resources/,translations/) - Relevante Config-Templates und Docs werden committed
12) Empfohlene nächste Schritte
- Optional: net5 → LTS Migration (langfristig)
- Optional: Healthchecks für alle App-Services weiter schärfen
- Optional: CI-Job für Docker Smoke-Test + Log-Sanity
- 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 logsnutzen.