24fire-api
v2.0.0
Published
Einfacher, abhängigkeitsfreier Node.js-Wrapper für die 24fire REST-API v2
Maintainers
Readme
24fire-api
Ein einfacher Node.js-Wrapper für die 24fire REST-API v2. Verwalte deinen Account, KVM-Server, Domains und Webspaces direkt aus deinem Code.
Features
- 🔗 Kommunikation über SSL (
https://manage.24fire.de/api) - 📦 Keine Abhängigkeiten nutzt das eingebaute
fetchvon Node.js - 🧩 Intuitive, verschachtelte Bedienung (
fire.kvm(id).backup.list()) - 🟦 Mitgelieferte TypeScript-Typen
- ⚡ Schnell & leichtgewichtig
Hinweis: Dies ist Version 2.0. Die API-Struktur hat sich gegenüber v1 komplett geändert (neue Base-URL, neuer Auth-Header,
internal_idpro Dienst). Siehe Migration von v1.
Voraussetzungen
- Node.js 18 oder neuer (wegen des globalen
fetch)
Installation
npm install 24fire-apiAPI-Key erstellen
- Logge dich im 24fire Control Panel ein.
- Gehe zu Einstellungen → API-Keys und klicke auf „API-Key erstellen“.
- Speichere den Key sicher ab – er wird nur einmal angezeigt.
Schnellstart
const FireAPI = require('24fire-api');
// oder: import FireAPI from '24fire-api';
const fire = new FireAPI('DEIN_API_KEY');
// Account-Infos abrufen
const account = await fire.account.info();
console.log(account.data);
// Alle Dienste anzeigen (hier findest du die internal_id jedes Dienstes)
const services = await fire.account.services();
console.log(services.data);
// Einen Server starten
await fire.kvm('INTERNAL_ID').start();Jede Methode gibt die API-Antwort im Format { status, message, data } zurück.
Bei Fehlern wird ein FireAPIError geworfen (siehe Fehlerbehandlung).
Account
await fire.account.info(); // Account-Informationen (Name, E-Mail, Guthaben …)
await fire.account.services(); // Übersicht aller aktiven Dienste (mit internal_id)
await fire.account.donations(); // Daten zur Spendenseite
await fire.account.affiliate(); // Daten zum Affiliate-SystemKVM-Server
Zuerst einen Server über seine internal_id auswählen:
const vm = fire.kvm('INTERNAL_ID');Allgemein
await vm.config(); // Konfiguration (Hardware, IPs, OS …)
await vm.status(); // Status & Auslastung (running / stopped / …)
await vm.power('start'); // Power-Aktion: 'start' | 'stop' | 'restart'
await vm.start(); // Kurzform für power('start')
await vm.stop(); // Kurzform für power('stop')
await vm.restart(); // Kurzform für power('restart')Backups
await vm.backup.list(); // Alle Backups auflisten
await vm.backup.create('Notiz'); // Backup erstellen (24fire+), Notiz optional, max. 24 Zeichen
await vm.backup.createStatus('BACKUP_ID'); // Status der Erstellung abfragen
await vm.backup.restore('BACKUP_ID'); // Backup wiederherstellen (24fire+)
await vm.backup.restoreStatus('BACKUP_ID'); // Status der Wiederherstellung abfragen
await vm.backup.delete('BACKUP_ID'); // Backup löschenTraffic
await vm.traffic.current(); // Aktueller Traffic-Verbrauch des Monats
await vm.traffic.log(); // Traffic-Log (Messung alle 10 Minuten)
// Traffic-Diagramm generieren (24fire+)
await vm.traffic.chart({
type: 'both', // Eingehend / Ausgehend / Beides
summary: 'DAILY', // DAILY | HOURLY | NONE
output: 'apexcharts', // chartjs | apexcharts | base64
datapoints: 30,
size: '900x300',
});Monitoring
await vm.monitoring.timings(); // Messungen abrufen
await vm.monitoring.incidences(); // Ausfälle abrufenDDoS (24fire+)
await vm.ddos.get(); // Aktuelle DDoS-Einstellungen abrufen
await vm.ddos.change({
layer4: 'permanent',
layer7: 'on',
ip_address: '88.151.194.253', // optional; ohne Angabe gilt es für alle IPv4 der VM
});Domains
const domain = fire.domain('INTERNAL_ID');
await domain.info(); // Domain-Informationen
await domain.dns.list(); // Alle DNS-Einträge
// DNS-Eintrag hinzufügen (24fire+)
await domain.dns.add({ type: 'A', name: '*', data: '1.2.3.4' });
// DNS-Eintrag bearbeiten (24fire+)
await domain.dns.edit({ record_id: 'RECORD_ID', data: '5.6.7.8' });
// DNS-Eintrag entfernen
await domain.dns.remove('RECORD_ID');Webspace
await fire.webspace('INTERNAL_ID').info(); // Webspace-Daten abrufenFehlerbehandlung
Schlägt eine Anfrage fehl (HTTP-Fehler oder status: "error"), wird ein FireAPIError geworfen:
const { FireAPIError } = require('24fire-api');
try {
await fire.kvm('INTERNAL_ID').start();
} catch (err) {
if (err instanceof FireAPIError) {
console.error('API-Fehler:', err.message);
console.error('HTTP-Status:', err.status);
console.error('Antwort:', err.response);
}
}Migration von v1
| | v1 (alt) | v2 (neu) |
|---|---|---|
| Base-URL | https://api.24fire.de | https://manage.24fire.de/api |
| Auth-Header | X-FIRE-APIKEY | X-Fire-Apikey |
| Server-Auswahl | global über den Key | pro Dienst über die internal_id |
| Abhängigkeiten | axios | keine (eingebautes fetch) |
Beispiel:
// v1
myFireApi.vm().getVMstatus();
myFireApi.vm().startVM();
myFireApi.backup().listBackups();
// v2
fire.kvm('INTERNAL_ID').status();
fire.kvm('INTERNAL_ID').start();
fire.kvm('INTERNAL_ID').backup.list();Manche Endpunkte (z. B. DNS-Verwaltung, Backups erstellen/wiederherstellen, DDoS, Traffic-Chart) erfordern ein aktives 24fire+ Abonnement.
Author & Credits
- Florian Linde [email protected] (FlosTechnikwelt)
Empfehlenswert
Feedback
Wenn du Feedback hast, wende dich an mich unter [email protected]
