Files
gameserver-status-api/README.md
2026-02-26 10:16:14 +01:00

149 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)*.