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