====== Sauvegarder Yunohost ====== ===== À l'aide des applications Borg ===== Une des solution pour sauvegarder votre serveur consiste à utiliser les applications [[informatique:borg]] {{ :informatique:yunohost:capture_d_ecran_du_2020-08-12_21-33-29-borg01.png?400 |}} Cette solution consiste à sauvegarder son serveur [[informatique:yunohost]] sur un autre serveur yunohost. Il y a donc deux applications, une application "client" ( [[https://yunohost.org/#/app_borg|Borg Backup App]] ) et une application "serveur" ( [[https://yunohost.org/#/app_borgserver|Borg Server]] ). [[https://yunohost.org/#/app_borgserver|Borg Server]] a besoin d'un clé publique générée à l'installation de [[https://yunohost.org/#/app_borg|Borg Backup App]]. On commence donc par installer l'application cliente. Dans mon exemple, je vais sauvegarder le serveur [[informatique:vps:quercus]] sur [[informatique:vps:fagus]]. ==== Installation de Borg Backup App ==== J'installe l'application cliente, [[https://yunohost.org/#/app_borg|Borg Backup App]], sur [[informatique:vps: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 [[informatique:vps: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, [[informatique:vps:quercus]]. * Choisir une phrase de passe pour chiffrer les sauvegardes (important!) * Choisir enfin ce que l'on souhaite sauvegarder et à quelle fréquence {{ :informatique:yunohost:screenshot_2020-08-12_yunohost_admin.png?400 |}} Une paire de clé [[informatique: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 [[https://yunohost.org/#/app_borgserver|Borg Server]], sur [[informatique:vps: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 {{ :informatique:yunohost:screenshot_2020-08-12_yunohost_admin_1_.png?400 |}} 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 [[https://yunohost.org/#/app_borg|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 [[https://github.com/YunoHost-Apps/borg_ynh/issues/49|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.