da ich keine Abhilfe finde, ringe ich mich nun doch durch, hier meine Frage zu posten
Ausgangssituation:
IOBroker als Docker- Container auf einer Synology- NAS. Die Weboberfläche ist z.B. von außen über iobroker.example.com erreichbar.
Wenn ich mich z.B. über den MQTT Explorer über das ws- Protokoll verbinde, klappt das!
Connection: ws://mqttiobroker.example.com:443 --> IP.des.IO.Broker:1884 (Weiterleitung erfolgt über Reverse- Proxy auf dem NAS).
Port MQTT: 1883
Port MQTT Websocket: 1884
Was will ich:
MQTT- Verbindung von "außen" zum IOBroker nach Hause, möglichst ohne zusätzliche Ports zu öffnen (Anbindung einer openDTU, die extern steht)
im Idealfall über eine Sub- Domain über Port 443
dahinter über einen Reverse- Proxy an die interne Adresse des IOBrokers mit entsprechendem Port
Problematik:
OpenDTU kann von außen nicht mit dem MQTT- Broker auf dem IOBroker "sprechen". Die Umleitung von mqtt://mqttiobroker.example.com:443 --> IP.des.IO.Broker:1883 klappt nicht, was sicherlich am Protokoll liegt. Wenn ich mich richtig reingelesen habe, müsste ich also MQTT über Websocket einbinden, also mqtt://mqttiobroker.example.com:443 --> IP.des.IO.Broker:1884 - was über die openDTU auch nicht klappt - ich bekomme hier z.B. vom MQTT Explorer "not supported" (mqtt- Protokoll)
Auf der OpenDTU sagt er:
11:50:48.439 > Connecting to MQTT...
11:50:48.494 > Disconnected from MQTT.
11:50:48.594 > Disconnect reason:TCP_DISCONNECTED
Den Modus kann ich bei der openDTU nicht spzifisch auf Websocket umstellen. Habe ich hier generell ein Verständnisproblem oder sehe ich die Lösung gerade einfach nicht?
Euch noch ein frohes Fest und schöne Feiertage!
Liebe Grüße
Ronny
Ich habe zwar nur 10% von dem verstanden, was du geschrieben hast, aber ich verwende innerhalb des iobrokers nur noch den opendtu-adapter anstelle mqtt, weil das wesentlich stabiler läuft. Vielleicht geht damit ja dann auch das, was du vor hast.
Welche Komponente verwendest Du denn als Reverse Proxy und MQTT Message Broker, poste bitte auch die vollständigen Config- und Logfiles.
MQTT ist kein HTTP basiertes Protokoll, Du musst also entweder einen Reverse Proxy wie Nginx als Stream Proxy verwenden oder alles auf Websockets umbauen. Dann müssen aber ALLE Clients Websockets verwenden.
das geht, ohne Ports zu öffnen, viel einfacher und sicherer mit Wireguard. Jedenfalls wenn Du eine Fritzbox oder Telekom Speedport als Router hast. Höchstwahrscheinlich auch schon mit andern Routern.
Damit bist Du von überall, wo Du eine Datenverbindung (Wlan/Simkarte) am Handy oder PC/Laptop hast, durch einen VPN Tunnel mit Deinem Router verbunden. Also auch mit allen Geräten in Deinem Netzwerk zu Hause und kannst wie Zuhause darauf zugreifen.
Du kannst auch von außen über die Fritzbox im Internet surfen oder im deutschen Festnetz telefonieren. Auch das Einrichten ist ein Klacks mit Wireguard geworden.
@lars72 : sorry, wenn ich mich nicht klar ausdrücken konnte. Dadurch, dass mehrere Themen sich vermischen, habe ich versucht alles so kurz wie möglich zu halten und die unnötigen Themen auch nicht anzuschneiden.
@Ulli: danke, das wäre die "letzte" Lösung, aber nicht meine Präferierte.
@cane :_1. Reverse Proxy nehme ich den offiziell von Synology zur Verfügung gestellten. Laut services läuft hier ein nginx - den würde ich allerdings nicht komplett umbauen, da sonst bei Updates immer die komplette config zerschmissen wird.
Ich hatte das Loglevel im IOBroker noch mal auf "Alles", allerdings kommt hier kein Eintrag zu Stande - wahrscheinlich, weil der Webserver die Anfrage schon nicht weitergibt.
Ansonsten könnte ich einen NGinx via Docker laufen lassen und mit diesem dann mal rumspielen... Ich probier mich mal weiter aus...