Syncthing
# Syncthing

Syncthing ist eine quelloffene Dateisynchronisationssoftware auf Basis von Peer-to-Peer-Übertragungen. Es kann Dateien zwischen mehreren Geräten in einem lokalen Netzwerk oder über das Internet synchronisieren. Datenschutz und -sicherheit sind zentraler Bestandteil der Software. Die Software ist in Go geschrieben, der Quelltext wird über den Hosting-Dienst GitHub veröffentlicht.

Syncthing basiert auf dem eigens für die Software entwickelten, ebenfalls quelloffenen Block Exchange Protocol. Die Dateien werden ohne einen zentralen Server zwischen verschiedenen Geräten synchronisiert. Die Kommunikation ist mit Perfect Forward Secrecy gesichert, wobei jeder Knoten über ein Zertifikat identifiziert wird. Nur explizit autorisierte Knoten können sich mit dem Cluster verbinden. Für die Konfiguration und die Überwachung von Syncthing steht auf allen Plattformen eine Weboberfläche zur Verfügung. Es lassen sich beliebig viele Verzeichnisse synchronisieren. Pro Gerät kann dabei festgelegt werden, welche einzelnen Ordner geteilt werden sollen. Zudem stehen Möglichkeiten zur Versionsverwaltung sowie unidirektionale Dateitransfers zur Verfügung.

## Infrastruktur

Die Gerätesuche erfolgt über Broadcast-Nachrichten im lokalen Netzwerk und über öffentlich zugängliche, von den Projektentwicklern gehostete Discovery-Server, sowie durch die Gerätehistorie und statische Gerätenamen. Es gibt auch die Möglichkeit, eigene Discovery-Server zu betreiben, die neben oder als Ersatz für die öffentlichen Server verwendet werden können.

Die Datenübertragung zwischen den Geräten erfolgt Ende-zu-Ende mit TLS verschlüsselt. Können die Geräte nicht direkt miteinander kommunizieren, erfolgt die Verbindung über Relay-Server, die ebenfalls von den Projektentwicklern gehostet werden. Auch hier ist die Kommunikation Ende-zu-Ende mit TLS verschlüsselt, so dass der Relay-Server nur die verschlüsselten Daten sehen kann. Private Relay-Server können auch eingerichtet und konfiguriert werden. Syncthing wechselt automatisch vom Relaying zu direkten Geräte-zu-Gerät-Verbindungen, wenn es erkennt, dass eine direkte Verbindung verfügbar ist.

Die Anwendung kann ohne jegliche Verbindung zu den Projekt- oder Community-Servern verwendet werden, da Programmaktualisierungen, die Bereitstellung von Nutzungsstatistiken, Discovery und Relaying unabhängig voneinander deaktiviert oder konfiguriert werden können.

## Konfiguration und Management

Die Konfiguration von Syncthing kann lokal oder entfernt über eine Weboberfläche, über die REST- und Events-APIs oder mit einem der von der Community bereitgestellten Wrapper-Programme vorgenommen werden. Außerdem gibt es Docker-Images sowie Konfigurationsmanagement-Lösungen wie Puppet oder Ansible.

## Testberichte

Die Webseite Golem.de veröffentlichte 2014 einen Test über Syncthing.

In der c’t 8/2015 wurde ein Bericht über die Einrichtung und Benutzung von Syncthing veröffentlicht. Der Bericht wurde in der Ausgabe 14/2021 aktualisiert, besonders bezüglich der Anwendung auf verschiedenen Plattformen (z. B. auch Raspberry Pi).

