UUGRN

Re: syncthing-Discovery-Server der UUGRN?

From
Marc Haber <mh+uugrn@...>
Date
Hallo,

On Tue, Oct 28, 2025 at 01:05:53PM +0100, Marc Haber wrote:
>syncthing ist ein plattformübergreifende Tool mit dem man transparent 
>Directories auf seinen Rechnern und "Devices" synchron halten kann. 
>der Datentransfer erfolg Peer-to-Peer, aber damit die Devices sich 
>gegenseitig finden braucht es einen "Discovery Server".

Ich bin endlich soweit dass ich es selbst eingerichtet habe. Das war 
eine ordentliche Knacknuss, unter anderem weil die Debuggingoptionen gut 
versteckt über eine Environmentvariable aktiviert werden und ich keine 
Idee habe wie man in Android Apps mit bestimmtem Environment starten 
kann.

Mein erster Usecase sind ein Linux-Desktop mit Debian Unstable und ein 
aktuelles Android-Telefon (Android 16 von Samsung).

Syncthing öffnet sowohl auf dem Linux als auch auf dem Android einen 
Port und bietet darauf das Konfigurationsinterface an. Die Android-App 
selbst hat nur rudimentäre Einstellmöglichkeiten, auch hier wird die 
Konfiguration über das Web UI vorgenommen. Auf dem Linux muss man den 
URL selbst aufrufen, die Android-App hat in ihrem Burgermenü einen 
Menüpunkt "WebUI". Wenn man auf dem Linux nicht der einzige Benutzer 
ist, sollte man das WebUI mit einem Passwort schützen, sonst können das 
alle anderen Benutzer des Rechners auch aufrufen. Unter Linux startet 
syncthing als systemd user unit, man schaltet sie mit
$ systemctl --user enable --now syncthing
ein.

Der Discovery-Server unter https://syncthing-discovery.uugrn.org:8443/ 
wird auf jeden Fall benötigt. Inzwischen hat er auch ein "richtiges" 
Zertifikat, was die Ursache gewesen sein dürfte, dass es bei Valentin 
anfänglich nicht funktioniert hat. Die Clients lehnen den Server sonst 
ohne Logeinträge ab und schauen nur noch regelmäßig nach ob inzwischen 
ein genehmes Zertifikat vorliegt. Der Prozess über Netzwerkgrenzen 
hinweg benötig einen Discovery-Server und heißt "Global Discovery".

Die Kommunikation zwischen den Clients ist eigentlich als Peer-to-Peer 
vorgesehen, was auch wunderbar funktionieren würde, wenn wir 
flächendeckend IPv6 hätten. Haben wir aber nicht. Es muss daher davon 
ausgegangen werden, dass mindestens einer der Kommunikationpartner 
hinter NAT ist. Syncthing benutzt dafür dann NAT-PMP und seinen älteren 
Bruder UPnP um den Router um einen dynamischen Portforward zu bitten.

Da spielt sofort die traurige Trompete, denn das schaltet man als erstes 
ab, wenn man einen Router einrichten möchte. Und wenn man von seinem 
Provider Internet nur per CGNAT oder DS-Lite bekommt, geht das sowieso 
nicht. Wer noch eine "richtige" IPv4 hat und gewillt ist, seinen 
Syncthing-Geräten eine feste IP-Adresse im lokalen Netz zu geben, kann 
mit einem statischen Portforward arbeiten, was natürlich nur mit einem 
einzigen Gerät pro Anschluss funktioniert. Am ehesten kommen hier noch 
diejenigen zum Zug, deren Provider anständiges IPv6 anbietet, da kann man 
dann für jedes Gerät einzeln den benötigten Port freischalten. Aber das 
habe ich nicht probiert.

Theoretisch könnte es auch noch gehen, z.B. auf seiner UUGRN-VM ein 
syncthing zu installieren: Diese ist nicht hinter NAT und könnte auf 
diese Weise quasi einen Hub für die eigene Syncthing-Installatio 
spielen¹. Das habe ich auch nicht probiert.

Als letzte Möglichkeit kann man noch einen Relayserver verwenden, der 
irgendwo im Internet steht und die (verschlüsselten) Daten nur 
durchreicht. Syncthing stellt relayserver-Pools zur Verfügung. Und die 
UUGRN hat seit gestern einen eigenen Relayserver, der nicht an den 
öffentlichen Pools teilnimmt.

Mit Infrastruktur der UUGRN könnt Ihr also Syncthing komplett autonom 
benutzen.

Dazu konfiguriert Ihr Eure Clients im Webinterface unter Actions (das 
ist das ganz rechte Menü in der oberen Zeile mit dem Zahnrad) > Settings 
> Connections.

Dort tragt Ihr unter "Sync Protocol Listen Address" anstelle von 
"default" (was u.a. den öffentlichen Pool benutzt) die Adresse und ID 
des UUGRN-Relayservers ein. Das lautet:
relay://syncthing-relay.uugrn.org:22067/?id=

Die ID ist zwar eigentlich nicht vertraulich, ich möchte sie aber 
trotzdem nicht im Mailinglistenarchiv haben. Ihr findet den kompletten 
URL für das relay auf shell in /usr/local/doc/localhost/syncthing-relay

Bei "Global Discovery" und "Enable Relaying" wird jeweils der Haken 
gesetzt.

In das Feld "Global Discovery Server" kommt
https://syncthing-discovery.uugrn.org:8443/

Dann ist es nur noch wichtig, in dem Dialog auf "Save" zu klicken und 
die Dienste danach manuell neu zu starten (Actions > Restart).

Dann macht man seine Devices einander gegenseitig durch Eingabe der 
jeweils anderen ID bekannt (auf der Androidseite kann man den vom 
Client im Linux angezeigten QR-Code fotografieren, für die andere 
Richtung kann man E-Mail (die wäre dann immerhin transportverschlüsselt) 
oder einen sicheren Messenger mit Desktopclient benutzen. Oder man beißt 
ganz fest die Zähne zusammen und tippt die ID ab.

Wenn man dann auf der einen Seite den ersten Ordner shared, sollte auf 
der anderen Seite die "Einladung" zum Sharen des Ordners aufpoppen, und 
dann kann man noch festlegen wo im lokalen Dateisystem die geshareten 
Daten liegen sollen.

Und das war's. Mag das jemand (anderes) ins Wiki gießen?

Wenn noch Fragen sind, sprecht mich gerne an.

Grüße
Marc


¹ wer der VM nicht traut: Man kann auf seinen Clients für die Daten ein 
Passwort hinterlegen, mit dem die Daten bei der Übertragung 
verschlüsselt werden. Ein Client, der das Passwort nicht hat, nimmt zwar 
an der Verteilung teil, aber die Daten landen verschlüsselt und unlesbar 
im Dateisystem. Ob man diese Daten nachträglich durch Eingabe des 
Passworts wieder herausbekommt, habe ich nicht probiert, aber eigentlich 
würde ich erwarten dass das geht.

-- 
-----------------------------------------------------------------------------
Marc Haber         | "I don't trust Computers. They | Mailadresse im Header
Leimen, Germany    |  lose things."    Winona Ryder | Fon: *49 6224 1600402
Nordisch by Nature |  How to make an American Quilt | Fax: *49 6224 1600421

-- 
Unix User Group Rhein-Neckar e.V.: https://www.uugrn.org
Archiv und An-/Abmeldung:          https://mail2.uugrn.org
Social Media:                      https://social.uugrn.org

Thread

In reply to: syncthing-Discovery-Server der UUGRN? Marc Haber <mh+uugrn@...>