Borg : no more backup available

,

My YunoHost server

Hardware: computer
YunoHost version: 3.8.4.9 (stable)
I have access to my server : Mostly through the webadmin, but sometime from SSH
Are you in a special context or did you perform some particular tweaking on your YunoHost instance ? : I might have made some modification to ssh
If yes, please explain:
Some hardening, but I reversed everything because diagnostic was not happy and I don’t want troubles on next big upgrade

Description of my issue

I don’t have any backup since July 13

Here is the log I have : https://paste.yunohost.org/racapokalu.py

And a small excerpt (as all apps fails with the same message) :

 # systemctl status --lines 100 borg.service                                                     
● borg.service - Run backup borg
   Loaded: loaded (/etc/systemd/system/borg.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2020-07-29 12:00:05 CEST; 4min 2s ago
  Process: 14489 ExecStart=/usr/local/bin/backup-with-borg (code=exited, status=1/FAILURE)
 Main PID: 14489 (code=exited, status=1/FAILURE)

juil. 29 11:59:54 myserver.fr backup-with-borg[14489]: Collecte des fichiers devant être sauvegardés pour l’application wallabag2 …
juil. 29 11:59:55 myserver.fr backup-with-borg[14489]: [+++.................] > Loading installation settings...
juil. 29 11:59:56 myserver.fr backup-with-borg[14489]: '/var/www/wallabag2/var/cache/prod' wasn't deleted because it doesn't exist.
juil. 29 11:59:56 myserver.fr backup-with-borg[14489]: [###+++..............] > Backing up the main app directory...
juil. 29 11:59:56 myserver.fr backup-with-borg[14489]: [######++++..........] > Backing up nginx web server configuration...
juil. 29 11:59:56 myserver.fr backup-with-borg[14489]: [##########+++.......] > Backing up php-fpm configuration...
juil. 29 11:59:57 myserver.fr backup-with-borg[14489]: [#############+++....] > Backing up the MySQL database...
juil. 29 11:59:58 myserver.fr backup-with-borg[14489]: Création d’une archive de sauvegarde à partir des fichiers collectés …
juil. 29 12:00:04 myserver.fr backup-with-borg[14489]: Échec de l’exécution du script : /etc/yunohost/hooks.d/backup_method/05-borg_app
juil. 29 12:00:05 myserver.fr backup-with-borg[14489]: Échec de la méthode de sauvegarde personnalisée à l’étape 'backup'
juil. 29 12:00:05 myserver.fr systemd[1]: borg.service: Main process exited, code=exited, status=1/FAILURE
juil. 29 12:00:05 myserver.fr systemd[1]: Failed to start Run backup borg.
juil. 29 12:00:05 myserver.fr systemd[1]: borg.service: Unit entered failed state.
juil. 29 12:00:05 myserver.fr systemd[1]: borg.service: Failed with result 'exit-code'.

There might be a better way to get logs, I just don’t know how.

Just as an update, I tried again to start grub after the migration to YunoHost 4.0.3 and I still have a similar error

● borg.service - Run backup borg
   Loaded: loaded (/etc/systemd/system/borg.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2020-07-30 14:00:32 CEST; 36s ago
  Process: 1705 ExecStart=/usr/local/bin/backup-with-borg (code=exited, status=1/FAILURE)
 Main PID: 1705 (code=exited, status=1/FAILURE)
juil. 30 13:57:40 myserver.fr sudo[5810]:     root : TTY=unknown ; PWD=/home/yunohost.backup/tmp/auto_kresus/apps/kresus/backup ; USER=postgres ; COMMAND=/bin/bash -
juil. 30 13:57:40 myserver.fr sudo[5810]: pam_unix(sudo:session): session opened for user postgres by (uid=0)
juil. 30 13:57:40 myserver.fr backup-with-borg[1705]: [########++++........] > Backing up database...
juil. 30 13:57:41 myserver.fr sudo[5810]: pam_unix(sudo:session): session closed for user postgres
juil. 30 13:57:41 myserver.fr backup-with-borg[1705]: [############++++....] > Backing up systemd service...
juil. 30 13:57:42 myserver.fr backup-with-borg[1705]: [####################] > Backup of kresus completed
juil. 30 13:57:44 myserver.fr backup-with-borg[1705]: Création d’une archive de sauvegarde à partir des fichiers collectés …
juil. 30 13:57:44 myserver.fr backup-with-borg[1705]: Échec de l’exécution du script : /etc/yunohost/hooks.d/backup_method/05-borg_app
juil. 30 13:57:44 myserver.fr backup-with-borg[1705]: Échec de la méthode de sauvegarde personnalisée à l’étape 'backup'
juil. 30 14:00:23 myserver.fr backup-with-borg[1705]: Collecte des fichiers devant être sauvegardés pour l’application wallabag2 …
juil. 30 14:00:25 myserver.fr backup-with-borg[1705]: [+++.................] > Loading installation settings...
juil. 30 14:00:26 myserver.fr backup-with-borg[1705]: [###+++..............] > Backing up the main app directory...
juil. 30 14:00:27 myserver.fr backup-with-borg[1705]: [######++++..........] > Backing up nginx web server configuration...
juil. 30 14:00:27 myserver.fr backup-with-borg[1705]: [##########+++.......] > Backing up php-fpm configuration...
juil. 30 14:00:28 myserver.fr backup-with-borg[1705]: [#############+++....] > Backing up the MySQL database...
juil. 30 14:00:31 myserver.fr backup-with-borg[1705]: Création d’une archive de sauvegarde à partir des fichiers collectés …
juil. 30 14:00:32 myserver.fr backup-with-borg[1705]: Échec de l’exécution du script : /etc/yunohost/hooks.d/backup_method/05-borg_app
juil. 30 14:00:32 myserver.fr backup-with-borg[1705]: Échec de la méthode de sauvegarde personnalisée à l’étape 'backup'
juil. 30 14:00:32 myserver.fr systemd[1]: borg.service: Main process exited, code=exited, status=1/FAILURE
juil. 30 14:00:32 myserver.fr systemd[1]: borg.service: Failed with result 'exit-code'.

In 3.x you just have to upgrade the app to fix the issue.
In 4.X, you need to reinstall or to upgrade with the testing branch.

borg (not borg server) updated to testing, and still the same error :

~ sudo systemctl start borg.service
~ sudo systemctl status --lines 100 borg.service
● borg.service - Run backup borg
   Loaded: loaded (/etc/systemd/system/borg.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2020-07-31 11:22:29 CEST; 3min 8s ago
  Process: 4225 ExecStart=/usr/local/bin/backup-with-borg (code=exited, status=1/FAILURE)
 Main PID: 4225 (code=exited, status=1/FAILURE)

juil. 31 11:18:53 myserver.fr backup-with-borg[4225]: [########++++........] > Backing up database...
juil. 31 11:18:53 myserver.fr sudo[8474]:     root : TTY=unknown ; PWD=/home/yunohost.backup/tmp/auto_kresus/apps/kresus/backup ; USER=postgres ; COMMAND=/bin/bash -
juil. 31 11:18:53 myserver.fr sudo[8474]: pam_unix(sudo:session): session opened for user postgres by (uid=0)
juil. 31 11:18:54 myserver.fr sudo[8474]: pam_unix(sudo:session): session closed for user postgres
juil. 31 11:18:54 myserver.fr backup-with-borg[4225]: [############++++....] > Backing up systemd service...
juil. 31 11:18:56 myserver.fr backup-with-borg[4225]: Création d’une archive de sauvegarde à partir des fichiers collectés …
juil. 31 11:19:02 myserver.fr backup-with-borg[4225]: Échec de l’exécution du script : /etc/yunohost/hooks.d/backup_method/05-borg_app
juil. 31 11:19:02 myserver.fr backup-with-borg[4225]: Échec de la méthode de sauvegarde personnalisée à l’étape 'backup'
[etc… for all services]

I have the exact same issue as @Mamie.

In 4.X, I reinstalled borg (client) and I got the same error. I also upgraded the app to the testing branch and the error is still there.

@ljf I’m going to dig a bit more to get a solution. But if you need any more information, don’t hesitate to ask.

I guess what would be nice would be to have the output of the backup command ran with the --debug option :s

And also the result of this command:

tail -n100 /var/log/backup_borg.err

Here is the content of /var/log/backup_borg.err (only the end, this is the same lines again and again)

Remote: Debian GNU/Linux 10
passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.
Remote: Debian GNU/Linux 10
A repository already exists at ssh://borgborg@myserver.fr/~/backup.
Remote: Debian GNU/Linux 10
passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.
Remote: Debian GNU/Linux 10
A repository already exists at ssh://borgborg@myserver.fr/~/backup.
Remote: Debian GNU/Linux 10
passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.
Remote: Debian GNU/LinuxRemote: Debian GNU/Linux 10
passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.
Remote: Debian GNU/Linux 10
A repository already exists at ssh://borgborg@myserver.fr/~/backup.
Remote: Debian GNU/Linux 10
passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.
Remote: Debian GNU/Linux 10
A repository already exists at ssh://borgborg@myserver.fr/~/backup.
Remote: Debian GNU/Linux 10
passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.
Remote: Debian GNU/Linux 10
A repository already exists at ssh://borgborg@myserver.fr/~/backup.
Remote: Debian GNU/Linux 10
passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.
 10
A repository already exists at ssh://borgborg@myserver.fr/~/backup.
Remote: Debian GNU/Linux 10
passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.

sudo service borg start --debug does not display anything, only the final error (and nothing more in the logs than in the previous messages).

Reading the server log, it seems the passphrase have a problem somehow, but I use the same server from other clients without any problems, and since there are no mail on error, that’s how I noticed the lack of backups.

Hello !

Sorry pour le retard, le fichier /var/log/backup_borg.err est rempli en boucle de ces lignes (par sécurité, j’ai remplacé les occurrences de mon user et du serveur de backup par “USER” et “SERVER”) :

A repository already exists at ssh://USER@SERVER/~/backup.
Warning: The repository at location ssh://USER@SERVER/~/backup was previously located at ssh://USER@SERVER:22682/~/backup
Do you want to continue? [yN] Aborting.
Repository access aborted

Le problème était donc assez évident (et il n’est pas le même que celui de @Mamie). J’ai manuellement changé le port d’écoute du service ssh de mon serveur de backup. borg a en conséquence vu le changement et demande interactivement une confirmation que le nouveau chemin est OK. Si j’avais cherché dans le bon log file, j’aurais pu facilement le résoudre… :confused:

Pour le résoudre, j’ai exécuté les commandes suivantes :

# Se connecter au user root
sudo su -
# Démarrer le SSH agent et charger la clé privée SSH
eval $(ssh-agent)
ssh-add ~/.ssh/id_borg_ed25519
# Créer les différentes variables nécessaires à l'exécution du backup
repo=ssh://<MON_BACKUP_USER>@<MON_BACKUP_SERVER>/~/backup
current_date=$(date +"%d_%m_%y_%H:%M")
name=dummy
# HISTCONTROL permet de ne pas stocker la passphrase dans l'historique de bash quand on ajoute un espace au tout début de la commande
HISTCONTROL=ignoreboth
 BORG_PASSPHRASE="METTEZ_ICI_VOTRE_PASSPHRASE"
export BORG_PASSPHRASE
# Création d'un fichier "dummy"
echo "coucou" > ./dummy
# Exécution de la commande de backup
borg create $repo::${name}_${current_date} ./dummy

borg demande alors de confirmer (interactivement) la nouvelle adresse du serveur de backup. Il faut confirmer (y).

Warning: The repository at location ssh://USER@SERVER/~/backup was previously located at ssh://USER@SERVER:22682/~/backup
Do you want to continue? [yN] y

borg devrait finir le backup en quelques secondes (vu que le fichier ./dummy ne contient que la string “coucou”).

Avant d’exécuter le backup complet du système, on peut exécuter cette commande dans un deuxième terminal pour suivre son avancement :

sudo journalctl -fu borg.service

Dans le premier terminal, on peut enfin manuellement tenter de ré-exécuter le backup du système :

systemctl start borg.service

Si tout va bien, à la fin du backup, les logs affichés par la commande sudo journalctl -fu borg.service devraient se terminer par ces lignes :

Aug 10 10:26:08 mon_serveur_ynh systemd[1]: borg.service: Succeeded.
Aug 10 10:26:08 mon_serveur_ynh systemd[1]: Started Run backup borg.

Si vous voulez supprimer le fichier ./dummy (afin d’avoir un repo tout propre :slight_smile: ), lancez la commande suivante dans le premier terminal (depuis lequel vous avez exécuté la commande borg create) :

# Vérifiez que vous allez supprimer le bon backup (dry-run)
borg delete -v -n $repo::${name}_${current_date}
# Si c'est OK, supprimez le backup en question
borg delete -v $repo::${name}_${current_date}

Du coup, je me suis motivé à essayer des trucs.
Jusqu’à présent, les sauvegardes marchaient, et je pouvais y accéder depuis un autre outil borg (vorta dans mon cas) et tout était chouette.

Ensuite, les sauvegardes ne se faisaient plus, mais je pouvais toujours accéder aux anciennes via vorta, pour les sauvegardes YunoHost, j’avais le message suivant :

ERROR - passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.

Hier j’ai décidé de vider mes sauvegardes (juste déplacées pour l’instant) pour en relancer une.
Plusieurs heures plus tard, ça se termine, c’est super !
Ce matin j’essaie donc d’y accéder via vorta pour voir ce qu’il y a dedans, et la…

ERROR - passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.

Du coup, je me demande, est ce que la manière de passer ou d’utiliser le mot de passe aurait pu changer après le 13/07 ?

Ah et surtout, LA grande question : vu que ce que j’ai saisi dans vorta n’a plus l’air de marcher alors que c’était ce que j’avais saisi dans borg, où est ce que je peux trouver ce mot de passe ?

Hello,

Tu peux le trouver avec cette commande :

sudo grep "BORG_PASSPHRASE=" /etc/yunohost/hooks.d/backup_method/05-borg_app | cut -d'"' -f2

Oh !
Il y a visiblement eu un bug à un moment.

J’avais mis une phrase de passe, disons pour l’exemple (le 1er mot est bon, au cas où ça impacte)
Sauvegarde de mon Serveur <3

La j’ai trouvé ce qui était utilisé :

sudo yunohost app setting borg passphrase
Sauvegarde

Seul le 1er mot a été pris en compte :scream:

Du coup, restauration de l’ancien dossier de sauvegarde, restauration du mot de passe, et je relance une sauvegarde.
Et raté, toujours

passphrase supplied in BORG_PASSPHRASE, by BORG_PASSCOMMAND or via BORG_PASSPHRASE_FD is incorrect.

J’y ai cru

Je viens de tester ça, et ça me retourne à nouveau

Sauvegarde
Du coup il y a un soucis quelquepart, je vais ouvrir un ticket, je suppose que c’est une piste suffisante.

Ce coup ci c’est la bonne, merci @SohKa !
Je suis du coup allé voir le fichier /etc/yunohost/hooks.d/backup_method/05-borg_app et dans celui ci le mot de passe était aussi erroné.

J’ai corrigé dans le fichier et la ça marche !

J’ai du coup ouvert un ticket avec tout ça dedans, en espérant que ça puisse aider à corriger.
(et j’espère au passage que le ticket à propos du mail d’erreur en cas d’échec de sauvegarde arrivera un jour :smile:)

2 Likes

Je me rends compte que ton issue ( https://github.com/YunoHost-Apps/borg_ynh/issues/49 ) ne correspond pas au problème que j’ai rencontré et que j’ai ajouté dans cette issue.

Dans ton cas, il semblerait que ça soit au moment de l’installation où ça coince (la passphrase n’arrive pas entière dans /etc/yunohost/hooks.d/backup_method/05-borg_app, dans mon cas elle arrive entière mais une partie est interprêtée comme une variable (car il y a un “$” dans ma passĥrase).

Je vais ouvrir une autre issue.

Je pense au contraire que c’est exactement la même.
La chaine de caractère est passée tel quel, du coup avec un espace ça considère que c’est un autre paramètre, et avec un $ ça considère qu’il y a une variable.

Ce qui manque ce n’est pas une vérification pour éviter les caractères spéciaux, mais d’échapper la chaîne et la passer comme étant un String

Il y a une similitude mais ça coince pas au même endroit, je pense. (Puisque tu n’avais pas la passphrase complète dans le script de backup alors que moi si.)

Je ne sais pas où il a supprimé ce qui était après le premier espace, dans ton cas.

Quelques essais :

$ PASSPHRASE="salut toto"

$ echo $PASSPHRASE
salut toto

$ PASSPHRASE="salut $toto!"

$ echo $PASSPHRASE
salut !

$ PASSPHRASE='salut $toto!'

$ echo $PASSPHRASE
salut $toto!

Avec ce que je comprends actuellement, mettre BORG_PASSPHRASE='maPassphrase' au lieu de BORG_PASSPHRASE="maPassphrase" règlerait mon problème mais pas le tien.

N’hésitez pas à proposer une pr, j’aurais le temps de la relire et de l’intégrer mais pas de coder ça (je me suis cassé la main droite, et j’ai pas mal de trucs à coder donc je vais prioriser).

2 Likes

Je pense que ça résoudrai le mien, dans le code actuel il n’y a même pas de quotes
export passphrase=$(ynh_app_setting_get $app passphrase)

mais en même temps, non, parce que cette valeur la aussi était mauvaise chez moi

Mais du coup c’est peut être au niveau du helper YunoHost lui même qu’il y a un soucis ?

Dans le repo borg, le seul endroit où la passphrase est traitée avec des quotes, c’est là : https://github.com/YunoHost-Apps/borg_ynh/blob/testing/conf/backup_method.j2

1 Like