software,

Syncthing, installazione e uso

Sabino Maggi Sabino Maggi Segui 9-Apr-2024 · 16 minuti di lettura
Condividi

Fonte: JJ Ying su Unsplash.

Descrivere in generale un software complesso come Syncthing è utile, ma ancora più utile è arrotolarsi le maniche e provare ad usarlo, verificando in pratica se fa davvero al caso nostro.

Caratteristiche principali

Quali sono le caratteristiche principali che differenziano Syncthing rispetto a strumenti più diffusi come Dropbox, Box e così via, ma anche rispetto ai servizi offerti dai giganti dell’informatica come iCloud, OneDrive o Google Drive?

  • Sincronizzazione peer-to-peer. Syncthing utilizza un approccio peer-to-peer per sincronizzare i file tra i dispositivi. Non esiste un server centrale, ma tutti i dati vengono trasmessi direttamente da un computer all’altro attraverso un canale di trasmissione bidirezionale sicuro basato sul protocollo TLS.

  • Crittografia dei dati. Ogni computer che partecipa alla rete di sincronizzazione viene identificato tramite un certificato crittografico e tutti i dati trasmessi vengono crittografati, garantendo la sicurezza e la privacy delle informazioni.

  • Flessibilità nella selezione delle cartelle. A differenza di altri servizi simili, Syncthing consente di scegliere le cartelle specifiche da sincronizzare; queste possono avere nomi e perfino percorsi diversi su ciascuno dei dispositivi utilizzati.

  • Modifiche in tempo reale. Qualsiasi modifica apportata ai file all’interno delle cartelle sincronizzate viene riflessa quasi istantaneamente su tutti i dispositivi collegati.

  • Supporto multi-piattaforma. Syncthing è compatibile con diversi sistemi operativi, tra cui Linux, macOS, Windows, BSD e Android. Recentemente è stata introdotta anche un’app sperimentale per iOS, consentendo l’utilizzo di Syncthing anche su iPhone ed iPad.

  • Open-source. Syncthing è un software open-source, il che significa che il suo codice sorgente è disponibile pubblicamente, garantendo una maggiore trasparenza, in particolare per quanto riguarda la sicurezza dei dati trasmessi e l’assenza di eventuali backdoor o di codice malevolo.

Installazione

Syncthing nasce come una applicazione di sistema, da far partire attraverso la linea di comando (ad esempio il Terminale di macOS), oppure in modo automatico ad ogni avvio del sistema operativo. L’interazione con il programma avviene tramite un server web integrato nell’applicazione stessa. Gli stessi utilizzatori, però, hanno sviluppato una serie di strumenti grafici che semplificano l’installazione e l’uso del programma sulle diverse piattaforme.

Versione a linea di comando

Per installare la versione ufficiale di Syncthing a linea di comando, dobbiamo andare nella sezione Downloads del sito e scaricare il programma eseguibile specifico per il nostro sistema operativo. In particolare, per macOS è disponibile sia la versione Universal, che funziona indifferentemente sia sui Mac con processore Intel che sui modelli più recenti dotati di processore Apple Silicon/ARM, sia le versioni specifiche per i due processori.

In alternativa, sul Mac si può installare Syncthing anche tramite il benemerito Homebrew,

% brew install syncthing

oppure con MacPorts (% sudo port install syncthing).

A questo punto, possiamo usare Syncthing lanciando l’eseguibile dal Terminale di macOS o, più in generale, dall’interfaccia a linea di comando disponibile per il nostro sistema operativo, una operazione che può andare bene per fare delle prove ma non per usare uno strumento come questo in modo continuativo.

Per eseguire Syncthing automaticamente all’avvio del sistema operativo, dovremo seguire le istruzioni riportate qui specifiche per il nostro sistema operativo. Non sono niente di trascendentale, ma comunque richiedono un po’ di pazienza e di attenzione.

Versione con interfaccia grafica

Devo confessare che, nonostante la mia passione per il Terminale e per gli strumenti a linea di comando, non ho mai usato Syncthing nel modo appena descritto. La comunità degli utilizzatori del programma, infatti, ha sviluppato una serie di strumenti grafici che semplificano notevolmente l’uso di Syncthing, permettendo di far partire o bloccare l’applicazione, di controllare se tutto funziona regolarmente o se ci sono aggiornamenti disponibili, quindi perché non approfittarne?

Per macOS la scelta è facile, si tratta di syncthing-macos, una applicazione nativa per macOS che fa tutto quello che serve davvero e che viene aggiornata regolarmente. Per installarla basta scaricare il file in formato .dmg, montarlo sul desktop del Mac e trascinare l’icona del programma nella cartella Applicazioni. Al primo avvio, nella barra del menu del Mac comparirà la nuova icona relativa a syncthing-macos, con la quale gestire il funzionamento di base del programma e controllare che tutto funzioni a dovere.

Analogamente, per Windows esiste SyncTrayzor, che va scaricato scegliendo la versione installabile (in formato .exe) a 32 o a 64 bit, oppure la versione portabile (in formato .zip), sempre a 32 o a 64 bit.1 Purtroppo SyncTrayzor non viene aggiornato da tre anni e questo può essere un problema. Volendo c’è anche Syncthing Tray, che è multipiattaforma (c’è anche macOS, ma io lascerei stare) e che viene aggiornato con regolarità.

Per Linux, a parte Syncthing Tray appena citato, c’è solo l’imbarazzo della scelta e, come al solito, la scelta del programma da usare e i dettagli dell’installazione dipendono fortissimamente dalla distribuzione e dall’ambiente grafico usato (GNOME, KDE, Xfce e così via).

In ogni caso, questi programmi si occupano solo di gestire l’avvio o lo stop dell’applicazione di sincronizzazione e di installare gli eventuali aggiornamenti, ma tutta la configurazione di Syncthing e la sincronizzazione vera e propria viene gestita tramite un browser web, rendendola indipendente dal sistema operativo in uso.2

Configurazione iniziale

Una applicazione configurabile nei minimi dettagli tramite una applicazione web non è (ancora?) troppo usuale, almeno sul Mac e su Windows. Ma è anche vero che ora la maggior parte delle stampanti vengono gestite tramite una interfaccia web e che da lungo tempo è possibile amministrare un server Linux tramite una applicazione web modulare, dimostrando che un server web è in grado di interfacciarsi con il sistema operativo sottostante come se fosse una normale applicazione nativa.

I vantaggi di una soluzione come questa sono innegabili: da un lato, il lavoro degli sviluppatori viene semplificato perché non devono gestire i toolkit di costruzione delle interfacce grafiche specifici per i diversi sistemi operativi e ambienti grafici o non sono obbligati ad usare dei toolkit multipiattaforma, ma proprio per questo molto pesanti, come Electron. Dall’altro gli utenti si trovano ad avere a che fare con una interfaccia identica su tutti i sistemi operativi, una cosa che non guasta di certo per un programma come Syncthing che, per sua stessa natura, viene usato su sistemi operativi diversi.

Sul Mac l’applicazione web può essere lanciata tramite la voce Open del menu di syncthing-macos, oppure cliccando sul tasto Open Syncthing Web Interface delle Preferenze del programma. Chi usa Windows o Linux troverà tasti o voci di menu o tasti equivalenti nelle rispettive applicazioni.

In alternativa, ed indipendentemente dalla programma di gestione usato, possiamo aprire un browser web ed inserire l’indirizzo del server web integrato in Syncthing, http://127.0.0.1:8384.

NOTA: tutte le schermate che seguono sono in inglese, che è la lingua che uso sempre sui miei Mac. Syncthing però è localizzato in decine di lingue diverse e può essere usato facilmente anche nella nostra lingua.

Qualunque sia il metodo usato, la prima volta che si usa Syncthing si viene accolti da questa schermata, che ci chiede se vogliamo inviare ogni giorno un rapporto crittografato contenente dei dati statistici relativi all’uso di Syncthing.

Io sono un po’ diffidente e rispondo sempre di no però, mentre scrivevo questo articolo mi sono reso conto che il rapporto non contiene niente di trascendentale, per cui mi unirò agli utenti di Syncthing, sparsi (apparentemente) soprattutto nel nord Europa, che condividono senza troppe fisime il loro profilo d’uso.

Una volta superata la richiesta iniziale di condivisione dei dati, appare la schermata principale del programma,

ancora quasi vuota ma che ci invita caldamente a definire un utente ed una password per accedere a questa schermata. Una cosa buona e giusta, che si fa cliccando sul tasto Settings, selezionando il pannello GUI e inserendo i dati richiesti nei campi GUI Authentication User e GUI Authentication Password.

Per maggiore sicurezza, si può anche attivare l’opzione Use HTTPS for GUI e cambiare la porta di default utilizzata dal server web (campo GUI Listen Address) da 8384 a un altro numero a piacere.

Passando al pannello General, questo permette di cambiare il nome del dispositivo (Device name), che normalmente è lo stesso definito nelle opzioni di Condivisione delle Impostazioni di Sistema (per chi usa Sonoma o Ventura) o delle Preferenze di Sistema (per chi usa Monterey e versioni precedenti). In genere io tolgo l’estensione .local e lascio solo il nome del computer, ma nella schermata qui sotto ho preferito lasciare l’impostazione di default.

Sempre nel pannello General, è possibile cliccare sul tasto Edit Folder Defaults per modificare il nome (Folder Label) della cartella principale di sincronizzazione usata da Syncthing, nonché il percorso (Folder Path) dove salvare questa cartella. Questo percorso sarà anche il percorso di default tutte le altre cartelle sincronizzate definite in seguito.

Se non si cambia niente Syncthing userà la cartella ~/Sync nella Home dell’utente (che in macOS, così come su tutti i sistemi operativi derivati da Unix, viene indicata per convenzione con il carattere ~), e per ora va bene così.3

Rimanendo ancora nel pannello General, possiamo cliccare sul tasto Edit Device Defaults per mostrare un nome di nostra scelta al posto dell’ID del dispositivo. Come vedremo più avanti, questa opzione potrebbe aiutare a identificare più facilmente i dispositivi remoti coinvolti nel processo di sincronizzazione

Gli altri pannelli presenti in Settings, e cioè Connections, Ignored Devices e Ignored Folders possono essere tranquillamente lasciati stare, almeno fino a che non si è pratici con l’uso del programma.

Una volta salvate le modifiche effettuate, si può tornare alla schermata principale di Syncthing.

Sulla parte sinistra della schermata compare l’unica cartella di sincronizzazione già definita, quella creata da Syncthing al primo avvio, che ha etichetta Default Folder e percorso ~/Sync. Questa è la cartella principale di sincronizzazione usata dal programma, analoga alla cartella di sincronizzazione standard usata da Dropbox, Box e servizi analoghi.

Cliccando nell’area grigia intorno a Default Folder compaiono parecchie informazioni utili relative a questa cartella, fra cui il suo percorso completo (/Users/maggi/Sync, che in questo caso equivale a ~/Sync), il numero di file e di cartelle presenti al suo interno e lo spazio totale occupato sul disco (tutto ancora uguale a zero), il tipo di sincronizzazione (Send & Receive), quindi questa cartella può sia inviare che ricevere i file). La cartella non è ancora sincronizzata con altri dispositivi e il suo stato corrente di Unshared è messo bene in evidenza da un font più grande e di colore ben diverso dal resto dell’interfaccia.

Sincronizzazione di base

Superato lo scoglio della (noiosa) configurazione iniziale, eccoci finalmente alla parte più divertente, la sincronizzazione con altri dispositivi remoti su cui gira già Syncthing.4

Cominciamo collegando a Syncthing il primo dispositivo remoto. Per farlo, dobbiamo premere sul tasto Add Remote Device situato in basso a destra sotta l’intestazione Remote Devices,

facendo comparire una nuova finestra Add Device con la lista dei nostri dispositivi su cui gira già Syncthing.

Per collegarci ad uno di questi, dobbiamo inserire a mano l’ID relativo nel campo Device ID o, più semplicemente, cliccare su uno degli ID elencati (parzialmente oscurati per motivi di sicurezza).

Ma come si fa a sapere quel’è l’ID del dispositivo a cui vogliamo collegarci? Semplice, basta andare (fisicamente o da remoto) sul dispositivo in questione, aprire l’interfaccia web di Syncthing e cliccare in alto a destra sulla voce di menu Actions -> Show ID. Comparirà questa finestra, che riporta il nome del computer con il relativo ID.

Se l’ID è già presente nella lista dei dispositivi mostrata sopra nella finestra Add Device non c’è problema, basterà cliccare sul link relativo per associare il dispositivo remoto a quello su cui stiamo lavorando. Altrimenti dovremo inviare in qualche modo questo ID alla macchina locale (tramite email, SMS, QR Code, note condivise o quello che preferite), in modo che possa essere inserito a mano nel campo Device ID.5

Qualunque sia il metodo usato, una volta inserito il Device ID (che in questo esempio è quello che inizia con MIA) clicchiamo sul tasto Save e nell’area Remote Devices della finestra principale del programma comparirà il dispositivo remoto appena associato.

Contemporaneamente sulla macchina remota apparirà una richesta di conferma del collegamento,

che dovremo accettare premendo il tasto verde Add Device e modificando eventualmente il nome del dispositivo remoto (Device Name).

A questo punto, il dispositivo locale e quello remoto sono dispositivi collegati ma non ancora utilizzati, come mostrato chiaramente dalla scritta verde Connected (Unused),

e possiamo finalmente sincronizzare la cartella principale Default Folder con il dispositivo remoto. Come abbiamo già visto, la cartella si trova al percorso ~/Sync ed è ancora vuota. Clicchiamo allora sul tasto Edit,

selezioniamo il pannello Sharing e poi il dispositivo con cui vogliamo sincronizzare i dati (in questo caso, achille) e clicchiamo su Save.

Sul dispositivo remoto comparirà un nuovo avviso, che ci chiede conferma della richiesta di sincronizzazione.

Accettiamola cliccando sul tasto verde Add senza toccare (per ora) i valori di default di Folder Label e Folder Path e premiamo Save.

A questo punto il dispositivo locale e quello remoto saranno connessi. Era ora!

Basterà ora mettere qualche file nel Default Folder, non importa se in quello locale o remoto, per attivare subito dopo il processo di sincronizzazione all’altro capo del collegamento che, se i file non sono troppi e non sono troppo grandi, si conclude in pochi secondi.

Durante la sincronizzazione il programma fornisce una visione piuttosto chiara di quello che succede istante per istante, mostrando con un carattere bello grande la percentuale di processo già effettuata e la quantità di dati ancora da sincronizzare e, in modo più discreto, il numero di elementi non ancora sincronizzati (Out of Sync Items).

Se nella cartella ~/Sync aggiungiamo nuovi file e nuove cartelle il processo di sincronizzazione si riattiverà automaticamente e ogni volta avremo delle cartelle perfettamente sincronizzate fra il dispositivo locale e quello remoto.

Va notato che la velocità del trasferimento dipende fortemente dalle condizioni del collegamento: su rete locale la sincronizzazione è velocissima, nel mare aperto di internet siamo in balia della qualità del collegamento offerto dal nostro provider. Ma questo è un problema comune a tutti i servizi di sincronizzazione remota concorrenti.

Conclusioni

Lo so, è venuto fuori un articolo lunghissimo e pieno zeppo di figure. Ma usare la prima volta Syncthing è oggettivamente complicato e può essere una esperienza davvero frustrante, soprattutto se non si è pratici di queste cose.

Per questo motivo ho preferito spiegare ogni passaggio in dettaglio, piuttosto che obbligare chi non ha mai usato un programma come questo a perdersi nella lettura della documentazione o a provare e a riprovare alla cieca, cercando di capire come funziona. Con l’effetto finale, quasi inevitabile, di fuggire via in cerca di lidi più accattivanti (almeno in apparenza).

Perdere una mezz’oretta a leggere questo articolo permette di imparare ad utilizzare uno strumento potente, che funziona bene e che ci permette di non cedere a terzi i nostri documenti, ripagando appieno lo sforzo fatto.

Nel prossimo articolo descriverò qualche tecnica più avanzata di utilizzo di Syncthing, che permetta di sfruttare meglio il programma uscendo un po’ dalle impostazioni di default. A presto!

  1. In Windows, un programma portabile è un programma che non richiede installazione perché nella cartella che lo contiene è presente sia l’eseguibile vero e proprio sia tutte le librerie e i file accessori necessari al suo funzionamento. Se questo vi ricorda il formato delle applicazioni usate da sempre su macOS, ebbene sì, avete ragione! 

  2. Fa eccezione SyncTrayzor, che dispone di un server web integrato e quindi permette di configurare tutto senza uscire dall’applicazione. Anche in questo caso, però, l’interfaccia grafica vista dall’utente è identica a quella visualizzata da chi usa un browser generico. 

  3. Sul Mac che sto usando per scrivere questo articolo la mia Home si trova al percorso /Users/maggi, per cui è equivalente scrivere /Users/maggi oppure più semplicemente ~

  4. Indipendentemente dal fatto che i dispositivi remoti siano sulla stessa rete locale della macchina su cui siamo lavorando o che si trovino su reti diverse e fisicamente lontanissime. 

  5. Perché nessuno è così masochista da volerlo copiare lettera per lettera e cifra per cifra, vero? 

Sabino Maggi
Pubblicato da Sabino Maggi Segui
Commenti

Aggiungi un commento