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
Comment configurer Borg pour sauvegarder complètement un serveur Yunohost sur rsync.net ?
Ce guide pas à pas explique l’installation de Borg via ‘yunohost app install borg’, la configuration des variables d’environnement (BORG_REMOTE_PATH, BORG_RSH), la génération et partage des clés SSH Ed25519, la création du dépôt ‘backup’, les sauvegardes manuelles par app via yunohost backup, et l’automatisation avec systemd (borg.timer/service). Idéal pour des backups dédupliqués, chiffrés et restaurables de toute l’infrastructure Yunohost-Debian.

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

Quelles sont les unités systemd pour automatiser Borg sur Yunohost ?
Borg utilise deux services systemd : ‘borg.timer’ pour l’ordonnancement périodique des backups (tourne en permanence), et ‘borg.service’ pour exécuter la tâche de sauvegarde puis s’arrêter. Lancez ‘systemctl start borg’ pour tester.
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.
Comment configurer rsync.net pour Borg sur Yunohost ?
Définissez RSYNC_SUB (sous-domaine comme ‘usw1’) et RSYNC_USER (numérique). Accédez via SSH avec mot de passe initial, puis partagez la clé ~/.ssh/id_borg_ed25519.pub dans .ssh/authorized_keys distant via rsync pour des connexions sans mot de passe.
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
Comment vérifier une sauvegarde Borg sur rsync.net ?
Utilisez ‘borg list ${RSYNC_USER}@${RSYNC_SUB}.rsync.net:~/backup’ pour lister les archives horodatées après la première exécution (lancez en screen/tmux car longue).
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