NodebayAnmelden

API-Beschreibung

Das Panel hat keine offene Programmierschnittstelle für Benutzer. Es gibt zwei Schnittstellen für Maschinen: die Agent-API, über die angebundene Server mit dem Hub sprechen, und die DynDNS-Schnittstelle für Router und Skripte.

Grundlagen

Signatur

Der Schlüssel entsteht beim Anlegen des Servers im Panel und wird nur einmal angezeigt. Er wird als Text (UTF-8) verwendet, nicht als Hex-Folge. Jede Anfrage trägt vier Header:

HeaderInhalt
X-AgentServername
X-TSUnix-Zeit in Sekunden, höchstens 120 Sekunden Abweichung von der Zeit des Hubs
X-Noncezufälliger Hex-Wert mit 16 bis 64 Zeichen, nur einmal gültig
X-SigSignatur als Hex-Text mit 64 Zeichen

Die Signatur wird über fünf Teile gebildet, die mit einem Zeilenumbruch verbunden werden:

X-Sig = HMAC_SHA256(schluessel, METHODE + "\n" + PFAD + "\n" + X-TS + "\n" + X-Nonce + "\n" + SHA256_HEX(body))
Antwort-Header X-Sig = HMAC_SHA256(schluessel, "resp\n" + X-Nonce + "\n" + SHA256_HEX(antwort_body))

Bei jedem Fehler antwortet der Hub gleich, damit niemand erfährt, welcher Teil nicht stimmte. Die Uhr des Servers sollte per NTP laufen.

Agent-Endpunkte

PfadZweck
POST /agent/pollLebenszeichen und Aufträge abholen. Body: version, commands (Liste mit name, desc, level), info, wait (bis 25 s Wartezeit), optional results. Antwort: jobs (Liste mit id, cmd, args) und ts.
POST /agent/resultErgebnisse melden: results ist eine Liste mit id, ok und text.
POST /agent/notifyMeldung an den Besitzer des Servers: text mit bis zu 500 Zeichen, höchstens 10 pro Minute. Antwort: {"ok":true}.
POST /agent/trackEine versendete Chat-Nachricht zum späteren automatischen Löschen vormerken (höchstens 60 pro Minute). Antwort: {"ok":true,"tracked":…}. Gilt nur, wenn der Agent denselben Bot wie das Panel nutzt.
POST /agent/healthLebenszeichen für den Hub-Wächter, der einen Hub-Ausfall meldet. Nur mit eingerichtetem Wächter-Schlüssel (Einstellungen → Matrix), sonst 404.
POST /agent/distNeuere Agent-Version abrufen (Selbst-Update).
GET /agent/enroll?t=TOKENEinmal-Abruf für die Erstinstallation (curl … | sudo bash). Liefert den Agent-Installer samt Zugangsdaten. Der Token stammt aus dem Panel (Server anlegen oder „Installationsbefehl“), gilt 30 Minuten und genau einmal. Ohne gültigen Token antwortet der Hub mit 404, auch wenn der Grund ein abgelaufener Token ist. Den Grund sieht nur das Hub-Protokoll.

Befehlsstufen

Jeder Befehl, den ein Agent meldet, hat eine Stufe (level), nach der das Panel und der Bot entscheiden, wer ihn auslösen darf. Der Hub führt nie selbst Befehle aus, die der Agent nicht gemeldet hat.

Fehler und Grenzen

AntwortBedeutung
401Signatur, Zeitstempel oder Nonce ungültig, oder der Server ist unbekannt.
404Pfad unbekannt oder ungültiger Token bei enroll.
429Zu viele Anfragen: 120 pro Minute je IP, notify höchstens 10 pro Minute je Server.
SperreNach 30 falschen Signaturen sperrt der Hub die IP für eine Weile.

Befehle für einen Agenten, der nicht antwortet, verfallen nach 2 Minuten, Update-Aufträge nach 3,5 Stunden. Ein Server gilt nach 75 Sekunden ohne Kontakt als offline.

Beispiele

Rohe Anfrage

POST /agent/poll HTTP/1.1
X-Agent: games1
X-TS: 1760000000
X-Nonce: 3f9c1d2e4a5b6c7d8e9f0a1b2c3d4e5f
X-Sig: …
Content-Type: application/json

{"version":"1.0","commands":[{"name":"uptime","desc":"Laufzeit","level":"view"}],"info":{},"wait":20}

Aufruf in Python

import hashlib, hmac, json, secrets, time, urllib.request

def call(hub, name, key, path, payload):
    body = json.dumps(payload).encode()
    ts, nonce = str(int(time.time())), secrets.token_hex(16)
    msg = "\n".join(["POST", path, ts, nonce, hashlib.sha256(body).hexdigest()])
    sig = hmac.new(key.encode(), msg.encode(), hashlib.sha256).hexdigest()
    rq = urllib.request.Request(hub + path, body, {"X-Agent": name, "X-TS": ts, "X-Nonce": nonce, "X-Sig": sig, "Content-Type": "application/json"})
    return json.load(urllib.request.urlopen(rq, timeout=40))

Signatur in der Shell

BODY='{"text":"Backup fertig"}'
TS=$(date +%s); NONCE=$(openssl rand -hex 16)
HASH=$(printf %s "$BODY" | openssl dgst -sha256 -hex | awk '{print $NF}')
SIG=$(printf 'POST\n/agent/notify\n%s\n%s\n%s' "$TS" "$NONCE" "$HASH" | openssl dgst -sha256 -hmac "$KEY" -hex | awk '{print $NF}')
curl -s -H "X-Agent: games1" -H "X-TS: $TS" -H "X-Nonce: $NONCE" -H "X-Sig: $SIG" -d "$BODY" https://hub.example.de:8444/agent/notify

Den Agenten selbst zu schreiben ist nicht nötig: install-nbagent.sh richtet ihn ein. Eigene Befehle ergänzt du als Plugin-Datei in /opt/nbagent/plugins/, und Skripte melden mit nbagent.py notify "Text".

DynDNS-Schnittstelle

Die Schnittstelle folgt dem DynDNS2-Protokoll, das FritzBox und die meisten Router kennen. Sie liegt unter https://ddns.nodebay.de/nic/update (auch erreichbar als /ddns/update). Anmeldung per HTTP-Basic: Benutzername ist die Adresse, Passwort ist der Zugangsschlüssel aus dem Panel.

ParameterBedeutung
hostnameVollständiger Name, z. B. name.nodebay.de. Fehlt er, gilt der Benutzername.
myip (auch ip)IPv4-Adresse. Fehlt sie, nimmt der Hub die Adresse, von der die Anfrage kommt. Eine IPv6-Adresse hier wird als IPv6 gewertet.
myipv6 (auch ip6)IPv6-Adresse.
token, passwordSchlüssel als Parameter, falls dein Gerät kein Basic kann. Besser Basic nutzen, da URLs oft in Protokollen landen.
curl -u "name.nodebay.de:SCHLÜSSEL" "https://ddns.nodebay.de/nic/update?myip=203.0.113.7"
AntwortBedeutung
good IPEintrag geändert.
nochg IPNichts zu tun, die Adresse war schon eingetragen.
badauth (401)Adresse unbekannt oder Schlüssel falsch.
dnserrKeine gültige IP übergeben oder der Eintrag ließ sich nicht schreiben (bei Schreibfehlern mit Status 500).
notfqdnKein Name angegeben.
abuse (429)Mehr als 20 falsche Versuche von dieser IP.

Aktualisiere nur, wenn sich die Adresse ändert. Der Hub antwortet bei unveränderter Adresse zwar mit nochg, zählt aber jede Anfrage.

Weitere Adressen

Das Panel selbst ist für Menschen gebaut und hat keine stabile JSON-Schnittstelle. Zwei Adressen liefern Dateien aus, brauchen aber eine angemeldete Sitzung:

AdresseInhalt
/invoice/ID.pdfRechnung als PDF (ZUGFeRD / Factur-X, mit eingebetteter XML). Nur für den Besteller und Administratoren.
/invoice/ID.xmlDie Rechnungsdaten allein als CII-XML, Profil EN 16931.

Die Gestaltung der PDF und die Felder der XML stehen im Handbuch.

Änderungsverlauf

Pläne bestellen, Rechnungen, neue Dokumentation1.6.09. Oktober 2026
  • Pläne bestellen: Laufzeit und Zahlungsart wählen, Rechnungsanschrift angeben (E-Mail kommt aus dem Konto). Wer nicht angemeldet ist, wird nach Anmeldung oder Registrierung direkt zur Bestellung geführt.
  • Rechnungen im ZUGFeRD-/Factur-X-Format (PDF mit eingebetteter XML, Profil EN 16931), ohne Umsatzsteuer, fortlaufend nummeriert und per E-Mail verschickt. Zahlungseingang bestätigen Administratoren unter „Bestellungen“; danach gilt der Plan für die Laufzeit.
  • Die Dokumentation ist ein ausführliches Handbuch mit Grafiken und nachgebauten Ansichten; FAQ, API-Beschreibung und Datenschutzerklärung sind überarbeitet.
Neue Startseite mit Plänen1.5.08. Oktober 2026
  • Die Startseite ist neu gestaltet wie bei einem Hosting-Anbieter: Leistungen, Pläne mit Preis und Limits und der Weg zum Start.
Übersichtlicheres Menü und Domains1.4.08. Oktober 2026
  • Das Menü ist neu gegliedert (Server, Netzwerk, Zugriff, System); zusammengehörige Seiten sind Reiter.
  • Domains: Übersicht mit Zertifikat, Verteilung auf Server und Anzahl der Einträge; DNS-Einträge nach Zone, Mail und Adressen sortiert.
  • Einstellungen: Benachrichtigungen auf einer Seite, Betreiber-Angaben als eigene Seite; die Server-Liste zeigt die öffentlichen IP-Adressen (IPv4 und IPv6).
Reverse-Proxy: Pfade sperren1.3.28. Oktober 2026
  • Im Reverse-Proxy lassen sich je Ziel Pfade sperren (z. B. /_synapse/admin) oder auf bestimmte IPs beschränken; alle anderen bekommen 403.
Matrix-.well-known1.3.18. Oktober 2026
  • Im Reverse-Proxy lässt sich für die weitergeleitete Hauptdomain das Matrix-.well-known einschalten: Clients finden den Homeserver mit dem Servernamen (z. B. nodebay.de → matrix.nodebay.de).
Reverse-Proxy für beliebige Domains1.3.08. Oktober 2026
  • Reverse-Proxy (nur Administratoren): Domains über den Hub auf interne oder externe Ziele weiterleiten – mit Let’s-Encrypt-Zertifikat, automatischer Erneuerung, WebSockets, optionaler IP-Zugriffsliste und frei wählbarem Host-Header.
Hauptdomain auf www. weiterleiten1.2.18. Oktober 2026
  • Bei einer Startseiten-Domain mit www. leitet die Hauptdomain ohne www jetzt automatisch (HTTP und HTTPS) auf die Startseite weiter; die Hauptdomain ist im Zertifikat mit enthalten.
DNS-Einträge: Fenster, Bearbeiten, mehr Typen1.2.08. Oktober 2026
  • Neuer Eintrag öffnet ein Fenster; je Typ gibt es eine eigene Eingabemaske (A, AAAA, CNAME, TXT, MX, SRV, CAA, NS – auf dem Hub-Nameserver zusätzlich SPF, DKIM, DMARC und TLSA).
  • Einträge lassen sich jetzt bearbeiten: Wert, Name und TTL; das Fenster ist mit den bisherigen Angaben vorbelegt.
  • Hub-Nameserver: SPF (v=spf1 …), DKIM (Selektor, Schlüsselart, Schlüssel), DMARC (Richtlinie none/quarantine/reject, Berichts-Adressen) und TLSA (DANE) mit Prüfung der Eingaben.
  • Hub-Nameserver: Standard-TTL je Typ (TTL-Feld leer lassen), Minimum 5 Sekunden.
OVH Secondary entfernt1.1.18. Oktober 2026
  • OVH Secondary-Nameserver und der „Eigene Zugang“ mit OVH sind entfernt: OVH holt die Zone zu langsam ab. Bestehende „Eigene Zugänge“ laufen als reiner Hub-Nameserver weiter.
  • Als zweiten Nameserver nutzt du einen eigenen Server mit Agent (Secondary-Nameserver auf eigenen Servern); „Neu an Secondaries senden“ lädt die Zone sofort neu.
DNS-Zugänge und eigener Nameserver1.1.07. Oktober 2026
  • Neuer Zugang öffnet jetzt ein Fenster. Neue Dienste: deSEC, Hetzner Cloud DNS und OVH Secondary-Nameserver (Domain und IPv4 des Servers werden bei OVH eingetragen).
  • Eigener Nameserver auf dem Hub (NSD), optional kombiniert mit OVH als Secondary: Der Administrator richtet den „Eigenen Zugang“ einmal ein, alle Benutzer binden ihre Domains darüber ein – jede Domain bekommt ihre eigene Zone.
  • Knopf Neu an OVH senden auf der Domain-Seite: Zone neu laden und die Secondaries benachrichtigen.
  • Secondary-Nameserver auf eigenen Servern: Der Administrator wählt Server der Verwaltung; der Agent richtet NSD ein und holt alle Zonen automatisch vom Hub.
  • DNS-Zugänge lassen sich nachträglich bearbeiten; geheime Felder bleiben unverändert, wenn du sie leer lässt.
  • NS-Einträge lassen sich wie andere Einträge über die API des Dienstes anlegen und löschen.
  • OVH-Eigentumsnachweis (TXT ownercheck) wird im Panel begleitet: Status „ausstehend“, Prüfwert eintragen, erst bestätigen, wenn der Eintrag sichtbar ist. Standard-Secondary: sdns2.ovh.net.
  • Panel und Startseite können getrennte Adressen haben (z. B. hub. und www.).
Nodebay – neuer Name, neue Startseite1.0.06. Oktober 2026
  • Öffentliche Startseite mit FAQ, Dokumentation, API-Beschreibung, Datenschutz und Impressum; die Betreiber-Angaben pflegt der Administrator in den Einstellungen.
  • Zertifikate auf Server verteilen: Domain wählen, Server eintragen, Dienst zum Neuladen aus einer festen Liste – nach jeder Erneuerung automatisch.
  • Neue Optik: Anmeldung, Registrierung, Übersicht und Profil; die Übersicht zeigt Konto, Server und letzte Anmeldungen.
  • Hub und Grundeinrichtung erkennen zwei Netzwerkkarten (öffentlich und intern) selbst und richten Firewall und Panel-Zugang danach ein.
  • Rollen-Tabelle mit fester Kopfzeile, „Alle“-Schaltern je Bereich und Ziehen über mehrere Kästchen.
Konto und Server0.9.06. Oktober 2026
  • Registrierung mit persönlichen Angaben, Änderungs-Passwort und Benutzernamen ändern (Link per E-Mail, Code per Matrix oder Telegram).
  • Eigene Server: Benutzer binden ihre Server selbst an; nur der Besitzer steuert sie, Meldungen gehen nur an ihn.
  • Reihenfolge der Meldungskanäle (Standard: Matrix, Telegram, E-Mail), je Benutzer einstellbar.
  • Software-Seite in Reitern; Hub-Update und Prüfung laufen im Hintergrund.
Software-Update, Fernsteuerung, Mail-Design0.8.06. Oktober 2026
  • Hub und Server per Klick aus Git aktualisieren, mit automatischer Prüfung auf neue Versionen.
  • Fernsteuerung per Bot: Status, Updates und Neustart mit Bestätigungscode.
  • Ein einheitliches Layout für alle HTML-Mails mit Editor und Vorschau.
  • Matrix-Konto direkt aus dem Panel anlegen.
Matrix als Kanal0.7.05. Oktober 2026
  • Matrix neben Telegram und E-Mail für Meldungen und Anmelde-Codes, Wächter für Ausfälle und gegenseitige Überwachung.
Grundlagen0.1.0Anfang
  • Panel mit Anmeldung und Zwei-Faktor, Rollen und Gruppen, Domains mit Wildcard-Zertifikaten, Server-Verwaltung über Agents, Telegram-Bot.