Zusätzliche Dienste: Tailscale, Syncthing & Mosquitto
Diese Notiz beschreibt die Installation und isolierte Konfiguration von Tailscale, Syncthing und dem Mosquitto MQTT-Broker auf einem minimalen Debian-System.
User USER anlegen und konfigurieren
Wir erstellen den Benutzer, fügen ihn der sudo-Gruppe hinzu und weisen ihm direkt zsh als Standard-Shell zu:
Bash
# Create the new user (you will be prompted to set a password)
adduser USER
# Add the user to the sudo group
usermod -aG sudo USER
# Set zsh as the default shell for the new user
chsh -s /bin/zsh USER
1. Tailscale Installation & Tailscale SSH
Tailscale erstellt ein sicheres Mesh-VPN. Damit kannst du verschlüsselt auf das ISPConfig-Panel oder SSH zugreifen, ohne die Ports im Netcup-Panel komplett für das öffentliche Internet öffnen zu müssen. Durch das Aktivieren von Tailscale SSH übernimmt Tailscale die SSH-Authentifizierung, sodass du den Standard-SSH-Port komplett schließen kannst.
# Tailscale über das offizielle Skript installieren
curl -fsSL https://tailscale.com/install.sh | sh
# Tailscale mit aktivierter SSH-Funktion starten und Server authentifizieren
sudo tailscale up --ssh
[!NOTE] Wenn du dich in Zukunft von deinem Hostsystem über Tailscale per SSH verbinden willst, reicht ein einfaches:
tailscale ssh root@serverDu musst dafür keine Passwörter eingeben oder Keys kopieren, solange du auf deinem lokalen Gerät bei Tailscale eingeloggt bist.[!CAUTION]
Neue IP bei NextDNS Rewrite Rules eintragen
2. Syncthing Installation
Syncthing übernimmt die kontinuierliche, dezentrale Dateisynchronisation. Wir binden hier das offizielle Repository ein, um immer die aktuellste Stable-Version zu erhalten.
# Offizielle PGP-Keys für das Repository hinzufügen
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
# Offizielle Apt-Quelle hinzufügen
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
# Paketquellen aktualisieren und Syncthing installieren
sudo apt update
sudo apt install -y syncthing
# Start service once to generate configuration files
systemctl start syncthing@USER.service
# warte 10 Sekunden
sleep 10
# Stop it immediately to safely edit the XML file
systemctl stop syncthing@USER.service
Important
Standardmäßig lauscht das Syncthing-Webinterface nur auf 127.0.0.1:8384. Um den Zugriff exklusiv auf dein sicheres VPN zu beschränken, ermittle deine Tailscale-IP via
tailscale ip -4
und trage sie in der config.xml ein:
micro /home/USER/.local/state/syncthing/config.xml
<address>DEINE_TAILSCALE_IP:8384</address>
Danach den Dienst mit sudo systemctl restart syncthing@root.service neu starten. Das Webinterface ist nun ausschließlich über das Tailscale-Netzwerk aufrufbar.
Syncthing starten
systemctl enable --now syncthing@USER.service
3. Mosquitto MQTT Broker
Mosquitto dient als leichtgewichtiger Nachrichten-Vermittler (Broker) für die eingebetteten Systeme (ESP32 via CachyOS-Hotspot) und die Dashboard-Kommunikation.
# Mosquitto Server und Client-Tools installieren
sudo apt install -y mosquitto mosquitto-clients
# Service aktivieren und starten
sudo systemctl enable --now mosquitto
Mosquitto absichern (Exklusiv via Tailscale & Passwort)
Damit der Broker im öffentlichen Internet komplett unsichtbar ist und nur authentifizierte Geräte Daten senden können, binden wir ihn an das Tailscale-VPN und richten eine Benutzer-Authentifizierung ein.
# 1. Passwort-Datei erstellen und einen User anlegen (z.B. esp32_client)
# Du wirst danach zur Eingabe eines Passworts aufgefordert
sudo mosquitto_passwd -c /etc/mosquitto/passwd USER
# 2. Tailscale-IP des VPS herausfinden
tailscale ip -4
# 3. Konfiguration für exklusiven VPN-Zugriff und Authentifizierung öffnen
sudo micro /etc/mosquitto/conf.d/default.conf
Füge folgende Zeilen in die Konfigurationsdatei ein (Tailscale-IP anpassen):
# /etc/mosquitto/conf.d/default.conf
# =================================================================
# Aktive Konfiguration (Tailscale & Authentifizierung)
# =================================================================
# Binde den Broker deine Tailscale-IP
listener 1883 100.121.130.85
# 2. Listener für Localhost (für Skripte direkt auf dem VPS)
listener 1883 127.0.0.1
# Sicherheit: Nur autorisierte Benutzer
allow_anonymous false
password_file /etc/mosquitto/passwd
# =================================================================
# Zusätzliche Optionen (Dokumentation/Vorlagen)
# =================================================================
# 1. Logging: Aktiviere detaillierte Logs, falls du Fehler suchen musst
# log_dest file /var/log/mosquitto/mosquitto.log
# log_type all
# 2. Persistence: Hilfreich, falls der VPS neu startet (QoS 1 & 2 Nachrichten bleiben erhalten)
# persistence true
# persistence_location /var/lib/mosquitto/
# 3. Connection Timeouts: Falls ESP32-Nodes instabil wirken
# max_keepalive 60
# 4. Sicherheit: ACL (Access Control List) - falls du später einschränken willst,
# welche User auf welche Topics zugreifen dürfen.
# acl_file /etc/mosquitto/aclfile
Danach den Broker einmal neu starten, um die Änderungen zu übernehmen:
sudo systemctl restart mosquitto
[!TIP] Da die ESP32-Nodes über den Hotspot deines CachyOS-Hostsystems laufen, verbinden sie sich im Quellcode einfach direkt mit der Tailscale-IP des VPS auf Port 1883 und authentifizieren sich mit dem angelegten
esp32_client. Der MQTT-Port muss in der öffentlichen Netcup-Firewall nicht geöffnet werden!
Damit sind jetzt alle drei Zusatzdienste (Tailscale SSH, Syncthing und Mosquitto) lückenlos über dein verschlüsseltes VPN isoliert!
4. Status-Prüfung und Live-Logs
Mit diesen Befehlen kannst du nach der Installation kontrollieren, ob alle drei Dienste sauber laufen:
Bash
# Status der einzelnen Dienste prüfen
sudo systemctl status tailscaled
sudo systemctl status syncthing@root
sudo systemctl status mosquitto
# Live-MQTT-Logs über deinen Zsh-Alias einsehen
mqtt
6. Firewall-Konfiguration & Tailscale-Isolierung
- Logge dich im ISPConfig Panel über deine Tailscale-IP ein:
https://<TAILSCALE_IP>:8080. - Navigiere zu System -> Firewall -> Add new Firewall record.
- Konfiguriere die öffentlichen Ports extrem restriktiv:
- TCP Ports:
80, 443(Nur normales Web-Traffic) - UDP Ports: (leer lassen)
- TCP Ports:
- Da Port
22(SSH) und Port8080(ISPConfig) im öffentlichen Netz blockiert sind, erlaube auf der Server-Konsole den vollen Zugriff exklusiv über das Tailscale-Schnittstellen-Interface:
# Erlaube jeglichen internen Traffic über das verschlüsselte Tailscale-Netzwerk
sudo ufw allow in on tailscale0