🞄 Linux

Sauvegarder ses données vers un NAS Synology avec BorgBackup

Ça fait maintenant quelques années que je sauvegarde mes données vers un petit NAS Synology chez moi. Je me suis toujours dit que ça aurait fait un article intéressant... Sauf qu'à l'époque j'ai commis l'erreur de ne pas prendre de notes de comment j'avais fait. Et s'il n'y a pas de notes, il n'y a pas d'article... Heureusement je vais pouvoir me rattraper aujourd'hui ! J'ai en effet dû refaire la même chose pour le boulot récemment et cette fois j'ai pris des notes et des captures d'écran ! 😁️

Dans cet article je vais commencer par vous expliquer pourquoi avoir choisi un NAS Synology, aussi bien pour mon cas personnel que pour mon travail. On verra ensuite comment installer BorgBackup sur le NAS et comment tout bien configurer pour pouvoir effectuer les sauvegardes Borg via SSH (la méthode la plus efficace).

Pourquoi un NAS Synology ?

Pour mon cas personnel, j'utilisais auparavant un petit serveur HP Proliant MicroServer Gen 7 dont je vous avais déjà un peu parlé. Mais lorsque j'ai déménagé dans mon appartement actuel, je n'avais plus la place pour ce serveur, aussi petit soit-il.

J'avais besoin de quelque chose de plus compact qui pourrait rentrer dans le placard électrique de l'entrée (à côté de la machinbox) et j'ai donc cherché ce qui était disponible comme NAS 2 baies. Les principales contraintes étaient l'encombrement, la fiabilité du matériel et du constructeur et l'ouverture du produit.

Synology coche tout simplement les cases de mon cahier des charges : ils fournissent des mises à jour régulièrement et supportent leurs produits des années après leur sortie, le matériel est de qualité, et même si DSM, le système d'exploitation maison basé sur Linux, n'est pas totalement open source, ils laissent l'utilisateur accéder à tout ce qu'il veut dedans. C'est important de le souligner car on est aujourd'hui tellement habitués à ce que les fabricants verrouillent leurs produits : il n'y a ici pas besoin de filouter ou de rooter l'appareil. Il n'y a qu'une case à cocher pour avoir accès à un shell et faire ce qu'on veut. Après tout on a acheté l'appareil, il est normal qu'on puisse mettre les mains dedans en toute liberté ! 😁️

Du point de vue respect de l'utilisateur on appréciera aussi que Synology ne pousse pas trop fortement à créer un compte « cloud » pour accéder à son NAS à distance ou autre. L'option est proposée lors de l'installation, mais une fois qu'on lui a dit non il nous laisse tranquilles. Ça serait bien que d'autres prennent exemple (coucou Windows 👀️) !

Pour finir, il faut savoir qu'en plus des applications proposées par Synology, il existe également des dépôts communautaires qui permettent d'installer très facilement des tas d'applications supplémentaires. Ça tombe bien par ce que c'est de cette manière qu'on pourra installer BorgBackup sur le NAS ! 😃️

C'est pour toutes ces raisons que je suis parti un beau matin chercher mon petit DS220+ chez LDLC. Pour ce qui est du prix, le NAS en lui-même coûtait dans les 250 € à l'époque. Ce qui m'a coûté cher c'est surtout les disques durs.

NAS Synology DS220+ dans son placard avec la machinbox

NAS Synology DS220+ dans son placard avec la machinbox

Voilà pour mon besoin perso... Mais qu'en est-il du pro ?

Bah c'est très simple : on avait besoin de plusieurs dizaines de téraoctets de stockage distant pour effectuer la sauvegarde d'un serveur de fichier se trouvant dans nos locaux. Et la solution fiable la moins chère qu'on a pu trouver, c'est la location d'un NAS Synology chez l'hébergeur helvétique Infomaniak. Ils proposent une large gamme de NAS de la marque, sur lesquels on peut personnaliser les disques.

Dans notre cas on a choisi un RS819 avec 4 disques de 18 To, soit une cinquantaine de téraoctets de stockage dispo au final. Et pour le prix ? Cette config coûte un peu moins de 700 € pour la première année grâce à une promo, puis on sera aux alentours des 850 € les années suivantes. Et ici je parle bien du prix à l'année, pas d'un prix mensuel... Je pense que c'est un coût tout à fait raisonnable pour une entreprise, surtout pour ce volume de donnée ! 😀️

NAS Synology RS819

NAS Synology RS819

Cet article n'est pas sponsorisé, mais je vous mets un lien vers les offres des NAS Synology d'Infomaniak si jamais vous êtes intéressés :

Prérequis

Dans cet article je vais uniquement aborder la configuration du NAS Synology et quasiment pas parler de l'utilisation de BorgBackup en lui-même car j'ai déjà écrit deux articles sur le sujet.

Le premier explique ce qu'est BorgBackup et comment l'utiliser en ligne de commande pour effectuer toutes les actions courantes (et moins courantes). Le second explique comment effectuer ses sauvegardes en SSH sur un serveur distant et il est complémentaire de celui que vous êtes en train de lire si vous souhaitez plus de détails. 😃️

Pour pouvoir réaliser les configurations décrites dans la suite de cet article, vous aurez besoin d'un NAS Synology sur lequel vous êtes administrateur et d'être un minimum à l'aise avec la ligne de commande Linux (pas besoin d'être pro non plus hein, savoir utiliser SSH et quelques commandes de bases sera très largement suffisant ! 😉️).

Installer BorgBackup sur le NAS

La première étape pour pouvoir sauvegarder vers le NAS avec BorgBackup, c'est de l'installer. Borg a en effet besoin qu'une partie « serveur » soit présente sur la machine pour effectuer efficacement ses sauvegardes via SSH. Étant donné qu'il n'est pas fourni officiellement par Synology, il va falloir passer par le dépôt de la communauté pour le récupérer.

Pour commencer, on va devoir ajouter ce dépôt via l'application « Centre de paquets » :

  1. cliquez sur le bouton « Paramètres » situé en haut à droite,
  2. puis rendez-vous dans l'onglet « Sources de paquet »,
  3. et cliquez sur « Ajouter ».
  4. Dans la fenêtre qui apparait, choisissez un nom pour le dépôt, par exemple "SynoCommunity",
  5. puis entrez l'adresse du dépôt dans le champ « Emplacement » : "https://packages.synocommunity.com/".
  6. Terminez en cliquant sur « OK ».

Une fois le dépôt ajouté,

  1. rendez-vous dans l'onglet « Communauté » du Centre de paquet,
  2. puis cherchez « Borg »,
  3. et cliquez sur le bouton « Installer ».

Le centre de paquet va vous annoncer qu'il devra également installer Python 3.11 et vous demande si vous souhaitez continuer. Répondez-lui « Oui » (1). Il va également vous avertir que le paquet provient d'une source tierce et qu'il n'est pas vérifié par Synology. Cliquez sur le bouton « Accepter » pour continuer (2).

Voilà, BorgBackup est à présent installé sur votre NAS Synology ! 😁️

Création du stockage

Maintenant que BorgBackup est installé, on va créer un dossier partagé pour stocker nos sauvegardes. Pour ce faire, rendez-vous dans l'application « Panneau de configuration » puis :

  1. allez dans « Dossier partagé »,
  2. cliquez sur le bouton « Créer »,
  3. et cliquez sur « Créer un dossier partagé ».

Cela va ouvrir un assistant permettant la création du dossier. Dans la première fenêtre on va remplir les champs demandés. Dans mon cas je vais remplir de la manière suivante (1) :

  • Nom : "backup0"
  • Description : "Backups" (oui c'est original)
  • Emplacement : ici il faut mettre un volume existant sur le NAS, dans mon cas j'en ai qu'un et il s'appelle « Volume 1 ».

J'ai également désactivé la corbeille : ça sert à rien de notre contexte d'utilisation (2).

Une fois que tout est rempli, on peut cliquer sur le bouton « Suivant » (3).

Sur l'écran suivant on nous propose d'activer le chiffrement du dossier. Étant donné que les sauvegardes Borg sont déjà chiffrées ce n'est pas nécessaire, je vais donc laissé l'option « Ignorer » (1) de sélectionnée et passer à la suite en cliquant sur « Suivant » (2).

Vient ensuite l'écran des paramètres avancés. Dans mon cas je vais activer la somme de contrôle des données (1), on ne sait jamais, et je vais laisser les quotas désactivés : ce NAS est réservé aux sauvegardes, pas besoin de faire des arbitrages sur l'utilisation du stockage. Il ne reste plus qu'à cliquer sur « Suivant » (2) pour valider tout ça.

On arrive à présent sur le dernier écran qui récapitule les informations qu'on a entrées précédemment. Il nous reste qu'à cliquer une dernière fois sur « Suivant » pour créer le dossier !

Création de l'utilisateur dédié aux sauvegardes

On va à présent créer un utilisateur dédié aux sauvegardes. Pour ce faire, restez dans l'application « Panneau de configuration », puis :

  1. rendez-vous dans la section « Utilisateur et groupe »,
  2. dans l'onglet « Utilisateur »,
  3. cliquez sur le bouton « Créer »,
  4. puis sur l'élément « Créer un utilisateur » du menu.

Cela ouvre l'assistant de création d'utilisateurs.

Dans le premier écran de l'assistant, on va :

  1. définir le nom de l'utilisateur ("borg" dans mon cas),
  2. et le mot de passe de l'utilisateur (je vous recommande de mettre quelque chose de solide !).
  3. On termine en cliquant sur « Suivant ».

L'écran suivant permet d'assigner l'utilisateur à des groupes. Dans notre cas il faudra l'ajouter au groupe « administrators » (1), puis cliquer sur « Suivant » (2).

Note

NOTE : Ça ne me plait pas beaucoup que cet utilisateur soit administrateur, mais Synology n'autorise pas les utilisateurs standards à se connecter au NAS en SSH... 😑️

Il existe des bricolages pour changer ça, mais c'est loin d'être simple et ça sort du cadre de cet article. Si vous voulez tout de même creuser le sujet, je vous mets le lien vers un billet de blog en anglais qui traite le sujet (attention, ça parle d'une version assez ancienne de DSM) :

Sur les deux écrans suivants il n'y aura pas besoin de changer quoi que ce soit : l'utilisateur étant administrateur, il a déjà accès à tous les dossiers partagés et on ne peut pas lui définir de quota.

Vient ensuite l'écran permettant d'attribuer des permissions à l'utilisateur. Ici on va cliquer sur la case « Refuser » située en tête de colonne (1) afin qu'il ne puisse pas être utilisé pour se connecter au NAS autrement qu'à travers SSH ; puis on passe à la suite en cliquant sur « Suivant » (2).

Vient ensuite un écran pour configurer des limites de débit... On a rien à changer ici.

Et enfin on a l'écran de récap' sur lequel on peut vérifier tout ce qu'on a configuré. Il suffit de cliquer sur « Effectué » pour créer l'utilisateur.

Activer le dossier personnel des utilisateurs

Par défaut, les utilisateurs d'un NAS Synology n'ont pas de dossier « home ». Or nous on va en avoir besoin pour configurer la connexion SSH par clef.

On profite du fait qu'on se trouve dans la section « Utilisateur et groupe » (1) du panneau de configuration pour nous rendre dans l'onglet « Avancé » (2), scroller touuuuut en bas de la page et cocher la case « Activer le service d'accueil de l'utilisateur » (3) [mouais la traduction est un peu pourav' 😅️]. Et on termine en cliquant sur « Appliquer » (4).

Activer SSH

On va maintenant activer l'accès au NAS à travers SSH. Pour ce faire, ouvrez le panneau de configuration, puis :

  1. rendez-vous dans la section « Terminal & SNMP ».
  2. Dans l'onglet « Terminal »
  3. cliquez sur la case « Activer le service SSH »,
  4. Puis validez en cliquant sur le bouton « Appliquer ».

Un message va s'afficher vous avertissant du danger que représente l'activation de SSH. En effet avec un accès direct au système il vous est possible de faire tout ce que vous voulez... y compris de tout casser. Vous pouvez cliquer sur le bouton « OK » pour fermer l'avertissement.

Configurer l'accès pour BorgBackup

Note

NOTE : Pour cette section, je pars du principe que vous savez un minimum comment fonctionne SSH et que vous êtes déjà en possession de la clef publique de la machine à sauvegarder. Si vous voulez plus de détails sur tout ça, je vous recommande de lire d'abord mon précédent article :

Pour configurer la connexion SSH par clef qui sera nécessaire aux sauvegardes, on va avoir besoin d'accéder au terminal du NAS. On va se connecter à la machine en SSH à l'aide de la commande suivante :

ssh <USER>@<HOST>

<USER> est le nom d'utilisateur et <HOST> l'adresse IP ou le domaine associé au NAS. Ce qui va donner quelque chose comme :

ssh borg@backup42.ext.example.net

Étant donné que c'est la première fois que l'on se connecte à cette machine, notre client SSH va vous demander de confirmer qu'il s'agit bien de la bonne machine :

The authenticity of host 'backup42.ext.example.net (xxx.xxx.xxx.xxx)' can't be established.
ED25519 key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX4.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

On va lui répondre « yes » et valider en appuyant sur <Entrée>.

Le mot de passe de l'utilisateur est ensuite demandé :

borg@backup42.ext.example.net's password:

Il suffit de le rentrer et de valider avec <Entrée>.

On va ensuite créer le dossier permettant de stocker notre clef SSH et lui configurer les bonnes permissions :

mkdir -p ~/.ssh
chmod 700 ~/.ssh

Il nous restera ensuite à créer le fichier "~/.ssh/authorized_keys" et à le remplir avec une ligne similaire à ceci :

command="/usr/local/bin/borg serve --restrict-to-path <PATH>" <SSH_PUBLIC_KEY>

Où :

  • <PATH> est le chemin du dossier partagé qu'on a créé tout à l'heure.

    Bon ici il va falloir deviner un peu... Comme mon dossier est créé sur le volume de donnée « Volume 1 », le dossier correspondant sur le système est "/volume1", et comme mon dossier partagé s'appelle « backup0 », le chemin complet devient "/volume1/backup0".

    Vous pouvez utiliser des commandes du genre "ls /" ou "ls /volume*/" pour localiser votre dossier.

  • <SSH_PUBLIC_KEY> est la clef publique de la machine à sauvegarder.

Pour écrire dans le fichier vous pouvez utiliser vim (désolé nano n'est pas disponible par défaut), ou utiliser la commande suivante (en replaçant le chemin et la clef par les vôtres) :

echo 'command="/usr/local/bin/borg serve --restrict-to-path /volume1/backup0/" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICenUrah3AqWF8P1rLoH2Jd+QJXfMwiazCi7nuEN+p4m root@mamachineasauvegarder.example.net' >> ~/.ssh/authorized_keys

Tout devrait à présent être correctement configuré.

Première sauvegarde

Note

NOTE : Dans cette section je pars du principe que vous savez déjà utiliser un minimum Borg en ligne de commande et qu'il est déjà installé sur la machine à sauvegarder. Si ce n'est pas le cas, je vous renvoie vers mon premier article :

Depuis la machine à sauvegarder, AVEC L'UTILISATEUR QUI EFFECTUERA LES SAUVEGARDES, on va commencer par effectuer une première connexion au NAS Synology afin qu'ils fassent connaissance :

root@mamachineasauvegarder.example.net:~# ssh borg@backup42.ext.example.net echo "OK"

Cette fois encore il va nous falloir confirmer qu'on se connecte bien à la bonne machine en tapant « yes ». Et si tout se passe bien, aucun mot de passe ne devrait nous être demandé. Si jamais le client SSH vous demande le mot de passe de l'utilisateur, c'est que la connexion par clef n'est pas correctement configurée ; reportez-vous à la section précédente.

À présent on va initialiser le dépôt à l'aide de la commande suivante :

borg init --encryption=repokey 'ssh://borg@backup42.ext.example.net/volume1/backup0/mamachineasauvegarder'

Et on peut effectuer une première sauvegarde avec une commande similaire à celle-ci :

borg create \
    --list \
    'ssh://borg@backup42.ext.example.net/volume1/backup0/mamachineasauvegarder::my-archive-{now}' \
    /etc

Bref, ça se passe comme n'importe quelle sauvegarde Borg via SSH classique.

Conclusion

Sauvegarder vers un NAS Synology avec Borg n'est pas différent de sauvegarder vers n'importe quel autre serveur via SSH. Il y a juste quelques configurations supplémentaires à faire sur le NAS pour qu'il puisse effectivement recevoir les sauvegardes.

J'espère que cet article pourra vous être utile ; en tout cas moi je suis bien content de l'avoir enfin écrit pour avoir un mémo sur la manière de procéder ! 😁️

À bientôt !