Ce tutoriel vous montrera comment installer Syncthing sur Ubuntu. Syncthing est un programme gratuit de synchronisation continue de fichiers peer-to-peer qui vous permet de synchroniser vos fichiers sur plusieurs appareils, disponible pour Linux, BSD, macOS, Windows, Android et Solaris.
C'est une alternative open-source au populaire Resilio Sync (anciennement BitTorrent Sync ) application. La création, la modification ou la suppression de fichiers sur une machine seront automatiquement répliquées sur vos autres appareils. Syncthing ne télécharge pas vos fichiers sur un serveur central comme Nextcloud , mais échangez vos données directement entre vos appareils. Toutes vos données sont cryptées avec TLS lors de la transmission entre vos appareils.
Fonctionnalités de synchronisation
- Gratuit et open source.
- Vitesse de synchronisation rapide.
- Prend en charge la synchronisation unidirectionnelle.
- Synchronisation sélective (ignorer les modèles).
- Il peut utiliser des serveurs relais si deux pairs ne peuvent pas se connecter.
- Prend en charge l'authentification LDAP.
Installez Syncthing sur Ubuntu via le référentiel Deb officiel
Syncthing est inclus dans le référentiel Ubuntu par défaut depuis 18.04 Bionic Beaver. Cependant, il est recommandé d'installer Syncthing à partir du référentiel officiel en amont, afin d'obtenir la dernière version.
Utilisez curl
pour télécharger la clé GPG puis importer la clé avec apt-key
.
sudo apt-get install curlcurl -s https://syncthing.net/release-key.txt | sudo apt-key ajouter -
Si vous voyez OK
dans le terminal, cela signifie que la clé GPG a été importée avec succès. Ajoutez ensuite le dépôt officiel deb avec la commande suivante.
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
Parce que ce référentiel utilise https, nous devons installer le apt-transport-https
package, afin que le gestionnaire de packages APT puisse établir une connexion https avec ce référentiel.
sudo apt-get install apt-transport-https
Mettez à jour l'index des packages locaux et installez syncthing sur Ubuntu.
sudo apt-get updatesudo apt-get install syncthing
Utiliser Systemd pour configurer Syncthing en tant que service système
Le package deb officiel de Syncthing est livré avec le fichier de service systemd nécessaire. Sous /lib/systemd/system/
répertoire, vous trouverez un [email protected]
dossier. Activez syncthing pour démarrer automatiquement au démarrage en exécutant la commande ci-dessous. Remplacer username
avec votre nom d'utilisateur réel.
sudo systemctl enable [email protected]username.service
La commande ci-dessus créera un lien symbolique qui pointe vers le [email protected]
fichier.
Création d'un lien symbolique depuis /etc/systemd/system/multi-user.target.wants/[email protected] vers /lib/systemd/system/[email protected]
Nous pouvons maintenant démarrer le service Syncthing avec la commande suivante.
sudo systemctl start [email protected]username.service
Vérifier l'état
statut systemctl [protégé par e-mail]nomutilisateur.service
Sortie :
Astuce :Si la commande ci-dessus ne se ferme pas immédiatement, appuyez sur Q pour reprendre le contrôle du terminal.
Nous pouvons voir que le démarrage automatique de Syncthing est activé et qu'il est en cours d'exécution.
Le service systemd syncthing crée des fichiers de configuration sous /home/username/.config/syncthing/
et un dossier /home/username/Sync
comme dossier de synchronisation par défaut. Le fichier de configuration principal est /home/username/.config/syncthing/config.xml
.
Installer Syncthing sur un autre système d'exploitation
Accédez à la page de téléchargement de Syncthing et installez Syncthing sur d'autres systèmes d'exploitation tels que Windows, macOS, BSD, Android.
Ouvrir le port 22000 dans le pare-feu
Syncthing utilise le port 22000 pour communiquer avec ses pairs. Si votre ordinateur ou votre serveur a activé le pare-feu UFW, vous devez autoriser le port 22000 avec la commande suivante.
sudo ufw autorise 22000/tcp
Accéder à l'interface Web Ubuntu Syncthing
Par défaut, le service Syncthing écoute sur 127.0.0.1:8384. Maintenant, dans la barre d'adresse de votre navigateur Web, tapez 127.0.0.1:8384
pour accéder à l'interface Web de Syncthing. Vous pouvez ajouter d'autres appareils Syncthing et partager des dossiers avec eux.
Si vous installez Syncthing sur un serveur Ubuntu distant, vous devez configurer un proxy inverse avec Nginx ou Apache afin d'accéder à l'interface utilisateur Web, ce qui est expliqué plus loin dans ce didacticiel.
Démarrez la synchronisation des fichiers entre vos appareils
Une fois que nous avons deux appareils exécutant Syncthing, nous pouvons commencer à synchroniser les fichiers entre eux.
Dans l'interface Web Syncthing, cliquez sur Actions> Afficher l'ID dans le coin supérieur droit. Vous verrez l'ID de l'appareil, qui est une longue chaîne de lettres et de chiffres. Le code QR, qui est également l'ID de l'appareil, est utilisé pour configurer Syncthing sur les smartphones.
Copiez l'ID de l'appareil, puis ouvrez l'interface Web Syncthing du deuxième appareil, cliquez sur Ajouter un appareil distant dans le coin inférieur droit. Collez ensuite l'ID de l'appareil et donnez un nom à l'appareil. Cliquez sur le bouton Enregistrer.
Maintenant, le deuxième appareil essaiera de se connecter au premier appareil. Actualisez l'interface Web sur le premier appareil, vous verrez le message suivant. Cliquez sur Ajouter un appareil pour ajouter le deuxième appareil à la liste des appareils du premier appareil.
Maintenant, les deux appareils sont connectés.
Dans le volet gauche de l'interface Web se trouve le dossier de synchronisation par défaut (/home/username/Sync
). Cliquez sur Add Folder
bouton pour ajouter un nouveau dossier. Donnez une étiquette descriptive pour ce dossier et définissez le chemin du dossier.
Syncthing s'exécute sous votre propre compte d'utilisateur, vous devez donc disposer d'une autorisation d'écriture sur le dossier partagé. Si vous voyez le message d'erreur suivant lors du partage d'un dossier, cela signifie que vous n'avez pas l'autorisation d'écriture sur ce dossier.
2020-06-21 20:05:49 : Échec de la création du marqueur de dossier :mkdir .stfolder :système de fichiers en lecture seule
Vous pouvez accorder l'autorisation d'écriture avec setfacl
.
sudo apt install acl
sudo setfacl -R -m u:username:rwx /dossier/chemin/
Remarque :Si le problème persiste, veuillez consulter les conseils de dépannage à la fin de cet article.
Dans le Sharing
, sélectionnez votre autre appareil Syncthing.
Dans le champ Ignore Pattens
, vous pouvez entrer les modèles de nom pour les fichiers qui ne doivent pas être synchronisés.
Dans l'onglet Advanced
, vous pouvez choisir le type de dossier, l'intervalle de réanalyse, etc.
Cliquez sur le bouton Enregistrer pour commencer la synchronisation. Un message apparaîtra dans l'interface Web de l'autre appareil. Cliquez sur Ajouter pour recevoir des fichiers.
Maintenant, les deux appareils synchronisent les fichiers. Sur le côté droit, vous pouvez voir le taux de téléchargement, le taux de téléchargement, la taille du dossier local, etc.
Configurer un proxy inverse
Puisqu'il écoute sur 127.0.0.1:8384, l'interface Web Syncthing n'est disponible que pour les connexions du même ordinateur. Pour pouvoir accéder à l'interface Web de Syncthing depuis un ordinateur distant, nous pouvons configurer un proxy inverse pour Syncthing avec Nginx ou Apache.
Nginx
Nginx est un serveur Web et un proxy inverse très populaires. Si vous préférez utiliser Nginx, exécutez la commande suivante pour l'installer.
sudo apt installer nginx
Créez ensuite un fichier de configuration du serveur.
sudo nano /etc/nginx/conf.d/syncthing.conf
Ajoutez le contenu suivant à ce fichier. Remplacez syncthing.example.com
avec votre nom de domaine préféré. Vous devez également ajouter un enregistrement DNS A pour ce sous-domaine. Si vous n'avez pas de vrai nom de domaine, je vous recommande d'aller sur NameCheap pour en acheter un. Le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie.
serveur { écoute 80 ; nom_serveur syncthing.exemple.com ; access_log /var/log/nginx/syncthing.access.log ; error_log /var/log/nginx/syncthing.error.log; emplacement / { proxy_pass http://127.0.0.1:8384; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header X-Forwarded-Proto $scheme ; }}
Enregistrez et fermez le fichier. Testez la configuration de Nginx et rechargez Nginx.
sudo nginx -tsudo systemctl recharger nginx
Après avoir pointé votre nom de domaine vers l'adresse IP d'Ubuntu, tapez votre nom de domaine dans la barre d'adresse du navigateur et vous devriez voir l'interface Web Syncthing.
Si votre navigateur ne peut pas se connecter à l'interface Web Syncthing, vous devez peut-être ouvrir le port 80 dans le pare-feu. Par exemple, si vous utilisez UFW, exécutez la commande suivante.
sudo ufw autorise 80/tcp
Apache
Apache est un serveur Web bien connu qui peut également être utilisé comme proxy inverse. Si vous préférez Apache à Nginx, installez-le avec :
sudo apt install apache2
Démarrez Apache et activez le démarrage automatique.
sudo systemctl start apache2sudo systemctl enable apache2
Pour utiliser Apache comme proxy inverse, nous devons activer le proxy
modules et le module d'en-tête.
sudo a2enmod proxy en-têtes proxy_http proxy_wstunnel
Créez maintenant un fichier d'hôte virtuel pour Syncthing.
sudo nano /etc/apache2/sites-available/syncthing.conf
Copiez et collez les lignes suivantes dans le fichier. Remplacez syncthing.example.com
avec votre vrai nom de domaine. Vous devez également ajouter un enregistrement DNS A pour ce sous-domaine. Si vous n'avez pas de vrai nom de domaine, je vous recommande d'aller sur NameCheap pour en acheter un. Le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie.
ServerName syncthing.example.com ErrorDocument 404 /404.html ProxyPass / http://127.0.0.1:8384/ ProxyPassReverse / http://127.0.0.1:8384/ ErrorLog ${APACHE_LOG_DIR} /syncthing_error.log CustomLog ${APACHE_LOG_DIR}/syncthing_access.log combiné
Enregistrez et fermez le fichier. Activez ensuite cet hôte virtuel.
sudo a2ensite syncthing.conf
Redémarrez Apache
sudo systemctl redémarrer apache2
Vous pouvez maintenant accéder à l'interface utilisateur Web via syncthing.example.com
.
Si votre navigateur ne peut pas se connecter à l'interface Web Syncthing, vous devez peut-être ouvrir le port 80 dans le pare-feu. Par exemple, si vous utilisez UFW, exécutez la commande suivante.
sudo ufw autorise 80/tcp
Sécurisez l'interface utilisateur Web de Syncthing avec HTTPS
Pour chiffrer le trafic HTTP lorsque vous visitez l'interface utilisateur Web de Syncthing via un nom de domaine, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let's Encrypt. Commencez par ouvrir le port 443 dans le pare-feu.
sudo ufw autorise 443/tcp
Exécutez ensuite la commande suivante pour installer le client Let's Encrypt (certbot).
sudo apt install certbot
Si vous utilisez Nginx, vous devez également installer le plugin Certbot Nginx.
sudo apt installer python3-certbot-nginx
Ensuite, exécutez la commande suivante pour obtenir et installer le certificat TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com
Si vous utilisez Apache, installez le plugin Certbot Apache.
sudo apt installer python3-certbot-apache
Et exécutez cette commande pour obtenir et installer le certificat TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com
Où
--nginx
:Utilisez le plug-in nginx.--apache
:Utilisez le plug-in Apache.--agree-tos
:acceptez les conditions d'utilisation.--redirect
:Forcer HTTPS par redirection 301.--hsts
:Ajoutez l'en-tête Strict-Transport-Security à chaque réponse HTTP. Forcer le navigateur à toujours utiliser TLS pour le domaine. Protège contre le SSL/TLS Stripping.--staple-ocsp
:active l'agrafage OCSP. Une réponse OCSP valide est agrafée au certificat que le serveur propose pendant TLS.
Le certificat devrait maintenant être obtenu et installé automatiquement.
Actualisez votre interface graphique Web Syncthing, vous constaterez que la connexion HTTP est automatiquement redirigée vers la connexion sécurisée HTTPS.
Activer l'authentification utilisateur
Par défaut, n'importe qui peut accéder à votre interface Web Syncthing après la configuration du proxy inverse. Nous pouvons activer l'authentification des utilisateurs pour restreindre l'accès. Cliquez sur Actions dans le coin supérieur droit, puis sélectionnez Paramètres -> Interface graphique.
Entrez un nom d'utilisateur dans Utilisateur d'authentification GUI champ, saisissez un mot de passe dans le champ Mot de passe d'authentification GUI . Enregistrez ensuite vos paramètres.
Veuillez noter que vous n'avez pas besoin de cocher la case Utiliser HTTPS pour l'interface graphique box, qui permet à Syncthing d'utiliser un certificat auto-signé. Nous avons déjà installé un certificat valide dans Apache/Nginx qui est approuvé par les principaux navigateurs Web.
Une fois que vous avez enregistré les modifications, redémarrez le service systemd Syncthing, ou vous pourriez voir une erreur de passerelle 502 incorrecte lors du rechargement de la page.
sudo systemctl restart [email protected]username.service
Connectez-vous maintenant à l'interface Web de Syncthing avec votre nouveau nom d'utilisateur et votre nouveau mot de passe.
Comment utiliser un certificat TLS auto-signé
Si vous ne souhaitez pas utiliser un nom de domaine et un certificat TLS valide pour accéder à l'interface Web Syncthing. Vous pouvez utiliser un certificat auto-signé. Modifiez le fichier de configuration Syncthing.
nano ~/.config/syncthing/config.xml
Trouvez les lignes suivantes.
activé="vrai" tls="faux" débogage="faux"> 127.0.0.1:8384 P4sYoeq2CNQRdfq33dq823dakE2 par défaut Pour utiliser un certificat auto-signé, modifiez simplement
tls="false"
àtls="true"
. Et si vous allez accéder à l'interface Web de Syncthing depuis un ordinateur distant, modifiez127.0.0.1
à0.0.0.0
.Enregistrez et fermez le fichier. Redémarrez ensuite Syncthing pour que les modifications prennent effet.
sudo systemctl restart [email protected]username.serviceDossiers d'envoi uniquement et de réception uniquement
Lorsque vous partagez un dossier dans Syncthing, vous pouvez accéder à l'onglet Avancé et choisir l'un des trois types de dossier :
- Envoyer et recevoir (par défaut)
- Envoyer uniquement
- Réception uniquement
Vous pouvez choisir d'envoyer uniquement ou de recevoir uniquement. Par exemple, si vous avez 3 ordinateurs :A, B et C, et que vous souhaitez regrouper les dossiers des ordinateurs A et B dans un seul dossier sur l'ordinateur C. Vous pouvez alors définir le type de dossier sur réception uniquement sur l'ordinateur C. De cette façon, l'ordinateur C aura tous les fichiers dans un seul dossier. Les ordinateurs A et B ont toujours les fichiers d'origine. Ni plus ni moins.
Lorsque vous utilisez le même chemin de dossier sur l'ordinateur C, Syncthing peut vous avertir que "ce chemin est un sous-répertoire d'un dossier existant". Vous pouvez ignorer cet avertissement car vous disposez d'un dossier de réception uniquement. Les fichiers existants dans le dossier ne seront pas supprimés.
Synchronisation via des serveurs relais
Si deux instances de Syncthing ne peuvent pas se connecter, Syncthing essaiera d'utiliser un serveur relais pour transférer les fichiers.
Une raison courante pour laquelle ils ne peuvent pas se connecter les uns aux autres est que l'un d'eux se trouve derrière un périphérique NAT et n'a pas configuré la redirection de port. Une fois que vous avez configuré la redirection de port, vous pouvez désactiver les serveurs relais. Voici comment. Cliquez sur
Edit
et sélectionnez le boutonAdvanced
onglet, Changer l'adresse dedynamic
àtcp://ip-address:22000
. Bien sûr, vous devez utiliser votre véritable adresse IP.
Synchroniser de grandes quantités de petits fichiers
Syncthing n'est pas adapté à la synchronisation de grandes quantités de petits fichiers comme les fichiers de tuiles osm, car il atteindra rapidement les limites inotify du système de fichiers Linux. Si les deux appareils exécutent Linux, vous pouvez utiliser le
rsync
(synchronisation à distance) pour synchroniser de grandes quantités de petits fichiers, comme ceci :rsync -aP /path/to/source/folder/ [email protected]:/path/to/destination/folderExécuter plusieurs instances de Syncthing
Si vous avez plusieurs dossiers partagés appartenant à différents utilisateurs, il est judicieux d'exécuter plusieurs instances de Syncthing pour chaque utilisateur.
sudo systemctl start [email protected]sudo systemctl start [email protected]Si vous exécutez Syncthing en tant qu'utilisateur 1 et que vous partagez des dossiers appartenant à l'utilisateur 2, vous rencontrerez des problèmes de désynchronisation/de refus d'autorisation, car Syncthing créera les fichiers avec l'utilisateur sous lequel il s'exécute.
Chaque instance doit avoir un port GUI et un port de synchronisation uniques, qui peuvent être configurés dans le fichier de configuration syncthing de l'utilisateur sous le répertoire d'accueil.
nano ~/.config/syncthing/config.xmlLa configuration du port de l'interface graphique est
127.0.0.1:8384La configuration par défaut du port de synchronisation est
par défaut Vous pouvez le changer en
tcp://0.0.0.0:22001 Si vous ne souhaitez pas créer de sous-domaine pour chaque instance de Syncthing, vous pouvez créer un sous-répertoire dans votre nom de domaine. Par exemple, la configuration du sous-répertoire Nginx pour Syncthing est la suivante.
emplacement /user2/ { proxy_pass http://127.0.0.1:8385/; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header X-Forwarded-Proto $scheme ; }J'utilise user2 comme sous-répertoire. Vous pouvez choisir le nom que vous aimez. Notez que dans
proxy_pass http://127.0.0.1:8385/;
, la barre oblique finale/
est nécessaire. Si vous le supprimez, cela ne fonctionnera pas.Conseils de dépannage
Impossible de se connecter
Si vos instances Syncthing ne peuvent pas se connecter les unes aux autres, vous pouvez utiliser le
ss
(statistiques de socket) pour vérifier si Syncthing écoute sur le port TCP 22000.sudo ss -lnpt | synchronisation grepComme vous pouvez le voir sur la capture d'écran ci-dessous, mon Syncthing écoute sur le port 8384 (interface Web) et 22000 (connexion peer-to-peer).
Sinon, vous pouvez modifier le fichier de configuration.
nano ~/.config/syncthing/config.xmlTrouvez la ligne suivante.
par défaut Changer
default
àtcp://your-IP-address
.tcp://12.34.56.78 Enregistrez et fermez le fichier. Redémarrez ensuite Syncthing.
sudo systemctl restart [email protected]username.serviceÉchec de la création du marqueur de dossier
Si vous souhaitez synchroniser un dossier système tel que
/etc/
, vous verrez probablement le message d'erreur suivant :Échec de la création du marqueur de dossier, système de fichiers en lecture seuleEn effet, le service syncthing systemd (
/lib/systemd/system/[email protected]
) a leProtectSystem
suivant variable qui interdit l'écriture sur les dossiers systemd (/usr/, /boot/, /etc/).ProtectSystem=fullNous pouvons ajouter des exclusions, afin que Syncthing puisse écrire dans le dossier. Créez un dossier pour stocker nos configurations systemd personnalisées.
sudo mkdir /etc/systemd/system/[email protected]username.service.d/Créez ensuite un fichier sous ce répertoire.
sudo nano /etc/systemd/system/[email protected]username.service.d/permission.confAjoutez les lignes suivantes dans ce fichier.
[Service]ReadWritePaths=/shared/foler/one/ /shared/foler/two/Les dossiers sont séparés par un espace vide. Vous pouvez ajouter autant de dossiers que vous le souhaitez. Le dossier doit exister sur votre système, sinon Syncthing ne pourra pas redémarrer.
Enregistrez et fermez le fichier. Rechargez ensuite systemd.
sudo systemctl daemon-reloadEt redémarrez Syncthing.
sudo systemctl restart [email protected]username.serviceLa taille du dossier dans l'état global est inexacte
Cela peut arriver si vous partagez des dossiers avec plusieurs appareils. Supposons que vous partagiez un dossier de l'appareil 1 vers l'appareil 2. Si l'appareil 2 n'a pas terminé la synchronisation des fichiers et que vous partagez le dossier de l'appareil 2 vers l'appareil 3, la taille globale du dossier affichée sur l'appareil 3 sera inférieure à la taille réelle. .
La synchronisation des dossiers s'arrête
Consultez les journaux de Syncthing pour savoir pourquoi la synchronisation a cessé.
sudo journalctl -eu [email protected]Problème de traitement des demandes
Si vous voyez l'erreur suivante, vous pouvez consulter le journal des erreurs Nginx (
/var/log/nginx/syncthing.error.log
) ou le journal des erreurs Apache (/var/log/apache/syncthing_error.log
) pour découvrir la cause de ce problème.Syncthing semble rencontrer un problème lors du traitement de votre demande. Veuillez actualiser la page ou redémarrer Syncthing si le problème persiste.Dans mon cas, c'est parce que j'ai activé le pare-feu d'application Web ModSecurity.
Réplication asynchrone
Notez que Syncthing utilise la méthode asynchrone, donc les modifications apportées sur un nœud prendront un certain temps pour être répliquées sur d'autres nœuds. Si votre application est sensible au délai de synchronisation, il est recommandé de désigner un nœud comme nœud maître. Effectuez des modifications sur le nœud maître uniquement et utilisez les nœuds esclaves comme sauvegarde.
Ubuntu Comment installer Jellyfin Media Server sur le serveur/bureau Ubuntu 20.04 LTS
Comment installer qBittorrent sur le bureau ou le serveur Ubuntu 19.04
Comment installer Plex Media Server sur le serveur/bureau Ubuntu 20.04 LTS
Comment installer FluxBox Desktop Ubuntu 20.04 LTS Server ou PC
Comment installer le bureau Ubuntu 20.04
Comment installer le serveur Xrdp (bureau à distance) sur Ubuntu 22.04