Installation et configuration de Syncthing

I. Présentation de Syncthing

Syncthing, concurrent direct de BitTorrent Sync, se présente comme un système de Cloud Computing ouvert, sûr et décentralisé qui permet d’avoir des données synchronisées entre plusieurs périphériques (Windows, Mac OS et Linux pour le moment). C’est en quelque sorte un Owncloud mais fonctionnant sous le mode du Peer-to-Peer, sans serveur « central ». Toutes les communications sont chiffrées par le protocole TLS et chaque périphérique est clairement identifié avec un identifiant unique (on verra ça un peu plus loin).

Logo Syncthing

Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.

Voici le site officiel du produit : Syncthing

II. Récupérer et lancer Syncthing

Le téléchargement de Syncthing se fait directement sur leur page GitHub, qui propose plusieurs plateformes (OpenBSD, Solaris, Linux ARM, Linux 32 & 64bits...) :

Téléchargement de Syncthing
Téléchargement de Syncthing

Dans ce tutoriel, j’installerai Syncthing sur un ordinateur sous Windows 8.1 et sous une machine virtuelle avec Xubuntu 14.04.

Sous Windows, Syncthing se présente comme un exécutable (dans un fichier *.zip) qui lancera le service et ouvrira son interface Web (http://127.0.0.1:8080 par défaut).

Une fenêtre DOS est ouverte, c’est la condition pour utiliser Syncthing sous Windows.

Sous Linux, Syncthing se trouve dans une archive *.tar.gz, pour la décompresser et lancer le service :

tar –xvf syncthing-linux-amd64-v*.tar.gz
cd
syncthing-linux-amd64-v*/
chmod +x syncthing
./syncthing

Cela lancera Syncthing sous votre utilisateur courant (il peut être lancé en root, ou pour plus de sécurité, avec un utilisateur dédié à Syncthing).

On peut également l’installer depuis le gestionnaire de paquet Apt-get (Debian-likes) par exemple.

Interface Syncthing - 1
Interface Syncthing - 1

L’interface web de Syncthing s’ouvre alors automatiquement avec votre navigateur par défaut, vous devriez avoir quelque chose de similaire, quelle que soit votre plateforme. Elle se compose de deux parties, à gauche, les dossiers partagés et à droite, les périphériques avec lesquels ce dossier est synchronisé.

Votre serveur est maintenant démarré, mais relié avec aucun périphérique (node).

Pour accéder à la configuration, cliquez sur le bouton suivant :

syncthing4

La fenêtre suivante s’ouvre et vous permet de modifier quelques options telles que le nom du périphérique, l’adresse de son interface Web, la mise en place de l’HTTPS et d’une authentification (plus que nécessaire si on y accède depuis l’extérieur).

Syncthing - Panneau de configuration
Syncthing - Panneau de configuration

Les paramètres permettent de changer le nom du périphérique, l’adresse de l’interface web (à remplacer par 0.0.0.0 :8080 pour y accéder depuis l’extérieur), forcer l’utilisation d’HTTPS et quelques autres options qui ne nous seront pas spécialement utiles pour ce tutoriel (utilisation au sein d’un réseau local).

Syncthing peut également être installé sur un serveur Linux (sans interface graphique), on ne pourra donc pas voir l’interface web, mais y accéder à distance en modifiant le fichier de configuration (en XML) :

Le fichier se trouve par défaut dans "/home/user/.config/syncthing/config.xml", Pour accéder à l’interface web il faut modifier cette partie (changer 127.0.0.1 (localhost) par 0.0.0.0 (toutes les adresses IP)) :

127.0.0.1:8080

III. Configurer un nouveau périphérique (node)

Dans ce tutoriel, je vais mettre en place un partage de Linux à Windows et un autre de Windows à Linux, cela permettra de voir comment mettre en place plusieurs partages.

Nous allons devoir « relier » nos deux machines en cliquant sur « Ajouter un périphérique ».

Tous d’abord il faudra récupérer « l’identifiant » de notre serveur sous Windows, pour cela cliquez sur l’écrou de paramètres, puis « Montrer l’ID ».

Syncthing - Ajouter un périphérique
Syncthing - QR Code

Un pop-up apparait avec l’ID de notre appareil et un QR code. Je copie ce code et le colle dans l’ID du nouveau périphérique :

Syncthing - Ajouter un périphérique
Syncthing - Ajouter un périphérique

Les paramètres par défauts permettent d’utiliser une identification du serveur dynamique (contrairement au fait de rentrer son adresse IP et son port de synchronisation).

Dans un simple échange entre deux instances, on peut laisser en dynamique, mais pour avoir quelque chose de plus fiable, il est préférable de rentrer les paramètres « statiques ».

syncthing8

Notre nouveau périphérique apparait donc maintenant, mais n’est pas actif étant donné qu’on n’a créé aucun partage entre les deux. Il faut maintenant réaliser cette opération dans l’autre sens, dans mon cas j’ajoute mon instance Syncthing sous Linux sur mon PC sous Windows.

IV. Configurer son premier partage

On peut donc maintenant, créer notre premier partage entre nos deux serveurs Syncthing :

Cliquez sur « ajouter un répertoire » pour créer un nouveau partage, dans mon cas, il s’agit de ma machine Linux ou je vais partager le dossier "/home/valentin/Téléchargements/".

Syncthing - Ajouter un répertoire
Syncthing - Ajouter un répertoire

L’ID du répertoire est important, car il permet d’identifier le partage depuis l’autre serveur.

J’ai coché « Répertoire maître » ce qui permet de ne jamais modifier mon répertoire Téléchargement sur Linux (sans mon autorisation) mais d’en avoir une copie conforme sur mon ordinateur Windows. Il faut également choisir le (ou les) périphérique avec lequel on veut synchroniser ce dossier.

Je répète l’opération sur mon PC sous Windows en rentrant le même ID de répertoire (important, car c’est cela qui les relie entre eux). Pour le chemin, je sélectionne le dossier ou je veux synchroniser mon répertoire de téléchargement.

syncthing10

On constate que la Synchronisation se lance automatiquement entre les deux dossiers :

syncthing12

Pour résumé, chaque dossier ou document ajouté dans le dossier du serveur Linux sera automatiquement synchronisé vers le répertoire DL-Linux de mon PC Windows. Dans le cas où j’ajoute des fichiers (ou que j’en supprime) sur mon PC Windows, mon serveur Linux n’affectera pas directement les changements (car on a coché la case « Répertoire maître »).

L’interface est bien pensée, car depuis mon serveur Linux, elle me propose de répercuter les modifications effectuées sous Windows. Ce ne serait pas le cas si ce n’était pas un Répertoire maître.

On a donc, pour l’instant, un système de type client- serveur, qui effectue la synchronisation toutes les 60 secondes, ce qui permet d’avoir un répertoire local mis à jour depuis un répertoire distant.

Si l'on veut créer un partage de type "client-client", il suffit de créer un nouveau partage, qui ne sera pas « Maître ». Dans ce cas, chaque changement sera automatiquement répercuté sur les Périphériques reliés à ce répertoire.

syncthing13

Ce partage, « dl-win » correspond à mon dossier Download de Windows, il est donc automatiquement et intégralement copié vers mon serveur Linux. Pour information, je n’ai pas coché la case répertoire maître.

V. Exemple d’utilisation en entreprise

Nous utilisons Syncthing dans notre entreprise, pour effectuer une synchronisation du contenu du répertoire /home des utilisateurs (une quinzaine) sur des postes Ubuntu 14.04.

Pour faire cela, nous avons une instance de Synchting par utilisateurs sur un Serveur centralisé (avec des ports différents calculés selon l’UID de l’utilisateur), et du côté des postes, sur chacun d’eux, tourne également une instance de Syncthing par utilisateurs (selon les mêmes règles d’attribution des ports) reliés à son instance « maitresse ».

Cela permet à nos utilisateurs d’avoir le même contenu sur leurs sessions, quel que soit le poste sur lequel ils se trouvent. Du point de vue des performances, les instances de Synchting sont très légères (2 Mo de RAM sur Windows) donc le fait de lancer plusieurs instances ne cause pas de ralentissement (pour moins de 100 hein !).

Syncthing possède également une mini API qui permet via des requêtes GET et POST d’acquérir ou d’envoyer des informations depuis les instances, par exemple :

La commande « curl –s http://ipduserveur:port/rest/system | json_pp » retourne :

{
"alloc": 32147752, # allocated memory, in use "cpuPercent": 0.669829340548344,
"extAnnounceOK": true, # true if we are registered with the global announce server, false on failure, absent if disabled "goroutines": 34,
"myID": "P56IOI7MZJNU2IQGDREYDM2MGTMGL3BXNPQ6W5BTBBZ4TJXZWICQ",
"sys": 66463976 # allocated memory, total
}

On peut facilement récupérer l’ID (« MyID ») du serveur distant sans se rendre sur l’interface web !

Cette méthode est très pratique pour scripter le déploiement de Syncthing, par exemple nous utilisons un script à lancer sur un nouveau PC, pour qu’il crée les instances Syncthing, qu’il les lance (avec le nom/ip/port voulu) et qu’ils les relient aux instances du serveur central.

Cela permet en moins d’une minute (sans compter la synchronisation des données) d’avoir un PC intégré au réseau d’entreprise, et qui peut être utilisé par nos utilisateurs.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

4 thoughts on “Installation et configuration de Syncthing

  • Bonjour,

    Je suis assez bluffé par la simplicité d’utilisation, je viens de suivre le tuto à la lettre, j’ai pu paramétrer une synchro trois postes via mon serveur dédié et cet outil répond mieux à mes besoins que nele faisait Sparkleshare.
    Toutefois, j’ai une question à laquelle vous répondrez peut-être concernant le compatibilité AD (ActiveDirectory), si je voulais m’amuser à partager un dossier d’un Serveur Windows, en mode client-client (l’idée est que certains utilisateurs distant synchronisent certains dossiers), je pensais créer un partage, le synchroniser sur un serveur dédié Linux, puis paramétrer la synchro sur les machines mobiles de plusieurs commerciaux sur ce serveur (pour une question d’économie de bande passante au niveau du bureau).
    Vous me répondrez peut-être que je peux tester pour me faire une idée, mais j’imagine que dans ce cas, toute la synchro sous Windows se fera avec les droits de l’utilisateur sous lequel tourne le démon de synchro ?
    Si c’est bien le cas, avec l’option de suivi de révision nous sommes devant une excellente alternative à Dropbox, utilisable pour les professionnels.

    Répondre
  • Moi je voudrais avoir votre avis sur StackSync qui se base sur Openstavk Swift qui a l’air pas mal également mais dont je n’ai pas encore eu le temps de tester.
    C’est également un serveur de synchronisation de dossier

    Répondre
  • Bonjour,

    Est-il possible de configurer des horaires de transfert avec Syncthing ?

    Merci,

    Répondre
  • Hello,

    On ne peut synchroniser que de PC à PC ???? Je pensais pouvoir synchro le contenu d’une clef USB vers un PC…. ca n’a pas l’air d’être possible 🙁

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.