Borgserver__2 erreurs ssh avec version 1.2.8~ynh5 et 1.4.0~ynh1

Mon serveur YunoHost

Matériel: VPS acheté en ligne
Version de YunoHost: 11.2.29
J’ai accès à mon serveur : En SSH | Par la webadmin
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : non
Si votre requête est liée à une application, précisez son nom et sa version: borgserver 1.2.8~ynh5 et 1.4.0~ynh1

Description du problème

Sur un serveur yunohost qui gère des backups, j’ai installé 2 applications borgserver.

La première, borgserver, sauvegarde une instance Yunohost avec l’application borg (Borg Backup).

La deuxième borgserver__2 elle sauvegarde une autre instance Yunohost aussi avec une application borg (Borg Backup) et aussi un autre serveur Debian (pas Yunohost).

Avec la mise à jour de borgserver de 1.2.8~ynh1 à 1.2.8~ynh5 sur les 2 applications, j’ai eu des déboires…
D’abord le premier backup vers borgserver a planté coupant le service de borg.

Failed to format translatable string 'backup_applying_method_custom': 'Calling the custom backup method '{method}'…' with arguments '()' and '{}', raising error: KeyError('method') (don't panic this is just a warning)
Remote: sh: 1: borg: not found
Remote: sh: 1: borg: not found
Could not run script: /etc/yunohost/hooks.d/backup_method/05-borg_app
Custom backup method could not get past the 'backup' step

En allant dans sur le support (Mattrix) on m’a suggéré que peut-être la version testing actuelle 1.4.0~ynh1 corrigeait peut-être le bug. J’ai d’abord garder au chaud un backup de la version de départ 1.2.8~~ynh1 sachant que je prenais le risque de perdre ce précieux backup.

Puis après une mise à jour sur la branche testing, version 1.4.0~ynh1, toujours des bugs, des tentatives à répétition de lancer une upgrade sur borgserver__2 de l’autre instance Yunohost infructueuse avec un problème de clé ssh…

Dans /var/log/auth.log je voyais

Aug 30 23:53:22 y2 sshd[3659009]: Connection closed by authenticating user userborg xxx.xx.xx.xx port xxxxx [preauth]
Aug 30 23:53:23 y2 sshd[3659012]: Connection from xxx.xx.xx.xx port xxxxx on xx.xx.xx.xx port 22 rdomain ""
Aug 30 23:53:23 y2 sshd[3659012]: error: invalid key option string
Aug 30 23:53:23 y2 sshd[3659012]: error: invalid key option string
Aug 30 23:53:23 y2 sshd[3659012]: Failed publickey for numcsauv from xxx.xx.xx.xx port xxxxx ssh2: ED25519 SHA256:xxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxx

Bon résultat, après plusieurs essais, je suis revenu à la version sauvegardée et en relançant borg du côté de Borg Backup, il me semble que ça fonctionne à nouveau…

Par contre je trouve curieux que ce qui fonctionne garde l’ancienne nomenclature dans le fichier /home/borguser/.ssh/authorized_keys

command="borg serve --storage-quota xxxG --restrict-to-repository /home/userborg/Backup-directory",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@yuno.domain.tld

Alors que dans les autres versions on quelquechose comme

command="PATH=/var/www/borgserver__2/venv/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin borg serve --storage-quota xxxG  --restrict-to-repository /home/userborg/Backup-directory",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@yuno.domain.tld

Aussi pour ce cas j’avais ajouté encore une autre commande que la mise à jour écrase il me semble, pour un autre backup d’un autre serveur…

Est-ce qu’il est aussi préférable de créer un nouveau user et un 3ème borgserver borgserver__3 ?? J’ai peur que cela complique encore…

Je constate aussi une coquille qui est apparue à un moment donné. Une URL vers un dossier backup dans la/les commande⋅s du fichier /home/userborg/.ssh/authorized_keys. Il n’y a pas de dossier backup, mais deux dossiers pour 2 backups de 2 serveurs différents, genre Sauv-serveurA et Sauv-serveur2.

Cela ressemble fort à cette issue qui date pourtant:

Je constate que actuellement il y a comme 2 binaires ??

whereis borg
borg: /usr/local/bin/borg /opt/borg-env/bin/borg

Si je comprends bien le but des mises à jour, ce serait de déplacer les binaires dans des dossier d’application avec des environnements séparés de python ??
Comment seraient séparés les binaires pour borgserver et borgserver__2 ??

Je comprends aussi que à l’époque, ( ça date 2021) a été proposé d’ajouter des répertoires customisés dans ce PR:

mais apparemment ce n’est pas une bonne idée… en regardant le code, en effet, il semble que le cron de l’application regarde les settings.yml et le script qui en effet garde le path /home/__SSH_USER__/backup/data

Mise à jour effectuée sur les 2 app borgserver et borgserver__2, en éditant bien les fichiers /home/userborg1/.ssh/authorized_keys et /home/userborg2/.ssh/authorized_keysen :

  • commentant les anciennes commandes
  • changer le noms des dossiers (par défaut le script va choisir un dossier /home/userborg2/backup), de plus dans mon cas ou où j’ai 2 backups de 2 différentes machines, donc je dois adapter les lignes.
command="/var/www/borgserver__2/venv/bin/borg serve --storage-quota 3600G --restrict-to-repository /home/userborg2/Sauv-machine2",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@machine2
command="/var/www/borgserver__2/venv/bin/borg serve --storage-quota 1024G --restrict-to-repository /home/userborg2/Sauv-machine1",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@yuno.machine1.tld
ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx userborg2_localmachine
#command="borg serve --storage-quota 2600G --restrict-to-repository /home/userborg2/backup",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@machine2
#command="borg serve --storage-quota 3600G --restrict-to-repository /home/userborg2/Sauv-machine2",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@machine2
#command="/var/www/borgserver__2/venv/bin/borg serve --storage-quota 2600G --restrict-to-repository /home/userborg2/Sauv-machine1",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@machine2