Alles, was du im Panel per Klick erledigst – Server starten, einen Befehl in die Konsole schicken, eine Datei bearbeiten –, geht auch per HTTP-Anfrage. So kann ein Discord-Bot den Minecraft-Server per Befehl neu starten, ein Skript den Server nach einem Absturz wieder hochfahren oder eine Routine täglich eine Konfigurationsdatei sichern.
Diese Anleitung zeigt, wie du den Schlüssel für diesen Zugriff erstellst und für die häufigsten Aufgaben nutzt.
Der Schlüssel handelt im Namen deines Kontos. Er hat keine eigenen Berechtigungen: Was du im Panel darfst, darf er auch, auf allen Servern des Kontos. Die meistgenutzten Aktionen sind:
say, whitelist add oder save-all.Das Panel zeigt die Beschriftungen womöglich auf Portugiesisch; der Originalname steht in Klammern.
discord bot. Mindestens 4 Zeichen, und genau dieser Name sagt dir Monate später, welchen Schlüssel du löschen musst.Das Fenster Dein API-Schlüssel (Sua Chave API) zeigt den vollständigen Schlüssel, der mit ptlc_ beginnt. Kopiere ihn und bewahre ihn sicher auf: Er wird nicht noch einmal angezeigt. Verlierst du ihn, lösche den Schlüssel und erstelle einen neuen.
Jeder Aufruf muss angeben, auf welchen Server er wirkt. Die Kennung steht in der Adressleiste, wenn du den Server im Panel öffnest:
https://app.redhosting.com.br/server/1a2b3c4d
Die Kennung ist der Teil nach /server/ – im Beispiel 1a2b3c4d. Die folgenden Beispiele verwenden stattdessen DEIN_SERVER und für den Schlüssel DEIN_SCHLUESSEL.
Jede Anfrage enthält den Schlüssel und den Hinweis, dass im JSON-Format kommuniziert wird. Dieser Befehl listet die Server des Kontos auf und bestätigt, dass der Schlüssel funktioniert:
curl https://app.redhosting.com.br/api/client \
-H "Authorization: Bearer DEIN_SCHLUESSEL" \
-H "Accept: application/json"
Die Antwort enthält einen Eintrag pro Server. Das Feld identifier ist jeweils dieselbe Kennung wie im vorigen Schritt.
curl https://app.redhosting.com.br/api/client/servers/DEIN_SERVER/resources \
-H "Authorization: Bearer DEIN_SCHLUESSEL" \
-H "Accept: application/json"
Das Feld current_state nennt den Status: running, starting, stopping oder offline. Unter resources stehen Speicher und Festplatte in Bytes und die CPU in Prozent.
curl -X POST https://app.redhosting.com.br/api/client/servers/DEIN_SERVER/power \
-H "Authorization: Bearer DEIN_SCHLUESSEL" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"signal": "restart"}'
signal akzeptiert start, stop, restart und kill. Nimm lieber stop: Es fährt geordnet herunter und lässt den Server speichern, was im Arbeitsspeicher liegt. kill beendet sofort, wie Stecker ziehen, und kann die Welt oder offene Dateien beschädigen.
curl -X POST https://app.redhosting.com.br/api/client/servers/DEIN_SERVER/command \
-H "Authorization: Bearer DEIN_SCHLUESSEL" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"command": "say Neustart in 5 Minuten"}'
Der Befehl landet in der Konsole genau so, als hättest du ihn dort eingetippt. Der Server muss laufen; ist er aus, lautet die Antwort Fehler 502.
Einen Ordner auflisten:
curl "https://app.redhosting.com.br/api/client/servers/DEIN_SERVER/files/list?directory=/" \
-H "Authorization: Bearer DEIN_SCHLUESSEL" \
-H "Accept: application/json"
Eine Datei lesen – die Antwort ist der reine Inhalt, kein JSON:
curl "https://app.redhosting.com.br/api/client/servers/DEIN_SERVER/files/contents?file=/server.properties" \
-H "Authorization: Bearer DEIN_SCHLUESSEL"
Zum Schreiben ist der Anfragetext der gesamte neue Inhalt der Datei, der den alten ersetzt:
curl -X POST "https://app.redhosting.com.br/api/client/servers/DEIN_SERVER/files/write?file=/motd.txt" \
-H "Authorization: Bearer DEIN_SCHLUESSEL" \
-H "Accept: application/json" \
--data-binary @motd.txt
Übersicht der Endpunkte. Alle beginnen mit https://app.redhosting.com.br/api/client/servers/DEIN_SERVER:
| Aktion | Methode | Endpunkt |
|---|---|---|
| Status und Verbrauch | GET | /resources |
| Starten, stoppen, neu starten | POST | /power |
| Konsolenbefehl | POST | /command |
| Ordner auflisten | GET | /files/list?directory=/ |
| Datei lesen | GET | /files/contents?file=/pfad |
| Datei schreiben | POST | /files/write?file=/pfad |
| Backups auflisten | GET | /backups |
Ein Node.js-Skript (Version 18 oder neuer), das den Status prüft und den Server startet, wenn er aus ist. Der Schlüssel kommt aus einer Umgebungsvariable, nicht aus dem Code – so landet er nicht mit dem Rest auf GitHub.
const PANEL = 'https://app.redhosting.com.br/api/client';
const SERVER = 'DEIN_SERVER';
const headers = {
Authorization: `Bearer ${process.env.PANEL_API_KEY}`,
Accept: 'application/json',
'Content-Type': 'application/json',
};
async function check() {
const response = await fetch(`${PANEL}/servers/${SERVER}/resources`, { headers });
if (!response.ok) throw new Error(`API antwortete ${response.status}`);
const { attributes } = await response.json();
if (attributes.current_state === 'offline') {
await fetch(`${PANEL}/servers/${SERVER}/power`, {
method: 'POST',
headers,
body: JSON.stringify({ signal: 'start' }),
});
console.log('Server war aus – wird gestartet.');
}
}
check().catch((error) => console.error(error.message));
Alle paar Minuten über einen System-Zeitplan ausgeführt, startet es den Server nach einem Ausfall wieder. Nicht zu kurz takten: Das Anfragelimit steht im nächsten Abschnitt.
| Antwort | Bedeutung | Was tun |
|---|---|---|
| 401 | Der Schlüssel wurde nicht akzeptiert. | Prüfe, ob du den ganzen Schlüssel samt ptlc_ kopiert hast und ob der Header Authorization: Bearer lautet. Ein im Panel gelöschter Schlüssel funktioniert sofort nicht mehr. |
| 403 | Der Schlüssel funktioniert, aber nicht hier. | Die IP, von der die Anfrage kam, steht nicht unter Erlaubte IPs, oder dein Konto ist Unterbenutzer des Servers ohne Berechtigung für diese Aktion. |
| 404 | Server oder Datei nicht gefunden. | Prüfe die 8-stellige Kennung und den Dateipfad, der mit / beginnt. |
| 409 | Der Server kann das gerade nicht. | Er wird installiert, übertragen oder ist gesperrt. Warte, bis das vorbei ist. |
| 429 | Zu viele Anfragen. | Das Panel akzeptiert bis zu 256 Anfragen pro Minute und Konto. Verteile die Aufrufe. |
| 502 | Der Server muss laufen. | Passiert, wenn du bei ausgeschaltetem Server einen Befehl sendest. Starte ihn vorher. |
.env-Datei, die in der .gitignore steht, nie im Code.Bevor du das Skript laufen lässt
stop, nicht kill.
/server/.