Projet PAINS : Syncthing | partie 13

Projet PAINS : Syncthing | partie 13

Bonsoir, après beaucoup trop longtemps, enfin je mets en place ce système de synchronisation.
Mais pourquoi je dis ça ? Avant de commencer petit point sur mon serveur...

Pendant les vacances j'ai acheté un autre HDD de 2to pour le Nextcloud ( je l'utilise bien, j'ai presque saturé les 3.6TO ). Pour ce projet de synchronisation, j'ai prévu de mettre un 5eme HDD, et donc au vu de l'emplacement de mon serveur, autant faire ça en une fois que galérer 2 fois à le sortir. 
Sauf que, mondial relay a perdu mon HDD.
Donc j'ai passé les 2 semaines de vacances à l'attendre. Et j'attends toujours. Mais la semaine dernière, j'ai quelqu'un qui a bien voulu me vendre sa carte graphique. Ce qui à fait que j'ai sorti mon serveur, et même changé de place, ce qui fait que je passe d'un débit de 300/200 Mbps à quasi 1500/800Mbps, ce que j'apprécie beaucoup, surtout pour ce site qui contient des images 8k bien souvent. 

Et on se retrouve maintenant, avec la mise en place de Syncthing.

L'objectif est le suivant : 
J'ai un pc, une tablette et un téléphone . Je veux synchroniser ma musique ( oui je télécharge ma musique, en .flac quand même, j'ai passé le mp3 depuis bien longtemps) et certains fichiers entre ces 3 appareils. Le souci, c'est que sur mon pc il ne sont pas aux mêmes endroits, ce qui fait que Nextcloud, ça devient un peu galère. Mais j'ai appris qu'avec syncthing, on peut préciser quels dossiers doivent être synchronisé ou non, et même à des endroits différents sur le pc.
Le pied à terre de ces fichiers sera mon serveur. Même si on peut ne pas utiliser de serveur, et passer par les serveurs publics, je préfère que les appareils aient une référence sûre plutôt que 3 appareils qui peuvent ne pas être synchronisés en même temps.

Donc notre VM pour ce projet, aura une configuration un peu plus "exotique" que d'habitude.
Elle sera installée sur le SSD comme tout le monde, mais aura le stockage de synchronisation sur le HDD de 1to, sur une partition de 200go, branché en USB A sur la carte mère du pc. (Plus de ports SATA disponible)

Après avoir installer Debian 13 comme d'habitude, puis l'avoir éteinte et on va se rendre sur la console de notre Proxmox pour rentrer cette commande : 

qm set ID_VM -virtio1 /dev/sdxx 

sdxx étant le nom de la partition à mettre.

On peut ensuite aller sur notre VM 
Sur la VM syncthing j'ai créé les dossiers /mnt/data/music et /mnt/data/BTS  , data étant le point de montage de la partition.

On fait un :

apt install syncthing 

Ensuite, on va faire un ss -lnltup pour voir quels ports sont en écoute :

Pleins de ports mais seulement certains vont nous intéresser : 

  • port 8384 : port pour afficher le GUI. on peut le faire en ligne de commande, mais l'avantage du GUI c'est qu'on aura des infos sur les transferts de fichiers
  • port 22000 : port pour faire la synchronisation, donc assez important
  • port 21027 : port pour la découverte d'appareils sur le réseau local. dans notre cas, on s'en fiche, le réseau local ce sont les VM
  • ports 53493 / 49622 : aléatoires, juste pour les serveurs relais, on n'en tiendra pas compte

Cela veut dire qu'il va falloir faire une redirection avec Caddy, et une ouverture de port avec OPNsense

On commence avec Caddy, puisque la documentation syncthing nous donne une indication de comment faire : 

plus qu'a l'appliquer sur notre configuration : 

Ensuite sur OPNsense :

Interface : WAN
Version TCP/IP : IPv4
Protocle : TCP
Destination : WAN adresse
Plage de port de destination : 22000
rediriger l'IP de destination : Hôte unique ou réseau : 192.168.15.30
Rediriger le port cible : 22000
Reflexion NAT : Utiliser les paramètres système par défaut
Association de règle de filtrage : autoriser

Ensuite on démarre le service sur la machine de cette manière :

systemctl enable syncthing@user 

user pouvant être n'importe quel utilisateur sur la VM. Il est déconseillé d'utiliser root.

Et ça nous donne : 

une page blanche

le premier problème est le port d'écoute du GUI. Il est en 127.0.0.1:8384, soit seulement en local. 
En allant dans ./.local/state/syncthing/config.xml , on modifie : 


<gui enabled="true" tls="false">
<address>127.0.0.1:8384</address>


par : 


<gui
enabled="true" tls="false">
<address>0.0.0.0:8384</address>

Ensuite il nous faut configurer un mot de passe : 

 

Je le fais sur une machine sur le même réseau, pour la sécurité, mais c'est possible de le faire par internet.
Dans le cas où vous avez un reverse proxy, ne cochez pas "utilisation de l'HTTPS pour le GUI". C'est le reverse proxy qui s'en occupe ( En tout cas avec caddy ).

Et là, il va être accessible sur internet :

 

Et on arrive sur cette page: 

 

Donc on Ajoute un partage. 

IDDDD est modifié sur la capture, car on peut mettre ce qu'on veut.
Et en chemin racine, j'ai mis l'un des deux dossiers créés plus tôt dans l'article. ( laisser par défaut va créer un dossier dans le home du user choisi plus tôt )

Dès qu'on l'a créé on peut ajouter un appareil .
Pour cela on appuie sur le bouton du même nom, puis on ajoute l'ID de l'appareil, et dans partage, l'ajouter aux dossiers qu'on veut partager.

Dès qu'on appui sur OK, ça envoie une notification sur l'appareil qu'on veut ajouter, et on l'accepte ou non. 
Je conseille de cocher "appareil introducteur" à l'ajout du serveur pour ne pas avoir de soucis par la suite.


Ensuite pour l'ajout d'un dossier :


Coté Serveur, je partage le dossier :

Il faut mettre un mot de passe pour chiffrer les données. Vous pouvez en pas en mettre, mais ce sera en clair sur le réseau.

 

Ce qui fait que je reçois une notification sur mon Laptop. On accept puis sur cette fenêtre :

 

Important : aller dans l'onglet avancé et changer "récéption chiffré" par Envoie et récéption


Vous pouvez laisser comme c'est, mais dans ce cas, Laptop ne pourra que recevoir des fichiers du serveur et ne pourra pas lui en envoyer.

Et dans Ressources, ajoutez le mot de passe qu'il vous a demandé de mettre au moment du partage du dossier.

 

 

Ensuite pour que ça filtre certains fichiers / dossiers lors de la synchronisation, il faut créer un fichier .stignore à la racine du dossier synchronisé.
Et dedans une ligne vaudra un filtre. 

Quelques exemples  : 

//un commentaire qui sera pas pris en compte. en dessous, des dossiers exclus
autres formats/
playlist linux/
a recup/
//là on prend pas ce dossier racine dans la syncro
/chose
//on peut aussi mettre des morceaux de noms de fichiers. * signifie tout.
*.bat
//on exclu tout les .bat (oui j'ai des .bat dans mon dossier musique )
desktop.ini
 
 

Et voilà, c'est configuré et ça marche ! 

On peut maintenant ajouter chaque appareil souhaité au serveur, ce qui fera que chaque appareil donne le fichier au serveur qui ira le transmettres aux autres appareils. Sur android ça se passe comme sur l'ordinateur.


Posté le 7 mars 2026 par _Antonin_