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}