Überblick
Nodebay ist eine Verwaltung für eigene Linux-Server, Domains und Zertifikate. Du bekommst ein Web-Panel, einen Bot für Telegram und Matrix und einen kleinen Agenten, der auf jedem Server läuft. Wer Hosting anbietet, kann außerdem Pläne mit Limits festlegen, die Kunden selbst bestellen. Die Rechnung dazu entsteht automatisch.
Der Hub ist der Rechner, auf dem das Panel läuft. Er kennt alle Benutzer, Server und Domains und ist der einzige Teil, der von außen angesprochen wird. Ein Agent ist ein kleines Programm auf einem angebundenen Server. Er meldet Zustand und Updates an den Hub und führt Aufträge aus. Er baut die Verbindung selbst auf, darum braucht der Server keinen offenen Port und darf auch hinter einem Router mit NAT stehen.
Was du damit tun kannst
| Bereich | Inhalt |
|---|---|
| Anmeldung | Passwort plus zweiter Faktor (Authenticator-App, Code per Matrix, Telegram oder E-Mail, Bestätigung per Push). Sperren bei Fehlversuchen, IP-Regeln, Hinweis bei neuer IP. |
| Server | Beliebig viele Agents, Zustand, Updates, Neustarts, eigene Befehle als Plugins. Benutzer binden ihre eigenen Server selbst an. |
| Domains und DNS | DNS-Zugänge bei KeyHelp, OVHcloud, Google Cloud DNS, deSEC und Hetzner Cloud DNS, dazu ein eigener Nameserver auf dem Hub. DNS-Einträge bearbeiten, Zertifikate ausstellen. |
| DynDNS | Eigene Adressen unter der DynDNS-Domain des Hubs, aktualisiert über die übliche DynDNS2-Schnittstelle. |
| Proxy | Reverse-Proxy für Domains und Stream-Proxy für TCP-Ports (nur Administratoren). |
| Meldungen | Ausfälle, Updates, neue Anmeldungen und mehr, wahlweise per Matrix, Telegram oder E-Mail. |
| Pläne und Rechnungen | Limits je Plan, Bestellung im Panel, Rechnung als ZUGFeRD-PDF ohne Umsatzsteuer. |
| Rollen | Jede Funktion hat eine eigene Rolle. Gruppen bündeln Rollen, Benutzer erben sie. |
Alles läuft mit der Python-Standardbibliothek und SQLite. Es gibt keine Datenbank, keinen Container-Dienst und keine Cloud, die du dazu mieten müsstest.
Erste Schritte
Im Moment legt nur ein Administrator Konten an. Frag beim Betreiber nach, wenn du eins brauchst.
- Konto anlegen oder anmelden. Bei der Registrierung gibst du Benutzername, E-Mail-Adresse, Passwort und ein Änderungs-Passwort an. Das zweite Passwort schützt später heikle Änderungen wie den Benutzernamen. Name und Adresse sind je nach Einstellung Pflicht.
- E-Mail bestätigen. Du bekommst einen Link, der 48 Stunden gilt. Erst danach kannst du dich anmelden. Bei Registrierung mit Freigabe schaltet ein Administrator dein Konto zusätzlich frei.
- Zweiten Faktor einrichten. Im Profil unter Sicherheit legst du eine Authenticator-App an oder verknüpfst Telegram oder Matrix. Ohne eine eigene Methode bekommst du den Code per E-Mail.
- Server anbinden. Unter Eigene Server legst du einen Server an und führst den angezeigten Befehl dort als root aus (nur mit passender Rolle und innerhalb deines Plans).
- Domain einbinden. Unter DNS-Zugänge hinterlegst du deinen Anbieter, unter Domains die Domain. Danach kannst du DNS-Einträge pflegen und Zertifikate ausstellen lassen.
Welche Menüpunkte du siehst, hängt von deinen Rollen ab. Fehlt dir etwas, das du brauchst, bitte einen Administrator, dich in eine passende Gruppe zu setzen.
Konto und Sicherheit
Anmelden
Gib Benutzername oder E-Mail und dein Passwort ein. Danach verlangt das Panel einen zweiten Faktor. Die Methode, die zuerst versucht wird, hängt von deinen Einstellungen ab. Du kannst auf der Eingabeseite jederzeit auf einen anderen Weg wechseln, sofern er eingerichtet ist.
| Methode | So funktioniert sie |
|---|---|
| Authenticator-App | Sechsstelliger Code aus einer App wie Aegis, FreeOTP oder Google Authenticator. Einen QR-Code gibt es nicht, du trägst den Schlüssel von Hand ein. |
| Matrix | Der Bot schickt dir den Code als Nachricht. Voraussetzung ist die Verknüpfung im Profil. Verschlüsselte Räume kann der Bot nicht lesen. |
| Telegram | Dasselbe über Telegram. Verknüpft wird mit /link TOKEN im Chat mit dem Bot. |
| Der Code kommt an die Adresse deines Kontos. Er gilt fünf Minuten und lässt sich höchstens drei Mal falsch eingeben. | |
| Push (ntfy) | Eine Anfrage mit den Knöpfen „Bin ich“ und „Nicht ich“ geht an deine Geräte. Antippen genügt, ein Code ist nicht nötig. Ob das angeboten wird, hängt vom Plan ab. |
Angemeldet bleiben
Mit dem Häkchen bleibst du für die eingestellte Zeit angemeldet (Standard bis zu 24 Stunden, der Administrator darf 0 bis 168 Stunden einstellen). Die Sitzung bleibt an deine IP-Adresse gebunden. Ohne Häkchen wirst du nach kurzer Untätigkeit abgemeldet.
Passwörter
Das Anmelde-Passwort musst du mit mindestens der vorgeschriebenen Länge und Mischung wählen; es wird nur als Hash (PBKDF2) gespeichert. Das Änderungs-Passwort ist ein zweites, davon verschiedenes Passwort. Du brauchst es, um den Benutzernamen zu ändern, und zusammen mit dem Anmelde-Passwort, um es selbst zu ändern. Hast du das Anmelde-Passwort vergessen, wählst du auf der Anmeldeseite Passwort vergessen?. Der Link kommt per E-Mail, gilt eine Stunde und beendet alle laufenden Sitzungen.
Benutzernamen ändern
Das geht in drei Schritten: Neuen Namen und Änderungs-Passwort eingeben, den Link in der E-Mail öffnen und den Code bestätigen, der per Matrix oder Telegram kommt. Es muss also mindestens einer dieser beiden Kanäle verknüpft sein. Der Name darf aus Kleinbuchstaben, Ziffern und _ . - bestehen, 3 bis 24 Zeichen, und beginnt mit einem Buchstaben.
Schutz vor Missbrauch
- Nach zu vielen Fehlversuchen wird die IP-Adresse und der Benutzername für 15 Minuten gesperrt.
- Pro Benutzer lassen sich erlaubte IP-Adressen und Netze eintragen.
- Meldet sich jemand von einer IP an, die bisher nicht vorkam, bekommst du eine Meldung.
- Der Anmeldeverlauf im Profil zeigt Zeit, IP und Methode.
- Formulare sind gegen Fremdaufrufe (CSRF) gesichert, das einzige Cookie ist das Sitzungs-Cookie.
Telegram und Matrix verknüpfen
- Öffne im Profil Sicherheit und erzeuge einen Token.
- Schreibe dem Bot
/link TOKEN(Telegram) beziehungsweise sende den Token an den Bot in Matrix. - Danach kannst du dort Meldungen und Anmelde-Codes empfangen und Befehle nutzen.
Gibt es einen Matrix-Server des Betreibers, kannst du dir im Profil über Matrix-Konto anlegen ein Konto erstellen lassen. Die Zugangsdaten kommen per E-Mail.
Hast du dich ausgesperrt, kann ein Administrator Passwort, Änderungs-Passwort und Zwei-Faktor-Einstellung zurücksetzen. Wer root-Zugriff auf den Hub hat, findet die Befehle im Abschnitt Installation und Betrieb.
Pläne, Bestellung und Rechnung
Jeder Benutzer hat einen Plan. Er legt fest, wie viele Server, Domains und DNS-Zugänge du anlegen darfst und wie weit du Einstellungen ändern kannst. Wer keinen Plan zugewiesen bekommt, hat den Standard-Plan. Administratoren unterliegen keinem Plan.
| Merkmal | Default | Bronze | Silber | Gold | Platin | Diamant |
|---|---|---|---|---|---|---|
| Preis je Monat | kostenlos | 3,99 € | 7,99 € | 14,99 € | 24,99 € | 39,99 € |
| Eigene Server | 5 | 10 | 20 | 35 | 60 | 100 |
| Domains | 5 | 10 | 20 | 35 | 60 | 100 |
| Eigene DNS-Zugänge | 0 | 1 | 3 | 5 | 7 | 10 |
| DynDNS-Adressen | 0 | 10 | 20 | 35 | 60 | 100 |
| DynDNS auf Hub-Domains | 2 | 10 | 20 | 35 | 60 | 100 |
| Kleinste TTL | 600 s | 450 s | 300 s | 180 s | 90 s | 30 s |
| Update-Prüfung ab | 1 Tag | 12 Stunden | 8 Stunden | 6 Stunden | 3 Stunden | 1 Stunde |
| Meldungskanäle | E-Mail, Push (Handy, Tablet, PC) | E-Mail, Telegram, Matrix, Push (Handy, Tablet, PC) | E-Mail, Telegram, Matrix, Push (Handy, Tablet, PC) | E-Mail, Telegram, Matrix, Push (Handy, Tablet, PC) | E-Mail, Telegram, Matrix, Push (Handy, Tablet, PC) | E-Mail, Telegram, Matrix, Push (Handy, Tablet, PC) |
Die Zahlen gelten pro Benutzer. Bei „unbegrenzt“ gibt es keine Obergrenze, bei 0 ist die Funktion aus. Die kleinste TTL ist der Mindestwert, auf den DNS-Einträge gesetzt werden dürfen; ein kleinerer Wert wird beim Speichern angehoben. Der Abstand der Update-Prüfung legt fest, wie oft deine Server nach Updates durchsucht werden dürfen.
Mein Plan
Die Seite Mein Plan zeigt, wie viel du von jedem Limit schon benutzt, und listet die Pläne, die du bestellen kannst.
Einen Plan bestellen
- Wähle auf der Startseite oder unter Mein Plan den Plan und klicke Bestellen. Der kostenlose Plan hat statt dessen den Knopf Registrieren.
- Hast du noch kein Konto, legst du eins an. Bist du nicht angemeldet, meldest du dich an. Danach landest du direkt im Bestellformular, auch nach der E-Mail-Bestätigung bei neuen Konten.
- Wähle die Laufzeit (1, 3, 6 oder 12 Monate) und die Zahlungsart. Angeboten werden nur Zahlungsarten, für die der Betreiber Daten hinterlegt hat.
- Trage die Rechnungsanschrift ein: Vorname, Nachname, Straße, Hausnummer, Postleitzahl, Stadt und Land sind Pflicht, eine Firma ist freiwillig. Steht schon eine Adresse im Profil, ist sie vorausgefüllt. Die E-Mail-Adresse kommt aus deinem Konto.
- Mit Zahlungspflichtig bestellen wird die Bestellung angelegt. Du siehst sofort die Zahlungsangaben, die Rechnung steht als PDF bereit und geht zusätzlich per E-Mail an dich.
- Zahle innerhalb von 14 Tagen mit dem Rechnungsnummer als Verwendungszweck. Sobald der Zahlungseingang bestätigt ist, gilt der Plan für die gewählte Laufzeit. Du bekommst eine E-Mail.
Unter Bestellungen findest du alle deine Bestellungen mit Status (offen, bezahlt, storniert), das Rechnungs-PDF und die XML-Datei. Eine offene Bestellung kannst du dort stornieren. Die Rechnung bleibt als Nachweis bestehen.
Bestellst du denselben Plan noch einmal, solange er läuft, hängt sich die neue Laufzeit hinten an. Bei einem anderen Plan beginnt die Laufzeit mit dem Zahlungseingang, nach Ablauf gilt wieder der Standard-Plan.
Die Rechnung
Die Rechnung ist eine PDF im Format ZUGFeRD / Factur-X (Profil EN 16931). In der PDF steckt als Anhang die Datei factur-x.xml mit allen Rechnungsdaten, die ein Buchhaltungsprogramm direkt einliest. Jede Rechnung hat eine fortlaufende Nummer nach dem Muster NB-2026-0001.
Auf der Rechnung steht keine Umsatzsteuer, weil das Angebot rein privat und ohne Gewinnerzielungsabsicht betrieben wird. Der Hinweis steht im Rechnungstext und in den XML-Daten (Steuerkategorie „O“, nicht steuerbar).
Die PDF wird vom Hub selbst erzeugt, ohne Zusatzprogramm. Dabei wird die Schrift nicht eingebettet und es gibt kein Farbprofil. Sie ist deshalb kein streng geprüftes PDF/A-3. Programme, die ZUGFeRD lesen, finden die XML trotzdem. Wer eine amtliche Validierung braucht, sollte die Datei vorher mit einem Prüfwerkzeug testen.
Für Betreiber: Bestellungen einrichten und abwickeln
- Trage unter System → Betreiber Name, Straße, Ort und E-Mail ein. Diese Angaben stehen als Rechnungsaussteller auf jeder Rechnung.
- Öffne Bestellungen → Zahlungsdaten und hinterlege Kontoinhaber und IBAN (BIC, Bank und PayPal sind freiwillig). Ohne Zahlungsdaten sind Bestellungen gesperrt.
- Lege unter Pläne einen Plan mit Preis an (Preis in Cent je Monat).
- Geht eine Zahlung ein, öffnest du Bestellungen → Alle Bestellungen und klickst bei der Bestellung auf Zahlung eingegangen. Der Plan wird dem Benutzer zugewiesen und er bekommt eine E-Mail.
Die nötigen Rollen sind orders.own (eigene Bestellungen, in den üblichen Gruppen enthalten) und orders.manage (Zahlungsdaten, Zahlungseingang, alle Bestellungen; nur Admin). Pläne selbst verwaltest du mit plans.manage, Benutzern weist du sie mit plans.assign von Hand zu, auch befristet.
Server und Agents
Ein Server wird über den Agenten angebunden. Es gibt zwei Arten: System-Server gehören der Verwaltung und werden von Administratoren gesteuert. Eigene Server gehören dem Benutzer, der sie angebunden hat. Nur der Besitzer führt dort Befehle, Updates und Neustarts aus; die Meldungen gehen nur an ihn. Wer „Server aller Benutzer“ sehen darf, sieht fremde Server in der Liste und kann sie entfernen, mehr nicht.
Server anbinden
- Öffne Server (bei dir Eigene Server) und klicke auf Server anlegen.
- Gib einen Namen ein. Das Panel zeigt dir einen Befehl der Form
curl -fsSL 'https://…/agent/enroll?t=TOKEN' | sudo bash. - Führe den Befehl auf dem Server als root aus. Er lädt den Installer und die Zugangsdaten vom Hub, richtet den Agenten ein und startet ihn.
- Nach wenigen Sekunden steht der Server in der Liste. Der Befehl gilt 30 Minuten und nur einmal. Mit Installationsbefehl erzeugst du einen neuen, mit Neuer Schlüssel tauschst du den Schlüssel des Servers.
Unterstützt sind Debian, Ubuntu, AlmaLinux, Arch und Alpine. Den Schlüssel des Servers zeigt das Panel nur ein Mal. Er ist verschlüsselt in der Datenbank abgelegt.
Was der Agent macht
- Er meldet sich regelmäßig beim Hub (Langabfrage, bis zu 25 Sekunden Wartezeit) und holt Aufträge ab.
- Ein Server gilt nach 75 Sekunden ohne Kontakt als offline. Befehle für einen Server, der offline ist, verfallen nach 2 Minuten, Update-Aufträge nach 3,5 Stunden.
- Er führt nur feste Befehle aus: eingebaute und Plugins in
/opt/nbagent/plugins/. Skripte können mitnbagent.py notify "Text"eine Meldung an den Besitzer schicken. - Er aktualisiert sich selbst, wenn der Hub eine neuere Version bereithält. Sehr alte Agents müssen einmal von Hand aktualisiert werden.
Einstellungen je Server
Über Aktionen → Einstellungen (wenn dein Plan es erlaubt): Meldungen zu diesem Server ein oder aus, und die Update-Prüfung (Standard, aus oder ein eigener Abstand, nie kürzer als der Plan erlaubt).
Sicherheit der Verbindung
- Anfragen und Antworten sind mit HMAC-SHA-256 signiert, mit Zeitstempel und Einmal-Wert (Nonce).
- Der Agent prüft das Hub-Zertifikat über dessen SHA-256-Fingerabdruck.
- Nach 30 Fehlversuchen sperrt der Hub die IP. Der Agent-Port (Standard 8444) liefert nur
/agent/aus, alles andere antwortet mit 404, höchstens 120 Anfragen pro Minute je IP. - Der Administrator kann unter Einstellungen → Agent-API erlaubte Quell-IPs eintragen und den älteren Zugang über die Panel-Ports abschalten.
- Der Agent läuft unter systemd gehärtet und führt Root-Aufgaben nur über einen Socket-Helfer mit festen Aktionen aus, ohne
sudo.
Fernsteuerung des Hubs
Mit der Rolle remote.control lassen sich Hub-Status und Updates per Bot abfragen (/hstatus, /hupdates). /hupdate und /hreboot verlangen zusätzlich einen frischen Zwei-Faktor-Code im Befehl. Nach 5 Fehlversuchen ist 15 Minuten Pause.
Updates
Der Hub prüft alle 6 Stunden, ob auf deinen Servern Paket-Updates anliegen, und meldet neue kritische Updates einmal. Je nach System arbeitet er mit apt, dnf, pacman oder apk. Teil-Updates unter Arch gibt es nicht, es wird immer komplett aktualisiert. Ob ein Neustart nötig ist, steht in der Liste (in Containern entfällt der Kernel-Vergleich).
| Befehl | Wirkung |
|---|---|
/update list [Server] | Zeigt verfügbare Updates, kritische zuerst. |
/update get [Server] | Lädt Pakete, installiert nichts. |
/update run PAKET [Server] | Aktualisiert ein Paket. Es wird nie etwas Neues installiert. |
/upgrade [Server] | Vollständiges Upgrade. |
Ohne Servernamen gelten list und get für alle Server, run und upgrade nur für den Hub. Lange Aktionen laufen im Hintergrund, das Protokoll liegt unter /var/log/nbupd.log.
Software des Hubs aktualisieren
Die Seite Software (Rolle system.update, nur Administratoren) holt neue Versionen aus einem Git-Repository. Du trägst Repository und Zweig ein, hinterlegst den angezeigten öffentlichen Schlüssel als lesenden Deploy-Key und klickst auf Prüfen. Hub aktualisieren sichert vorher und fällt bei einem Fehler zurück. Danach verteilst du mit Alle Server aktualisieren die neuen Agents, mit Prüfsumme und Rückfall. Eine automatische Prüfung lässt sich stündlich einstellen. Den Agenten eines eigenen Servers aktualisiert sein Besitzer auf der Seite Server.
Domains, DNS und Zertifikate
DNS-Zugänge
Ein DNS-Zugang sind die Anmeldedaten bei dem Anbieter, bei dem deine Domain liegt. Nodebay kann KeyHelp, OVHcloud, Google Cloud DNS, deSEC und Hetzner Cloud DNS ansprechen. Dazu kommt der Hub-Nameserver. Die Zugangsdaten liegen verschlüsselt in der Datenbank, eigene Zugänge sieht nur ihr Besitzer. Über Neuer Zugang legst du einen an, über Bearbeiten änderst du ihn; geheime Felder bleiben unverändert, wenn du sie leer lässt.
Domains einbinden
Unter Domains bindest du eine Domain über einen Zugang ein. Jede Domain gehört einem Benutzer. Die Übersicht zeigt Zertifikat, Verteilung auf Server und die Anzahl der Einträge. Ohne DNS-Zugang geht es auch: Dann nutzt Nodebay AcmeDNS, du setzt einmal einen CNAME für _acme-challenge und das Panel erledigt den Rest.
DNS-Einträge
Über Neuer Eintrag legst du Einträge an. Jeder Typ hat eine eigene Maske, bestehende Einträge änderst du mit Bearbeiten. Sortiert sind die Einträge nach Zone, Mail und Adressen.
| Typ | Verwendung | Standard-TTL (Hub-Nameserver) |
|---|---|---|
| A, AAAA | Adresse einer Domain (IPv4, IPv6). | 5 Sekunden |
| CNAME | Alias auf einen anderen Namen. | je nach Typ |
| MX | Mailserver mit Priorität. | 4 Stunden |
| TXT | Freier Text, etwa Nachweise. | je nach Typ |
| SRV, CAA, NS | Dienste, Zertifikatsstellen, Nameserver. | je nach Typ |
| SPF | Absender-Richtlinie (v=spf1 …). | 10 Minuten |
| DKIM | Mail-Signatur mit Selektor, Schlüsselart und Schlüssel. | 1 Stunde |
| DMARC | Richtlinie none, quarantine oder reject, mit Berichts-Adressen. | je nach Typ |
| TLSA | DANE: Zertifikat im DNS festnageln. | je nach Typ |
SPF, DKIM, DMARC und TLSA gibt es nur auf dem Hub-Nameserver. Lässt du das TTL-Feld leer, nimmt Nodebay den Standard des Typs. Der kleinste erlaubte Wert ist 5 Sekunden, und dein Plan kann einen höheren Mindestwert vorgeben.
Hub-Nameserver und Secondaries
Der Administrator kann auf dem Hub einen eigenen Nameserver (NSD) einrichten. Wer eine Domain darüber einbindet, bekommt eine eigene Zone; das Panel zeigt die Nameserver, die du bei deinem Registrar eintragen musst. Als zweiten Nameserver nimmst du einen Server der Verwaltung dazu: Der Agent richtet dort NSD ein und holt alle Zonen automatisch vom Hub. Neu an Secondaries senden lädt die Zone sofort neu. Das frühere OVH-Secondary gibt es nicht mehr, weil OVH Zonen zu langsam abholt.
Zertifikate
Nodebay stellt Let’s-Encrypt-Zertifikate mit acme.sh aus, auf Wunsch Wildcard-Zertifikate (example.de und *.example.de, EC-256). Mit DNS-Zugang setzt das Panel die nötigen TXT-Einträge selbst und löscht sie danach wieder. Die Erneuerung beginnt 30 Tage vor Ablauf und wird alle 6 Stunden geprüft. Für Tests gibt es einen Staging-Schalter ohne Limits. Das Zertifikat liegt in /var/lib/nodebay/certs/<ID>/; der Download ist an eine Rolle gebunden und wird protokolliert.
Zertifikate auf Server verteilen
In der Domain-Übersicht wählst du Ziel-Server und einen Dienst aus einer festen Liste, der nach der Erneuerung neu geladen wird. Der Agent holt das Zertifikat signiert vom Hub und lädt den Dienst. Das geschieht nach jeder Erneuerung von selbst.
Adresse des Panels
Unter Einstellungen → Adresse & HTTPS legt der Administrator fest, unter welchem Namen das Panel erreichbar ist. Ohne Domain läuft es auf Port 8443 mit selbst signiertem Zertifikat. Mit Domain holt der Hub ein Zertifikat per HTTP-Prüfung und leitet Port 80 auf 443 weiter. Panel und Startseite dürfen getrennte Adressen haben, zum Beispiel hub. und www.. Steht die Startseite unter www., leitet die Hauptdomain ohne www automatisch dorthin weiter.
DynDNS
Mit DynDNS bekommst du einen festen Namen für einen Anschluss mit wechselnder IP-Adresse. Du wählst unter DynDNS eine freie Subdomain der DynDNS-Domain des Hubs, das Panel prüft, ob sie noch frei ist, und legt den Eintrag an. Wie viele Adressen du haben darfst, steht in deinem Plan.
Zum Aktualisieren ruft dein Router oder ein Skript die Update-Adresse auf. Als Benutzername dient die Adresse, als Passwort der Zugangsschlüssel, den du beim Anlegen siehst.
curl -u "name.example.de:SCHLÜSSEL" "https://ddns.example.de/nic/update?hostname=name.example.de&myip=203.0.113.7&myipv6=2001:db8::7"
Ohne myip verwendet der Hub die Adresse, von der die Anfrage kommt. Das Format ist DynDNS2, wie es FritzBox und die meisten Router kennen: Trage dort die Update-URL, die Domain, Benutzername und Passwort ein.
| Antwort | Bedeutung |
|---|---|
good IP | Der Eintrag wurde geändert. |
nochg IP | Die Adresse war schon aktuell. |
badauth (401) | Adresse oder Schlüssel stimmen nicht. |
dnserr | Die IP war ungültig oder der Eintrag ließ sich nicht schreiben. |
abuse (429) | Zu viele falsche Versuche von dieser IP. |
Die DynDNS-Domain muss als normale Domain im Panel eingebunden sein, am besten über den Hub-Nameserver. Die Domain und die Adresse der Schnittstelle legt der Betreiber fest.
Reverse-Proxy und Stream-Proxy
Beide Funktionen stehen unter Netzwerk und sind Administratoren vorbehalten (Rolle proxy.manage). Das Panel schreibt nur eine Beschreibung; ein Root-Helfer prüft jeden Eintrag streng, schreibt die nginx-Konfiguration (mit Rückfall bei Fehlern) und setzt die Firewall-Regeln.
Reverse-Proxy
Leitet eine Domain über den Hub auf ein internes oder externes Ziel weiter, etwa app.example.de auf 192.168.1.20:8080. Der A-Record der Domain muss auf den Hub zeigen. Du bekommst ein Let’s-Encrypt-Zertifikat (HTTP-Prüfung) mit automatischer Erneuerung. Einstellbar sind WebSockets, Upload-Größe, der Host-Header, eine IP-Zugriffsliste und je Ziel gesperrte Pfade (zum Beispiel /_synapse/admin) oder Pfade, die nur bestimmte IPs erreichen. Alle anderen bekommen 403. Für Matrix kann die weitergeleitete Hauptdomain das .well-known ausliefern, damit Clients nur den Servernamen kennen müssen (nodebay.de führt zu matrix.nodebay.de).
Stream-Proxy
Reicht einen TCP-Port des Hubs (IPv4 und IPv6) an ein privates Ziel durch, TLS bleibt dabei unangetastet. Optional kommen das PROXY-Protokoll, eine Quell-IP-Liste und ein Verbindungslimit je IP dazu. Das Ziel muss eine private IP sein; SSH, DNS, 80, 443 sowie die Panel- und Agent-Ports sind gesperrt. Der Knopf Mail-Satz anlegen erzeugt die Ports 25, 465, 587 und 993 auf einmal. Der Stream-Proxy braucht das nginx-Modul libnginx-mod-stream.
Meldungen und Bot
Der Hub schickt dir Meldungen über den Kanal deiner Wahl: Anmeldung von neuer IP, Zertifikat, Registrierung wartet, Server nicht erreichbar oder wieder da, kritische Updates. Angeboten wird dir nur, wofür du die Rolle hast. Anmelde-Codes, E-Mail-Bestätigung und Passwort-Reset sind immer aktiv.
Unter Profil → Benachrichtigungen wählst du je Ereignis Telegram, Matrix und E-Mail. Die Reihenfolge der Kanäle (Standard Matrix, Telegram, E-Mail) bestimmt, wohin eine Meldung geht: an den ersten Kanal, der bereit ist, oder mit dem Häkchen „an alle“ an jeden. Welche Kanäle du überhaupt nutzen darfst, steht in deinem Plan.
E-Mails sind HTML mit Klartext-Alternative und teilen sich ein gemeinsames Layout. Der Administrator gestaltet es unter System → E-Mail-Design mit Vorschau und kann es per Agent an die Server verteilen.
Löschfristen
Nachrichten des Bots und deine Befehle werden nach 24 Stunden aus dem Chat gelöscht. Einstellbar sind bis zu 47 Stunden, weil Telegram Nachrichten von Bots danach nicht mehr löschen lässt; 0 heißt nie. Es gibt eigene Fristen je Nachrichtenart (Antworten, Codes, SSH-Meldungen, Benachrichtigungen). Angepinnte Nachrichten bleiben. E-Mails lassen sich nicht zurückholen.
Bot-Befehle
Jeder verknüpfte Chat bekommt genau die Befehle, die seine Rollen erlauben. Das Menü wird automatisch aktualisiert.
| Befehl | Wirkung |
|---|---|
/whoami | Zeigt dein Konto. |
/link | Verknüpft Telegram mit deinem Konto (mit dem Token aus dem Profil). |
/unlink | Löst die Verknüpfung. |
/help | Zeigt genau die Befehle, die deine Rollen erlauben. |
/clear | Räumt deinen Chat mit dem Bot auf. |
/log / logins | Dein eigenes Protokoll und deine letzten Anmeldungen. |
/mfa | Zeigt deine Zwei-Faktor-Methoden. |
/clear | Eigenen Chat leeren |
/hreboot | Neustart mit Bestätigungscode |
/hstatus | Zustand eines Servers |
/hupdate | Upgrade mit Bestätigungscode |
/hupdates | Verfügbare Updates |
/servers | Deine Server mit Status |
/srv | Befehl auf einem Server |
/status | Zustand der Server |
/update | Updates anzeigen, laden, einspielen |
/upgrade | Server vollständig aktualisieren |
Ein Bot-Token darf nur von einem Programm benutzt werden, sonst überschreiben sich die Befehlsmenüs. Für jeden Hub gehört ein eigener Bot dazu.
Wächter
Fällt der Hub aus, kann ein getrennter Wächter das in Matrix melden und die Entwarnung schicken. Der Hub überwacht umgekehrt den Matrix-Server.
Rollen, Gruppen und Benutzer
Jede Funktion und jede Einstellung hat eine eigene Rolle, zum Beispiel users.disable oder settings.mail. Rollen werden Gruppen zugewiesen, Benutzer erben sie über ihre Gruppen. Mitgeliefert sind Benutzer, Moderator, Supporter, Editor, Viewer und Admin; eigene Gruppen kannst du anlegen. Die Rechte eines Benutzers sind die Summe aller Rollen seiner Gruppen. Die Gruppe Admin hat immer alle Rollen, auch neue.
Auf der Seite Rollen schaltet ein Kästchen unter dem Gruppennamen alle Rollen der Gruppe, die Bereichszeile alle Rollen eines Bereichs. Mit gedrückter Maustaste setzt du mehrere Kästchen auf einmal. Die Kopfzeile bleibt beim Scrollen stehen. Die Standardzuordnung neuer Rollen wird nur einmal gesetzt; was ein Administrator ändert, bleibt.
Schutzregeln
- Nur Administratoren verwalten Administratoren.
- Der letzte Administrator lässt sich nicht sperren oder löschen.
- Niemand kann sich selbst aussperren.
Benutzer verwalten
Unter Benutzer siehst du alle Konten, filterst nach Status und legst Konten an. Ein Konto kann aktiv, gesperrt oder wartend sein (auf E-Mail-Bestätigung oder Freigabe). Die Registrierung stellt der Administrator unter Einstellungen → Sicherheit auf geschlossen, offen oder mit Freigabe (Rolle users.approve). Sie braucht einen eingerichteten E-Mail-Server. Welche Angaben bei der Registrierung Pflicht sind, ist ebenfalls einstellbar.
Einstellungen für Administratoren
| Seite | Inhalt |
|---|---|
| Einstellungen → Allgemein | Name der Installation, Zeitzone, Logo und weitere Grundwerte. |
| Einstellungen → Sicherheit | Registrierung, Zwei-Faktor für alle, Sperren, Angemeldet bleiben. |
| Einstellungen → Profilfelder | Welche Angaben bei der Registrierung Pflicht sind. |
| Einstellungen → E-Mail | SMTP-Server für Mails des Hubs, Testversand. |
| Einstellungen → Telegram / Matrix / Push | Bot-Token, Löschfristen, Matrix-Server, ntfy-Server für Push. |
| Einstellungen → Benachrichtigungen | Ereignisse ein oder aus, Standardkanal, eigene Texte mit den Platzhaltern {message} {event} {site} {user}. |
| Einstellungen → Adresse & HTTPS | Domain des Panels, Zertifikat, Weiterleitungen. |
| Einstellungen → Agent-API | Port, erlaubte Quell-IPs, alten Zugang abschalten. |
| Einstellungen → Zertifikate | Let’s-Encrypt-Konto, Staging, AcmeDNS-Server, Wartezeit. |
| System → Betreiber | Angaben für Impressum, Datenschutz und Rechnungen; Begrüßungstext und Schalter der Startseite. |
| System → E-Mail-Design | Gemeinsames Layout aller HTML-Mails. |
| System → Protokoll | Anmeldungen und Aktionen mit IP und Zeit. |
| Zugriff → Pläne | Pläne anlegen, Limits und Preise, Standard-Plan festlegen. |
| Bestellungen | Zahlungsdaten, alle Bestellungen, Zahlungseingang. |
Die Startseite (diese öffentliche Seite) lässt sich unter System → Betreiber abschalten; dann landen Besucher direkt auf der Anmeldung. Die Pläne auf der Startseite stammen aus der Plan-Verwaltung.
Installation und Betrieb
Der Hub braucht ein frisches Debian 12/13 oder Ubuntu 22.04 oder neuer, root-Zugriff und einen SSH-Schlüssel. Richtwert sind 2 Kerne, 2 GB RAM und 16 GB Platz. Telegram ist optional; ohne Bot-Token laufen Panel, E-Mail und Matrix trotzdem.
sudo bash postinstall.sh: Grundeinrichtung mit Updates, SSH-Härtung mit Zwei-Faktor, Firewall und Kernel-Härtung.sudo bash install-nodebay.sh: installiert Panel, Bot, nginx, Benutzer, Rollen und die Agent-API.sudo cat /root/nodebay-summary.txt: zeigt Adresse, Benutzer und Start-Passwort.- Panel öffnen, anmelden, Passwort ändern, E-Mail-Server eintragen und optional eine Domain mit Zertifikat einrichten.
Aktualisieren geht im Panel über die Seite Software. Entfernen kannst du alles mit uninstall.sh.
Wichtige Pfade
| Pfad | Inhalt |
|---|---|
/opt/nodebay/ | Panel und Module |
/var/lib/nodebay/ | Datenbank, Schlüssel (nur root lesbar), Zertifikate, Zonen, Proxy-Dateien |
/etc/nodebay/ | Konfiguration und selbst signiertes Zertifikat |
/run/nodebay-helper.sock | Socket des Root-Helfers |
/opt/nbagent/, /etc/nbagent/agent.json | Agent |
/root/nodebay-summary.txt | Zusammenfassung der Installation |
Notfall
Als root auf dem Hub lassen sich Zugänge zurücksetzen:
sudo runuser -u nodebay -- python3 /opt/nodebay/nbpanel.py reset-password NAME sudo runuser -u nodebay -- python3 /opt/nodebay/nbpanel.py reset-secpw NAME sudo runuser -u nodebay -- python3 /opt/nodebay/nbpanel.py reset-mfa NAME
Weitere Befehle: setting KEY WERT, getsetting KEY und helper-test. Auf dem Agenten testest du mit nbagent.py test und nbagent.py helper-test.
Härtung
Das Panel läuft ohne sudo. Root-Aufgaben erledigt ein Helfer hinter einem Unix-Socket, den nur der Benutzer nodebay erreicht; er führt feste Aktionen mit streng geprüften Argumenten aus. Der Dienst ist mit systemd gehärtet, jede Stufe wird vorher getestet und fällt bei Problemen zurück (systemd-analyze security nodebay). acme.sh wird in einem festen Stand geklont und gegen einen Commit-Hash geprüft.
Es gab keinen unabhängigen Sicherheitstest. Der Stand der Prüfungen steht offen in der Datei STATUS.md des Projekts.
Zusätzliche Bausteine, die getrennt installiert werden: ein Matrix-Server (Continuwuity), ein Wächter für den Hub, ein Mail-Server (Postfix, Dovecot, Rspamd) und ein ntfy-Server für Push-Meldungen.
Begriffe
| Begriff | Bedeutung |
|---|---|
| Hub | Der Rechner mit dem Panel. Alle anderen sprechen mit ihm. |
| Agent | Kleines Programm auf einem angebundenen Server. |
| Rolle | Eine einzelne Berechtigung, etwa „Benutzer sperren“. |
| Gruppe | Bündel aus Rollen, dem Benutzer angehören. |
| Plan | Satz von Limits für einen Benutzer. |
| TTL | Zeit in Sekunden, die DNS-Antworten zwischengespeichert werden dürfen. |
| Wildcard-Zertifikat | Zertifikat für eine Domain und alle ihre Subdomains. |
| Secondary | Zweiter Nameserver, der die Zone vom Hub holt. |
| 2FA | Zwei-Faktor-Anmeldung: Passwort plus einmaliger Code oder Bestätigung. |
| ZUGFeRD / Factur-X | Rechnungsformat: lesbare PDF mit eingebetteten XML-Daten. |