Syncthing : outil open source pour synchroniser vos fichiers

Sommaire
Il y a quelques mois, je vous avais parlé de l’outil de synchronisation de fichiers basé sur la technologie Bittorrent, Resilio Sync. Aujourd’hui, c’est au tour de son concurrent Open Source : Syncthing.
Syncthing est une application de synchronisation de fichiers pair à pair open source disponible pour Windows, Mac, Linux, Android, Solaris, Darwin et BSD3. Aucun compte ni enregistrement préalable à l’utilisation auprès d’un tiers (comme les géants du web, ou quelque autre entité) n’est nécessaire, ni même optionnelle. La sécurité et l’intégrité des données sont intégrées dans la conception du logiciel.
Dans cet article, je vais surtout me concentrer sur l’installation de Syncthing via un conteneur, afin de le déployer facilement sur un serveur (les habitudes ont la vie dure).
Installation
On commence par son fichier docker-compose.yml
:
services:
syncthing:
image: lscr.io/linuxserver/syncthing:latest
container_name: syncthing
hostname: syncthing
env_file: syncthing.env
networks:
- nginx_proxy
volumes:
- /opt/syncthing:/config
- /home/user:/data
ports:
- 22000:22000/tcp
- 22000:22000/udp
- 21027:21027/udp
restart: always
networks:
nginx_proxy:
external: true
Pensez à remplacer le volume /home/user
par le dossier racine que vous souhaitez utiliser.
Le fichier syncthing.env
associé :
PUID=1000
PGID=1000
TZ=Europe/Paris
Là encore, vérifiez l’id de votre user user ayant les droits sur les fichiers à synchroniser.
Reverse proxy
Les fichiers de configuration ci-dessus sont prévus pour être utilisés avec un reverse proxy.
Pour rappel, un article dédié est disponible ici.
L’image Docker de Linuxserver.io propose un fichier sample de configuration, il vous suffit juste de modifier votre nom de domaine en conséquence :
sudo cp /opt/nginx/nginx/proxy-confs/syncthing.subdomain.conf.sample /opt/nginx/nginx/proxy-confs/syncthing.subdomain.conf
sudo sed -i "s,server_name syncthing,server_name <votre_sous_domaine>,g" /opt/nginx/nginx/proxy-confs/syncthing.subdomain.conf
Et enfin, un petit redémarrage pour la prise en compte du nouveau fichier :
sudo docker restart nginx
Configuration
Après avoir accepté ou non la collecte de données, vous aurez divers messages vous demandant de vous rendre dans la page de configuration pour y définir un utilisateur et un mot de passe.

Une fois cela fait, vous allez pouvoir ajouter les autres appareils et les dossiers que vous voulez synchroniser.
Ajouter un appareil
Cliquez sur Ajouter un appareil
en bas à droite. Il vous sera demandé son ID. Pour récupérer l’ID de l’autre appareil à intégrer, il faut cliquer sur l’identifiant abrégé :

Une fois ajouté, un message apparaîtra sur l’autre appareil, afin de valider l’association. Il est temps maintenant de passer à l’ajout de vos dossiers.
Ajout des dossiers
Commencez par supprimer le dossier créé par défaut, en vous rendant dans gérer
, puis cliquez sur supprimer
. Une fois cela fait, ajoutez un partage. Spécifiez un nom, puis le chemin racine du partage. Attention, dans le conteneur, votre volume monté se trouve dans /data
(qui est en fait /home/user
sur l’hôte).

Rendez vous dans l’onglet Partages
et choisissez l’appareil qui aura accès à ce dossier.

Un message apparaîtra alors sur le deuxième appareil afin d’accepter la synchronisation.

Une fois le dossier ajouté, la synchronisation va démarrer.

Exclusion
Si vous désirez exclure des fichiers ou des dossiers, il est possible de créer un fichier nommé .stignore
dans chaque dossier racine et d’y indiquer les éléments à ignorer. Voici un exemple de la documentation officielle :
.DS_Store
.stignore
foo
foofoo
bar/
baz
quux
quuz
bar2/
baz
frobble
My Pictures/
Img15.PNG
Conclusion
Syncthing fonctionne dans l’ensemble plutôt bien, je n’ai pas rencontré de bug particulier (à part peut être une fois un fichier de log qui s’est retrouvé dupliqué, sûrement verrouillé par une autre application).
Je remarque toutefois 2 défauts comparé à Resilio Sync. Il est nécessaire d’ajouter les appareils avant les dossiers (à faire qu’une fois cependant). Et il ne dispose malheureusement pas de version pour iOS.
Mais il a cependant l’avantage d’être entièrement libre. Faites vous votre propre idée en testant les 2 solutions afin de déterminer celle qui vous convient le mieux 😊