MQTT-Broker mit Mosquitto unter Ubuntu 20.04 installieren

Bei Mosquitto handelt es sich um einen freien und quelloffenen Nachrichtenbroker, der auf dem MQTT-Protokoll basiert – kurz für Message Queuing Telemetry Transport. Es arbeitet im Rahmen des TCP/IP-Protokollstapels und stellt eine zentrale Kommunikationslösung für Anwendungen im Bereich Internet of Things (IoT) dar.

Vorteile von MQTT für Geräte mit begrenzten Ressourcen

Dank seiner äußerst kompakten Bauweise eignet sich das MQTT-Protokoll hervorragend für Systeme mit eingeschränkten Geräteeigenschaften. Es ist ideal für Endgeräte mit geringer Akkuleistung, schmaler Netzwerkbandbreite oder unzuverlässiger Internetverbindung.

Funktionsweise von Mosquitto

Mosquitto basiert auf dem Publisher-Subscriber-Prinzip. In dieser Struktur bauen Clients eine Verbindung zum Mosquitto-Server auf, der als Vermittler fungiert. Der Server übermittelt Nachrichten von Publishern gezielt an alle Clients, die bestimmte Themen (Topics) abonniert haben.

Ziel dieses Leitfadens

In dieser Anleitung wird erklärt, wie man den MQTT-Broker mithilfe von Mosquitto auf einem System mit Ubuntu 20.04 einrichtet. Zudem erfährst du, wie Mosquitto konfiguriert wird, um zu verstehen, wie das ereignisgesteuerte MQTT-Protokoll die Kommunikation in IoT-Szenarien ermöglicht.

Voraussetzungen

Um dieses Tutorial vollständig durchführen zu können, benötigst du Folgendes:

  • Einen Server mit installiertem Ubuntu 20.04.
  • Ein Benutzerkonto mit sudo-Rechten (kein Root-Zugang).

Mosquitto unter Ubuntu 20.04 installieren

Um das Mosquitto-Paket aus den offiziellen Ubuntu-Paketquellen zu beziehen und den MQTT-Broker zu installieren, befolge diese Schritte. Dieser Abschnitt zeigt dir, wie Mosquitto unter Ubuntu eingerichtet wird.

Verbinde dich zuerst per SSH mit deinem Server und aktualisiere die Paketinformationen:

Installiere anschließend das Mosquitto-Paket mit folgendem Befehl:

$ sudo apt install -y mosquitto

Das Mosquitto-Paket sollte nun auf deinem System installiert sein. Um zu überprüfen, ob der Dienst aktiv ist, verwende folgenden Befehl:

$ sudo systemctl status mosquitto

Stelle sicher, dass der Dienst geladen und aktiv ist. Die Ausgabe sollte in etwa wie folgt aussehen:

● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker
     Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor pr>
     Active: active (running) since Fri 2021-10-08 06:29:25 UTC; 12s ago
       Docs: man:mosquitto.conf(5)
             man:mosquitto(8)

Sobald der Mosquitto-Dienst läuft, kannst du ihn mit den folgenden Kommandos steuern:

Dienst stoppen:

$ sudo systemctl stop mosquitto

Dienst erneut starten:

$ sudo systemctl start mosquitto

Dienst neu starten:


$ sudo systemctl restart mosquitto


Mosquitto-Clients unter Ubuntu installieren und testen

MQTT-Clients verbinden sich mit dem Mosquitto-Broker, um Nachrichten über verschiedene Themenbereiche (Topics) zu senden und zu empfangen – je nach Anwendungsfall. Jeder Client kann als Publisher, Subscriber oder in beiden Rollen fungieren. Um diese Funktionalität zu testen, installierst du zunächst den Mosquitto-Client unter Ubuntu.

Im Mosquitto-Paket ist ein Kommandozeilen-Tool enthalten, mit dem sich die Serverfunktionen einfach testen lassen. Verwende den folgenden Befehl zur Installation des Clients:

$ sudo apt install -y mosquitto-clients

Nach der Installation kannst du dich auf ein bestimmtes Topic abonnieren. In MQTT bezeichnet ein Topic eine Zeichenkette, die der Broker verwendet, um Nachrichten an passende Clients weiterzuleiten. Ein Smart-Home-System könnte beispielsweise folgende Topics verwenden:

home/lights/sitting_room
home/lights/kitchen
home/lights/master_bedroom
home/lights/kids_bedroom

Um eines dieser Topics zu abonnieren, verwende den Befehl mosquitto_sub -t gefolgt vom Topic-Namen. Um beispielsweise das Topic home/lights/sitting_room zu abonnieren, gib Folgendes ein:

$ mosquitto_sub -t "home/lights/sitting_room"

Dieser Befehl blockiert das Terminal und hält es offen, um eingehende Nachrichten zu empfangen.

Öffne nun ein zweites Terminalfenster und lasse das erste geöffnet. Sende aus dem neuen Fenster eine ON-Nachricht an das Topic home/lights/sitting_room mit folgendem Befehl:

$ mosquitto_pub -m "ON" -t "home/lights/sitting_room"

Im ersten Terminal sollte nun die Nachricht ON erscheinen:

Als Nächstes sendest du eine weitere Nachricht – diesmal OFF – an dasselbe Topic mit folgendem Befehl:

$ mosquitto_pub -m "OFF" -t "home/lights/sitting_room"

Im ersten Terminal sollten nun beide Nachrichten angezeigt werden:

In dieser Anleitung wurden MQTT-Nachrichten manuell mit den Mosquitto-Clients abonniert und veröffentlicht. In der Praxis übernehmen diese Aufgaben meist Mikrocontroller, die TCP/IP unterstützen – etwa der ESP8266. Solche Geräte senden Nachrichten an den Broker, um Geräte zu überwachen oder zu steuern.

Echte Anwendungsbeispiele für Mosquitto

  • Übertragung von Herzfrequenzdaten von Patienten an Krankenhausserver zur Fernüberwachung – so werden teure Klinikbesuche vermieden.
  • Überwachung von Messwerten in der Öl- und Gasindustrie, bei der tausende Sensoren per Satellit Daten an zentrale Systeme senden. Durch die geringe Datenlast von MQTT werden Informationen nur bei Bedarf übertragen.
  • Echtzeit-Verfolgung von Zügen im Transportwesen, um zentral bessere Fahrplanauskünfte für Reisende bereitzustellen.
  • Einsatz als Vermittlungsschicht in Messaging-Systemen zur Aktualisierung von Nutzerstatus und Nachrichtenweiterleitung.
  • Integration in Speichersysteme, bei denen Clients Daten an den Broker schicken, der sie wiederum dauerhaft in einer Datenbank speichert.

Neben diesen Szenarien gibt es zahlreiche Bibliotheken, mit denen sich Verbindungen zum Mosquitto-Broker in beliebten Programmiersprachen wie PHP, Python, Go und vielen weiteren aufbauen lassen.

Den Mosquitto-Server unter Ubuntu absichern

Standardmäßig besitzt Mosquitto keine aktive Sicherheitskonfiguration. Um deine Installation zu schützen, kannst du den Server so einrichten, dass Benutzername und Passwort für Verbindungen erforderlich sind.

Die Konfigurationsdateien lädt Mosquitto aus folgendem Verzeichnis:

Lege in diesem Verzeichnis eine Datei mit dem Namen default.conf an:

$ sudo nano /etc/mosquitto/conf.d/default.conf

Füge folgende Anweisungen hinzu, um anonyme Verbindungen zu blockieren und den Pfad zur Passwortdatei festzulegen:

allow_anonymous false
password_file /etc/mosquitto/passwd

Speichere die Datei und schließe sie.

Bearbeite nun die Passwortdatei mit folgendem Befehl:

$ sudo nano /etc/mosquitto/passwd

Trage die Zugangsdaten der Benutzer ein, die sich mit dem Mosquitto-Server verbinden sollen. Ersetze die Beispielpasswörter durch sichere Varianten:

john_doe:EXAMPLE_PASSWORD
mary_smith:EXAMPLE_PASSWORD_2

Verschlüssele die Passwörter anschließend mit dem mosquitto_passwd-Tool:

$ sudo mosquitto_passwd -U /etc/mosquitto/passwd

Die Passwörter sind nun verschlüsselt gespeichert und nur vom Mosquitto-Server lesbar. Mit folgendem Befehl kannst du den Inhalt prüfen:

$ sudo cat /etc/mosquitto/passwd

Die Ausgabe sollte in etwa so aussehen:

john_doe:$6$TSzNycsj...5Qyvgd4g==
mary_smith:$6$DtlKf1lG.../rLHIL0Q==

Starte den Mosquitto-Dienst neu, um die Änderungen zu aktivieren:

$ sudo systemctl restart mosquitto

Ab sofort musst du dich beim Veröffentlichen oder Abonnieren authentifizieren. Beispiel:

$ mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t "home/lights/sitting_room"
$ mosquitto_pub -u john_doe -P EXAMPLE_PASSWORD -t "home/lights/sitting_room" -m "ON"

Verbindungen ohne oder mit falschen Anmeldedaten sollten jetzt scheitern. Beispiele:

$ mosquitto_pub -m "ON" -t "home/lights/sitting_room"
$ mosquitto_sub -t "home/lights/sitting_room"
$ mosquitto_sub -u john_doe -P WRONG_PASSWORD -t "home/lights/sitting_room"
$ mosquitto_pub -u john_doe -P WRONG_PASSWORD -t "home/lights/sitting_room" -m "ON"

Erwartete Ausgabe:


...
Connection error: Connection Refused: not authorised.


Fazit

In dieser Anleitung hast du gelernt, wie man den MQTT-Broker Mosquitto unter Ubuntu 20.04 installiert und konfiguriert. Außerdem wurde gezeigt, wie man über die Kommandozeile Nachrichten abonniert und veröffentlicht. Mosquitto ist eine hervorragende Wahl für IoT-Anwendungen.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: