Funktionen

Der Broker ist als Arbeitswerkzeug gebaut: alles Folgende wird im Dashboard eingestellt und wirkt ohne Neustart.

Protokoll

Beide Versionen gleichzeitig

MQTT 3.1.1 und MQTT 5.0 laufen gleichzeitig auf demselben Port, und Clients beider Versionen tauschen ungehindert Nachrichten aus. Der Codec kodiert und dekodiert alle 15 Pakettypen und prüft die Grenzen des Variable Byte Integer, doppelte Properties und reservierte Bits.

QoS 0, 1 und 2

Vollständige Handshakes, Unterdrückung von Duplikaten bei QoS 2 und erneute Zustellung unvollendeter Vorgänge nach einem Reconnect. Offline-Warteschlangen persistenter Sitzungen überstehen einen Neustart des Brokers.

Retain und Last Will

Ein Speicher für Retained Messages samt Löschen per leerem Payload, auch für ganze Zweige, dazu Retain Handling 0/1/2 und Retain As Published. Der Will wird in jedem Trennungsszenario gesendet, einschließlich des Will Delay Interval aus Version 5.

Fähigkeiten von Version 5

Topic-Aliase in beide Richtungen, Session Expiry, Receive Maximum und Flusskontrolle, Maximum Packet Size, Subscription Identifier, Shared Subscriptions über $share, No Local, Message Expiry, Payload Format Indicator mit UTF-8-Prüfung, Content Type, Response Topic, Correlation Data, User Properties, Reason Codes in jedem Paket, serverseitiges DISCONNECT und das AUTH-Paket.

$SYS-Systemtopics

Version, Laufzeit und Zähler für Clients, Nachrichten, Bytes und Fehler werden als Retained Messages veröffentlicht. Der Zweig ist standardmäßig geschlossen: Platzhalter erreichen $-Topics nicht, anonymen Clients ist der gesamte Namensraum verwehrt, und ein Schalter in den Einstellungen deaktiviert die Veröffentlichung vollständig.

Web-Dashboard

Übersicht

Kennzahlenkacheln, Systemzustand (CPU, Arbeitsspeicher und die Platte mit dem Datenverzeichnis), Live-Diagramme zu Nachrichtenrate, Datenverkehr und Verbindungen, aktive Topics, Listener und ein Ereignis-Feed.

Clients und Topics

Eine Sitzungstabelle mit Karte je Client, dazu Trennen und Löschen von Sitzungen. Getrennt davon: aktive Abonnements mit allen MQTT-5.0-Optionen und der Inhalt des Retained-Speichers.

Datenverkehr und Veröffentlichen

Ein Live-Strom von Nachrichten und Broker-Ereignissen mit Filter und Pause. Sie können direkt aus dem Dashboard eine Nachricht mit sämtlichen Properties der Version 5 senden — praktisch beim Debuggen von Geräten.

Sieben Sprachen, zwei Designs

Russisch, Englisch, Deutsch, Spanisch, Französisch, Italienisch und Chinesisch. Dunkles und helles Design wechseln im laufenden Betrieb, und die Wahl wird als Standard des Dashboards gemerkt.

Eingebaute Hilfe

Eine Anleitung mit Inhaltsverzeichnis direkt im Dashboard, übersetzt in alle sieben Sprachen — Sie müssen die Dokumentation nirgends sonst suchen.

Zugriff und Sicherheit

Zwei getrennte Kreise

Es gibt genau einen Dashboard-Administrator, definiert in config.json, und er verwaltet ausschließlich die Weboberfläche. MQTT-Geräte sind eine eigene Kontenliste mit eigenen Passwörtern und Rechten. Einen MQTT-Benutzer mit dem Namen des Administrators anzulegen, wird abgelehnt.

Topic-ACLs

Eine Regel besteht aus Filter, Zugriffsart (read, write, readwrite) und der Entscheidung erlauben oder verbieten. Regeln werden von oben nach unten bis zum ersten Treffer geprüft, und alles gilt als Deny-by-default. Der Platzhalter $u wird zum Namen des Clients, sodass die Regel $u/# jedes Gerät auf seinen eigenen Zweig beschränkt. Die Reihenfolge ändert man per Ziehen.

Sechs Quellen für Zugangsdaten

Die interne Liste, MySQL/MariaDB (ein Schema im EMQX-Stil), SQLite, CSV mit Neuladen der Datei, JWT und ein externer HTTP-Dienst. Die Quelle wird direkt im Dashboard gewechselt: erst mit der Schaltfläche „Test“ geprüft, dann im laufenden Betrieb übernommen.

Hashes statt Passwörter

Passwörter werden als PBKDF2-HMAC-SHA256 mit 210 000 Iterationen und zufälligem Salt gespeichert. Sitzungs- und API-Tokens werden ausschließlich als Hash abgelegt. Externe Quellen verstehen plain, sha256, sha512, bcrypt und pbkdf2.

TLS von Anfang an

Beim ersten Start wird ein selbstsigniertes Zertifikat erzeugt, damit :8883 sofort funktioniert. Für den Produktivbetrieb hinterlegen Sie Ihr eigenes Zertifikat in der Konfiguration.

Regeln und Flüsse

Topic-Rewrite

Ein Topic-Name wird im laufenden Betrieb ersetzt — beim Publish, beim Subscribe oder immer: ein MQTT-Filter zur günstigen Vorauswahl, ein regulärer Ausdruck und eine Zielvorlage mit den Gruppen $1…$9. %u und %c stehen zur Verfügung, das Präfix $share bleibt erhalten, und UNSUBSCRIBE durchläuft denselben Rewrite. Im Dashboard gibt es einen Testbereich für Regeln.

Auto-Subscribe

Ein Client erhält seine Abonnements direkt nach dem Verbinden, ganz ohne SUBSCRIBE. %u und %c sowie sämtliche Optionen der Version 5 werden unterstützt, und ACLs werden wie üblich geprüft — eine verbotene Regel wird still übersprungen, ohne die Verbindung zu trennen.

Topic-Limits

Eine Regel je Topic-Muster dünnt einen Strom auf eine Rate aus oder verwirft ihn ganz. Beim Ausdünnen bleibt der letzte Wert erhalten: Aus einem Sensor, der zehnmal pro Sekunde sendet, wird eine Nachricht pro Sekunde — die frischeste. Die Regelkarte zeigt, wie viele Nachrichten passten, durchkamen und verworfen wurden.

Flood Control

Ein Token-Bucket je Verbindung: Nachrichten pro Sekunde, Burst, Bytes pro Sekunde, Byte-Burst. Ein Überschreiten trennt weder die Verbindung noch gehen Nachrichten verloren — der Broker pausiert vor dem nächsten Lesen des Sockets, TCP schließt das Fenster, und der Sender wird von selbst langsamer.

Verzögertes Publish

Das Topic $delayed/{Sekunden}/{Topic} hält der Broker zurück, bis es fällig ist, EMQX-kompatibel. Das Intervall reicht von einer Sekunde bis zu 49 Tagen, die Bestätigung kommt sofort, und die Warteschlange übersteht einen Neustart und ist im Dashboard mit Countdown sichtbar.

Integration

Bridging zwischen Brokern

Der Broker verbindet sich als Client mit einem anderen MQTT-Broker und leitet Topics in beide Richtungen weiter. Adresse, Anmeldung, TLS, Protokollversion und Regeln aus Filter + Richtung + QoS + Präfixen sind einstellbar. Es gibt Schleifenschutz, automatischen Reconnect, No Local bei Version 5 und Zähler im Dashboard.

REST-API

Alles, was das Dashboard kann, steht mit einem Bearer-Token zur Verfügung: Statistiken, Clients, Abonnements, Retained Messages, Veröffentlichen, Ereignisse, Benutzer, Einstellungen, Bridges, Regeln, verzögerte Nachrichten, Import und Export. Ein Token kann nur lesend ausgestellt werden.

Geräte aus Ihrem System anlegen

POST /api/users legt ein Gerät samt seinen Rechten an, PATCH ändert Passwort oder ACL, DELETE entfernt es. Änderungen wirken sofort: Der Broker trennt die laufenden Verbindungen dieses Benutzers selbst, damit die neuen Regeln unmittelbar greifen.

MQTT über WebSocket

Das Subprotokoll mqtt auf demselben Port wie das Dashboard — Browser-Clients verbinden sich ohne separates Gateway. RFC 6455 ist auf Basis von net/http implementiert, ohne Abhängigkeiten.

Import und Export

Einstellungen, Benutzer und Regeln werden als eine Datei exportiert und wieder eingelesen — für den Umzug auf einen anderen Server muss nichts von Hand wiederholt werden.

Betrieb

Eine Datei, keine Abhängigkeiten

Eine statisch gelinkte Binärdatei in reinem Go: keine Laufzeitumgebung, keine libc, keine externe Datenbank. Sie läuft unter Debian und Ubuntu ohne Vorbereitung und wird für amd64, arm64 und armhf gebaut.

SQLite-Speicher

Retained Messages werden bei jeder Änderung sofort geschrieben, persistente Sitzungen alle zehn Sekunden und beim Herunterfahren gesichert, verzögerte Nachrichten beim Einreihen geschrieben. Abgelaufenes wird beim Start verworfen, und eine Zeile „state restored“ landet im Log.

Systemzustand

CPU-Last, belegter Speicher und freier Platz auf der Datenplatte — mit der Standardbibliothek berechnet, ohne cgo, in getrennten Implementierungen für Linux und Windows. Der Balken wird ab 75 % gelb und ab 90 % rot.

systemd und nginx

Eine systemd-Unit, eine nginx-Konfiguration und ein idempotentes Installationsskript liegen bei: Das Dashboard lauscht nur auf localhost und wird über nginx veröffentlicht, während die MQTT-Ports direkt arbeiten.

Build-Stempel

Version, Build-Nummer und Bauzeit stecken in der Binärdatei und sind im Dashboard, im Abschnitt „Über“ und über den Schalter -version sichtbar — Sie wissen immer genau, was läuft.

Und das alles kostenlos

Es gibt keine Grenzen für Geräte, Nachrichten oder Abonnements.

Broker herunterladen