149 lines
3.4 KiB
Markdown
149 lines
3.4 KiB
Markdown
# 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)*.
|