
I. Présentation
Ce tutoriel explore l’utilisation de Syncthing, une solution de synchronisation de fichiers, en se concentrant sur son déploiement entre des systèmes Windows 11 et Linux (Ubuntu).
La synchronisation de données est une pratique courante, que ce soit pour maintenir à jour des documents de travail entre un ordinateur portable et un poste fixe, ou pour partager des fichiers multimédias au sein d’un foyer. Dans un contexte professionnel, nous pouvons aussi imaginer différents scénarios, y compris pour la synchronisation de données entre des serveurs.
II. Qu’est-ce que Syncthing ?
Syncthing est un programme de synchronisation de fichiers pair-à-pair, décentralisé et open source. Contrairement aux services de synchronisation basés sur le cloud qui centralisent vos données sur des serveurs tiers, Syncthing permet la synchronisation directe entre vos appareils. Cela signifie que vos fichiers ne transitent pas par un serveur intermédiaire, garantissant ainsi un contrôle plus direct sur vos données. Il est conçu pour être sécurisé et privé, utilisant le protocole TLS pour l’ensemble de ses communications et offrant une authentification entre les appareils.
Nous pouvons lister quelques fonctionnalités clés :
Synchronisation bidirectionnelle ou unidirectionnelle (envoi et réception)
Gestion de plusieurs partages, avec une configuration indépendante pour chaque partage
Partenariat de synchronisation entre 2 appareils ou plus
Gestion des conflits de fichiers et fonctions pour la gestion des versions selon différents niveaux
Utilisation d’un tunnel SSH ou d’une instance relais pour les interconnexions de Syncthing avec des sites distants
Configuration personnalisable depuis une interface Web ou directement depuis le fichier XML
La flexibilité de Syncthing est telle que nous pouvons imaginer l’adapter pour faire des sauvegardes, en l’associant à d’autres outils.
Syncthing est une application disponible sur Windows, Linux, macOS, OpenBSD et même sur Android (application non officielle, mais validée). Selon le principe de Syncthing, chaque instance est identifiée avec un ID unique, et il y a même une détection automatique sur un même réseau local.
À l’heure où l’article est rédigé, la dernière version stable de Syncthing est la 1.30.0, mais Syncthing 2 est en approche (pre-release). Il y a quelques changements, dont la suppression du partage par défaut, mais l’interface reste la même. Cette future version sera donc utilisée dans le cadre de cette démonstration.
Liens utiles :
III. Installer Syncthing sur Windows
L’installation de Syncthing sur Windows s’effectue de deux façons : soit à partir de l’installeur prêt à l’emploi mis à disposition, soit à partir d’un exécutable qu’il est possible de lancer, à la demande, en ligne de commande. Le Setup prêt à l’emploi est disponible sur cette page (non publié encore pour la version 2).
Sur le principe, exécutez le fichier téléchargé. Suivez les étapes de l’assistant d’installation. Il est à noter que Syncthing s’installe dans le profil de l’utilisateur.
Plusieurs options sont à définir lors de l’installation :
Automatic upgraed interval, in hours : intervalle de mise à jour en heures.
GUI configuration page listen address : par défaut, l’interface web est accessible uniquement depuis la machine locale.
GUI configuration page listen port : port d’écoute pour accéder à l’interface web de Syncthing (la synchronisation s’appuie sur le port TCP/22000).
Relays enabled : vous pouvez basculer cette option sur “false”, sauf si vous souhaitez utiliser cette instance comme relais (pas utile sur de la synchronisation LAN).
À l’étape suivante, vous pouvez activer le démarrage automatique de Syncthing lors de la connexion à votre session. C’est recommandé pour ne pas avoir à s’en soucier.
Dernière action à valider : la création de règles de pare-feu pour autoriser les flux Syncthing. Il est à noter que ces règles ne font pas un filtrage strict sur le port, mais elles autorisent tous les flux en TCP/UDP à destination de syncthing.exe. Vous pouvez affiner pour limiter au port TCP/22000 sur les flux entrants.
Une fois l’installation terminée, Syncthing se lancera ! À partir d’un navigateur web, vous pouvez accéder à l’interface web de Syncthing, via https://localhost:8384. Le “Default Folder” visible sur l’image ci-dessous est un partagé par défaut créé avec Syncthing : il disparaît à partir de la version 2.0.
Un message d’avertissement nous informe que, par défaut, cette interface est en accès libre : elle n’est protégée par aucun mot de passe. Pour remédier à cela, cliquez sur “Configuration” dans la bannière d’avertissement, puis sur l’onglet “Interface graphique”. Vous pourrez alors définir un nom d’utilisateur et un mot de passe. Vous pouvez aussi cocher l’option “Utiliser l’HTTPS pour le GUI”.
Syncthing est désormais installé, nous allons voir comment l’installer sur Linux avant de passer à la mise en place d’un partage.
IV. Installer Syncthing sur Linux
Les dernières versions de Syncthing pour Linux sont disponibles facilement via l’ajout des dépôts officiels du projet. Les instructions sont disponibles sur cette page : attention, vous avez le choix entre deux canaux (stable et candidate). Le canal stable est préférable pour la production, tandis que le second donne accès aux futures versions (actuellement, il sert à obtenir la v2).
Ouvrez un terminal et exécutez las commandes suivantes. Commencez par ajouter les clés PGP :
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
Ajoutez le dépôt Stable de Syncthing. Il est mis à jour avec des versions stables, généralement tous les premiers mardis du mois.
echo “deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable” | sudo tee /etc/apt/sources.list.d/syncthing.list
Ensuite, effectuez la mise à jour du cache des paquets pour qu’il tienne compte de ce nouveau dépôt, puis installez le paquet :
sudo apt update
sudo apt install syncthing
Pour finaliser l’installation, il reste à activer le démarrage automatique de Syncthing et à le démarrer dès à présent. Vous devez adapter le nom du service dans les commandes ci-dessous, afin de remplacer flo par le nom de votre utilisateur.
sudo systemctl enable [email protected]
sudo systemctl start [email protected]
À partir d’un navigateur web, vous pouvez accéder à l’interface web de Syncthing, via https://localhost:8384. Même punition que sur Windows : vous devez définir un mot de passe.
Dans le cas où votre machine Linux n’a pas d’interface graphique, vous êtes bloqué : vous ne pouvez pas vous connecter depuis une autre machine, puisque ce n’est pas autorisé par Syncthing par défaut. Dans ce cas, vous devez éditer le fichier de configuration (attention au nom d’utilisateur dans le chemin) :
nano /home/flo/.local/state/syncthing/config.xml
Localisez la section et modifiez l’adresse 127.0.0.1:8384 par 0.0.0.0:8384 ou l’adresse IP de votre machine (si elle est statique). Vous pouvez aussi passer l’option tls=”true” pour activer le HTTPS par défaut sur l’interface web.
Enregistrez et fermez le fichier.
V. Synchroniser des données entre Windows et Linux avec Syncthing
Maintenant que Syncthing est installé sur les deux systèmes, nous pouvons procéder à la synchronisation. Autrement dit, nous allons créer un premier dossier partagé entre nos deux machines, et ensuite, associer les machines.
A. Ajouter un partage à Syncthing
Depuis la machine Windows (ou Linux, peu importe), cliquez sur le bouton “Ajouter un partage” sur la page d’accueil de l’interface de gestion de Syncthing. Une fenêtre va s’afficher.
Nous allons nommer ce partage “IT-Connect” et l’associer au chemin local “C:\IT-Connect”. Il pourrait tout à fait s’agir d’un dossier dans votre session ou même le dossier Documents de votre profil directement (utile pour synchroniser le répertoire Documents entre deux machines !). À noter que le dossier cible sera créé s’il n’existe pas, et s’il existe, son contenu ne sera pas altéré.
L’onglet “Partages” met en évidence qu’aucun autre appareil n’a accès à ce partage. Ce qui est logique puisque nous sommes en train de le créer…
Les autres onglets servent à gérer le versioning (et la corbeille), à exclure certains types de fichiers, ou encore de choisir le type de partage. Par défaut, ce sera un partage en “Envoi & réception”, c’est-à-dire bidirectionnel : les données seront strictement identiques entre les machines synchronisées.
L’option “Écouter les changements” est intéressante : Syncthing va surveiller l’activité du système de fichiers pour détecter les changements de données. Ceci promet une synchronisation réactive et automatique entre les appareils en cas de changement. En complément, une analyse complète est effectuée toutes les heures (3600 secondes).
Cliquez sur “Enregistrer” pour créer le partage. Le partage est désormais déclaré :
Je vous invite, avant de continuer, à déposer quelques fichiers dans le répertoire C:\IT-Connect pour tester la synchronisation par la suite.
B. Associer deux appareils avec Syncthing
Nous allons maintenant associer nos deux appareils pour mettre en place la synchronisation. Pour rappel, chaque instance Syncthing est liée à un identifiant unique et ce dernier qui va être utile pour associer les machines.
Comment obtenir l’ID ? Sur chaque interface web Syncthing, allez dans “Actions” (en haut à droite) puis “Afficher mon ID”. L’image ci-dessous montre l’ID de la machine Ubuntu2404 : il suffit de le saisir sur l’instance Windows pour initier une connexion.
Mais, finalement, ce n’est pas nécessaire : les deux machines sont connectées sur le même réseau. Ainsi, la découverte automatique fait que les deux instances se voient déjà, sans pour autant être associées.
Depuis l’instance Windows (ou en tout cas celle sur laquelle le partage a été créé), cliquez sur le bouton “Ajouter un appareil”. La machine Ubuntu, enfin, nous supposons que c’est elle, est détectée en tant qu’appareil proche : son ID est proposé. C’est bien l’information visible sur la page “Afficher mon ID” sur l’instance Ubuntu.
Cliquez sur l’ID (sinon vous devez copier-coller l’ID de l’appareil dans la zone prévue à cet effet), donnez-lui un nom et validez.
La machine est déclarée, mais pour autant, la connexion n’est pas établie : il faut approuver cette demande. Sur l’interface Syncthing de la machine Ubuntu, cette demande apparaît sous la forme d’une notification “Nouvel appareil”. Validez avec le bouton “Ajouter l’appareil”.
La connexion est établie ! La mention “Non utilisé” est présente, car il n’y a pas de partenariat de synchronisation pour un partage.
Pour donner des droits à un autre appareil connu sur un partage, cliquez sur “Gérer” au niveau du partage en question.
À partir de l’onglet “Partages”, sélectionnez le client à ajouter. N’indiquez pas de mot de passe pour chiffrer : c’est tentant, mais si vous faites ça, la machine distante pourra seulement recevoir des données chiffrées. Si vous souhaitez que ce soit bidirectionnel, ne cochez pas l’option. Validez.
Côté Ubuntu, là encore, une demande d’approbation s’affiche. Vous devez confirmer que vous souhaitez ajouter ce partage.
Au-delà du nom, vous devez surtout indiquer le chemin racine du partage : sur la machine locale, où synchroniser les données de ce partage. Ici, nous pouvons indiquer /home/flo/IT-Connect. Donc, le répertoire C:\IT-Connect de la machine Windows sera synchronisé avec le répertoire /home/flo/IT-Connect de la machine Linux. Validez.
À ce stade, les deux dossiers devraient commencer à se synchroniser. Les modifications apportées à l’un des dossiers seront répliquées sur l’autre : ajout, modification et suppression. D’ailleurs, sur la machine Ubuntu, les fichiers déposés sur la machine Windows dans le dossier partagé sont déjà là !
VI. Aller plus loin avec Syncthing
Syncthing offre des fonctionnalités complémentaires pour affiner la gestion de vos synchronisations.
A. La gestion des conflits
Lorsqu’un fichier est modifié simultanément sur plusieurs appareils avant que les modifications n’aient pu être synchronisées, Syncthing détecte un “conflit”. Par défaut, Syncthing conserve la version la plus récente du fichier et renomme l’ancienne version avec un suffixe reprenant une partie de l’ID de la machine avec laquelle le conflit a été détecté.
Voici un exemple de conflits entre nos deux machines Windows et Linux :
B. La gestion des versions de fichiers
Syncthing propose différentes stratégies de gestion de versions pour les fichiers supprimés ou modifiés, permettant de récupérer des versions antérieures. Accédez à ces options dans l’onglet “Préservation des fichiers” dans les propriétés d’un partage. De la corbeille simple aux versions horodatées ou progressives (capture à intervalles réguliers), plusieurs stratégies sont offertes.
C. La découverte dynamique
La découverte dynamique est un mécanisme par lequel Syncthing trouve d’autres instances de Syncthing sur le réseau local ou via des serveurs de découverte globaux. Cela simplifie la configuration, car vous n’avez pas besoin de spécifier manuellement les adresses IP. Si vos appareils sont sur le même réseau, Syncthing les découvrira automatiquement : nous en avons eu la preuve dans le cadre de cette démonstration.
Dans la configuration de Syncthing, il y a d’ailleurs la possibilité de désactiver la découverte, que ce soit au niveau local ou global (il y a des serveurs de découverte externes utilisés par Syncthing).
Vous avez aussi la possibilité de définir l’adresse pour joindre une instance Syncthing. Par défaut, c’est en dynamic donc Syncthing ne va pas se référer à l’adresse IP du client : si elle change, la connexion sera maintenue. Ce comportement peut être adapté dans les paramètres, en remplaçant dynamic par une information statique, en suivant le format tcp://ip:port. Par exemple : tcp://192.168.14.120:22000.
Pour les utilisateurs de NAS Synology, Syncthing peut être installé via SynoCommunity, un dépôt de paquets tiers (où il y a pléthore d’applications). Sinon, l’alternative consiste à monter un conteneur Docker.
Ajouter SynoCommunity aux sources de paquets de votre Synology :
Ouvrez le “Centre de Paquets” de votre NAS.
Allez dans “Paramètres” (en haut à droite).
Dans l’onglet “Sources de paquets”, cliquez sur “Ajouter”.
Nom : SynoCommunity
Emplacement : http://packages.synocommunity.com
Cliquez sur “OK”.
Installer Syncthing :
Dans le “Centre de Paquets”, cliquez sur l’onglet “Communauté” et recherchez “Syncthing”.
Cliquez sur “Installer”.
Suivez les instructions. Une fois installé, vous pourrez accéder à l’interface web de Syncthing via l’adresse IP de votre NAS sur le port 8384 (par exemple, http://Votre_IP_NAS:8384).
L’inconvénient, c’est que ce paquet n’utilise pas toujours la dernière version. Il peut s’avérer plus judicieux de passer par Docker si cela ne vous effraie pas.
VII. Conclusion
Syncthing se positionne comme une solution de synchronisation de fichiers efficace et adaptable, particulièrement pertinente pour ceux qui cherchent à conserver la maîtrise de leurs données, car les données ne sont jamais stockées sur un serveur tiers ! Ceci est possible grâce à sa nature décentralisée ! De plus, le fait qu’il soit open source en fait une alternative intéressante aux services de cloud traditionnels.
En suivant ce tutoriel, vous devriez être en mesure de déployer Syncthing sur vos machines, qu’elles soient sur Linux ou sur Windows. Vous pouvez aussi installer Syncthing sur Android pour synchroniser les données de votre smartphone vers un NAS ou un autre PC.
Si votre objectif est de partager des fichiers entre Windows et Linux sans synchronisation, intéressez-vous à ce tutoriel :
Ingénieur système et réseau, cofondateur d’IT-Connect et Microsoft MVP “Cloud and Datacenter Management”. Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.