Syncthing - Cloud-Synchronisation ohne Cloud
Vor kurzem bin ich wieder ĂŒber dieses Tool gestolpert â etwas, von dem ich
schon vor einer Weile gehört, es aber nie wirklich ausprobiert hatte.
FrĂŒher habe ich bsync, unison und ein paar andere verwendet, aber
keines davon hat mich wirklich ĂŒberzeugt. Meistens bin ich am Ende doch
wieder beim guten alten rsync gelandet. Mit Syncthing habe ich endlich
etwas gefunden, das ich auf meiner gesamten Infrastruktur ausrollen
möchte.
Syncthing synchronisiert Dateien direkt zwischen GerĂ€ten â kein Cloud-Dienst, kein Server eines Drittanbieters, kein Account nötig. Alles bleibt innerhalb des eigenen Netzwerks. Es lĂ€uft unter Linux, Windows, macOS und Android.
Installation
Unter Debian/Ubuntu installiert man am besten aus dem offiziellen Syncthing-Repository, um aktuelle Versionen zu bekommen:
curl -s https://syncthing.net/release-key.txt | sudo gpg --dearmor -o /usr/share/keyrings/syncthing-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt update && sudo apt install syncthing
Als systemd-Dienst ausfĂŒhren
Syncthing fĂŒr den eigenen Benutzer aktivieren und starten (username
durch den tatsÀchlichen Benutzernamen ersetzen):
sudo systemctl enable syncthing@username
sudo systemctl start syncthing@username
Sobald es lÀuft, ist die Web-OberflÀche unter http://localhost:8384
erreichbar.
Um von einem anderen Rechner aus auf die Web-OberflÀche zuzugreifen (z.B. bei einem Headless-Server), den Port per SSH weiterleiten:
ssh -L 8384:localhost:8384 user@server
GerĂ€te hinzufĂŒgen
Jede Syncthing-Installation hat eine eindeutige Device ID â eine lange alphanumerische Zeichenkette, die in der Web-UI unter Actions â Show ID sichtbar ist. Um zwei GerĂ€te zu verbinden:
- Die Device ID von GerÀt A kopieren
- Auf GerĂ€t B zu Add Remote Device gehen und die ID einfĂŒgen
- GerĂ€t A erhĂ€lt eine Verbindungsanfrage â diese bestĂ€tigen
- Bei Bedarf in die andere Richtung wiederholen
Syncthing handelt dann eine direkte Verbindung zwischen den beiden GerÀten aus.
Ordner teilen
Sobald GerÀte gekoppelt sind, lassen sich Ordner zwischen ihnen teilen:
- In der Web-UI auf Add Folder klicken
- Einen lokalen Pfad und eine gemeinsame Folder ID festlegen (muss auf beiden Seiten ĂŒbereinstimmen)
- Unter Sharing auswÀhlen, welche GerÀte Zugriff haben sollen
- Einen Sync-Typ wÀhlen: Send & Receive, Send Only oder Receive Only
Das entfernte GerÀt erhÀlt eine Freigabeanfrage und muss diese bestÀtigen, bevor die Synchronisation beginnt.
Relay-Server deaktivieren
StandardmĂ€Ăig kann Syncthing den Datenverkehr ĂŒber öffentliche Relay-Server leiten, falls keine direkte Verbindung möglich ist. Um die Synchronisation strikt innerhalb des eigenen Netzwerks zu halten, sollte man Relaying deaktivieren:
Unter Actions â Settings â Connections folgende Optionen abwĂ€hlen:
- Enable Relaying
- Global Discovery (optional â nur nötig, wenn sich GerĂ€te in unterschiedlichen Netzwerken befinden)
Mit deaktiviertem Relaying synchronisieren GerÀte nur, wenn sie sich direkt erreichen können. Das ist auch eine kleine Sicherheitsverbesserung, da nie Datenverkehr das eigene Netzwerk verlÀsst.
Dateien ausschlieĂen
Syncthing liest eine .stignore-Datei im Wurzelverzeichnis jedes geteilten
Ordners. Die Muster funktionieren Àhnlich wie bei .gitignore:
# compiler output
*.o
*.a
*.so
# build directories
/build/
/dist/
# editor temporaries
*.swp
.DS_Store
Die .stignore-Datei selbst wird nicht synchronisiert â jedes GerĂ€t
pflegt seine eigene.
Versionierung
Syncthing kann frĂŒhere Versionen geĂ€nderter oder gelöschter Dateien aufbewahren. Unter Edit Folder â File Versioning stehen mehrere Strategien zur VerfĂŒgung:
- Trash Can â gelöschte Dateien werden in einen
.stversions-Ordner verschoben - Simple â behĂ€lt eine feste Anzahl alter Versionen
- Staggered â behĂ€lt Versionen mit wachsenden AbstĂ€nden (stĂŒndlich â tĂ€glich â wöchentlich)
FĂŒr die meisten AnwendungsfĂ€lle ist Trash Can oder Staggered eine gute Wahl.