Comment installer et configurer Syncthing pour synchroniser les répertoires sur Ubuntu 14.04

introduction

Il existe de nombreux programmes capables de synchroniser des fichiers entre différents ordinateurs. * Syncthing * est une nouvelle option attrayante, multi-plateforme, entièrement open source, très flexible et facile à utiliser.

Dans ce guide, nous allons vous montrer comment commencer à utiliser Syncthing pour synchroniser les données entre deux instances de serveur Ubuntu 14.04. Cela vous permettra de synchroniser de manière transparente des fichiers entre ces serveurs en fonction de répertoires de surveillance configurés.

Prérequis et objectifs

Pour compléter ce guide, vous devez avoir accès à deux instances de serveur Ubuntu 14.04.

Pour les besoins de ce guide, nous appellerons ces serveurs:

  • * serveur *

  • * servertwo *

Ce seront des partenaires égaux, il n’y aura donc pas de relation primaire / secondaire. Vous devez avoir un compte d’utilisateur régulier configuré sur chacun d’eux (vous pouvez découvrir comment en suivant les étapes 1 à 4 de notre https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu- 14-04 [Guide de configuration initiale du serveur pour Ubuntu 14.04] ici).

Le compte utilisateur habituel dans ce guide s’appellera ++, mais vous devez utiliser le nom d’utilisateur de votre choix. Cela ne doit pas nécessairement être séparé de votre compte habituel non root.

Nous allons installer et configurer Syncthing sur chacune de ces machines afin que les fichiers puissent être partagés entre elles. Une fois les procédures décrites dans ce guide terminées, vous devez disposer de deux serveurs, chacun avec un répertoire qui reflétera les modifications apportées à l’autre ordinateur.

Nous allons installer Syncthing en tant qu’application au niveau système et créer un script Upstart. Cela permettra à nos instances Syncthing de démarrer au démarrage et de redémarrer correctement, au lieu de générer de nouvelles instances à chaque fois comme elle le fait par défaut.

Premier téléchargement et installation

La première chose à faire est de télécharger le binaire Syncthing sur chacun de nos serveurs.

Pour trouver la dernière version packagée, vous pouvez aller à la page releases sur GitHub. Il existe des boutons pour chaque type de système d’exploitation vers le bas.

image: https: //assets.digitalocean.com/articles/syncthing_1404/download_buttons.png [page de version de Syncthing]

Si vos systèmes Linux sont en 32 bits, choisissez la sélection commençant par «` + syncthing-linux-386 -…​ + ». Si les serveurs que vous utilisez sont 64 bits, choisissez celui intitulé « + syncthing-linux-amd64 -…​ + `». Ne téléchargez pas le fichier sur votre ordinateur local. A la place, cliquez avec le bouton droit sur le fichier approprié et sélectionnez "Copier l’adresse du lien" ou une option similaire.

Nous allons télécharger ces fichiers en utilisant la commande + wget + sur chacun de nos serveurs. Sur vos serveurs, tapez + wget + suivi d’un espace, puis collez le lien que vous avez copié. La version et l’architecture du système peuvent être différentes pour vous:

cd ~
wget

Maintenant, nous pouvons décompresser l’archive en tapant:

tar xzvf syncthing*.tar.gz

Déplacez-vous dans le répertoire nouvellement créé:

cd syncthing*

Nous avons ici un fichier exécutable appelé + syncthing + que nous pouvons utiliser pour démarrer le service. Nous voulons copier ceci dans un emplacement de notre + PATH + afin que nous puissions l’appeler comme une application normale.

Faites cela avec les privilèges sudo en tapant:

sudo cp syncthing /usr/local/bin

Maintenant, nous pouvons revenir à notre répertoire personnel et supprimer en toute sécurité tous les fichiers et répertoires Syncthing restants.

cd ~
rm -rf syncthing*

Effectuez toutes les étapes ci-dessus sur vos deux serveurs.

L’application est maintenant installée, mais il reste encore quelques choses à faire avant de pouvoir l’utiliser.

Modifier les options de l’interface graphique pour autoriser l’affichage à distance

Par défaut, l’interface Web Syncthing n’est disponible que pour les connexions du même ordinateur. Cela ne fonctionnera pas pour nos besoins puisque nous travaillons avec des serveurs distants.

Pour résoudre ce problème, nous devons éditer une ligne dans le fichier de configuration Syncthing. Cependant, le fichier de configuration n’a pas encore été créé.

Pour créer le fichier automatiquement, nous pouvons démarrer le service brièvement. Tapez la commande + syncthing + pour l’obtenir:

syncthing

Le processus + syncthing + n’est pas un démon, ce qui signifie qu’il s’exécute dans la session shell en cours (nous allons y remédier en implémentant momentanément un script Upstart). Il va commencer le processus et créer certains fichiers nécessaires.

Au bout d’un moment, vous verrez un message d’information sur votre ID de nœud, qui ressemble à ceci:

[2EQK3] 15:47:15 OK: Ready to synchronize default (read-write)
[2EQK3] 15:47:15 INFO: Node 2EQK3ZR77PTBQGM44KE7VQIQG7ICXJDEOK34TO3SWOVMUL4QFBHA is "server1" at [dynamic]

Lorsque vous voyez cela, cela signifie que le processus a été initialisé correctement. Nous pouvons maintenant arrêter le processus en tapant:

CTRL-C

Cela arrêtera le processus et nous donnera à nouveau le contrôle du terminal.

Nous pouvons maintenant éditer le fichier de configuration qui a été créé. Ouvrez le fichier dans votre éditeur de texte:

nano ~/.config/syncthing/config.xml

Recherchez une section qui traite de l’interface graphique. Ça devrait ressembler à ça:

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

La seule modification à apporter consiste à remplacer l’adresse localhost (+ 127.0.0.1 +) par + 0.0.0.0 +, qui représente toutes les interfaces réseau. Cette section ressemblera à ceci lorsque vous aurez terminé:

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

Enregistrez et fermez le fichier lorsque vous avez terminé. Nous ferons une configuration plus complète ultérieurement via l’interface Web.

Encore une fois, effectuez ces procédures sur les deux serveurs que vous configurez.

Créer un script de démarrage pour gérer les états de service

Ensuite, nous allons implémenter un script Upstart pour gérer notre processus. Cela nous permettra de démarrer automatiquement le processus de synchronisation au démarrage du serveur. Cela nous permettra également de le gérer en tant que service, sans prendre le contrôle de notre session.

Le script Upstart que nous utiliserons provient d’un sur les forums de discussion Syncthing. Créez et ouvrez le fichier Upstart avec les privilèges root dans votre éditeur en tapant:

sudo nano /etc/init/syncthing.conf

À l’intérieur, nous utiliserons les lignes suivantes pour contrôler notre processus Upstart:

description "Syncthing P2P sync service"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

env STNORESTART=yes
env HOME=/home/
setuid ""
setgid ""

exec /usr/local/bin/syncthing

respawn

Voyons ce que cela signifie.

Nous commençons par une description générale du service. Ensuite, nous définissons quand le service doit démarrer et s’arrêter. Ici, nous disons au système qu’il devrait être démarré après la mise en place du système de fichiers et des interfaces réseau non locales. Il sera arrêté chaque fois que le système quittera l’un des niveaux d’exécution normaux.

Ensuite, nous allons définir une variable d’environnement qui indique à Syncthing de ne pas redémarrer en utilisant ses propres mécanismes. En effet, il génère en réalité un nouveau processus à chaque fois sans nettoyer l’ancien. Pour éviter cela, nous implémenterons la possibilité de redémarrer ultérieurement dans ce script Upstart.

La variable d’environnement suivante définit le répertoire de base qui sera utilisé par Syncthing. Ceci sera utilisé pour trouver les fichiers de configuration appropriés et pré-renseigner les champs dans l’interface graphique. Nous spécifierons également l’utilisateur et le groupe en utilisant les paramètres + setuid + et + setgid +. Modifiez ces trois valeurs pour qu’elles pointent vers les informations de votre utilisateur.

Ensuite, nous définissons le chemin d’accès à la commande que nous allons exécuter. Enfin, nous utilisons + respawn + pour dire à Upstart de redémarrer automatiquement le processus s’il est arrêté prématurément. Ceci est utilisé pour redémarrer automatiquement le processus (proprement) lorsque le processus Syncthing essaie de se redémarrer en interne.

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Vous pouvez maintenant démarrer le service en tapant:

sudo initctl start syncthing

Effectuez les étapes ci-dessus sur vos deux serveurs.

Configuration de la sécurité dans l’interface utilisateur Web

Nous sommes enfin prêts à configurer nos instances via l’interface utilisateur Web.

Connectez-vous à chacune des interfaces Syncthing de vos serveurs en visitant leurs adresses IP publiques et leur port + 8080 +:

http://:8080
http://:8080

Vous verrez l’écran principal Syncthing:

image: https: //assets.digitalocean.com/articles/syncthing_1404/default.png [Écran principal de synchronisation]

La première chose à faire est d’ajouter une sécurité à notre interface. Allez dans le menu «Éditer» dans le coin supérieur droit et cliquez sur la sélection «Paramètres»:

image: https: //assets.digitalocean.com/articles/syncthing_1404/settings.png [Paramètres de synchronisation]

Sur le côté droit, nous devons définir un nom d’utilisateur et un mot de passe pour l’interface Web. Nous souhaitons également activer le cryptage TLS pour nos sessions afin que notre trafic ne puisse pas être intercepté en transit en cochant la case «HTTPS»:

image: https: //assets.digitalocean.com/articles/syncthing_1404/authentication.png [Sécurité synchronisée]

Lorsque vous avez terminé, cliquez sur le bouton «Enregistrer» en bas.

Vous verrez un message vous invitant à redémarrer le service pour que les modifications prennent effet:

image: https: //assets.digitalocean.com/articles/syncthing_1404/restart.png [Redémarrage de la synchronisation]

Cliquez sur le bouton "Redémarrer".

Vous devrez probablement actualiser la page pour que les modifications soient rechargées correctement. Dans ce cas, vous rencontrerez probablement un avertissement SSL ressemblant à ceci:

image: https: //assets.digitalocean.com/articles/syncthing_1404/ssl_warning.png [Avertissement de synchronisation SSL]

Cela vous indique simplement que l’entité qui a signé le certificat SSL ne figure pas dans la liste des autorités de certification sécurisées de votre navigateur. Ceci est attendu puisque les certificats sont auto-signés. Il est prudent de cliquer sur «Continuer quand même» pour continuer.

Vous obtiendrez alors une invite d’authentification pour le nom d’utilisateur et le mot de passe que vous avez configurés:

image: https: //assets.digitalocean.com/articles/syncthing_1404/auth_required.png [nom d’utilisateur et mot de passe de synchronisation]

Remplissez les valeurs appropriées et connectez-vous. Votre interface est maintenant plus sécurisée du trafic extérieur.

Terminez-vous ces étapes sur les deux serveurs.

Connexion des deux serveurs et partage de répertoires

Pour partager du contenu, Syncthing exige que les deux extrémités de la connexion ajoutent l’autre serveur à leur liste de nœuds. Ensuite, les deux parties doivent également ajouter un référentiel (répertoire) à synchroniser.

Pour ajouter un nœud, vous aurez besoin de l’ID du nœud compagnon. Vous pouvez obtenir cet identifiant en allant dans le menu "Edition" dans le coin supérieur droit et en sélectionnant l’option "Afficher l’identifiant".

Cela fera apparaître une superposition avec un long ID que vous pouvez copier. Il vous donnera également un code QR si vous configurez une application pour téléphone intelligent. Copiez l’ID du premier noeud.

image: https: //assets.digitalocean.com/articles/syncthing_1404/node_id.png [ID de copie de synchronisation]

Sur le deuxième serveur, cliquez sur le menu “Edition” et sélectionnez “Ajouter un nœud”.

Une superposition apparaîtra avec des champs que vous devez configurer pour ajouter l’autre serveur. Dans le champ «Node ID», collez l’ID que vous avez copié à partir du premier serveur. Dans le champ «Nom du nœud», sélectionnez le nom descriptif que vous souhaitez utiliser pour votre autre serveur. Laissez les "adresses" comme "dynamiques":

image: https: //assets.digitalocean.com/articles/syncthing_1404/add_node.png [Synchroniser un noeud d’ajout]

Lorsque vous avez terminé, cliquez sur «Enregistrer» pour ajouter le nouveau nœud.

Exécutez ce même processus dans l’ordre inverse pour que les deux serveurs aient le serveur opposé dans leur configuration. Pour le moment, ignorez toutes les demandes de redémarrage du service, car nous effectuerons d’abord quelques modifications supplémentaires.

Dans l’interface Web, les nœuds auxquels vous êtes connecté sont affichés sur le côté droit. Les référentiels que vous partagez sont listés à gauche. Par défaut, un dossier appelé + Sync + sera créé dans votre répertoire personnel pour servir de référentiel par défaut. Si le menu est compressé, cliquez sur le nom pour développer la liste:

image: https: //assets.digitalocean.com/articles/syncthing_1404/repo.png [Synchroniser le référentiel par défaut]

Cliquez sur le bouton “Editer” pour configurer le dépôt. Vers le bas, vous aurez la possibilité de partager ce référentiel avec tous les nœuds que vous avez configurés. Cochez la case associée au nœud opposé puis cliquez sur le bouton “Enregistrer”:

image: https: //assets.digitalocean.com/articles/syncthing_1404/share_repo.png [Synchroniser le partage avec le nœud]

Maintenant, vous pouvez cliquer sur le bouton “Redémarrer” pour appliquer vos modifications:

image: https: //assets.digitalocean.com/articles/syncthing_1404/restart.png [Redémarrage de la synchronisation]

Désormais, toute modification apportée dans le répertoire + ~ / Sync + sera reflétée sur le serveur opposé. Par défaut, cela se synchronise toutes les 60 secondes, mais cela peut être modifié dans le menu «Paramètres».

Vous pouvez ajouter des répertoires supplémentaires que vous souhaitez mettre en miroir en choisissant l’option «Ajouter un référentiel» dans le menu «Edition». Le «ID du référentiel» doit être le même sur chacun des serveurs pour que les répertoires soient associés.

Conclusion

À ce stade, vous devez connecter deux serveurs et synchroniser le contenu d’un seul répertoire. Vous pouvez facilement développer cela en ajoutant des référentiels (répertoires) supplémentaires ou en ajoutant des nœuds supplémentaires à synchroniser.

Si vous envisagez de synchroniser des fichiers système vers des répertoires auxquels un utilisateur normal n’aurait pas accès en écriture, vous devrez probablement modifier le fichier Upstart pour qu’il utilise le compte + root + ou tout autre compte utilisateur nécessaire pour effectuer les actions requises.