Dateien synchronisieren

Syncthing synchronisiert Dateien über ein Peer-to-Peer Protokoll. Wenn der Server hinter einem DSL-Router oder einer anderen NAT-Firewall steht, richten wir dort eine Weiterleitung der TCP-Ports ab 22000 ein, um mobile Geräte direkt zu verbinden und ohne einen (langsamen) Relay-Server in Anspruch nehmen zu müssen.

Topologie der Synchronisation

Pakete installieren

Das Paket enthält den Daemon, Unit-Dateien und reichlich Dokumentation.

apt install syncthing

Ports konfigurieren

Syncthing ist eigentlich nicht für den Betrieb auf einem Server ausgelegt. Für jeden Benutzer muss eine eigene Instanz des Daemons laufen und diese braucht eigene Ports.

~User/.config/syncthing/config.xml
… <gui enabled="true" tls="false" debugging="false"> <address>127.0.0.1:8384</address> </gui> <options> <listenAddress>tcp://:22001</listenAddress> </options>

Für jeden Benutzer instanziieren wir eine eigene Unit.

systemctl enable --now syncthing@User.service

Apache konfigurieren

/etc/apache2/sites-enabled/default.conf
… # Syncthing <Location /syncthing/User> ProxyPass http://localhost:8384/ ProxyPassReverse http://localhost:8384/ RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME} RequestHeader set Host localhost Require all granted </Location> …

Clients anbinden

Die benutzereigene Unit startet den Daemon beim Anmelden und stoppt ihn beim Abmelden.

systemctl --user --now enable syncthing.service
firefox http://localhost:8384

Über die eingebaute Webanwendung kann man nun verschiedene Ordner einrichten und diese nach Weitergabe der Geräteidentifikation mit anderen Geräten teilen. Das funktioniert allerdings nur, wenn beide gleichzeitig eingeschaltet sind. Daher bietet es sich an, den Webserver als zentrale Instanz einzubinden.