Mosquitto Setup

Wie man Eclipse Mosquitto erfolgreich installiert und einrichtet.

In dieser Anleitung wird beschrieben, wie du Mosquitto unter Debian (x64, oldstable/stable/testing) installierst und für die Nutzung der PureLife Cloud konfigurierst.

Mosquitto kann auch unter anderen Plattformen genutzt werden und diese Anleitung sollte sich übertragen lassen, jedoch bieten wir hierfür keinen Support.

Installation

Die Mosquitto Version in den Debian Paketquellen ist veraltet. Es wird daher empfohlen, die Paketquelle des Mosquitto-Projektes zu verwenden und eine aktuelle Mosquitto-Version zu installieren.

Dazu muss zuerst der Key zum signieren der Pakete zu apt hinzugefügt werden.

curl -L http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key | sudo apt-key add -

Danach können die Paketquellen hinzugefügt werden.

cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-buster.list

Nun kann aus dem Paketquellen Mosquitto installiert werden.

sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients

Es sollte nun Mosquitto in der Version 2.* installiert sein.

sudo mosquitto --help

Erweiterte Authentifizierung

Für einen sicheren Betrieb müssen die Möglichkeiten von Mosquitto zur Authentifizierung und Autorisierung erweitert werden. Hierzu ist die Installation des Mosquitto Auth-Plugins notwendig. Dieses stellen wir für verschiedene Plattformen und Mosquitto-Versionen bereit.

# Find the appropriate version at https://docs.vayyar-cloud.smart-altern.de/files/
# Download the plugin for your platform and version
wget https://docs.vayyar-cloud.smart-altern.de/files/auth-plugin/debian-{version}-amd64/mosquitto-{version}/auth-plugin-{version}.so
mv auth-plugin-{version}.so /etc/mosquitto/auth-plugin.so

# Download the password tool for your platform
wget https://docs.vayyar-cloud.smart-altern.de/files/password-tool/pw-tool-{version}-{platform}
mv pw-tool-{version}-{platform} /etc/mosquitto/pw-tool

touch /etc/mosquitto/{passwd,acl}

Sollte ein Plugin für deine Plattform/Version nicht verfügbar sein, kannst du dich mit uns in Verbindung setzen und wir überprüfen, ob eine Bereitstellung möglich ist. Teile uns dazu bitte das Betriebssystem (Name, Version), Architektur und Mosquitto-Version deine Produktivumgebung mit. Alternativ kannst du das Plugin selbst erstellen.

Die Konfiguration sollte von anderen Benutzern nicht eingesehen werden dürfen.

sudo chmod -R o-rwx /etc/mosquitto/
sudo chown -R mosquitto:mosquitto /etc/mosquitto/

Weitere Informationen können in der Dokumentation gefunden werden.

Limitierung

Das auth-plugin bietet die Möglichkeit verschiedene Authentifizierungsmethoden in Mosquitto einzubinden. Das Plugin arbeitet jedoch nicht gleichzeitig mit anderen Authentifizierungsmethoden. Sofern weitere Authentifizierungsmethoden genutzt werden sollen, muss der Parameter per_listener_settings true gesetzt werden und das Plugin einen eigenen Mosquitto Listener erhalten.

Weitere Informationen können in der Dokumentation abgerufen werden.

Account für PureLife-Cloud anlegen

Um die Initialisierung der MQTT-Verbindung zu beschleunigen, wird empfohlen, für die PureLife-Cloud einen Benutzer in der Passwort-Textdatei anzulegen.

# Set variables
export MQ_USER="PureLifeCloud"
export MQ_PASS=`/etc/mosquitto/pw-tool -p password-here`

# Save password and ACL
echo "$MQ_USER:$MQ_PASS" >> /etc/mosquitto/passwd
printf "$MQ_USER\ntopic #\n\n" >> /etc/mosquitto/acl

# Remove variables
unset MQ_PASS
unset MQ_USER

Konfiguration

Nun kann Mosquitto konfiguriert werden. Dazu mit einem Texteditor eine Konfigurationsdatei erstellen

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

Und folgendes einfügen

auth_plugin /etc/mosquitto/auth-plugin.so
auth_opt_backends files, grpc
auth_opt_retry_count 2

# Auth cache
auth_opt_cache true
auth_opt_cache_reset true
auth_opt_cache_refresh false
# 5 min
auth_opt_auth_cache_seconds 300
# 10 min
auth_opt_acl_cache_seconds 600
auth_opt_auth_jitter_seconds 3
auth_opt_acl_jitter_seconds 3

# GRPC for purelife-cloud
auth_opt_grpc_host 127.0.0.1
auth_opt_grpc_port 10001
auth_opt_grpc_fail_on_dial_error false
auth_opt_grpc_dial_timeout_ms 2000

# (optional) Accounts from file
auth_opt_hasher pbkdf2
auth_opt_files_password_path /etc/mosquitto/passwd
auth_opt_files_acl_path /etc/mosquitto/acl

listener 1883

# listener 8883
# certfile /path/to/your/cert.pem
# cafile   /path/to/your/chain.pem
# keyfile  /path/to/your/privkey.pem

# listener 1884
# protocol websockets
# certfile /path/to/your/cert.pem
# cafile   /path/to/your/chain.pem
# keyfile  /path/to/your/privkey.pem

Nach der Anpassung der Konfiguration sollte Mosquitto neu gestartet werden.

sudo systemctl restart mosquitto.service
sudo systemctl status  mosquitto.service

Für eine verschlüsselte Verbindung über MQTTS hinterlege die passenden Zertifikate und starte den Server neu.