server-master/docs/WIKI.md

4.6 KiB
Raw Permalink Blame History

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:
docker compose up -d --build
  1. Status prüfen:
docker compose ps
  1. Logs prüfen:
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

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

  • .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

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.