Outils pour utilisateurs

Outils du site


informatique:yunohost:sauvegarder_yunohost

Sauvegarder Yunohost

À l'aide des applications Borg

Une des solution pour sauvegarder votre serveur consiste à utiliser les applications borg

Cette solution consiste à sauvegarder son serveur yunohost sur un autre serveur yunohost. Il y a donc deux applications, une application “client” ( Borg Backup App ) et une application “serveur” ( Borg Server ).

Borg Server a besoin d'un clé publique générée à l'installation de Borg Backup App. On commence donc par installer l'application cliente.

Dans mon exemple, je vais sauvegarder le serveur quercus sur fagus.

Installation de Borg Backup App

J'installe l'application cliente, Borg Backup App, sur quercus.

J'ai besoin :

  • De choisir un libellé (Optionnel, pratique surtout si on veut mettre en place plusieurs backups)
  • De configurer l'url du serveur ( Ici, l'URL principale de fagus est “artanux.be”.)
  • De choisir le nom d'utilisateur qui sera utilisé pour se connecter au serveur distant. Je choisis donc le nom du serveur, quercus.
  • Choisir une phrase de passe pour chiffrer les sauvegardes (important!)
  • Choisir enfin ce que l'on souhaite sauvegarder et à quelle fréquence

Une paire de clé ssh est générée à l'installation de l'application.

root@quercus:~# ls -al /root/.ssh/
total 16
drwx------ 2 root root 4096 Aug 12 19:37 .
drwx------ 4 root root 4096 Aug 11 07:23 ..
-rw------- 1 root root    0 Aug  8 09:15 authorized_keys
-rw------- 1 root root  411 Aug 12 19:37 id_borg_ed25519
-rw-r--r-- 1 root root  101 Aug 12 19:37 id_borg_ed25519.pub
 
root@quercus:~# cat /root/.ssh/id_borg_ed25519.pub 
ssh-ed25519 AAAA(...)

Cette clé est également envoyée par mail à l'administrateur du serveur.

Installation de Borg Server

Une fois la partie cliente installée, passons à l'installation de la partie serveur, l'application Borg Server, sur fagus.

Il faudra configurer :

  • Un libellé, surtout pratique si on héberge les sauvegardes de plusieurs serveurs
  • De configurer le nom d'utilisateur choisi à l'installation de la partie cliente (ici: quercus)
  • De configurer la clé ssh publique générée à l'installation de la partie cliente
  • De choisir un quota de stockage, pour ne pas risquer de saturer votre serveur

L'application crée un utilisateur et place la clé ssh publique dans authorized_keys, avec une limitation sur la commande pouvant être utilisée :

root@fagus:/home# cat /home/quercus/.ssh/authorized_keys 
command="borg serve --storage-quota 500G --restrict-to-repository /home/quercus/backup",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh-ed25519 AAAA(...)

Lancer manuellement le backup

Sur le serveur à sauvegarder, où on a installé l'application Borg Backup App, on peut manuellement lancer une sauvegarde en démarrant le service :

# systemctl start borg

Pour vérifier que tout fonctionne bien :

  • Vérifier sur un dossier “/home/quercus/backup/” a bien été créé sur Fagus.
  • Utiliser les commandes borgs pour vérfier :
root@fagus:~# borg list /home/quercus/backup/
Enter passphrase for key /home/quercus/backup: 
auto_conf_16_08_20_15:36             Sun, 2020-08-16 15:36:46 [dca3fdacfe470ef02a1a8b878944ab9fedb0468f4823891d8c0e2419701b2d32]
auto_data_16_08_20_15:36             Sun, 2020-08-16 15:37:04 [8992608fb919d66a54f1c0412a8a88b471cda229a66f154dc4fc945076f8d8ff]
auto_borg_16_08_20_15:38             Sun, 2020-08-16 15:38:29 [38b1f269210021a671be08e86a85a120b3664a321892d11caad555cab6d23e53]
auto_borgserver_16_08_20_15:38       Sun, 2020-08-16 15:38:43 [7101a5803175dc31d4f54c33b4ecab95d225532faa0240fd84d492b265c05ac5]
auto_dokuwiki_16_08_20_15:38         Sun, 2020-08-16 15:39:04 [dbaf920f37f399b5186194a1d93973771e15e10d47da352514ddcf895664cc07]
auto_my_webapp_16_08_20_15:44        Sun, 2020-08-16 15:44:30 [3aa0379bcf79a43d22bed9d770c8192afbd859306ddc864fc903759371ada9bb]
auto_redirect_16_08_20_15:44         Sun, 2020-08-16 15:44:49 [992fc9016a91b54b82f46e65aeb95e203099703634211ff16e0e7841854f9161]
auto_shaarli_16_08_20_15:45          Sun, 2020-08-16 15:45:10 [8fe1ceed03878c1305c87ea9f7e3630e826a487580538fc190a1e17d9e318ddf]
 
root@fagus:~# borg info /home/quercus/backup/
Enter passphrase for key /home/quercus/backup: 
Repository ID: 8fdd120542cee6ae4dd6d1694e73175e978977b523ed83188c9da91ccc12b0ec
Location: /home/quercus/backup
Encrypted: Yes (repokey)
Cache: /root/.cache/borg/8fdd120542cee6ae4dd6d1694e73175e978977b523ed83188c9da91ccc12b0ec
Security dir: /root/.config/borg/security/8fdd120542cee6ae4dd6d1694e73175e978977b523ed83188c9da91ccc12b0ec
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
All archives:                2.71 GB              2.65 GB              2.32 GB
 
                       Unique chunks         Total chunks
Chunk index:                   18749                25990

En cas de problème

Quelques pistes si ça ne fonctionne pas :

  • Vérifier les logs
admin@quercus:~$ ls -al /var/log/backup*
-rw-r--r-- 1 root root 18317 Aug 13 00:01 /var/log/backup_borg.err
-rw-r--r-- 1 root root     0 Aug 12 20:53 /var/log/backup_borg.log

Depuis la mi-mai 2021 et la version “1.1.16~ynh20”, les logs sont dans un sous-dossier :

root@artanux:/home/admin# ls -al /var/log/borg/
total 228
drwxr-xr-x  2 borg borg  4096 May 24 09:49 .
drwxr-xr-x 25 root root 12288 May 24 00:00 ..
-rw-r--r--  1 root root 13517 May 15 00:06 210515_0000.err
-rw-r--r--  1 root root  7326 May 15 00:06 210515_0000.log
(...)
  • Vérifier les erreurs données au lancement du service
# systemctl status --lines 100 borg 
● borg.service - Run backup borg
   Loaded: loaded (/etc/systemd/system/borg.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2020-08-13 00:01:16 UTC; 9h ago
 Main PID: 31654 (code=exited, status=1/FAILURE)
 
Aug 13 00:00:03 quercus systemd[1]: Starting Run backup borg...
Aug 13 00:00:05 quercus backup-with-borg[31654]: ls: cannot access '/etc/yunohost/hooks.d/backup/':
Aug 13 00:00:07 quercus slapcat[31880]: DIGEST-MD5 common mech free
  • Vérifier qu'on a pas fait d'erreur dans les clés SSH (mauvais copier/coller, etc…)

Problèmes rencontrés

Problèmes de clés SSH

Comme je sauvegarde Fagus sur Quercus et inversement, je me suis un peu emmêlé avec les clés SSH… Il faut penser à vérifier que la clé publique du client corresponde à ce qui est dans authorized_keys sur le serveur :

root@quercus:~# ls -al /root/.ssh/
total 20
drwx------ 2 root root 4096 Aug 12 20:53 .
drwx------ 5 root root 4096 Aug 14 07:40 ..
-rw------- 1 root root    0 Aug  8 09:15 authorized_keys
-rw------- 1 root root  411 Aug 12 19:37 id_borg_ed25519
-rw-r--r-- 1 root root  101 Aug 12 19:37 id_borg_ed25519.pub
-rw-r--r-- 1 root root  444 Aug 12 20:53 known_hosts
root@fagus:~# ls -al /home/quercus/.ssh/authorized_keys 
-rw-r--r-- 1 root root 264 Aug 12 21:12 /home/quercus/.ssh/authorized_keys

Problèmes pour lancer borg sur le serveur

root@fagus:~# tail -f n 20 /var/log/backup_borg.err
Remote: 
Remote: 
Remote:   Server	: 465812
Remote:   IPv4		: WW.XX.YY.ZZ
Remote:   IPv6		: WWWW:XXXX:YYYY:ZZZZ
Remote:   Hostname	: machin.com
Remote: 
Remote: bash: /usr/local/bin/borg: Permission denied
Connection closed by remote host. Is borg working on the server?

Borg ne peut pas être lancé par l'utilisateur quercus sur le serveur fagus.

root@fagus:~# sudo -u quercus borg --help
sudo: unable to execute /usr/local/bin/borg: Permission denied

La solution consiste à vérifier les droits pour lancer Borg sur le serveur fagus :

root@fagus:~# ls -al /usr/local/bin/borg 
-rwxr--r-- 1 root staff 69 Aug 10 14:03 /usr/local/bin/borg
 
root@fagus:~# chmod 755 /usr/local/bin/borg 

Une fois les droits réglés, ça marche correctement!

Problème de passphrase incomplète

Ma passphrase, générée automatiquement par bitwarden, contenait “$texte*”, qui a été interprété comme une variable vide. Un bout de la passphrase a donc disparu.

J'ai ajouté mon expérience sur cette issue Github.

Le problème se situe dans le fichier suivant :

# cat /etc/yunohost/hooks.d/backup_method/05-borg_app
(...)
BORG_PASSPHRASE="RGjauGbbg6d$jj77g*piabfbfGedE"
(...)

(La passphrase a été changée évidemment!)

La passphrase utilisée réellement pour chiffrer le backup, dans ce cas-ci : RGjauGbbg6d*piabfbfGedE

Changement de port SSH

Je recevais pas mal d'alertes de fail2ban à propos de tentative pour se connecter à SSH depuis le port standard. J'ai donc changé le port SSH sur mes serveurs (en changeant dans le fichier /etc/ssh/sshd_config).

Évidemment, ça pète la configuration Borg et celui-ci n'arrive plus à se connecter au serveur distant.

Il y a deux lignes à changer dans le fichier

# cat /etc/yunohost/hooks.d/backup_method/05-borg_app | grep ssh
if ssh-keygen -F "monserveur.com" >/dev/null ; then
    BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes "
    BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=no "

Il faut ajouter l'information pour qu'il utilise le bon port :

# vim /etc/yunohost/hooks.d/backup_method/05-borg_app
    BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -p 1234 -oStrictHostKeyChecking=yes "
    BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -p 1234 -oStrictHostKeyChecking=no "

(1234 est un exemple de port, ce n'est pas celui que j'utilise.)

Il faut que je remonte ce bug sur le github du projet.

informatique/yunohost/sauvegarder_yunohost.txt · Dernière modification: 2021/12/19 13:59 de simon