# GameDig Server Status API Pterodactyl Egg das Gameserver per [GameDig](https://github.com/gamedig/node-gamedig) abfragt und die Ergebnisse als JSON-REST-API bereitstellt. ## Unterstützte Spiele (Auswahl) | Spiel | `type` in config.json | |---|---| | DayZ | `dayz` | | Counter-Strike 2 | `cs2` | | Rust | `rust` | | ARK: Survival Evolved | `arkse` | | + 320 weitere | [GameDig Games-Liste](https://github.com/gamedig/node-gamedig/blob/master/GAMES_LIST.md) | --- ## Installation 1. `egg.json` im Pterodactyl-Panel importieren *(Admin → Nests → Import Egg)* 2. Neuen Server anlegen und einen **Port** zuweisen 3. Server starten → Installationsscript lädt automatisch alle Dateien von diesem Repo 4. `config.json` im **Dateimanager** mit deinen Serveradressen anpassen 5. Server neu starten --- ## Konfiguration ### config.json (im Pterodactyl-Dateimanager bearbeiten) ```json { "servers": [ { "label": "DayZ Main Server", "type": "dayz", "host": "1.2.3.4", "port": 2302, "image": "https://example.com/images/dayz.jpg" }, { "label": "CS2 Server", "type": "cs2", "host": "1.2.3.4", "port": 27015, "image": "https://example.com/images/cs2.jpg" } ] } ``` ### Egg-Variablen (im Pterodactyl-Panel konfigurierbar) | Variable | Standard | Beschreibung | |---|---|---| | `QUERY_INTERVAL` | `60` | Abfrageintervall in Sekunden (min. 10) | | `API_KEY` | *(leer)* | Optionaler API-Schlüssel – leer = offen | --- ## API-Endpunkte ### `GET /api/servers` **Ohne API-Key:** ``` GET http://dein-server:PORT/api/servers ``` **Mit API-Key via Header:** ``` GET http://dein-server:PORT/api/servers X-API-Key: dein-key ``` **Mit API-Key via URL-Parameter:** ``` GET http://dein-server:PORT/api/servers?key=dein-key ``` **Beispiel-Antwort:** ```json { "updated": "2026-02-26T14:32:00.000Z", "interval_seconds": 60, "servers": [ { "label": "DayZ Main Server", "type": "dayz", "address": "1.2.3.4:2302", "image": "https://example.com/images/dayz.jpg", "status": "online", "players": 12, "maxPlayers": 60, "map": "ChernarusPlus", "name": "My DayZ Server", "ping": 42, "connect": "1.2.3.4:2302" }, { "label": "CS2 Server", "type": "cs2", "address": "1.2.3.4:27015", "status": "offline", "error": "Connection timed out" } ] } ``` ### `GET /health` Kein API-Key erforderlich. Geeignet für Uptime-Monitoring. ```json { "status": "ok", "updated": "2026-02-26T14:32:00.000Z" } ``` --- ## DayZ Besonderheit DayZ nutzt einen separaten Query-Port (`Game-Port + 24714`). Falls die Abfrage fehlschlägt, den Query-Port direkt angeben: ```json { "type": "dayz", "host": "1.2.3.4", "port": 27016 } ``` --- ## Dateien im Container ``` /home/container/ ├── server.js ← Hauptscript (API + Query-Loop) ├── entrypoint.sh ← Startscript ├── config.json ← Serverkonfiguration (selbst bearbeiten) ├── package.json ← npm-Konfiguration └── node_modules/ ← Abhängigkeiten (automatisch installiert) ``` ## Update Um `server.js` oder `entrypoint.sh` zu aktualisieren, einfach die Dateien in diesem Repo anpassen und den Server im Pterodactyl-Panel **neu installieren** *(Server → Settings → Reinstall Server)*.