web analytics

[Guida] Syncthing: come sincronizzare i propri file su più dispositivi in P2P

syncthing open source

Nella guida di oggi vi mostro come utilizzare Syncthing, un programma open source di sincronizzazione P2P dei file. Permette di sincronizzare i propri file tra due o più dispositivi, anche se posti all’interno della stessa rete LAN. Come si legge sulla pagina GitHub ufficiale del progetto, uno degli obiettivi perseguiti è quello di rendere il programma accessibile universalmente. Funziona infatti, oltre che su GNU/Linux, anche su MacOS, Windows, FreeBSD, Solaris e OpenBSD. Esiste anche un’applicazione ufficiale sviluppata per Android e distribuita tramite Play Store o F-Droid. Per la realizzazione di questa guida ho utilizzato due macchine virtuali, ma ovviamente è tutto riproducibile anche in uno scenario più complesso.

Syncthing: remote sync made easy

Una delle migliori caratteristiche di Syncthing è il non richiedere alcuna configurazione particolare. Ogni dispositivo è identificato da un ID che, una volta inserito nella GUI, fa partire la sincronizzazione dei file. Funzionando tramite protocollo P2P, i dati non verranno caricati su alcun cloud pubblico o server di terze parti, fin quando ci si trova all’interno della stessa LAN. Similmente a quello che avviene con i torrent, viene condiviso tra macchine remote il carico di sincronizzazione e più dispositivi connessi sono online, più veloce è la velocità di trasferimento dei dati.

Quando non è possibile stabilire una connessione diretta tra due dispositivi, però, Syncthing può inoltrare il traffico grazie ad una rete di relay pubblici, forniti dalla comunità. In tal caso la velocità di trasferimento è molto inferiore a quella consentita da una connessione diretta. Dal punto di vista della sicurezza, tuttavia, essendo la connessione tra due dispositivi crittografata end-to-end, il fornitore del servizio di inoltro sarà a conoscenza solo del vostro indirizzo ip, dell’ID del dispositivo e della quantità di dati scambiata.

open source config base gnu/linux p2p

Nota importante: se il contenuto dei file viene modificato contemporaneamente su più dispositivi, il possibile conflitto viene gestito da Syncthing rinominando il file con la data di modifica anteriore come [filename].sync-conflict-[date]-[time]-[modifiedBy].[ext]. Se ci fosse un eventuale conflitto anche sulla data di modifica, verrà rinominato il file modificato dalla macchina con l’ID maggiore.

Configurare il servizio

Passiamo ora alla guida vera e propria su come configurare Syncthing. Questa procedura andrà ripetuta su tutti i dispositivi che volete connettere, effettuando ovviamente le opportune modifiche. Il primo step consiste nell’installare il programma su tutte le macchine. Ipotizzando di avere due computer connessi in rete locale, entrambi con a bordo GNU/Linux come sistema operativo, la direttiva da utilizzare sarà:

sudo apt install syncthing    #Debian e derivate
sudo dnf install syncthing    #Fedora, RHEL, CentOS
sudo pacman -S syncthing      #ArchLinux e derivate
sudo zypper install syncthing #OpenSuse
syncthing p2p boot
L’indirizzo del cruscotto è visionabile stesso nel terminale dopo l’avvio di Syncthing.

Completata l’installazione, avviate la piattaforma open source con la direttiva syncthing. Si aprirà il cruscotto nel browser, all’indirizzo 127.0.0.1:8384. Procedete ora ad impostare la password per accedere al pannello di amministrazione. Cliccate su actions ed aprite la scheda GUI. Spuntante anche la voce Use HTTPS for GUI. Per terminare il servizio, nel terminale, dopo aver chiuso il browser utilizzate la combinazione CTRL + C.

syncthing open source admin

Il cruscotto si divide in tre sezioni: Folders contenente le informazioni relative alle cartelle condivise, This device con i dettagli riguardanti il computer attualmente in uso e Remote device dove sarà possibile associare altri dispositivi. In questa sezione selezionate Add Remote Device ed aggiungete tutti gli ID dei dispositivi che volete partecipino alla sincronizzazione. Per visionare l’ID di un dispositivo andate in Show ID, dal button Actions.

syncthing remote device lan

Completate, su ogni dispositivo, questa procedura di associazione e, una volta terminata, si avvierà l’aggiornamento in tutte le macchine delle cartelle scelte. Il cruscotto vi informerà sullo stato della sincronizzazione P2P, sia in caso di esito positivo che di eventuali errori di configurazione. Nel caso in cui vi dia problemi nella sincronizzazione, potrebbe essere un problema di database. In tal caso utilizzate l’istruzione syncthing -reset-database.

syncthing sync p2p without cloud
In questo esempio, la cartella desktopVB è sincronizzata con il dispositivo virtualbox2.

Avviare la sincronizzazione con Systemd

Grazie a Systemd, ovviamente, piuttosto che avviare Syncthing manualmente, potete creare un servizio che avvii in automatico la sincronizzazione P2P. Create l’apposito demone grazie all’istruzione:

sudo nano /etc/systemd/system/syncthing@.service

e, nel file appena aperto, inserite il seguente codice:

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target

[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -gui-address="0.0.0.0:8384" -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Date, infine, le classiche istruzioni per abilitare il servizio, come vi ho spiegato in questa guida:

sudo systemctl daemon-reload
sudo systemctl start syncthing@$USER
sudo systemctl enable syncthing@$USER

In caso di esito positivo, dovreste avere un output dell’istruzione sudo systemctl status syncthing@$USER come il seguente screenshot.

systemd service

Vi ho mostrato solo la configurazione di base di Syncthing, ma è la punta dell’iceberg. Tramite la GUI, infatti, potete accedere a moltissime personalizzazioni, tutte fruibili con pochi click e senza particolari difficoltà. È possibile, ad esempio, scegliere se i dispositivi remoti possono solo scaricare o effettuare l’upload nelle cartelle condivise, o personalizzare la connessione P2P. Per maggiori informazioni su Syncthing, vi rimando al sito web ufficiale della piattaforma, dove, tra le altre cose è presente anche un’ottima documentazione.

sharing-caring-1Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.