🌍 Syncthing Relay Server
📌 Überblick
relaysrv ist ein Relay-Server für Syncthing. Er dient als Vermittler, wenn sich zwei Syncthing-Geräte nicht direkt verbinden können, zum Beispiel wegen NAT, Firewall oder restriktiver Netzwerke.
🎯 Zweck
Ein Relay-Server ermöglicht trotzdem eine Verbindung zwischen Geräten, indem der Datenverkehr über den Relay geleitet wird. Die Daten bleiben dabei Ende-zu-Ende verschlüsselt.
🌍 Öffentlicher Nutzen
- Ein gestarteter
relaysrvtritt standardmässig dem öffentlichen Syncthing-Relay-Pool bei - Dadurch steht er allen Syncthing-Nutzern weltweit zur Verfügung
- Mehr öffentliche Relays verbessern die Erreichbarkeit und Zuverlässigkeit des gesamten Syncthing-Netzwerks
🔒 Privater Einsatz
- Ein Relay kann auch nur für eigene Geräte betrieben werden
- Typisch für Firmen, Heimserver oder spezielle Netzwerksituationen
⚙️ Technische Eckpunkte
- Standard-Relay-Port:
22067 - Optionaler Status-Port (Web):
22070 - Kann über CLI-Optionen mit Rate-Limits, Tokens (z.B. provided-by) und expliziten Bind-Adressen konfiguriert werden
- Läuft als eigenständiger Dienst
🧩 Kurzfassung
Das Betreiben eines relaysrv wird empfohlen, wenn:
- direkte Verbindungen oft scheitern
- du deine eigenen Syncthing-Verbindungen stabilisieren willst
- du der Syncthing-Community helfen möchtest
Ein öffentlicher Relay-Server ist ein Beitrag zur Allgemeinheit, ohne die Sicherheit der Daten zu beeinträchtigen.
🐳 Relay-Server selbst betreiben: Docker (optional)
relaysrv kann alternativ zum nativen Betrieb auch containerisiert mit Docker ausgeführt werden. Die Funktionalität entspricht dem nativen Betrieb; persistente Daten (z.B. Schlüssel und Server-ID) liegen im Container unter /var/strelaysrv.
Beispiel für ein Portainer Stack:
Name z.B. syncthing-relay
# Quelle: https://hub.docker.com/r/syncthing/relaysrv
services:
syncthing-relay:
# Hinweis: ich nutze nur feste Image-Tags, um unerwartete Änderungen zu vermeiden
# image: syncthing/relaysrv:latest
image: syncthing/relaysrv:2.0.12
container_name: syncthing-relay
restart: unless-stopped
ports:
- "22067:22067/tcp" # Relay
- "22070:22070/tcp" # Status (optional)
volumes:
- syncthing-relay-data:/var/strelaysrv
# für eine private Nutzung (nicht im öffentlichen Pool), aktiviere die Zeile: - "-pools="
# Bandbreitenbegrenzung
command:
# "-pools="
# - "-provided-by=DEIN-NAME"
- "-global-rate=10485760" # 10 MB/s gesamt (0 = unbegrenzt)
- "-per-session-rate=1048576" # 1 MB/s pro Session (0 = unbegrenzt)
volumes:
syncthing-relay-data:
Im Stack ist ein Volume definiert und gemountet, dadurch bleiben diese Daten über Container-Neustarts und Updates erhalten.
Für strelaysrv sind nur diese Ports relevant und müssen ggf. in der Firewall erreichbar sein:
22067/tcp Relay-Port, muss von außen erreichbar sein
22070/tcp /status HTTP-Endpunkt (optional)
UFW-Beispiel
Status und aktive Regeln anzeigen:
sudo ufw status verbose
Ports freigeben:
sudo ufw allow 22067/tcp
sudo ufw allow 22070/tcp
Hinweis:
Der private Relay muss auf jedem Syncthing-Client manuell eingetragen werden.strelaysrvgibt beim Start im Log eine Relay-URI mit Platzhalter-Adresse (0.0.0.0) aus; diese ist durch die öffentliche IP oder einen DNS-Namen zu ersetzen (Port 22067).
💡 Tipps
1) Container-Status prüfen
docker ps
2) Logs prüfen (Relay-URI, ID, Pool-Status)
docker logs syncthing-relay
3) Prüfen, ob der Relay-Port lokal lauscht
ss -ltnp | grep 22067
alternativ
netstat -ltnp | grep 22067
4) Erreichbarkeit von außen testen (von einem anderen Host)
nc -vz <öffentliche-IP-oder-DNS> 22067
5) Optional: Status-Endpunkt prüfen
curl http://<öffentliche-IP-oder-DNS>:22070/status
6) Persistente Daten (Docker Volume) prüfen
docker volume inspect syncthing-relay_syncthing-relay-data | grep Mountpoint
sudo ls -la /var/lib/docker/volumes/syncthing-relay_syncthing-relay-data/_data
Quellen: