Logo Cinquin Andy Signature

Comment installer Syncthing sur un VPS - Guide étape par étape

Développeur Freelance - Logo

Les sites et les ressources associées

Comment installer Syncthing sur un VPS - Guide étape par étape

Publié le 3 septembre 2024 -  par Andy Cinquin

VPSNetcupInstallation ServeurHébergement WebConfiguration ServeurGuide Étape par ÉtapeServeurs Virtuels PrivésNetcup VPSContaboContabo VPSSyncthingSyncthing VPS

dans tout cet article je vais prendre mon adresse IP et mon nom de domaine, et mon utilisateur comme exemple, à vous de remplacer ça comme bon vous semble, avec vos règles de nommages etc !

Installer un VPS

La première étape est de ce procurer un VPS, chez votre hébergeur favoris, Hostinger, Scaleway, OVH, Contabo, Netcup, Hetzner...
Petite préférence pour Netcup et Hetzner, dans le tuto suivant nous prenons un vps chez Netcup. Une fois votre compte activé, votre VPS acheté, vous allez recevoir un mot de passe Root et une adresse ip.
Vous ouvrez votre terminal favoris, bash, terminal windows ou peux importe.
Puis vous vous connectez avec votre adresse ip & mot de passe en ssh.
ssh root@46.38.250.99

Optionnel :

Si vous possédez un nom de domaine, vous pouvez ajouter une adresse DNS dans votre domaine, et la faire pointer en enregistrement "A" sur l'adresse IP en question. Sur cloudflare ça donne ça :
Pasted image 20240902170853.png
On pourra donc pour éviter de ce connecter avec l'adresse ip à chaque fois simplement faire
ssh root@sync.andy-cinquin.fr
Une fois connecté on se retrouve avec le message suivant :
Computer terminal screen showing SSH connection attempt, permission denied messages, successful login, and 'apt update' command execution on remote server

Update et upgrade les dépendances

On execute donc les deux commandes suivantes pour installer les mises à jours.
apt update && apt upgrade
Et je vous conseille d'installer les paquets suivants
apt install sudo ufw tmux git vim fish -y
  • sudo pour la configuration future de notre utilisateur
  • ufw pour le pare-feu
  • tmux pour un petit outil qui permet d'avoir plusieurs fenetre dans le même terminal & récupérer sa session
  • git pour la gestion de nos projets et l'installation d'autres outils
  • vim pour un éditeur de texte (autre que nano, j'aime pas nano)
  • fish pour un terminal avec de l'autocomplétion et des couleurs

Si votre langue n'est pas la bonne (optionnel)

ça peu arriver (notamment avec netcup)
pour changer la langue de l'os : On execute les commandes suivantes :
  1. D'abord, générons la locale en_US.UTF-8 :
    locale-gen en_US.UTF-8
    
  2. Maintenant, éditons le fichier de configuration des locales :
    nano /etc/default/locale
    
    Assurez-vous qu'il ne contient que ces lignes :
    LANG=en_US.UTF-8
    LC_ALL=en_US.UTF-8
    
    Sauvegardez et quittez le fichier.
  3. Régénérons toutes les locales :
    locale-gen --purge
    
  4. Mettons à jour les locales :
    update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
    
  5. Pour appliquer ces changements, redémarrez le système :
    reboot
    

Installation d'un nouvel utilisateur et configuration de base

1. Création d'un nouvel utilisateur

  • Créer un nouvel utilisateur avec un répertoire personnel et le shell fish
useradd andy -m -s /bin/fish
  • Ajouter l'utilisateur au groupe sudo
usermod -aG sudo andy 
  • Définir un mot de passe pour le nouvel utilisateur
passwd andy
(on se déconnecte) exit (plusieurs fois)

2. Configuration de la clé SSH

Générer une clé SSH (si vous n'en avez pas)

Sur votre machine locale :
ssh-keygen
Suivez les instructions pour sauvegarder la clé et définir une phrase de passe si vous le souhaitez.

Ajouter la clé SSH au serveur

Sur le serveur :
su - andy
  • Créer le répertoire .ssh
cd /home/andy/
mkdir .ssh 
  • Éditer le fichier authorized_keys
vim /home/andy/.ssh/authorized_keys
(pour enregistrer avec vim vous devez taper :x! )
Copiez votre clé publique (contenu de ~/.ssh/id_rsa.pub sur votre machine locale) dans ce fichier. (le ~) correspond au répertoire utilisateur de votre machine sur windows ça sera donc surement C://users/andy/.ssh quelque chose dans le genre De toute façon si dans votre terminal de votre propre machine vous taper "cd ~/.ssh/" , vous trouverez l'endroit que vous recherchez (le fichier est cacher il faut potentiellement cocher la case qui permet de le voir sur windows / linux )

Configurer les permissions

cd /home/andy
chown andy:andy .ssh/ -R 
chmod 700 .ssh/
chmod 600 .ssh/authorized_keys

3. Configuration de SSH

Éditez le fichier de configuration SSH :
sudo vim /etc/ssh/sshd_config 
Modifiez ou ajoutez les lignes suivantes (supprimer le '#' si il y en a un devant), puis sauvegarder le fichier:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
AuthorizedKeysFile .ssh/authorized_keys

4. Configuration du pare-feu UFW

sudo ufw allow 53
sudo ufw allow 443
sudo ufw allow 22
sudo ufw enable
N'oubliez pas d'ajouter tous les ports nécessaires au fonctionnement de vos services.

5. Redémarrage du service SSH

Après avoir effectué toutes ces modifications, redémarrez le service SSH :
sudo systemctl restart sshd

Vérification

  1. Ouvrez une nouvelle session SSH et vérifiez que vous pouvez vous connecter avec votre clé.
  2. Vérifiez que vous ne pouvez pas vous connecter avec un mot de passe.
  3. Vérifiez que vous ne pouvez pas vous connecter en tant que root. ssh andy@sync.andy-cinquin.fr -> ça me connecte directement avec le bon utilisateur et directement sur ma machine

Notes de sécurité

  • Gardez votre clé privée en sécurité sur votre machine locale.
  • Mettez régulièrement à jour votre système et vos paquets.
  • Surveillez les tentatives de connexion infructueuses dans les logs.

Etape 2. Installer syncthings et le configurer

Voici la suite de votre tutoriel, expliquant l'installation et la configuration de Syncthing, ainsi que l'accès à son interface web via un tunnel SSH :

1. Installation de Syncthing

Connectez-vous à votre serveur en tant qu'utilisateur andy :
ssh andy@sync.andy-cinquin.fr
Installez Syncthing :
sudo apt update
sudo apt install syncthing

2. Configuration du service Syncthing

Créez un fichier de service systemd pour Syncthing :
sudo vim /etc/systemd/system/syncthing@.service
Ajoutez le contenu suivant :
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target

[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0
Restart=on-failure
RestartSec=5
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=multi-user.target

3. Activation et démarrage du service

Activez le service pour qu'il démarre automatiquement au démarrage du système :
sudo systemctl enable syncthing@andy.service
Démarrez le service :
sudo systemctl start syncthing@andy.service
Vérifiez que le service fonctionne correctement :
sudo systemctl status syncthing@andy.service

4. Configuration du pare-feu

Assurez-vous que le port 8384 (interface web de Syncthing) n'est accessible que localement :
sudo ufw allow from 127.0.0.1 to any port 8384

5. Accès à l'interface web via un tunnel SSH

Sur votre machine locale, créez un tunnel SSH vers le serveur distant :
ssh -L 8385:localhost:8384 andy@sync.andy-cinquin.fr
Cette commande crée un tunnel du port 8385 de votre machine locale vers le port 8384 du serveur distant.

6. Accès à l'interface web

Ouvrez votre navigateur web et accédez à l'URL suivante :
http://localhost:8385
Vous devriez maintenant voir l'interface web de Syncthing.

7. Configuration initiale de Syncthing

Dans l'interface web :
  1. Définissez un mot de passe pour l'interface web dans "Settings" > "GUI".
  2. Configurez les dossiers à synchroniser en cliquant sur "Add Folder".
  3. Pour connecter d'autres appareils, utilisez "Add Remote Device" et échangez les ID d'appareil.

8. Fermeture du tunnel SSH

Quand vous avez terminé, vous pouvez fermer le tunnel SSH en appuyant sur Ctrl+C dans le terminal où vous avez lancé la commande SSH, ou en utilisant :
pkill -f "ssh -L 8385:localhost:8384"

Notes importantes

  • Assurez-vous que Syncthing n'écoute que sur localhost pour une meilleure sécurité. Vérifiez le fichier de configuration (~/.config/syncthing/config.xml) et assurez-vous que la section <gui> contient <address>127.0.0.1:8384</address>.
  • Pour une utilisation régulière, vous pouvez créer un alias dans votre fichier .bashrc ou .zshrc local :
    alias syncthing-remote='ssh -L 8385:localhost:8384 andy@sync.andy-cinquin.fr'
    
    Ainsi, vous pourrez simplement taper syncthing-remote pour ouvrir le tunnel SSH.

Les conseils alternatifs

Voici quelques bonnes pratiques et configurations conseillées pour Syncthing, ainsi que des informations importantes sur la configuration des différents appareils :
  1. Utilisation des introducteurs :
  • Un introducteur est un appareil qui aide à établir une connexion entre deux autres appareils qui ne peuvent pas se connecter directement.
  • Utilisez des introducteurs lorsque :
    • Vos appareils sont derrière des NAT ou des pare-feu restrictifs.
    • Vous avez un appareil toujours en ligne (comme un serveur) qui peut faciliter les connexions.
  • Configurez votre serveur VPS comme introducteur pour vos autres appareils.
  • N'utilisez pas plus d'introducteurs que nécessaire pour éviter la complexité.
  1. Gestion des dossiers :
  • Utilisez des chemins absolus pour les dossiers partagés.
  • Évitez de synchroniser des dossiers système ou des répertoires d'application.
  • Utilisez des noms de dossiers descriptifs et cohérents sur tous les appareils.
  • Considérez l'utilisation de dossiers en lecture seule pour les appareils moins sécurisés.
  1. Versions de fichiers :
  • Activez le versionnement des fichiers pour pouvoir récupérer des versions antérieures en cas de besoin.
  • Choisissez entre le versionnement simple, le versionnement par étiquette de temps, ou le versionnement externe selon vos besoins.
  1. Ignorer les fichiers :
  • Utilisez des patterns d'ignore pour exclure les fichiers temporaires, les caches, et les fichiers système.
  • Créez un fichier .stignore dans chaque dossier synchronisé pour une gestion fine des exclusions.
  1. Compression :
  • Activez la compression pour les connexions lentes ou les gros fichiers.
  • Désactivez-la si tous vos appareils sont sur un réseau local rapide.
  1. Limites de bande passante :
  • Configurez des limites de bande passante pour éviter de saturer votre connexion.
  • Ajustez ces limites en fonction de vos besoins et de votre connexion Internet.
  1. Scan des dossiers :
  • Ajustez l'intervalle de scan en fonction de la fréquence des changements dans vos dossiers.
  • Utilisez la fonction de notification du système de fichiers (fsnotify) quand c'est possible.
  1. Sécurité :
  • Utilisez HTTPS pour l'interface web de Syncthing.
  • Activez l'authentification pour l'interface web.
  • Utilisez des mots de passe forts pour tous les appareils.
  • Limitez l'accès à l'interface web à localhost et utilisez un tunnel SSH pour y accéder à distance.
  1. Configuration des appareils :
  • Donnez des noms descriptifs à vos appareils pour les identifier facilement.
  • Utilisez des étiquettes pour grouper les appareils par fonction ou localisation.
  1. Relais et découverte :
  • Utilisez les relais globaux uniquement si nécessaire pour la connexion.
  • Configurez la découverte locale si tous vos appareils sont sur le même réseau.
  1. Notifications :
  • Configurez des notifications pour être alerté des changements importants ou des problèmes de synchronisation.
  1. Sauvegarde de la configuration :
  • Sauvegardez régulièrement votre configuration Syncthing (dossier .config/syncthing).
  1. Mise à jour :
  • Gardez Syncthing à jour sur tous vos appareils pour bénéficier des dernières fonctionnalités et correctifs de sécurité.
  1. Monitoring :
  • Utilisez l'onglet "Out of Sync Items" pour identifier et résoudre les problèmes de synchronisation.
  • Vérifiez régulièrement les logs pour détecter d'éventuels problèmes.
En appliquant ces bonnes pratiques, vous optimiserez l'utilisation de Syncthing tout en maintenant un bon niveau de sécurité et de performance. N'oubliez pas d'adapter ces recommandations à votre cas d'utilisation spécifique.



En vous remerciant de votre visite, n'hésitez pas à me contacter pour toute demande de renseignements, devis ou proposition de collaboration. Je me ferai un plaisir de vous répondre dans les plus brefs délais.
Vous avez aimé cet article ? N'hésitez pas à le partager !

DÉVELOPPONS ENSEMBLE VOS PROJETS

Une idée, un projet ? Je suis là pour répondre à vos demandes et vous accompagner.
N’hésitez pas, je serais ravi d’échanger avec vous sur votre projet !
© 2024 Andy Cinquin - Tous droits réservés - Developed & Designed with ❤️ 🐝 ForHives co-founders