Grundlagen

MQTT-Ports erklärt: 1883, 8883, 8083, 8084 und 443

Welchen MQTT-Port solltest du nutzen? Was die Ports 1883, 8883, 8083, 8084 und 443 bedeuten, welche im Browser funktionieren und die Ports bekannter Broker.

Aktualisiert · 6 Min. Lesezeit

Wenn eine MQTT-Verbindung fehlschlägt, ist der Port das Erste, was du prüfen solltest. MQTT kann über reines TCP, über TLS, über WebSockets und über sichere WebSockets laufen – und jeder Transport liegt normalerweise auf einem anderen Port. Den falschen zu wählen ist der häufigste Grund, warum ein Client bei Connecting… hängen bleibt. Dieser Leitfaden erklärt jeden gängigen MQTT-Port, wann du ihn nutzt und welche Ports die öffentlichen Broker haben, gegen die du testen kannst.

MQTT-Ports auf einen Blick

PortTransportURL-SchemaVerschlüsseltFunktioniert im Browser
1883MQTT über TCPmqtt://NeinNein
8883MQTT über TLSmqtts://JaNein
8083 / 8080 / 8000 / 80MQTT über WebSocketws://NeinNur von reinen HTTP-Seiten
8084 / 8081 / 8884 / 443MQTT über sicheren WebSocketwss://JaJa

Nur 1883 und 8883 sind bei der IANA registriert (als mqtt und secure-mqtt). WebSocket-Ports sind eine Konvention, die sich von Broker zu Broker unterscheidet. Prüfe deshalb vor dem Verbinden immer die Doku des Brokers – oder unsere Liste öffentlicher Broker.

MQTT-Port 1883: reines TCP

MQTT-Port 1883 ist der ursprüngliche, unverschlüsselte Transport. Der Client öffnet eine TCP-Verbindung und sendet das binäre CONNECT-Paket direkt. Er hat den geringsten Overhead und wird standardmäßig von den meisten Embedded-Geräten, Kommandozeilen-Tools wie mosquitto_pub und serverseitigen Bibliotheken genutzt.

Der Haken: Alles – auch Benutzername und Passwort im CONNECT – wird im Klartext übertragen. Nutze 1883 in einem vertrauenswürdigen lokalen Netz oder für Wegwerf-Tests, aber niemals für Zugangsdaten oder Produktionsdaten, die übers Internet gehen.

MQTT-Port 8883: MQTT über TLS

MQTT-Port 8883 ist dasselbe MQTT-Protokoll, verpackt in TLS. Der Client führt zuerst einen TLS-Handshake durch, prüft das Broker-Zertifikat und sendet erst dann CONNECT. Das ist die Standardwahl für Geräte und Backend-Services, die übers Internet mit einem Broker sprechen.

  • Der Client braucht ein vertrauenswürdiges CA-Bundle (für öffentliche CAs reicht der System-Store; selbstsignierte Setups brauchen eine cafile).
  • Der Hostname, mit dem du dich verbindest, muss zum Zertifikat passen – verbinde dich also per Name, nicht per IP-Adresse.
  • Broker können auf diesem oder einem separaten Port zusätzlich Client-Zertifikate verlangen (Mutual TLS).

MQTT-WebSocket-Ports: 8083, 8084 und Co.

Browser können keine rohen TCP-Sockets öffnen, deshalb tunneln Web-Apps MQTT durch einen WebSocket. Der Client stellt einen HTTP-Upgrade-Request auf einen Pfad (meist /mqtt) mit dem Subprotokoll mqtt, und ab dann laufen die MQTT-Pakete in WebSocket-Frames. Einen einheitlichen MQTT-WebSocket-Port gibt es nicht:

  • EMQX nutzt standardmäßig 8083 (ws) und 8084 (wss).
  • Der öffentliche Broker von HiveMQ nutzt 8000 (ws) und 8884 (wss).
  • test.mosquitto.org nutzt 8080 (ws) und 8081 (wss).
  • Viele Produktions-Deployments legen WebSockets hinter einen Reverse Proxy auf 80 / 443.

Port 443: durch Firewalls kommen

Firmennetze, Hotel-WLANs und Mobilfunkanbieter blockieren oft alles außer Web-Ports. Läuft MQTT über sichere WebSockets auf 443, sieht der Traffic aus wie gewöhnliches HTTPS und kommt fast überall durch. Die Eclipse-Sandbox unter mqtt.eclipseprojects.io macht genau das. Manche Cloud-IoT-Plattformen akzeptieren auch natives MQTT über TLS auf 443 und unterscheiden es per TLS-ALPN-Extension von HTTPS auf demselben Port.

Ports beliebter öffentlicher MQTT-Broker

BrokerHostTCPTLSWSWSS
HiveMQbroker.hivemq.com188388838000 /mqtt8884 /mqtt
EMQXbroker.emqx.io188388838083 /mqtt8084 /mqtt
Mosquittotest.mosquitto.org1883888380808081
Eclipsemqtt.eclipseprojects.io1883888380 /mqtt443 /mqtt
ConnectMQ (Early Access)broker.connectmq.com188388838083 /mqtt8084 /mqtt

test.mosquitto.org betreibt zusätzlich Listener für spezielle Tests, etwa einen authentifizierten Listener auf 1884 (Benutzername rw, Passwort readwrite).

Mit EMQX auf wss-Port 8084 verbinden

Den Port in eine Verbindungs-URL einbauen

Die meisten Client-Bibliotheken erwarten eine einzige URL, die Schema, Host, Port und (bei WebSockets) Pfad kombiniert:

Verbindungs-URLs in MQTT.js
import mqtt from 'mqtt';

// Node.js only — raw TCP and TLS
mqtt.connect('mqtt://broker.emqx.io:1883');
mqtt.connect('mqtts://broker.emqx.io:8883');

// Browser or Node.js — WebSockets (note the /mqtt path)
mqtt.connect('ws://broker.emqx.io:8083/mqtt');
mqtt.connect('wss://broker.emqx.io:8084/mqtt');

Typische Port-Fehler

  • mqtt:// auf einem WebSocket-Port (oder ws:// auf 1883). Das Schema bestimmt, welches Protokoll der Client spricht; der Port muss dazu passen.
  • Den WebSocket-Pfad vergessen. Viele Broker akzeptieren das Upgrade nur auf /mqtt; ohne ihn bekommst du einen 404 oder einen stillen Fehlschlag.
  • TLS auf einem unverschlüsselten Port. mqtts:// auf 1883 scheitert mit einem TLS-Handshake-Fehler wie wrong version number.
  • Nur aus dem eigenen Netz testen. Ein Port, der im Büro funktioniert, kann im Mobilfunk oder im Gäste-WLAN blockiert sein. Teste aus dem Netz, das deine Geräte tatsächlich nutzen.
  • 1883 mit anonymem Zugriff ins Internet stellen. Internetweite Scanner finden offene MQTT-Broker sehr schnell. Wenn ein Broker erreichbar sein muss, verlange Zugangsdaten und bevorzuge TLS.

So prüfst du, ob ein MQTT-Port offen ist

Bevor du deinem Code die Schuld gibst, stell sicher, dass der Port aus deinem Netz erreichbar ist:

Port-Checks
# Is the TCP port open?
nc -vz broker.hivemq.com 1883

# Does the TLS port complete a handshake with a valid certificate?
openssl s_client -connect broker.hivemq.com:8883 -servername broker.hivemq.com </dev/null

# Full MQTT round trip over TLS
mosquitto_sub -h broker.hivemq.com -p 8883 --capath /etc/ssl/certs -t 'testmqtt/port-check' -v

Ein Timeout bedeutet meist, dass eine Firewall den Traffic verwirft; connection refused heißt, dass auf dem Port nichts lauscht. Unser Leitfaden zu MQTT-Verbindungsfehlern behandelt beides.

Ports auf deinem eigenen Broker öffnen

Wenn du Mosquitto selbst betreibst, ist jeder Port ein eigener listener. Ein typisches Setup bindet 1883 an localhost und stellt öffentlich nur verschlüsselte Listener bereit:

mosquitto.conf
# Plain MQTT, local clients only
listener 1883 127.0.0.1

# MQTT over TLS
listener 8883
certfile /etc/mosquitto/certs/server.crt
keyfile  /etc/mosquitto/certs/server.key

# Secure WebSockets for browsers
listener 8084
protocol websockets
certfile /etc/mosquitto/certs/server.crt
keyfile  /etc/mosquitto/certs/server.key

allow_anonymous false
password_file /etc/mosquitto/passwd

Denk daran, dieselben Ports auch in deiner Cloud-Firewall bzw. Security Group zu öffnen.

Welchen MQTT-Port solltest du nutzen?

  • Gerät oder Backend übers Internet: 8883 (TLS).
  • Browser-App: der wss://-Port des Brokers, idealerweise 443.
  • Restriktives Netz: wss:// auf 443.
  • Lokale Entwicklung oder ein schneller Test mit einem öffentlichen Broker: 1883 reicht.

Bereit, es auszuprobieren? Öffne den Online-MQTT-Client, wähle einen Broker, und der sichere WebSocket-Port wird automatisch für dich eingetragen.

Häufig gestellte Fragen

Was ist der Standard-Port für MQTT?

Der Standard-Port für unverschlüsseltes MQTT über TCP ist 1883, für MQTT über TLS 8883. Beide sind bei der IANA registriert. WebSocket-Ports sind nicht standardisiert und unterscheiden sich je nach Broker.

Welchen MQTT-Port sollte ich im Webbrowser nutzen?

Ein Browser kann keine rohen TCP-Verbindungen öffnen und muss daher den WebSocket-Listener des Brokers nutzen. Von einer HTTPS-Seite aus brauchst du den Port für sichere WebSockets (wss), zum Beispiel 8084 bei EMQX, 8884 bei HiveMQ oder 443 bei der Eclipse-Sandbox.

Kann MQTT auf Port 443 laufen?

Ja. Viele Broker bieten MQTT über sichere WebSockets auf 443 an, weil dieser Port fast nie von Firewalls oder Proxys blockiert wird. Manche Cloud-IoT-Dienste akzeptieren auch MQTT über TLS auf 443 mithilfe von ALPN.