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

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.

BASH
# 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@server Du 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.

BASH
# 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

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

BASH
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.

BASH
# 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.

BASH
# 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):

TXT
# /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:

BASH
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!

TXT

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

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

  1. Logge dich im ISPConfig Panel über deine Tailscale-IP ein: https://<TAILSCALE_IP>:8080.
  2. Navigiere zu System -> Firewall -> Add new Firewall record.
  3. Konfiguriere die öffentlichen Ports extrem restriktiv:
    • TCP Ports: 80, 443 (Nur normales Web-Traffic)
    • UDP Ports: (leer lassen)
  4. Da Port 22 (SSH) und Port 8080 (ISPConfig) im öffentlichen Netz blockiert sind, erlaube auf der Server-Konsole den vollen Zugriff exklusiv über das Tailscale-Schnittstellen-Interface:
BASH

# Erlaube jeglichen internen Traffic über das verschlüsselte Tailscale-Netzwerk
sudo ufw allow in on tailscale0