Syncthing è un Software Libero pubblicato su syncthing.net sotto licenza Mozilla Public License Versione 2.0. Sono disponibili distribuzioni per Windows, OSX, GNU/Linux, BSD, Solaris e Android.
L'intero ecosistema di Syncthing è libero, aperto e Open Source: il software nasce come applicativo a riga di comando con un'aggiunta interfaccia Web, accessibile tramite un Web Browser. Ogni dispositivo è identificato tramite coppia di chiavi crittografiche (usando TLS) e l'indirizzo IP degli altri dispositivi viene comunicato tramite un Tracker anch'esso Open Source. E' possibile utilizzare il Tracker gestito dagli sviluppatori del software, usarne uno gestito personalmente o connettersi direttamente a indirizzi conosciuti senza usare un tracker.
Il software è implementato usando il linguaggio di programmazione Go (anche detto Golang).
Passi da seguire su ogni dispositivo (almeno due dispositivi sono necessari):
Quando almeno due dispositivi sono accesi contemporaneamente e sono in grado di comunicare via rete locale o Internet, cominceranno a sincronizzare il contenuto delle cartelle.
Syncthing è un'implementazione del Block Exchange Protocol (BEP), che offre una soluzione al problema della sincronizzazione decentralizzata di una o più cartelle di file tra due o più dispositivi. Questo protocollo è nato e cresciuto insieme a Syncthing.
Le specifiche del protocollo sono incluse insieme alla documentazione di Syncthing.
BEP utilizza TCP per comunicare e TLS per crittografia e autenticazione.
Spesso i dispositivi possono trovarsi dietro NAT e/o Firewall.
Syncthing include delle tecniche basilari di NAT Traversal, ma per comunicare stabilmente uno dei due interlocutori deve poter ricevere connessioni in ingresso.
Dunque, per avere la totale certezza che due dispositivi comunichino, è necessario posizionarli temporaneamente nella stessa rete locale, oppure utilizzare un terzo dispositivo in grado di ricevere connessioni in ingresso che può fungere da tramite e soprattutto permette la sincronizzazione anche se i due dispositivi da sincronizzare non sono mai accesi contemporaneamente o mai connessi direttamente tra loro.