Dans ce billet, je vous présente comment j'ai configuré l'outil Borg pour faire des sauvegardes de l'ensemble de mon infrastructure sur le web.

Le serveur d'autohébergement Yunohost

Yunohost est une distribution GNU/Linux basée sur Debian qui offre une infrastructure de type plateforme applicative pour l'autohébergement. Elle simplifie la gestion du cycle de vie d'applications web orientée pour un usage personnel ou en petits groupes. Elle est donc adaptée aux besoins de particuliers, travailleurs autonomes, organismes et petites entreprises.

L'association LinuQ où je m'implique bénévolement a fait de nombreuses explorations sur cette plateforme sur son wiki.

Le logiciel Borg

Borg logo

Borg est un logiciel de gestion de sauvegarde.

Il est installé sous la forme de deux services:

  • Un premier, borg.timer, qui gère l'ordonnancement des sauvegardes et qui tourne en permanence
  • Un second, borg.service, qui effectue le travail de sauvegarde et qui s'éteint par la suite

Le service rsync.net

rsync.net est un service d'hébergement infonuagique spécialisé dans les sauvegardes avec le logiciel rsync. C'est un service sécuritaire et peu dispendieux pour garder des sauvegardes de ses systèmes.

Une fois obtenu, le service sera accessible via la commande ssh seulement. Vous aurez un nom d'utilisateur numérique ainsi qu'un mot de passe pour accéder au service. Votre espace sera hébergé sur un des serveurs de rsync.net identifié par un sous-domaine de la forme SUB.rsync.net. Il faudra utiliser celui-ci pour la configuration de Borg.

Pour des fins de simplification de cette présentation, je vais configurer ces deux variables d'environnement. Je vous conseille aussi de faire de même:

# Sous-domaine du serveur de sauvegarde rsync.net
RSYNC_SUB=
# Nom d'utilisateur rsync.net
RSYNC_USER=

Borg et Yunohost

La façon la plus simple d'installer Borg sur un serveur Yunohost est par la ligne de commande, en tant que superutilisateur

yunohost app install borg

On vous demandera ensuite de fournir certains paramètres afin de personnaliser l'installation:

  • domain name: ${RSYNC_SUB}.rsync.net
  • username: ${RSYNC_USER}

Il faut ensuite configurer une variable d'environnement qui permettra de bien utiliser le service Borg disponible sur rsync.net

export BORG_REMOTE_PATH=/usr/local/bin/borg1/borg1

L'installation de Borg par Yunohost va générer une paire de clés cryptographiques avec l'algorithme Ed25519. Celles-ci sont situées dans le répertoire /root/.ssh/ et ont le nom de fichier id_borg_ed25519. Il faudra d'ailleurs, pour se connecter au serveur rsync.net sans spécifier de mot de passe, partager cette clé sur celui-ci:

rsync -av ~/.ssh/id_borg_ed25519.pub ${RSYNC_USER}@${RSYNC_SUB}.rsync.net:.ssh/authorized_keys

Puis, à chaque connexion, préciser cette clé lors des connexions au serveur rsync.net, notamment avec le paramètre -i /root/.ssh/id_borg_ed25519 de la commande ssh ou avec la variable d'environnement suivante pour Borg:

export BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes"

Créer manuellement le répertoire backup

ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes ${RSYNC_USER}@${RSYNC_SUB}.rsync.net mkdir backup

Pour démarrer une première sauvegarde, une fois que tous les services sont configurés. Comme celle-ci peut prendre plusieurs minutes lors de la première exécution, il est recommandé de travailler dans une session screen ou tmux.

systemctl start borg

On peut ensuite valider la présence de la sauvegarde sur le serveur avec la commande suivante:

borg list ${RSYNC_USER}@${RSYNC_SUB}.rsync.net:~/backup

Article suivant