Dans ce billet, je te présente comment j’ai configuré l’outil Borg pour faire des sauvegardes de l’ensemble de mon infrastructure Yunohost.
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 répond aux besoins des 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 est un logiciel de gestion de sauvegarde.
Ces deux services permettent l’exécution de Borg en arrière-plan:
- 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 qui se spécialise 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. Un des serveurs de rsync.net, identifié par un sous-domaine de la forme SUB.rsync.net, héberge votre espace. 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:
Attention
- S’il y a déjà un fichier .ssh/authorized_keys sur le serveur distant, il sera écrasé.
- Je conseille donc d’en faire une copie et de synchroniser un fichier qui contient toutes les clés, une par ligne, au lieu du fichier ~/.ssh/id_borg_ed25519.pub
# Récupérer les clés actuelles ssh ${RSYNC_USER}@${RSYNC_SUB}.rsync.net cat .ssh/authorized_keys > ~/borg_authorized_keys # Ajouter la nouvelle clé cat ~/.ssh/id_borg_ed25519.pub >> ~/borg_authorized_keys # Synchroniser les nouvelles clés rsync -av ~/borg_authorized_keys ${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
Sauvegarde manuelle
Ce petit script te permettra de déclencher une sauvegarde manuelle de toutes tes applications
for app in $(yunohost app list --json | jq '.apps | .[] | .id' | tr -d '"') do yunohost backup create -n "auto_$app" --method borg_app --apps "$app" done
Références
- Le service Borg: https://www.borgbackup.org/
- Yunohost: https://yunohost.org/
- Debian: https://debian.org
Pour en savoir plus sur l’autohébergement, je recommande de s’abonner à ma newsletter.