Created by potrace 1.13, written by Peter Selinger 2001-2015 image/svg+xml Site Yann
  • Archives
  • Documents
  • Aide

BorgBackup client serveur

  • borgbackup
  • yunohost
  •  25 sept. 2021  5 oct.  2021

  • Borg Backup App for YunoHost
  • Borg Server for YunoHost
  • How to backup your YunoHost server on another server
  • Monter un serveur de sauvegardes avec BorgBackup

Sauvegarde

Sauvegarder un serveur “client” yanfi.space sur un “serveur” xoyaz.xyz

  • Une phrase de passe forte pour crypter vos sauvegardes sur le serveur hôte B. Et pour restaurer vos sauvegardes !
  • ID des applications YunoHost que vous voulez sauvegarder
  • Calendrier régulier de vos sauvegardes, voir ci-dessous
  • Installer l’application de sauvegarde Yunohost Borg (borg) sur le client yanfi.space
  • Installer l’application Borg sur le serveur xoyaz.xyz
  • Enregistrez la phrase de passe à un autre endroit que votre serveur. Sans la phrase de passe, vous ne pourrez pas restaurer les données.

A - Client yanfi.space

Clés ssh borg

Actions à effectuer sur le client "yanfi.space"
En root,créer une clé SSH pour l’authentification borg sur le serveur xoyaz.xyz

sudo -s
ssh-keygen -t ed25519 -f /root/.ssh/id_borg_ed25519

Validez en appuyant sur la touche « Entrée » à toutes les questions

Vous devriez maintenant avoir une clé privée contenue dans le fichier /root/.ssh/id_borg_ed25519, et une clé publique contenue dans le fichier /root/.ssh/id_borg_ed25519.pub
La clé privée ne doit jamais être partagée.

B - Serveur xoyaz.xyz

Actions à effectuer sur le serveur "xoyaz.xyz"

Installer borgbackup

Installer l’application Borg

sudo apt install borgbackup

On se connecte sur le serveur et on passe en mode su

Créer utilisateur “borgbackup”

Créer un utilisateur dédié à recevoir les sauvegardes : “borgbackup”

sudo useradd -d /home/backup -m -r -U borgbackup

On bascule en utilisateur borgbackup

sudo -u borgbackup -s

Création des dossiers

Répertoire ssh

mkdir /home/backup/.ssh

Chaque client a son dépôt dédié dans le dossier /home/backup/borg

mkdir -p /home/backup/borg/yanfi_space

Répertoire .passphrase pour les accès aux dépôts borg des clients en local

mkdir -p /home/backup/.passphrase

Sortie utilisateur borgbackup

exit

Ajout clé publique client

Sur le serveur xoyaz.xyz, ajouter dans le fichier /home/backup/.ssh/authorized_keys la clé publique de chacun des clients avec l’option command
Ajout de la clé publique id_borg_ed25519.pub de yanfi.space

sudo -u borgbackup -s
# Avec quota : borg serve --storage-quota 5G
# Client yanfi.space
echo 'command="cd /home/backup/borg/yanfi_space; borg serve --restrict-to-path /home/backup/borg/yanfi_space",no-port-forwarding,no-x11-forwarding,no-agent-forwarding,no-pty,no-user-rc ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIws5uLxgF1UgGT8d/gfYueeEm5pFmRoXesbfD81QEpV root@yanfi.space' >> /home/backup/.ssh/authorized_keys
exit

L’option command permet de restreindre l’utilisation de la connexion SSH à une commande donnée, pour le client qui utilisera la clé publique associée.

Créer une phrase de passe forte

Créer une phrase de passe forte pour crypter les sauvegardes Borg (sans espace vide)
Vous pouvez utiliser Diceware Password Generator pour générer une phrase de passe forte

Ajout de la phrase forte dans un fichier au dossier /home/backup/.passphrase

sudo -u borgbackup -s
# ajout phrase yanfi_space pour le client yanfi.space , dépôt yanfi_space
echo "<La phrase de passe forte>" > /home/backup/.passphrase/yanfi_space

Conserver cette phrase, elle sera demandé pour la création du dépôt borg

C - Client yanfi.space

Installer borg yunohost

Prérequis:

  • Dépôt distant borg : ssh://borgbackup@xoyaz.xyz:55051/home/backup/borg/yanfi_space
  • PassPhrase du dépôt borg

En mode su , installer borg yunohost

yunohost app install borg

In which borg repository location do you want to backup your files ?: ssh://borgbackup@xoyaz.xyz:55051/home/backup/borg/yanfi_space
Provide a strong passphrase to encrypt your backups. No blank space: <Saisie de la passphrase sans espace>
Should Borg backup your YunoHost configuration? [yes | no] (default: yes):
Should Borg backup emails and user home directory? [yes | no] (default: yes):
Which apps should Borg backup ? (default: all):
With which regular time schedule should the backups be performed? (see systemd OnCalendar format) (default: Daily): 03:20
Do you want admin to receive mail notifications on backups ? [always | errors_only | never]: never
Info: Installing borg…
[…]
Success! Installation completed

Tester yunohost borg

Tester la configuration des applications Borg

À cette étape, votre sauvegarde devrait se dérouler à l’heure prévue (tous les jours à 3h20). Notez que la première sauvegarde peut être très longue, car de nombreuses données doivent être copiées via ssh. Les sauvegardes suivantes sont incrémentielles : seules les données nouvellement générées depuis la dernière sauvegarde seront copiées.

Si vous voulez tester la configuration correcte de Borg Apps avant l’heure prévue, vous pouvez lancer une sauvegarde manuellement sur le serveur yanfi.space (cx21) :

systemctl start borg

Visualiser les logs en cours

journalctl -f -u borg
[...]
Sep 26 13:12:47 yanfi.space sudo[29904]: pam_unix(sudo:session): session opened for user root by (uid=0)
Sep 26 13:12:47 yanfi.space sudo[29904]: pam_unix(sudo:session): session closed for user root
Sep 26 13:12:47 yanfi.space sudo[20627]: pam_unix(sudo:session): session closed for user root
Sep 26 13:12:47 yanfi.space systemd[1]: borg.service: Succeeded.
Sep 26 13:12:47 yanfi.space systemd[1]: Started Run backup borg.

Ensuite, vous pouvez vérifier la présence de votre dépôt de sauvegarde sur le serveur xoyaz.xyz

Vérification sauvegarde

Lister les fichiers

app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg list "$(yunohost app setting $app repository)"

Résultat

_auto_conf-2021-09-26_13:02          Sun, 2021-09-26 13:02:38 [25fb96cdf3aa9063295bf44c862b5ab651443ee8c956c3f07d06ecc78004d511]
_auto_data-2021-09-26_13:02          Sun, 2021-09-26 13:02:59 [990931009574da2d6b23db6861b778f2d147f9c4844188bff7a4fbeacadd0422]
_auto_borg-2021-09-26_13:03          Sun, 2021-09-26 13:03:27 [4033776d0bb792cb47670e6164a10bb341932d7b69b38572e999f1c63d7fedaa]
_auto_calibreweb-2021-09-26_13:03    Sun, 2021-09-26 13:03:46 [04d6d690224b374bab8ef437cb1628fff049327a8366e43f4b11cbb0a25b924a]
_auto_gitea-2021-09-26_13:06         Sun, 2021-09-26 13:06:52 [d39d9e9d87cf7b3728755e45c2cf84b580c2c35483f49f7319b1c5f289389a94]
_auto_librespeed-2021-09-26_13:07    Sun, 2021-09-26 13:07:17 [06f977c11ff8b7d8f122953c2a7506c36f62327aa4bb1eed7ff6f5d229d531e5]
_auto_my_webapp-2021-09-26_13:07     Sun, 2021-09-26 13:07:39 [dcac73e18510c75723788c8b2a2e7a3925f65db69f348e3c8c19fc5283b89bfa]
_auto_my_webapp__2-2021-09-26_13:07  Sun, 2021-09-26 13:08:02 [3df4f7c057f3a3b7088eb756c8d718282effc8601bfebf3333b178f5a71b20fb]
_auto_my_webapp__3-2021-09-26_13:08  Sun, 2021-09-26 13:08:23 [fcd33a92c6b607b839b05d78a69db0b90502cae2142bd305fa3c82d8f2058102]
_auto_navidrome-2021-09-26_13:08     Sun, 2021-09-26 13:08:46 [637c055ee8fbd36b8328b8471a2f20cfede35508f574d7f614e5205c53a04e25]
_auto_nextcloud-2021-09-26_13:09     Sun, 2021-09-26 13:09:19 [d9df4c0b4bc3878e3815a31ab0d7b59ee1c786dee0260d2061400240a2b34c46]
_auto_rainloop-2021-09-26_13:11      Sun, 2021-09-26 13:11:28 [5520de36a6c73a7628ee1f72748ea7b3b59d372ae835b7faafc3e8724a5e3a7f]
_auto_redirect-2021-09-26_13:11      Sun, 2021-09-26 13:11:50 [f4719fc1cd8f86900a3a8931240ad68b194b35fd60afc2ae398125e11662eeb7]
_auto_shaarli-2021-09-26_13:12       Sun, 2021-09-26 13:12:11 [328b7ccedf3566881a646d7c90db9991974cb65d9f8c1a791fb76557b3e5c02d]
_auto_ttrss-2021-09-26_13:12         Sun, 2021-09-26 13:12:32 [298e1c7d461473d62fad95bad249b099f8a2fb52f27573a5c0405256eab9deae]

Liste des sauvegardes à la date du jour

app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg list "$(yunohost app setting $app repository)" | grep $(date '+%Y-%m-%d')

D - Serveur xoyaz.xyz

Liste Sauvegardes

Si vous voulez être sûr de pouvoir restaurer votre serveur, vous devez essayer de restaurer régulièrement les archives. Mais ce processus prend beaucoup de temps.

Les sauvegardes borgbackup sont dans le dossier /home/backup/borg/yanfi_space
Pour exécuter les commandes relatives aux sauvegardes borg , il faut ouvrir un shell avec l’utilisateur borgbackup

sudo -u borgbackup -s

Vous devriez au moins :

  • Maintenir vos applications à jour (si les applications sont trop anciennes, elles pourraient être difficiles à restaurer sur une version plus récente)
  • Vérifiez régulièrement la présence de info.json et db.sql ou dump.sql dans vos archives d’applications

Exemple pour ttrss :
Liste des sauvegardes ttrss

BORG_PASSPHRASE="`cat /home/backup/.passphrase/yanfi_space`" borg list /home/backup/borg/yanfi_space |grep 'ttrss'
_auto_ttrss-2021-09-26_13:12         Sun, 2021-09-26 13:12:32 [298e1c7d461473d62fad95bad249b099f8a2fb52f27573a5c0405256eab9deae]

Vérification de la présence des fichiers

BORG_PASSPHRASE="`cat /home/backup/.passphrase/yanfi_space`" borg list /home/backup/borg/yanfi_space::_auto_ttrss-2021-09-26_13:12 | grep info.json
-rw-r--r-- root   root        342 Sun, 2021-09-26 13:12:26 info.json
BORG_PASSPHRASE="`cat /home/backup/.passphrase/yanfi_space`" borg list /home/backup/borg/yanfi_space::_auto_ttrss-2021-09-26_13:12 | grep db.sql
-rw-r--r-- root   root   11842086 Sun, 2021-09-26 13:12:25 apps/ttrss/backup/db.sql
  • Assurez-vous d’avoir votre phrase de passe à disposition même si votre client est complètement cassé

Informations (phrase de passe sur le serveur backup)

BORG_PASSPHRASE="`cat /home/backup/.passphrase/yanfi_space`" borg info /home/backup/borg/yanfi_space
Repository ID: ee6f2866d6d36f39bb5cd4347d4defc4b056ed852d8d0ca14a9acb107de1ac07
Location: /home/backup/borg/yanfi_space
Encrypted: Yes (repokey)
Cache: /home/backup/.cache/borg/ee6f2866d6d36f39bb5cd4347d4defc4b056ed852d8d0ca14a9acb107de1ac07
Security dir: /home/backup/.config/borg/security/ee6f2866d6d36f39bb5cd4347d4defc4b056ed852d8d0ca14a9acb107de1ac07
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
All archives:                7.11 GB              6.01 GB              4.56 GB

                       Unique chunks         Total chunks
Chunk index:                   49550                55121

Restauration

BorgBackup restauration depuis cx21

Pour des informations sur le processus de restauration, consultez ce fil de discussion du forum yunohost (en) et celui-là (en), ainsi que l’utilisation de borg avec des sshkeys (en), la documentation sur borg extract (en), et ce tutoriel général sur la sauvegarde de borg (en).

Dans les explications qui suivent :

  • le serveur à sauvegarder/restaurer est appelé : cx21 domaine yanfi.space
  • le serveur distant qui reçoit et stocke la sauvegarde s’appelle backup et il est accessible sur le domaine xoyaz.xyz.
  • l’utilisateur distant sur le backup qui possède les droits borg s’appele yanfi.
  • les fichiers de sauvegarde sont stockés dans le répertoire /home/backup/borg/yanfi_space du serveur distant

Vue d’ensemble

Si vous avez besoin de restaurer tout un système de yunohost :

  1. Installer une nouvelle VM debian
  2. Installez yunohost de la manière habituelle
  3. Passez par yunohost postinstall (les paramètres que vous fournirez ne sont pas cruciaux, car ils seront remplacés par la restauration)
  4. Installer l’application borg
  5. Configurer backup pour accepter les connexions ssh à partir de cx21.
  6. Utiliser borg pour importer des sauvegardes de backup vers cx21.
  7. Restaurer les sauvegardes borg avec la commande yunohost backup restore, d’abord config, puis data, puis chaque application une à la fois
  8. Supprimer l’application Borg et la restaurer

Permettre à cx21 de se connecter à backup avec borg

À ce stade, nous supposerons que cx21 est un yunohost fraîchement installé (basé sur buster dans mon cas). Vous devriez également avoir effectué la post-installation du yunohost.

Si vous ne voulez pas restaurer tout le système, juste quelques applications, vous pouvez sauter certaines des étapes ci-dessous.

Installez l’application borg yunohost dans cx21.

L’idée ici est d’installer borg, non pas pour créer des sauvegardes, mais seulement pour utiliser les commandes borg pour importer des sauvegardes à distance.

Ainsi, par exemple, vous pouvez l’installer en faisant ce qui suit :

sudo yunohost app install borg -a "server=xoyaz.xyz&ssh_user=yanfi&conf=0&data=0&apps=hextris&on_calendar=2:30"

Assurez-vous que backup accepte les connexions ssh à partir de cx21

Dans cx21 vous devrez récupérer la clé ssh que borg vient de créer lors de l’installation : sudo cat /root/.ssh/id_borg_ed25519.pub, copiez la dans le presse-papiers.

Connectez-vous via ssh à backup, allez à /home/yanfi/.ssh/authorized_keys, et passez la clé publique de borg que vous avez obtenue à l’étape précédente.

Maintenant, pour vous assurer que cela fonctionne, vous pouvez essayer de vous connecter via ssh de cx21 à backup. Dans cx21 : ssh -i /root/.ssh/id_borg_ed25519 yanfi@xoyaz.xyz . Si vous pouvez entrer dans backup , sans qu’il vous demande un mot de passe, alors vous pouvez continuer :)

ATTENTION : si vous utilisez un port SSH différent de 22, modifier les fichiers en conséquence :
sed -i 's/BORG_RSH="ssh/BORG_RSH="ssh -p 55051/g' /etc/yunohost/apps/borg/conf/backup_method.j2
sed -i 's/BORG_RSH="ssh/BORG_RSH="ssh -p 55051/g' /etc/yunohost/hooks.d/backup_method/05-borg_app

Restaurer les sauvegardes de cx21

⚠️ Pour que les commandes de la section suivante fonctionnent, vous devez être root dans cx21 (vous pouvez devenir root en exécutant sudo su) et connaitre la phrase mot de passe pour accéder la sauvegarde borg.

⚠️ La restauration des sauvegardes peut prendre un certain temps, vous feriez mieux de les faire dans un processus séparé, afin qu’elle ne s’arrête pas si votre session de terminal se ferme. Pour cela, vous pouvez par exemple utiliser tmux.

Dans cx21 maintenant, vous devriez être capable de lister les sauvegardes dans backup avec la commande suivante :

SRV="yanfi@xoyaz.xyz:~/backup"
# Si port SSH 22  PORT_SSH='' sinon définir le port PORT_SSH='-p 55051'
PORT_SSH='-p 55051'
# saisir la phrase mot de passe
BORG_RSH="ssh $PORT_SSH -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg list --short $SRV

ou

# passphrase en variable
export BORG_PASSPHRASE="xxxxxxxxxxxxxxx"
BORG_RSH="ssh $PORT_SSH -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes" borg list --short $SRV

Vous pouvez ensuite en réimporter un vers cx21 avec :

BORG_RSH="ssh $PORT_SSH -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg export-tar $SRV::auto_BACKUP_NAME /home/yunohost.backup/archives/auto_BACKUP_NAME.tar.gz

Et ensuite restaurer l’archive en cx21 avec :

yunohost backup restore auto_BACKUP_NAME --system # for config and data backups
yunohost backup restore auto_BACKUP_NAME --apps # for other backups (=apps)

Exemple sauvegarde du 14 mars

On liste les sauvegardes du 14 mars 2021

SRV="yanfi@xoyaz.xyz:~/backup"
# Si port SSH 22  PORT_SSH='' sinon définir le port PORT_SSH='-p 55051'
PORT_SSH='-p 55051'
export BORG_PASSPHRASE="xxxxxxxxxxxxxxx"
BORG_RSH="ssh $PORT_SSH -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes" borg list --short $SRV |grep '14_03_21'


auto_conf_14_03_21_03:15
auto_data_14_03_21_03:15
auto_borg_14_03_21_03:15
auto_gitea_14_03_21_03:15
auto_my_webapp_14_03_21_03:15
auto_navidrome_14_03_21_03:15
auto_nextcloud_14_03_21_03:16
auto_redirect_14_03_21_03:16
auto_shaarli_14_03_21_03:16
auto_ttrss_14_03_21_03:16
auto_conf_14_03_21_10:10
auto_data_14_03_21_10:10
auto_borg_14_03_21_10:10
auto_gitea_14_03_21_10:10
auto_my_webapp_14_03_21_10:10
auto_navidrome_14_03_21_10:10
auto_nextcloud_14_03_21_10:11
auto_redirect_14_03_21_10:11
auto_shaarli_14_03_21_10:11
auto_ttrss_14_03_21_10:11

On réimporte par exemple auto_conf_14_03_21_03:15

BORG_RSH="ssh $PORT_SSH $PORT_SSH -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg export-tar $SRV::auto_conf_14_03_21_03:15 /home/yunohost.backup/archives/auto_conf_14_03_21_03:15.tar.gz

Et nextcloud ? C’est super lourd ! !

Pour nextcloud, le mieux est probablement de réimporter la sauvegarde sans les données. Et d’importer les données manuellement.

Pour cela, vous pouvez faire ce qui suit (en tant que root) :

SRV=yanfi@xoyaz.xyz:/home/yanfi/backup

# export the app without data
BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg export-tar -e apps/nextcloud/backup/home/yunohost.app $SRV::auto_nextcloud_XX_XX_XX_XX:XX /home/yunohost.backup/archives/auto_nextcloud_XX_XX_XX_XX:XX.tar.gz

# extract the data from the backup to the nextcloud folder
cd /home/yunohost.app/nextcloud
BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg extract $SRV::auto_nextcloud_XX_XX_XX_XX:XX apps/nextcloud/backup/home/yunohost.app/nextcloud/
mv apps/nextcloud/backup/home/yunohost.app/nextcloud/data data
rm -r apps

# now you can simply restore nextcloud app
yunohost backup restore auto_nextcloud_XX_XX_XX_XX:XX --apps

Restaurer borg

Une fois que vous aurez restauré l’ensemble du système, vous voudrez probablement restaurer également l’application borg.

Pour cela, supprimez le borg “factice” que vous avez installé pour faire la restauration, et restaurez le borg de la même manière que pour les autres applications :

sudo yunohost app remove borg
sudo yunohost backup restore auto_borg_XX_XX_XX_XX:XX --apps

Tips

  • Sauvegarde : Méthodes personnalisées

Liste des applications YunoHost à sauvegarder

yunohost app setting borg apps -v "nextcloud,wordpress"

Autres commandes borg utiles

Obtenir l’espace de stockage utilisé par le référentiel de sauvegarde sur le serveur hôte (en)

borg info /home/servera/backup

Sauvegarde des applications Yunohost

Sauvegarde des applications Yunohost avec différents niveaux
Si vous voulez sauvegarder votre serveur invité :

  • avec différentes applications YunoHost
  • à un horaire régulier différent
  • sur différents serveurs hôtes

Vous pouvez ensuite configurer plusieurs instances des Borg Apps sur les mêmes serveurs. Par exemple :

  • Borg Backup instance “borg” : sauvegarde quotidienne du nextcloud sur le serveur hôte B
  • Borg Backup instance borg__2 : sauvegarde hebdomadaire de toutes les autres applications YunoHost sur le serveur hôte C
PRÉCÉDENTGlances outil de surveillance en temps réel des performances pour les systèmes d'exploitation basés sur Linux
SUIVANTArchlinux Debian - Compilation go Audio Navidrome
Recherche