Update macht Mosquitto kaputt!

…zumindest scheinbar. Auch das reicht schon so weit,  dass sich sicher eine Menge Leute mächtig ärgern werden.

Dem allgemeinen Trend zur Bevormundung folgend und User für dumm zu erklären, haben die Mosquitto Leute ihr Produkt mit Version 2.0.0 ohne große Ankündigung “sicherer” gemacht und damit einen Großteil der existierenden Anwendungen gekillt. Gut gemeint ist eben das Gegenteil von gut.

Wer von euch Mosquitto über das Standard Raspbian Repository installiert hat, bekommt dieses Problem erst später, da dort im März 2021 noch Version 1.5.7 ausgeliefert wird.  Wer, wie ich, das Mosquitto Repository verlinkt hat, ist zwar am “bleeding edge of the development” sammelt sich damit aber mit Version 2.0.0 ff. auch ein paar – lösbare – Probleme ein. Also weiterlesen:

Was ist passiert?

Nach einem der üblichen sudo apt update und sudo apt upgrade Läufe haben meine sämtlichen MQTT basierenden Lichtschalter und Sensoren nicht mehr funktioniert. Da mosquitto seinen Status sudo service mosquitto status mit running quittiert hat, habe ich rundherum alles gecheckt aber mit keinem Gerät oder dem Windows MQTT Client MQTTfx  einen Connect auf Mosquitto hinbekommen – es war wie verhext. Spätestens zu diesem Zeilpunkt hätte ich mir das Mosquitto Log ansehen müssen – habe ich aber erst viel später gemacht – blöd!

Festzustellen war allerdings, dass das Verzeichnis /etc/mosquitto/conf.d auf einmal leer war. Dort hatte ich meine Konfigurationsdatei abgelegt, die auch den Pfad zur Passwortdatei enthielt. Auch das Wiederherstellen der Konfigurationsdatei brachte nichts.

Lange Rede, kurzer Sinn: mit Version 2.0.0 von mosquitto wird standardmäßig der ungeschützte (anonyme) Zugang zum Mosquitto-Broker deaktiviert. Früher war dies ein eigener Eintrag in der Konfiguration allow_anonymous false. Dagegen ist an sich nichts einzuwenden.

Wirklich schlimm ist: Der Connect  für externe Clients (Sensoren, Schalter, MQTTfx etc.) zum Broker wird standardmäßig disabled! Sauerei! Wie kann man nur so blöd sein, so einen “Breaking Change” mir nichts-dir nichts ohne Warnung auszurollen und dabei auch noch die Konfigurationsdatei  des Nutzers zu  löschen. Ich frage mich außerdem, welchen Sinn ein Broker hat, wenn externe Geräte nicht mit ihm kommunizieren dürfen. In der Standardeinstellung kann sich Mosquitto nur mit sich selbst unterhalten – okay, im Zeitalter von Pornhub etc. vielleicht auch ein Trend…

Der Ehrlichkeit halber sei angemerkt, dass ich das Verschwinden meiner Konfigurationsdatei aus /etc/mosquitto/conf.d beim Update eines zweiten Raspi nicht reproduzieren konnte.

Lösung

In die Konfigurationsdatei /etc/mosquitto/mosquitto.conf oder die in conf.d liegende eigene Konfigurationsdatei die Zeile

alternativ geht auch listener 1883) einfügen und alles läuft wieder wie geschmiert. Will man ohne Passwort arbeiten, muss zusätzlich noch

eingetragen werden.

Anschließend den Broker mit sudo service mosquitto restart  neu starten um die Konfiguration zu aktivieren.

Was mich etwas wundert, ist die Tatsache, dass die Version 2.0.0 schon seit Dezember 2020 live ist aber das Problem bei mir trotz regelmäßigen Updates erst jetzt aufgetreten ist. Vielleicht hat die Raspbian Version etwas länger gebraucht, auch wird jetzt (März 2021) Version 2.0.8 installiert.

Im Internet habe ich dazu nur wenig gefunden, deshalb hoffe ich, dass mein Beitrag vielen Usern weiterhilft.

Ankündigung im mosquitto.org Blog: https://mosquitto.org/blog/2020/12/version-2-0-0-released/

Übrigens, das Mosquitto Repository installiert man folgendermaßen:

11 Gedanken zu „Update macht Mosquitto kaputt!

  1. Hallo Chris,

    Ich wünsche ein gesundes, erfolgreiches Jahr 2022!!!
    Danke für den Beitrag. Dadurch bin ich überhaupt erst auf den Lösungsansatz, dass der Brocker das Problem darstellt gekommen. Zuvor habe ich meine Sensorik im Verdacht gehabt, da dort immer wieder mqtt verbindung lost auftauchte. Es geht ja auch niemand davon aus, dass mit Update Einspielung sein kapitaler Umbruch initiiert wird, und das ohne jegliche Hinweise.
    Die 2 Zeilen habe ich in die config.d eingefügt, als letzte Kommandozeilen. Dennoch verbindet sich der ESP8266 Modul nicht mit dem localhost 1883.
    Muss da noch eine einzelauthorisierung des Moduls im brokerhinterlegt werden, vor allem wo soll dies geschehen.

    1. Hi,
      ich weiß jetzt nicht genau, was du in die Konfigurationsdatei eingetragen hast. Mein WordPress hatte einen merkwürdigen Fehler, bei dem just die beiden kritischen Zeilen verhackstückt wurden. Wenn du die 1:1 kopiert hast, dann ist es klar, dass bei dir nichts geklappt hat. Fehler ist jetzt beseitigt.
      Übrigens, conf.d ist ein Verzeichnis, dort können weitere Konfigurationsdateien liegen. Bei mir ist das access.conf mit folgenden 3 Zeilen Inhalt:

      allow_anonymous false
      password_file /etc/mosquitto/mosquitto_passwords
      bind_address 0.0.0.0

      Damit Mosquitto diese Datei überhaupt findet, muss in der Datei /etc/mosquitto/mosquitto.conf der Eintrag include_dir /etc/mosquitto/conf.d
      drinstehen. Vielleicht ist das dein Problem…?
      Viele Grüße und danke für die Glückwünsche, die ich hiermit erwiedere.
      Chris

    2. Hallo Norbert,

      hast du eine Lösung für dein Problem gefunden?
      Bei mir ist es das selbe, auch wenn ich in meine config datei;
      bind_address 0.0.0.0
      listener 1883
      allow_anonymous true
      reinschreibe, startet mir der Broker nicht neu.

      lg

      1. Hi,
        Bitte mal ne Fehlermeldung:
        Mit sudo service mosquitto status erzeugen. Hatte die letzten Tage auch ein Problem mit dem Broker. Ich habe dann das mosquitto Repository abgeklemmt, alle mosquitto Komponenten gepurged und dann das mosquitto aus dem Original Raspberry OS Repository installiert. Dann ging’s.
        Wenn gewünscht, kann ich das Vorgehen noch detaillieren.
        VG
        Chris

  2. Vielen Dank. Dein Beitrag hat mir sehr geholfen. Auch bei mir war nach dem Update keine Verbindung zum Broker mehr möglich. Nach dem Eintrag “bind_address 0.0.0.0” funktioniert wieder alles.

  3. Auch von mir vielen Dank! Wenn man eine Lösung installiert, die noch nicht auf die version 2 upgedated wurde, helfen die kryptischen Fehlermeldungen die man bekommt nicht. Danke für die Lösung!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.