MQTT Broker Mosquitto installieren


Ich verwende zur Zeit eine Raspberry Pi als Heimautomasierungs-Server. Es läuft ein Rasbian Jessie.

Die Installation des MQTT Brokers Mosquitto geht folgendermaßen:

Installation ¶

# Pakete installieren
sudo apt-get install mosquitto mosquitto-clients
# Den Broker so einrichten, dass er beim Systemstart ausgeführt wird:
sudo systemctl enable mosquitto.service  

Das war’s schon.

Testen ¶

Mosquitto läuft jetzt und kann mit den Clients getestet werden:

# Auf Meldungen an das Topic "test" warten
mosquitto_sub -h localhost -v -t test

In einem zweiten Terminal:

# Eine Nachricht an das Topic "test" senden
mosquitto_pub -h localhost -t test -m "Hello"

Im ersten Terminal erscheint:

test Hello

Sicherheit ¶

Um den Broker abzusichern und eine Passwort-Abfrage zu installieren sind drei Schritte notwendig.

  1. Mosquitto für Zugriffslisten konfigurieren
  2. Benutzer mit Passwörtern anlegen
  3. Zugriffsrechte vergeben

Mosquitto für Zugriffslisten konfigurieren Die Datei /etc/mosquitto/conf.d/acl.conf mit folgendem Inhalt anlegen:

acl_file /etc/mosquitto/conf.d/acl
password_file /etc/mosquitto/conf.d/passwd
allow_anonymous false  # Kein Zugriff für Benutzer ohne Passwort

Benutzer werden mit ihren Passwörtern in der Datei passwd gespeichert. Angelegt werden sie mit dem Befehl mosquitto_passwd. Er fragt für den angegebenen Benutzernamen ein Passwort ab und speichert es in der Passwort-Datei.

sudo mosquitto_passwd /etc/mosquitto/conf.d/passwd admin

Das wiederholt man mit allen Benutzern, die man gerne hätte.

Die Zugriffsrechte werde dann in der acl-Datei festgelegt:

# admin darf alles
user admin
topic readwrite #
topic readwrite $SYS/#
 
# openhab2 darf alles lesen, aber nur bestimmte Topics schreiben
# um Steuer-Befehle abzusenden
user openhab2
topic read #
topic write garage/target
topic write sonoff_rf_1/cmnd/POWER
 
# Die Sonoffs bekommen alle den gleichen Benutzer, also
# volle Berechtigung auf die Sonoff-Topics
user sonoff_pow
topic readwrite sonoff_pow_1/#
topic readwrite sonoff_pow_2/#
topic readwrite sonoff_rf_1/#
 
# Homegear hat auch sein eigenes Topic mit kompletten Rechten
user homegear
topic readwrite homegear/#
 
# Und das gleiche für die Garage
user garage
topic readwrite garage/#

Jeder bekommt nur die Rechte, die er wirklich benötigt.

Jetzt noch den Broker neu starten, damit die Config übernommen wird:

sudo systemctl restart mosquitto.service

Fertig!