Guida a Syncthing: sincronizzazione file P2P

22/01/2021

Se non avete mai sentito parlare di sincronizzazione file P2P, forse è arrivato il momento che scopriate un’alternativa ai classici servizi cloud come OneDrive o Dropbox.

Syncthing è un software open source che permette di sincronizzare file tra due o più computer utilizzando il protocollo P2P. La peculiarità di questo sistema è infatti la sua natura indipendente:

  • Non è presente alcun server principale che ospita i file stessi, a differenza di quanto avvenga con i tradizionali sistemi cloud. Ciascun computer, detto nodo, in comunicazione con l’altro conserva in loco una copia parziale o totale del contenuto;
  • Le comunicazioni tra nodi sono interamente criptate e questo garantisce sicurezza e affidabilità;
  • Ogni nodo è identificato mediante una chiave che deve essere fornita ai nodi con i quali si intende comunicare in modo unidirezionale o bidirezionale. Solo i nodi autorizzati sono in grado di collegarsi tra loro e scambiarsi file;
  • Non è necessario installare o configurare nulla sul proprio sistema, aldilà del programma Syncthing stesso.

Syncthing è multipiattaforma e può essere integrato persino su dispositivi NAS, come quelli prodotti da Synology, ma esegue un lavoro impeccabile anche su microcomputer come i Raspberry.

Ottenere Syncthing

Syncthing è reperibile sul sito del progetto: https://syncthing.net/downloads/. Basta semplicemente selezionare la piattaforma sulla quale installare Syncthing e scaricare il file compresso col all’interno il programma. È inoltre disponibile il codice sorgente per chi vuole compilarlo ad hoc oppure studiarne il funziomanento e magari modificarlo a proprio piacimento. Il sito mette inoltre a disposizione una breve guida d’installazione per le distro basate su Debian / Ubuntu.

Installare Syncthing

Windows

Installare Syncthing su Windows può sembrare inizialmente una procedura piuttosto complessa, ma in realtà non è così. Scarichiamo il file zip per la nostra architettura e lo scompattiamo in una qualsiasi directory. Rechiamoci su:

C:\Programmi\

E al suo interno creiamo una directory apposita, ad esempio, syncthing. Copiamo i file di Syncthing all’interno di essa.

A questo punto apriamo il menù start e cerchiamo Utilità di pianificazione. Nella finestra apertasi, clicchiamo su Libreria Utilità di pianificazione, facciamo tasto destro su uno spazio vuoto e selezioniamo Crea nuova attività.

Assegnamo a questa un nome, ad esempio Syncthing. In basso assicuriamoci che sia selezionata la spunta Esegui solo se l’utente è connesso, quindi su Configura per selezioniamo la versione di Windows che stiamo utilizzando.

Rechiamoci nella scheda Attivazione e clicchiamo su Nuovo. In Avvia l’attività selezioniamo All’avvio, mettiamo la spunta su Utente specifico, quindi clicchiamo OK.

Rechiamoci su Azioni e clicchiamo su Nuova. Assicuriamoci che l’operazione sia Avvio programma, quindi in Programma o script clicchiamo su Sfoglia, quindi andiamo a cercare il file eseguibile di Syncthing nella directory in cui avevamo copiato i file del programma. Dopodichè, in Aggiungi argomenti scriviamo:

--no-console --no-browser

Fatto questo, rechiamoci su Condizioni e togliamo tutte le spunte. Su Impostazioni togliamo la spunta a Interrompi se eseguita per oltre. Infine, diamo OK.

Fatto questo, possiamo cliccare col tasto destro sull’attività appena creata e selezionare Esegui per avviarla.

Distro Linux Ubuntu/Debian-based

Sui sistemi GNU/Linux la procedura è più semplice. Nel caso di Ubuntu e delle distro Debian-based, è sufficiente scegliere tra il canale stabile oppure il canale candidate (che comprende versioni di Syncthing più nuove, ma meno stabili), dopodichè scrivere in serie i comandi mostrati nel sito. Se dovessero presentarsi problemi o errori, installare i pacchetti curl e apt-transports-https con:

sudo apt install curl apt-transport-https

Quindi ritentare la procedura a partire da subito dopo l’aggiunta del repository. Una volta installato il pacchetto syncthing, scrivere in serie:

systemctl --user enable syncthing
systemctl --user start syncthing

Il primo permette di abilitare il servizio syncthing all’avvio per l’utente corrente, mentre il secondo di eseguirlo seduta stante, sempre per l’utente corrente. Sarebbe infatti preferibile che questo programma venga eseguito con i privilegi utente e non con quelli root.

Distro Arch-based

Su Arch e derivate, come Manjaro, la procedura è ancora più semplice. Basta installare il pacchetto syncthing con:

sudo pacman -S syncthing

E infine, dare in serie:

systemctl --user enable syncthing
systemctl --user start syncthing

Stop, non è necessario fare altro.

Altri sistemi operativi

Syncthing è installabile su tanti altri sistemi operativi, tra cui macOS. È inoltre disponibile un’applicazione per Android sviluppata dal team di Syncthing, scaricabile dal Play Store.

Configurare Syncthing

Syncthing è installabile su tanti altri sistemi operativi, tra cui macOS. È inoltre disponibile un’applicazione per Android sviluppata dal team di Syncthing, scaricabile dal Play Store.

https://localhost:8384

In alternativa:

https://127.0.0.1:8384

Al primo avvio, Syncthing ci chiede se siamo intenzionati ad inviare delle statistiche anonime sul nostro utilizzo. Siamo liberi di scegliere, ma personalmente seleziono NO (per una volta che posso scegliere). Viene inoltre proposta la possibilità di configurare una password per la GUI, consigliato, ma che non faremo al momento.

La schermata principale è costituita da:

  • Un elenco delle cartelle sincronizzate;
  • Le informazioni di sincronizzazione locali;
  • I dispositivi remoti fidati.

Aggiungere dispositivi

Aggiungere un dispositivo remoto è semplicissimo, cliccando su Aggiungi dispositivo remoto è possibile indicare l’ID del dispositivo di cui vogliamo fidarci (questo codice dobbiamo conoscerlo solo noi e nessun altro, altrimenti chiunque in possesso della chiave potrebbe tentare di collegarsi al vostro PC, dovrete comunque autorizzare qualsiasi richiesta di aggiunta, ma è giusto avvisarvi).

I nodi su cui è già configurato Syncthing collegati nella stessa rete appariranno in elenco, in modo tale da poterli selezionare rapidamente. In ogni caso, per conoscere qual è l’ID di un dispositivo, bisogna recarsi dalla schermata principale su Azioni → Mostra ID, quindi copiare il codice mostrato.

Tornando alla schermata di aggiunta, è possibile inoltre configurare il nome del dispositivo (se lasciato vuoto, sarà inserito il nome proposto dallo stesso), mentre sotto Condivisione è possibile selezionare quali cartelle devono essere condivise con lo stesso, nonchè configurare parametri di accettazione automatica e quant’altro. Infine, sotto Avanzato è possibile selezionare come il dispositivo deve essere raggiunto nella rete: lasciando dynamic, il dispositivo verrà identificato con un MAC address o un IP locale nella stessa rete, oppure con un indirizzo IP esterno se ci si collega da remoto. Si possono inoltre scegliere i criteri di compressione, nonchè eventuali limiti di download e upload. Cliccando su Salva, viene aggiunto il dispositivo alla propria configurazione.

Procedimento analogo deve essere eseguito nell’altro dispositivo, oppure attendere che in quest’ultimo arrivi la richiesta di autorizzazione dal dispositivo che per primo ha avviato la richiesta di prima connessione.

Aggiungere cartelle

La cartella predefinita dove i file vengono sincronizzati è Sync, reperibile nella cartella home del proprio utente. Ad ogni modo, aggiungere cartelle da sincronizzare è semplicissimo. Analogamente è possibile eliminarle.

Cliccando su Aggiungi cartella è possibile configurare in Generale:

  • Etichetta: una descrizione facoltativa della cartella, irrilevante ai fini della sincronizzazione;
  • ID Cartella: il parametro più importante, poichè identifica la cartella su tutti i dispositivi che devono sincronizzarne il contenuto. Il parametro è case-sensitive, cioè fa differenza tra maiuscole e minuscole;
  • Percorso cartella: dove appunto deve essere situata la nostra cartella.

Sotto Condivisione è possibile scegliere quali dispositivi devono condividere tale cartella. Sotto Controllo Versione File è possibile attivare il file versioning di ciascun file sincronizzato.

File versioning

Il file versioning permette di archiviare versioni precedenti di un file quando questo viene cancellato o modificato da uno dei nodi. Il file versioning non sarà approfondito in questo video, per cui rimando direttamente alla documentazione di Syncthing dove vengono spiegati i criteri di funzionamento. Per quanto sia utilissimo, per semplicità, non attiviamo il file versioning al momento.

Schemi di esclusione

Importantissima invece la possibilità di creare degli schermi di esclusione. Nella fattispecie, è possibile andare ad inserire quali percorsi e/o file non si vogliono sincronizzare con altri nodi a partire dalla radice, in queso caso la cartella YouTube. Ad esempio:

  1. La macchina Ubuntu condivide con l’altra macchina Windows la cartella YouTube, dove al suo interno sono presenti due file: Avatar.png e SfondoXeeonRemastered2018.jpg;
  2. Supponendo che non siamo interessati ad inviare a Windows Avatar.png: nello schema di esclusione dovrà essere inserito il nome del file che non si intende condividere. Analogamente è possibile fare ciò per delle directory figlie. La stessa cosa si può fare al contrario, cioè configurare da Windows che non si è intenzionati a ricevere il file Avatar.png da Ubuntu. Una prova sul campo sarà prevista fra poco!
  3. Come già accennato, il percorso è relativo, cioè valutato a partire dalla radice della cartella condivisa, e non dalla radice del file system.

Gli schemi di esclusione sono configurabili anche in base a determinati tipi di estensione, corrispondenze a singolo livello, multi livello, e così via.

In Avanzato è possibile attivare o disattivare il monitoraggio del file system, scegliere se la condivisione deve essere unidirezionale o bidirezionale, e così via.

Cliccando su Salva, si aggiunge la cartella. Per completezza, andremo a copiare i file di esempio dentro di essa.

Procedimento analogo deve essere eseguito sugli altri dispositivi con i quali si condivide la cartella, assicurandosi che l’ID della stessa coincida ovunque. In alternativa, è possibile attendere la richiesta di condivisione dal primo dispositivo che ha preso per primo l’iniziativa di condividere la cartella.

Nella configurazione della cartella YouTube su Windows viene ora esplicitato che NON si è intenzionati a ricevere il file Avatar.png, dunque questo NON sarà sincronizzato. Notiamo oltretutto che l’ID della cartella sarà il medesimo di quello configurato su Ubuntu.

Impostazioni

Nelle Impostazioni di Syncthing è possibile configurare:

  • Nome di dispositivo
  • Come Syncthing deve installare gli aggiornamenti
  • Il percorso predefinito in cui verranno create le cartelle di Syncthing
  • Una password di accesso per l’interfaccia grafica
  • Il tema della GUI
  • Impostazioni relative al protocollo
  • Limiti di velocità

E così via. Esistono inoltre delle impostazioni molto più avanzate per andare più a fondo con le modifiche, persino di ciascuna cartella.

Conclusioni

Per questa guida su Syncthing è tutto. Vi invito a passare sul canale YouTube per visualizzare una video guida dedicata, ed eventualmente di lasciare il vostro feedback. Alla prossima!