Mosquitto ist ein populärer MQTT-Server (oder auch Broker genannt) der eine große Community bestitzt und einfach zu installieren, bzw. konfigurieren ist. Folgend wird beschrieben, wie Mosquitto installiert und durch eine Passwort-Authetifikation geschützt wird:

Schritt 1 – Installation

Ubuntu 16.04 besitzt eine aktuelle Version von Mosquitto in dem Standard-Repository. Nach dem einloggen auf dem Server kann Mosquitto über den Befehlt apt-get installiert werden.

$ sudo apt-get install mosquitto mosquitto-clients

Nach der Installtion startet Ubuntu standardmäßig den Mosquitto-Service. Der Broker kann anschließend mit der Standard-Konfiguration getestet werden. Hierfür nutzen wir einen der gerade installierten Mosquitto-Clients um auf ein Topic unseres Brokers zu subscriben.

Öffnen wir eine zweite Sitzung mit dem Server, so können wir zwei Terminalverbindungen gleichzeitig nutzen. Auf dem zweiten Terminal können wir über den mosquitto_sub Befehl auf einen beliebigen Topic, in diesem Fall „test“,  subscriben:

$ mosquitto_sub -h localhost -t test

-h wird hierbei für die Spezifikation des Hostname des MQTT-Server und -t für den Namen des Topics verwendet. Nachdem der Befehl mit der Enter-Taste bestätigt wurde, erscheint vorerst keine Ausgabe, da der Befehl auf eine eingehende Nachricht wartet. Wechseln wir also zu dem anderen Terminal und publizieren eine Nachricht mit dem Befehl:

$ mosquitto_pub -h localhost -t test -m "hello world"

Die Befehle unterscheiden sich lediglich durch den Anhang von -m, welches die eigentliche Nachricht enthält. Sobald die Enter-Taste betätigt wurde, erscheint im anderen Terminal die Nachricht „hello world“. Durch die Tastenkombination CTRL+C kann die mosquitto_sub Routine beendet werden.

Schritt 2 – Konfiguration eines MQTT-Passwortes

Mosquitto enthält alle nötigen Werkzeuge um eine spezielle Passwort-Datei mit dem Namen mosquitto_passwd zu generieren. Diese wird im Verzeichnis /etc/mosquitto/passwd abgelegt.

$ sudo mosquitto_passwd -c /etc/mosquitto/passwd benutzerName

Nach der Eingabe dieses Befehles, wird der Benutzer aufgefordert ein Passwort für den übergebenen Benutzernamen „benutzerName“ anzugeben. Nachdem die Passwort-Datei erfolgreich erstellt wurde, müssen Mosquitto für die Benutzung von Passwörtern konfigurieren.

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

Dieser Befehl öffnet eine leere Datei. In diese fügen wir folgenden Code ein:

allow_anonymous false
password_file /etc/mosquitto/passwd

allow_anonymous false deaktiviert alle nicht authorisierten Verbindungen mit dem Broker und password_file gibt an, wo Mosquitto nach den Authetifizierungsinformationen suchen muss. Wir speichern die Datei und verlassen diese.

Nun muss Mosquitto neu gestartet werden.

$ sudo systemctl restart mosquitto

Die zuvor genutzen Befehle mosquitto_sub und mosquitto_pub müssen für den abschließenden Test durch die Anmeldeinformationen ergänzt werden:

$ mosquitto_sub -h localhost -t test -u "benutzerName" -P "password"
$ mosquitto_pub -h localhost -t "test" -m "hello world" -u "benutzerName" -P "password"

Die Nachrichten sollten wie in Schritt 1 angezeigt werden.

Schritt 3 – Verbindungskonfiguration

Um den MQTT-Server über das Internet verfügbar zu machen, muss dieser noch auf die Ports konfiguriert werden, über welche der Server angesprochen werden kann. Hierfür öffnen wir die Konfigurationsdatei wie in Schritt 2:

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

An das Ende der Datei fügen wir folgenden Code an:

listener 1883
listener 8000
protocol websockets

Wir fügen dem Mosquitto-Server also zwei Ports hinzu, welche er überwacht. Der listener mit dem Port 1883 ist der Standard-Port von Mosquitto. Hier kann direkt über das MQTT-Protokoll kommunziert werden. Der listener auf Port 8000 hingegen, überwacht die Kommunikation über Websockets, welche in unserem Projekt in der Corodva Applikation genutzt werden. Zu guter letzt muss Mosquitto neu gestartet werden um die neue Konfiguration zu übernehmen:

$ sudo systemctl restart mosquitto

 

DingDong 5. Blogeintrag: MQTT-Server auf Ubuntu 16.04

Ein Gedanke zu „DingDong 5. Blogeintrag: MQTT-Server auf Ubuntu 16.04

  • 4. Juli 2017 um 0:03
    Permalink

    Endlich. 😀 Ich gebe bescheid, wenn ich Mosquito auf meinem Server eingerichtet habe (morgen oder übermorgen)

Kommentare sind geschlossen.