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.