Mosquitto ist ein Open Source MQTT Broker. Den Broker kann man dann nutzen, um z. B. Owntracks mit Home Assistant zu nutzen. Diese Tutorial beschreibt, wie Ihr einen Mosquitto Server unter Gentoo einrichtet.
Installation
Zum Zeitpunkt der Erstellung dieses Tutorials war Mosquitto in Version 1.5.4 in Portage verfügbar.
Wir installieren Mosquitto:
emerge -a app-misc/mosquitto
Mosquitto Benutzer anlegen
Um euch mit dem Mosquitto Broker zu verbinden müsst Ihr einen Benutzer anlegen und eine Passwort Datei erstellen. Dies geschieht mit folgenden Befehl:
mosquitto_passwd -c /etc/mosquitto/pwfile USERNAME
Mit dem Parameter „-c“ wird eine neue Datei erstellt. Existiert bereits eine wird diese überschrieben. Soll der Benutzer zusätzlich angelegt werden, lasst den Parameter „-c“ einfach weg. „USERNAME“ ist mit eurem Benutzernamen zu ersetzen. Wenn Ihr diesen Befehl ausführt müsst Ihr ein Passwort festlegen und dieses im Anschluss bestätigen.
Mosquitto konfigurieren
Nun müssen wir noch die eigentliche Konfiguration von Mosquitto vornehmen. Dies geschieht in der Datei „/etc/mosquitto/mosquitto.conf“. Der Einfachheit halber ist hier meine Konfiguration:
autosave_interval 1800 persistence true persistence_file mosquitto.db persistence_location /var/lib/mosquitto/ log_dest syslog log_type error log_type warning log_type notice log_type information connection_messages true log_timestamp true allow_anonymous false password_file /etc/mosquitto/pwfile listener 1883 localhost
Nun starten wir unseren Mosquitto Broker und fügen ihn zum Default Runlevel hinzu:
/etc/init.d/mosquitto start rc-update add mosquitto default
Mosquitto testen
Um zu überprüfen, ob unser Broker funktioniert, richten wir einen sogenannten „Sub“ ein.
mosquitto_sub -h BROKERHOST -p PORT -t "owntracks/#" -v -u USERNAME -P PASSWORD
In diesem Befehl müsst Ihr die Platzhalter entsprechend mit euren Daten ersetzen. In meinem Fall benutze ich Owntracks auf meinen Android Smartphone um Nachrichten zu schicken (deswegen -t „owntracks/#“).
Wenn kein Fehler beim Ausführen des Befehls kommt, solltet Ihr einkommende Nachrichten sehen können. Die Antwort sieht dann in etwa so aus:
owntracks/user/androidphone {"_type":"location","acc":1800,"alt":0,"batt":65,"conn":"w","lat":46.8359704,"lon":7.5705195,"t":"u","tid":"us","tst":1545653489,"vac":0,"vel":0}
Mosquitto mit SSL sichern
In der aktuellen Konfiguration sollte man den Broker nur im lokalen Netzwerk nutzen. Es ist selbstredend, dass man bei einer Nutzung über das Internet eine Verschlüsselung der Übertragung in Erwägung ziehen sollte.
Hierfür benötigt man SSL Zertifikate. Deren Erstellung soll kein Bestandteil dieses Tutorial sein. Ich nutze in meinem Fall einfach die bestehenden Let’s Encrypt Zertifikate auf meinem Home Server.
Um die SSL Verschlüsselung zu nutzen fügt folgendes zur „/etc/mosquitto/mosquitto.conf“ hinzu:
listener 8883 certfile /etc/letsencrypt/live/subdomain.example.com/cert.pem cafile /etc/letsencrypt/live/subdomain.example.com/chain.pem keyfile /etc/letsencrypt/live/subdomain.example.com/privkey.pem
Falls Ihr auch Let’s Encrypt benutzt müsst Ihr im Pfad „subdomain.example.com“ mit eurem eigenen Domainnamen ersetzen. Nutz ihr selbstsignierte SSL Zertifikate tragt entsprechend die Pfade zu diesen richtig ein.
Wichtig ist das Ihr den bisherigen „listener 1883 localhost“ in der Konfigurationsdatei behaltet. So könnt Ihr ohne SSL Verschlüsselung im lokalen Netz auf den Broker verbinden. Für externe Verbindungen wird dann Port 8883 benutzt. Diesen müsst Ihr natürlich in euer Firewall / Router freigeben.
Danach den Mosquitto Broker neu starten:
/etc/init.d/mosquitto restart
Fazit
Mit Mosquitto könnt ihr relativ einfach einen effizienten MQTT Broker realisieren.
Hiermit ist dieses Tutorial abgeschlossen. Ich hoffe es war hilfreich für euch! Wenn Ihr mich unterstützen wollt, könnt ihr das sehr gerne hier tun.