Pourquoi auto-héberger Syncthing sur un VPS
Syncthing est un outil de synchronisation de fichiers décentralisé : chaque appareil parle directement aux autres, sans serveur central ni copie chez un fournisseur. Le problème du pair-à-pair pur, c'est que vos machines ne sont pas toujours allumées en même temps — votre portable est éteint quand votre poste de bureau veut synchroniser. Un VPS résout exactement cela : il sert de nœud permanent disponible 24/7, présent sur Internet avec une IP publique stable, vers lequel tous vos appareils convergent. Les fichiers transitent chiffrés (TLS) et le VPS détient une copie synchronisée qui sert aussi de sauvegarde déportée. Contrairement à un mutualisé, un VPS autorise l'ouverture des ports de transfert et le maintien d'un démon Syncthing actif en permanence.
Bénéfices concrets de Syncthing sur VPS
- Nœud relais permanent : vos appareils n'ont plus besoin d'être allumés simultanément pour se synchroniser.
- Chiffrement de bout en bout (TLS) entre tous les nœuds, sans confiance accordée à un cloud.
- Sauvegarde déportée naturelle : le VPS conserve une copie à jour de vos dossiers partagés.
- Versionnement des fichiers (staggered/simple) configurable dossier par dossier pour récupérer une version antérieure.
- Aucun coût de stockage au gigaoctet : seul l'espace disque du VPS compte.
- Découverte par IP statique : connexion directe rapide sans dépendre des serveurs de découverte publics.
Prérequis techniques
Syncthing est remarquablement frugal en CPU et en RAM, mais c'est le disque qui dimensionne le serveur : il faut autant d'espace que le volume de données à synchroniser. Comptez 1 vCPU et 1 Go de RAM, plus le stockage adapté à vos dossiers (20, 50 Go ou plus selon vos besoins). Côté réseau, deux ports doivent être joignables : 22000 (TCP/UDP, transfert de données) et 21027 (UDP, découverte locale, optionnel sur un VPS distant). L'interface d'administration tourne sur le port 8384 et doit impérativement rester protégée. Docker et Docker Compose suffisent ; un sous-domaine sync.votredomaine.com est utile pour accéder à l'interface en HTTPS via reverse proxy.
Déployer Syncthing pas à pas
Préparer le conteneur
Sur le VPS, créez
/opt/syncthinget undocker-compose.ymlbasé sur l'imagesyncthing/syncthing:latest. Montez un volume de configuration et un volume de données, et fixez les variablesPUID/PGIDpour les permissions de fichiers.Ouvrir les ports de transfert
Mappez le port 22000 en TCP et UDP vers le conteneur et ouvrez-le dans le pare-feu du VPS :
ufw allow 22000. C'est par ce port que transitent les données entre nœuds. Ne publiez pas le port 8384 sur Internet.Lancer Syncthing et récupérer l'ID
Démarrez avec
docker compose up -d. Récupérez l'identifiant du nœud (Device ID) dans les logs ou via l'interface : c'est l'empreinte unique qui servira à appairer vos autres appareils.Sécuriser l'interface d'administration
Exposez le port 8384 uniquement derrière un reverse proxy HTTPS avec authentification. Avec Caddy :
sync.votredomaine.com { reverse_proxy syncthing:8384 }. Définissez en plus un identifiant/mot de passe d'interface dans les réglages GUI de Syncthing.Appairer vos appareils
Sur chaque appareil (poste, portable, mobile), ajoutez le VPS comme nouveau périphérique via son Device ID, puis acceptez la demande réciproque côté serveur. Définissez un dossier partagé et choisissez le mode (envoi seul, réception seule ou bidirectionnel).
Activer le versionnement
Pour les dossiers importants, activez le versionnement « staggered » côté VPS : Syncthing y conserve les versions successives des fichiers modifiés ou supprimés, transformant votre nœud en filet de sécurité contre les erreurs de manipulation.
Configuration avancée des dossiers partagés
Une fois le déploiement de base fonctionnel, ouvrez l'interface GUI (via sync.votredomaine.com) pour affiner la configuration de chaque dossier. Pour chaque dossier partagé, définissez le type : Envoi-Réception (bidirectionnel), Envoi seulement (le VPS ne peut pas modifier vos fichiers) ou Réception seulement (le VPS archive sans écraser). Le champ Folder ID dans la configuration — visible dans config.xml sous /opt/syncthing/config/ — doit être identique sur tous les appareils partageant un même dossier : c'est lui qui lie les nœuds. Pour le chiffrement côté stockage, Syncthing propose depuis la version 1.15 le mode Encrypted (dossiers chiffrés sur le VPS avec un mot de passe distinct) : le VPS ne voit jamais vos données en clair, il ne fait que stocker des blobs chiffrés. Activez-le dans l'onglet Sharing d'un dossier, option Encrypted pour l'appareil VPS. Les ACLs de partage s'gèrent par appareil : dans chaque dossier, sélectionnez les appareils autorisés à accéder à ce dossier — un appareil non listé ne reçoit rien même s'il connaît votre Device ID.
Connecter plusieurs appareils : Android, laptop, NAS
La force du VPS comme nœud central apparaît quand vous connectez un écosystème complet. Sur Android, installez Syncthing via F-Droid (l'application officielle, gratuite, sans telemetrie Google) — la version Play Store est dépréciée depuis 2024. Ouvrez Syncthing sur le téléphone, copiez son Device ID, et ajoutez-le côté VPS via « Ajouter un périphérique ». Réciproquement, ajoutez le VPS sur le téléphone avec son Device ID et l'adresse explicite tcp://IP_VPS:22000 dans le champ « Adresses ». Sur laptop, la procédure est identique : installez syncthing via le gestionnaire de paquets (apt install syncthing ou binaire officiel), lancez-le avec systemctl --user enable --now syncthing, et appairez-le au VPS de la même façon. Pour un NAS Synology ou TrueNAS, Syncthing est disponible comme paquet officiel ou conteneur Docker — configurez le même Device ID et les mêmes dossiers partagés. L'avantage du VPS comme point de rendez-vous est que le NAS et le laptop se synchronisent même quand l'un est hors réseau local : les données passent par le VPS et se propagent dès la reconnexion. Désactivez les serveurs de relais publics dans les préférences avancées (relays disabled) et déclarez explicitement tcp://IP_VPS:22000 comme adresse statique sur chaque nœud pour des connexions directes et rapides, sans dépendance aux services Syncthing Foundation.
Sécuriser l'interface web avec nginx
Exposer le port 8384 directement sur Internet est une erreur critique : n'importe qui peut tenter de s'y connecter. La bonne pratique est de lier Syncthing à 127.0.0.1:8384 dans la config (réglage GUI > Adresse de l'interface GUI : 127.0.0.1:8384) et de fronter avec nginx ou Caddy en HTTPS. Avec nginx, créez un vhost dans /etc/nginx/sites-available/sync : définissez un bloc server sur le port 443 avec votre certificat Let's Encrypt, un location / avec proxy_pass http://127.0.0.1:8384 et les headers X-Real-IP, X-Forwarded-For. Ajoutez une authentification HTTP basique (auth_basic, htpasswd) en couche supplémentaire : même si quelqu'un accède à l'URL, il doit franchir deux barrières — nginx et le mot de passe GUI de Syncthing. Dans le config.xml, assurez-vous que <insecureAdminAccess>false</insecureAdminAccess> : sans cette option, un accès sans authentification resterait possible depuis localhost dans le conteneur. Enfin, sauvegardez régulièrement /opt/syncthing/config/ — ce dossier contient les clés TLS du nœud, la configuration des dossiers et les Device IDs appairés : sa perte implique de reconfigurer tous les appareils depuis zéro.
Surveiller la santé avec l'API REST
Syncthing expose une API REST complète sur http://127.0.0.1:8384/rest/. Le token d'API se trouve dans l'interface GUI sous Paramètres > GUI > Clé API. Quelques requêtes utiles depuis le VPS : curl -H 'X-API-Key: VOTRE_CLE' http://127.0.0.1:8384/rest/db/status?folder=ID_DOSSIER retourne l'état de synchronisation d'un dossier (clés globalFiles, localFiles, needFiles, state). L'état idle confirme que tout est synchronisé ; syncing indique une synchronisation en cours ; error signale un problème à investiguer dans les logs. Pour surveiller en temps réel les événements : GET /rest/events?since=0 retourne le flux d'événements (connexions, transferts, erreurs). Pour un monitoring minimal en production, ajoutez une crontab ou un check Uptime-Kuma qui interroge /rest/noauth/health — cet endpoint ne nécessite pas de clé API et retourne {"status":"OK"} si Syncthing tourne. Les logs du conteneur (docker logs syncthing --tail 100) fournissent aussi les détails sur chaque connexion, transfert et erreur de configuration.
Résoudre les erreurs fréquentes
Port 22000 non joignable. Les appareils distants apparaissent en « Déconnecté » bien que Syncthing tourne. Vérifiez que ufw allow 22000/tcp et ufw allow 22000/udp ont bien été appliqués (ufw status). Vérifiez aussi que le compose mappe bien 22000:22000/tcp et 22000:22000/udp — oublier le mapping UDP bloque la découverte. Confirmez avec nc -zv IP_VPS 22000 depuis une machine distante. Appareil non trouvé. Si l'auto-découverte échoue, déclarez l'adresse du VPS manuellement dans la config de chaque client : onglet Périphériques > Adresses > tcp://IP_VPS:22000. Désactivez les serveurs de découverte globaux si vous utilisez exclusivement le VPS comme point de rendez-vous. Conflit de version. Deux appareils ont modifié le même fichier hors ligne. Syncthing crée un fichier .sync-conflict-YYYYMMDD-HHMMSS-DEVICEID à côté de l'original — c'est intentionnel, aucune donnée n'est perdue. Consultez les deux versions et supprimez manuellement celle que vous n'avez pas besoin de conserver. Espace disque insuffisant. Syncthing s'arrête de synchroniser et passe en état error si l'espace disponible descend sous le seuil configuré (défaut : 1 % du disque). Libérez de l'espace ou augmentez le disque du VPS ; vérifiez aussi que le versionnement staggered ne conserve pas des années de révisions — limitez la durée de rétention dans les paramètres du dossier.
Configurez le nœud VPS en mode « Réception seule » (Receive Only) pour les dossiers que vous voulez uniquement sauvegarder : ainsi le serveur n'écrasera jamais vos appareils, il ne fait qu'archiver ce qu'on lui envoie. Et puisque vous disposez d'une IP statique, désactivez les serveurs de découverte globaux et déclarez l'adresse du VPS en dur (tcp://IP:22000) dans la config des autres nœuds : les connexions s'établissent plus vite et ne dépendent d'aucun service externe.
Syncthing, Nextcloud Files ou rclone : quand choisir quoi
Faites défiler le tableau
| Outil | Quand l'utiliser |
|---|---|
| Syncthing | Synchronisation pair-à-pair pure. Idéal si vous voulez juste synchroniser des dossiers entre appareils sans interface web ni partage de liens. Consommation minimale, configuration simple, aucun langage serveur. |
| Nextcloud Files | Suite complète (partage de liens, agenda, contacts, Office en ligne). Choisissez Nextcloud si vous avez besoin de collaborer ou de partager des fichiers avec d'autres personnes. Plus lourd : PHP, base de données, Redis. |
| rclone | Outil de copie/synchronisation vers plus de 70 backends (S3, B2, SFTP…). Choisissez rclone pour des sauvegardes planifiées vers un stockage objet ou pour migrer des données entre clouds, pas pour la synchronisation temps réel multi-appareils. |