---
title: '1. Installation'
url: 'https://blog.ro011110ot.de/de/vps/mosquitto-mqtt-broker-installation-setup'
markdown: 'https://blog.ro011110ot.de/de/vps/mosquitto-mqtt-broker-installation-setup.md'
lang: de
date: '2026-10-05'
description: 'Diese Anleitung installiert Mosquitto, konfiguriert Benutzer-Authentifizierung und bereitet alles für die SSL-Verschlüsselung vor. 1. Installation Zuerst installieren wir den Broker und die Client-Tools (zum Testen). sudo apt update sudo apt install mosquitto mosquitto-clients 2. Benutzer anlegen (…'
---

Diese Anleitung installiert Mosquitto, konfiguriert Benutzer-Authentifizierung und bereitet alles für die SSL-Verschlüsselung vor.

## 1. Installation

Zuerst installieren wir den Broker und die Client-Tools (zum Testen).

```Bash
sudo apt update
sudo apt install mosquitto mosquitto-clients
```

## 2. Benutzer anlegen (Sicherheit)

Standardmäßig sollte MQTT niemals ohne Passwort laufen. Wir legen eine Passwortdatei an.

```Bash
# Ersetze 'dein_benutzer' durch den Namen aus deiner .config Datei
sudo mosquitto_passwd -c /etc/mosquitto/passwd dein_benutzer
```

*(Du wirst nach einem Passwort gefragt. Nutze das, was du im Python-Script eingetragen hast.)*

## 3. Grundkonfiguration

Wir erstellen eine Konfigurationsdatei, die den anonymen Zugriff verbietet und die Passwortdatei lädt.

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

**Inhalt einfügen:**

```Ini,
# Port für unverschlüsselte interne Kommunikation (oder zum Testen)
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd

# Vorbereitung für SSL (Port 8883)
listener 8883
protocol mqtt
# Die folgenden Zeilen erst aktivieren, wenn die Zertifikate da sind:
# cafile /etc/letsencrypt/live/mqtt.EXAMPLE.TLD/chain.pem
# certfile /etc/letsencrypt/live/mqtt.EXAMPLE.TLD/cert.pem
# keyfile /etc/letsencrypt/live/mqtt.EXAMPLE.TLD/privkey.pem
# --- WebSockets Support ---
listener 9001
protocol websockets
# Falls WebSockets auch über SSL laufen sollen (WSS):
# cafile /etc/letsencrypt/live/mqtt.EXAMPLE.TLD/chain.pem
# certfile /etc/letsencrypt/live/mqtt.EXAMPLE.TLD/cert.pem
# keyfile /etc/letsencrypt/live/mqtt.EXAMPLE.TLD/privkey.pem

# --- Performance Tuning (Optional für viele kleine Sensoren) ---
persistence true
persistence_location /var/lib/mosquitto/
```

## 4. Firewall & HestiaCP

Da Mosquitto auf Port 1883 (lokal) und 8883 (extern) läuft, müssen wir diese in HestiaCP oder der Firewall freigeben.

**In der HestiaCP GUI:**

1. Gehe zu **Settings** -> **Firewall**.
2. Füge zwei neue Regel hinzu:

| **Regel-Name** | **Port(s)** | **IP-Adresse** | **Kommentar** |
|---|---|---|---|
| **MQTT External** | `8883,9001` | `0.0.0.0/0` | Sicherer Zugang von außen (SSL & WS) |
| **MQTT Internal** | `1883` | `127.0.0.1` | Nur für lokale Scripte (Logger) |

*Hinweis: Falls deine Sensoren zu Hause kein SSL können, müsstest du Port 1883 doch für `0.0.0.0/0` (alle) öffnen, aber das solltest du nur im Notfall tun.*

### 🛸 MQTT Port-Matrix

| Port | Protokoll | Verschlüsselung | Zielgruppe |
|---|---|---|---|
| **1883** | MQTT | Nein (Plain) | Interne Scripte / Lokale Sensoren |
| **8883** | MQTT | **Ja (TLS/SSL)** | Externe Sensoren / Python-Logger |
| **9001** | WebSocket | Optional (WSS) | Browser-Dashboards / Web-Apps |

## 5. SSL-Zertifikat (Let's Encrypt)

Da dein Script über `mqtt.EXAMPLE.TLD:8883` mit SSL verbinden will, braucht Mosquitto Zugriff auf die Zertifikate.

**Wichtig für die Berechtigungen:** Mosquitto läuft als User `mosquitto` und kann normalerweise nicht in den Let's Encrypt Ordner schauen.

```Bash
# Mosquitto Leserechte für Zertifikate geben
sudo usermod -aG ssl-cert mosquitto
```

## 6. Neustart & Test

```Bash
sudo systemctl restart mosquitto
sudo systemctl status mosquitto
```

**Manueller Test-Befehl (im Terminal):**

```Bash
# Nachricht senden zum Testen
mosquitto_pub -h localhost -t "Sensors/Test" -m '{"id": "Test_1", "temperature": 25.0}' -u "dein_benutzer" -P "dein_passwort"
```

---

### 📝 Notizen für dein Python-Script

- Dein Script nutzt `MQTT_USE_SSL = true`. Das wird erst funktionieren, wenn du in Schritt 3 die SSL-Pfade in der `default.conf` einkommentierst und die Zertifikate für `mqtt.EXAMPLE.TLD` erstellt hast.
- **Tipp:** Wenn du den Broker erst mal ohne SSL testen willst, stelle in der `.config` den Port auf `1883` und `MQTT_USE_SSL` auf `false`.

**Soll ich dir zeigen, wie du für die Subdomain `mqtt.EXAMPLE.TLD` in HestiaCP ein separates Zertifikat anforderst, damit Mosquitto es nutzen kann?**

---

## Navigation

- Previous: [1. Das Script erstellen](https://blog.ro011110ot.de/de/vps/logs.md)
- Next: [MQTT to MariaDB Logger 💾](https://blog.ro011110ot.de/de/vps/mqtt-to-mariadb-logger.md)
