GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer Syncthing sur Ubuntu Desktop/Server

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

  • --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, modifiez 127.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.service

Dossiers 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 bouton Advanced onglet, Changer l'adresse de dynamic à 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/folder

Exé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.xml

La configuration du port de l'interface graphique est

127.0.0.1:8384

La 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 grep

Comme 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.xml

Trouvez 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 seule

En effet, le service syncthing systemd (/lib/systemd/system/[email protected] ) a le ProtectSystem suivant variable qui interdit l'écriture sur les dossiers systemd (/usr/, /boot/, /etc/).

ProtectSystem=full

Nous 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.conf

Ajoutez 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-reload

Et redémarrez Syncthing.

sudo systemctl restart [email protected]username.service

La 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
  1. Comment installer un bureau (GUI) sur un serveur Ubuntu

  2. Comment installer MySQL sur Ubuntu 18.04

  3. Comment installer le serveur Minecraft sur Ubuntu 18.04

  4. Comment installer le serveur Xrdp (bureau à distance) sur Ubuntu 18.04

  5. Comment installer Nginx sur Ubuntu 20.04

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