1576301136568446290183f62d56af7e976983b6
GameDig Server Status API
Ein Node.js-Dienst für Pterodactyl Panel, der Gameserver (DayZ, CS2, Rust, ARK u.v.m.) per GameDig abfragt und die Ergebnisse als JSON-REST-API bereitstellt.
Funktionen
- Unterstützt über 320 Spieltypen via GameDig v4
- Konfigurierbares Abfrage-Intervall
- Optionaler API-Key-Schutz
- CORS-Header für Webintegration
- Sauberes Beenden bei Pterodactyl Stop (SIGINT/SIGTERM)
- Einfache Konfiguration per
config.json
Dateien
| Datei | Beschreibung |
|---|---|
server.js |
Hauptskript – GameDig-Abfragen + HTTP-Server |
entrypoint.sh |
Startskript für Pterodactyl |
package.json |
npm-Abhängigkeiten |
config.json |
Serverliste (muss angepasst werden) |
egg-gameserver-status-api.json |
Pterodactyl Egg |
Installation in Pterodactyl
- Egg importieren: Admin → Nests → Import Egg →
egg-gameserver-status-api.json - Neuen Server erstellen, Egg auswählen, Port zuweisen
- Server installieren lassen
config.jsonim Dateimanager anpassen (siehe unten)- Server starten
Konfiguration
config.json
{
"servers": [
{
"label": "DayZ Main Server",
"type": "dayz",
"host": "1.2.3.4",
"port": 2302,
"queryPort": 2303,
"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"
}
]
}
Felder:
| Feld | Pflicht | Beschreibung |
|---|---|---|
label |
✓ | Anzeigename des Servers |
type |
✓ | GameDig-Spieltyp (z.B. dayz, cs2, rust, arkse) |
host |
✓ | IP-Adresse oder Hostname |
port |
✓ | Spielport |
queryPort |
– | Optionaler Query-Port (wenn abweichend vom Spielport) |
image |
– | URL zum Spielbild für das Widget |
Hinweis zu DayZ: Der Query-Port ist standardmässig Spielport + 1 (z.B. 2302 → 2303). Falls manuell geändert, queryPort explizit setzen.
Spieltypen: Vollständige Liste unter GAMES_LIST.md
Umgebungsvariablen (Pterodactyl)
| Variable | Standard | Beschreibung |
|---|---|---|
QUERY_INTERVAL |
60 |
Abfrage-Intervall in Sekunden (Minimum: 10) |
API_KEY |
(leer) | API-Key zum Schutz der Endpunkte. Leer = kein Schutz |
API-Endpunkte
GET /api/servers
Gibt den Status aller konfigurierten Server zurück.
Ohne API-Key:
GET http://<host>:<port>/api/servers
Mit API-Key:
GET http://<host>:<port>/api/servers?key=DEINKEY
# oder
GET http://<host>:<port>/api/servers
X-API-Key: DEINKEY
Antwort:
{
"updated": "2026-02-26T12:00:00.000Z",
"interval_seconds": 60,
"servers": [
{
"label": "CS2 Server",
"type": "cs2",
"address": "1.2.3.4:27015",
"image": "https://example.com/images/cs2.jpg",
"status": "online",
"players": 8,
"maxPlayers": 16,
"map": "de_dust2",
"ping": 4
}
]
}
GET /health
Statuscheck ohne Authentifizierung.
{
"status": "ok",
"uptime": 3600.5
}
Wichtiger Hinweis: NAT / Docker-Netzwerk
GameDig verwendet UDP. Wenn der Pterodactyl-Server und die abzufragenden Gameserver auf demselben Host laufen, kann ein Hairpin-NAT-Problem auftreten. In diesem Fall die interne IP statt der öffentlichen IP in config.json verwenden.
Technische Details
- Runtime: Node.js 20 (Alpine)
- Docker Image:
ghcr.io/pterodactyl/yolks:nodejs_20 - Modul-System: ESM (
"type": "module"inpackage.json) - GameDig: v4.x (CommonJS, via Default-Import
import pkg from 'gamedig') - Stop-Verhalten: Sauberes Beenden via SIGINT/SIGTERM
Languages
JavaScript
84.7%
Shell
15.3%