SyncThing : tout synchroniser, partout

Android 1 sept. 2015

Ayant monté mon cloud personnel (à base de NAS Synology) je cherchais un moyen de synchroniser efficacement et facilement tous mes périphériques y compris Android. J’ai bien évidemment testé la solution CloudStation de Synology, à la fois serveur et client, mais à l’époque le client pour Linux en était encore à ses débuts et, dans mon cas, fonctionnait une fois sur deux. Je m’étais alors mis en recherche des diverses solutions accessibles depuis une base Linux et avait testé rSync, SFTP + script puis BitTorrentSync.

J’avais été séduit par le concept de ce dernier. Une interface, une synchronisation via le protocole BitTorrent et la possibilité de le mettre en œuvre très simplement. Cependant l’absence de publication du code source et la possibilité que ça passe par les serveurs de cette société m’avait un peu freinés. Je ne devais pas être le seul puisqu’une alternative libre et gratuite a rapidement vu le jour : Syncthing. De surcroît disponible via des dépôts Synology et Android. C’est aussi compatible OSX, Windows & BSD.

Clairement cet outil est génial, très simple d’installation et d’utilisation. Il me sert à synchroniser mes documents entre tous mes PC/smartphones mais aussi à rapatrier automatiquement sur mes NAS les téléchargements effectués via mes serveurs. C’est d’ailleurs ce dernier cas que je vais prendre en exemple dans ce tutoriel. Bien évidemment tout le contenu que je télécharge est libre de droit. Notamment certains logiciels/jeux Linux, c’est pourquoi vous verrez l’exemple du dossier /Linux par la suite.

Fonctionnement

J’ai un serveur distant avec le couple rTorrent/ruTorrent. Les téléchargements complétés sont automatiquement déplacés dans le dossier /home/aerya/torrents/Done/Sync, /Sync contenant lui-même des sous-répertoires. J’aime bien quand c’est trié… Mais plutôt que de configurer SyncThing pour chaque sous-répertoire j’ai préféré tout regrouper dans /Done/Sync pour ne faire qu’une seule synchronisation globale.

En parallèle, chez moi, j’ai installé SyncThing sur un PC qui reste allumé H24 (qui me sert pour la TV via Kodi et quelques autres services aussi). Mais vous pouvez le mettre directement sur notre NAS, la configuration restant la même.

Une fois configuré et les 2 périphériques liés, SyncThing va scanner régulièrement la source (le serveur) et télécharger automatiquement tout ce qui ne l’a pas encore été sur les NAS. ST lie entre eux des périphériques via leurs IDs (ex. SUJRPLW-…-4BW2DU4) et, sur chacun d’eux, des dossiers, également via leurs IDs (ex. Sync, Linux, Documents, Photos…). C’est-à-dire que sur chaque périphérique que vous voulez synchroniser vous devez créer un partage avec la même ID.

Installation (Linux)

En USER, placez-vous dans votre /home

cd ~

Allez chercher le lien de DL de la version qu’il vous faut et téléchargez là sur votre machine

wget https://github.com/syncthing/syncthing/releases/download/v0.11.23/syncthing-linux-amd64-v0.11.23.tar.gz

Décompressez l’archive

tar xzvf syncthing*.tar.gz

Placez vous dans le dossier

cd syncthing*

Copiez les fichiers au bon endroit

sudo cp syncthing /usr/local/bin

Et retirez tout ce qui ne sert plus dans votre /home

cd ~ puis rm -rf syncthing*

Vous pouvez ensuite lancer SyncThing, en USER et non ROOT, afin de voir s’il fonctionne bien.

syncthing Si c’est le cas vous avez l’interface sur http://votre_IP:8384

ST accueil

Si vous ne voyez rien, stoppez ST avec les touches "ctrl+c" et allez éditer sa configuration

sudo nano ~/.config/syncthing/config.xml puis modifiez l’IP 127.0.0.1 en 0.0.0.0. Profitez-en aussi éventuellement pour changer le port de la WebUI, par mesure de sécurité.

ST config.xml

[collapse]

Le mieux est de lancer ST en screen afin de le laisser tourner tranquillement alors que vous quitterez votre terminal. En USER et non ROOT

screen -S Sync puis syncthing et quittez le screen avec “ctrl+a d”.

Attention à libérer les ports si vous avez mis en place des règles IPtables strictes. Port du GUI et port du protocole de synchronisation dans config.xml. Idem lorsque vous l’installez chez vous, sur NAS ou PC, vérifiez que les ports sont bien ouverts/redirigés selon la configuration de votre routeur/firewall/box FAI.

Routage

Configuration de SyncThing (nous verrons le partage ensuite)

La configuration, hors partages, est assez basique. Vous pouvez changer les ports directement dans config.xml ou bien passer par la WebUI et le menu Actions/Configuration

ST config

Partager un dossier

SyncThing lie entre eux des périphériques via leurs IDs (ex. SUJRPLW-…-4BW2DU4) et, sur chacun d’eux, des dossiers, également via leurs IDs (ex. Sync, Linux, Documents, Photos…). C’est-à-dire que sur chaque périphérique que vous ajoutez à ST vous devez créer un partage avec la même ID pour chaque dossier que vous voulez synchro sur l’un et l’autre des périphériques.

Vous pouvez lier des périphériques avant ou après avoir créé des partages de dossiers, peu importe l’ordre.

Dans cet exemple je veux partager le dossier /home/aerya/torrents/Done/Sync de mon serveur distant avec le dossier /Sync sur mon NAS local. Comme vous le voyez le dossier /Sync contient à son tour plusieurs dossiers qui seront synchro dont /Linux.

Dossier NAS

Sur votre interface SyncThing vous pouvez retirer le partage par défaut puisque nous allons en créer un autre. Vous devez répéter cette étape sur chaque interface ST de chaque périphérique à synchroniser.

Ici, sur le serveur distant, cliquez sur Ajouter un répertoire et créez le partage pour le dossier.

ST serveur ajout partage dossier

Si vous suivez ce tutoriel (contrairement à ce screen…) vous ne verrez alors rien dans Partage avec des machines. On le voit plus tard.

Répertoire maître : il s’agit là d’indiquer à ST que ce dossier sera la source de la synchro. Je veux que tout ce qu’il contient soit envoyé mais ni remplacé ni effacé par un autre partage. Utile si vous partagez des fichiers destinés à être supprimés chez vous mais à laisser en seed sur votre serveur par exemple. En revanche dans le cas d’un partage de type cloud il est alors évident qu’il ne faut pas cocher cette case sinon vos documents locaux ne seront pas mis à jour sur votre cloud.

Une fois ce partager créé vous le voyer sur l’accueil de votre WebUI

Partage ok serveur

Maintenant, sur le PC local (ou le NAS). Dans mon cas les NAS sont montés sur le PC. C’est-à-dire que j’y accède depuis le PC via /mnt/…

ST dossier monté

Mais si vous avez installé SyncThing sur votre NAS le chemin sera de ce type.

Attention si vous avez installé ST directement sur le NAS à mettre les droits rw pour sc-syncthing sur le dossier que vous partagez

Droits ST Syno

[collapse]
ST dossier NAS

Lier des périphériques & dossiers

Il suffit de récupérer l’ID d’un des périphériques et de l’ajouter à l’autre. Le 1er va découvrir le second automatiquement.

Par exemple je récupère l’ID de SyncThing TV, donc chez moi, via Actions / Montrer l’ID

ID ST HomeEt je vais l’entrer sur ST installé sur mon serveur via le bouton Ajouter un périphérique en bas à droite sur l’accueil. J’en profite pour lui indiquer de partager le dossier Sync.

Liaison

Il ne vous reste qu’à patienter quelques instants et valider les demandes de partage des 2 côtés et vous pourrez alors apprécier de le regarder travailler :)

ST terminé

Par défaut le délai de scan, pour recherche de nouveau fichiers à synchroniser, est de 60 secondes. Vous pouvez le modifier sans dans le confi.xml soit via la WebUI, Actions / Avancé / Dossier “Sync” puis rescanIntervalS

ST scan intervalTous les éléments de configuration se trouvent dans leurs FAQs.

Mots clés