Configuration de sauvegardes Restic, en local LAN

Mon serveur YunoHost

Matériel: VM Promox VE 7.4-3 / Serveur FUJITSU PRIMERGY TX1330 M1 auto-hébergé.
Version de YunoHost: 11.2.3 (stable)
J’ai accès à mon serveur : En SSH et Par la webadmin et En direct avec un clavier/écran.
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : non
Si oui, expliquer:
Si votre requête est liée à une application, précisez son nom et sa version: Restic 0.12.0~ynh9

Description du problème

A titre d’essai, je voudrais générer des sauvegardes de mon serveur YNH sur mon PC nommé Dexian, en restant sur mon Réseau local, avec Restic.

Configuration :

  • Libélé pour Restic : Sauvegarde Restic
  • Indiquez le serveur où vous voulez faire vos sauvegardes (Dexian) : 2001:xxxx:xxxx:xx:xxxx:xxxx:xxxx
  • Le port sftp de votre serveur : 22
  • Le répertoire dans lequel les dépôts restic seront créés : /home/yann/…/YunoHost_v2/Backup
  • Indiquez l’utilisateur ssh à utiliser pour se connecter au serveur qui va recevoir les sauvegardes : yann
  • Et tout le reste par défaut

Après avoir validé l’installation root@domain.ltd s’envoie ce mail :

This is an automated message from your beloved YunoHost server.
Specific information for the application restic.
You should now allow the following public key for user yann on server 2001:xxxx:xxxx:xx:xxxx:xxxx:xxxx:
ssh-ed25519 XXXXXXXXXXXXXXXXXXXXXPublicKeyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXroot@eidl.fr

Do so by running those commands on 2001:xxxx:xxxx:xx:xxxx:xxxx:xxxx with user yann:

mkdir ~/.ssh 2>/dev/null
touch ~/.ssh/authorized_keys
chmod u=rw,go= ~/.ssh/authorized_keys
cat << EOPKEY >> ~/.ssh/authorized_keys
ssh-ed25519 
XXXXXXXXXXXXXXXXXXXXXPublicKeyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root@eidl.fr
EOPKEY

Also make sure /home/yann/.../YunoHost_v2/Backup exists and is writable by yann

If you're facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/restic_ynh

Je fais ce que ça dit sur le serveur, Dexian, qui doit recevoir les sauvegardes :

mkdir ~/.ssh 2>/dev/null
touch ~/.ssh/authorized_keys
chmod u=rw,go= ~/.ssh/authorized_keys
cat << EOPKEY >> ~/.ssh/authorized_keys
>ssh-ed25519 XXXXXXXXXXXXXXXXXXXXXPublicKeyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX root@eidl.fr EOPKEY

Je lasse la commande de test :
systemctl start restic.service

Et restic@domain.ltd envoie à root@domain.ltd 13 mails et pas de création de fichier dans /home/yann/…/YunoHost_v2/Backup.
En effet, les log disent : pas content :thinking:

root@eidl:~# systemctl status restic.service
● restic.service - Run backup restic
     Loaded: loaded (/etc/systemd/system/restic.service; disabled; vendor preset: enabled)
     Active: inactive (dead) since Mon 2023-09-11 16:31:28 CEST; 11min ago
TriggeredBy: ● restic.timer
    Process: 410696 ExecStart=/usr/local/bin/backup-with-restic (code=exited, status=0/SUCCESS)
    Process: 410755 ExecStartPost=/opt/yunohost/restic/restic_log_restic (code=exited, status=0/SUCCESS)
   Main PID: 410696 (code=exited, status=0/SUCCESS)
        CPU: 245ms

Sep 11 16:31:28 eidl.fr restic_log_restic[410760]:     #2) Réfléchissez avant d'utiliser le clavier.
Sep 11 16:31:28 eidl.fr restic_log_restic[410760]:     #3) De grands pouvoirs confèrent de grandes responsabilités.
Sep 11 16:31:28 eidl.fr restic_log_restic[410760]: sudo: un terminal est requis pour lire le mot de passe; utilisez soit l'op>
Sep 11 16:31:28 eidl.fr sudo[410760]: pam_unix(sudo:auth): conversation failed
Sep 11 16:31:28 eidl.fr sudo[410760]: pam_unix(sudo:auth): auth could not identify password for [restic]
Sep 11 16:31:28 eidl.fr sudo[410760]: pam_ldap(sudo:auth): failed to get password: Échec de l’authentification
Sep 11 16:31:28 eidl.fr restic_log_restic[410760]: sudo: il est nécessaire de saisir un mot de passe
Sep 11 16:31:28 eidl.fr sudo[410760]:   restic : user NOT authorized on host ; PWD=/ ; USER=root ; COMMAND=/bin/journalctl _S>
Sep 11 16:31:28 eidl.fr systemd[1]: restic.service: Succeeded.
Sep 11 16:31:28 eidl.fr systemd[1]: Finished Run backup restic.

Un collègue en cherchant a identifié ça :

  • Ligne de logs pour restic qui pose problème :
    Sep 12 12:06:07 eidl.fr backup-with-restic[431662]: ls: impossible d'accéder à etc/yunohost/hooks.d/backup/': Permission non accordée

En attendant, je vais faire un tour du coté de Borg…
@+
Yann

Hello, c’est moi læ collègue en question.
Il semblerait que le fichier /etc/sudoers.d/restic (qui a par ailleurs été créé en world-writable, on l’a corrigé à la main) permette de faire un find sur le dossier /etc/yunohost/hooks.d/backup/ mais pas que l’user restic n’aie pas les droits pour y accéder par lui-même.

C’est, peu être parce, qu’il n’existe pas ce : /etc/yunohost/hooks.d/backup/

root@eidl:/home/yann# ls -l /etc/yunohost/hooks.d/
total 20
drwxrwxrwx 2 root root 4096 Sep 11 16:07 backup_method
drwxrwxrwx 2 root root 4096 Sep 12 12:56 post_domain_add
drwxrwxrwx 2 root root 4096 Sep 12 12:56 post_domain_remove
drwxr-xr-x 2 root root 4096 Aug 27 15:00 post_user_create
d-wxrw--wt 2 root root 4096 Apr 11 20:02 restore

@ppom tu le sort d’où ?

Ou que restic n’ai pas pu le créer car :

root@eidl:/home/yann# ls -la  /etc/yunohost/
total 76
drwxr-xr-x+   6 root root     4096 May 26 13:04 .
drwxr-xr-x  105 root root     4096 Sep 12 13:08 ..
...
drwx------    7 root root     4096 Sep 12 12:56 hooks.d
...

À quoi sert ce dossier hooks.d ?

Avec un sudo journalctl -u restic.service :wink: (tu peux chercher avec / ou te déplacer avec les flèches)

Du coup te voilà sur le forum YNH. Je suis resté vague car je ne voulais pas faire de toi le chat noir :black_cat: (c’est celui qui pointe le pb qui en est la cause :wink:) de l’équipe YNH.

Et merci pour les astuces journalctl. J’ai trouvé la ligne dans les log de restic.

Mais, il y a un autre message bizarre avant :

Sep 12 12:06:07 eidl.fr backup-with-restic[431658]: usage: yunohost
Sep 12 12:06:07 eidl.fr backup-with-restic[431658]:                 {user,domain,app,backup,settings,service,firewall,dyndns,>
Sep 12 12:06:07 eidl.fr backup-with-restic[431658]:                 ...
Sep 12 12:06:07 eidl.fr backup-with-restic[431658]:                 [-h] [--output-as {json,plain,none}] [--debug] [--quiet]
Sep 12 12:06:07 eidl.fr backup-with-restic[431658]:                 [--version] [--timeout ==SUPPRESS==]
Sep 12 12:06:07 eidl.fr backup-with-restic[431658]: yunohost: error: unrecognized arguments: -v

-v n’est pas un argument valide de la commande yunohost. Il y a donc quelque part une commande yunohost -v qui traine, mais où ?

/usr/local/bin/backup-with-restic, ligne 17 !

J’ai remplacé -v par : --version

systemctl start restic.service
puis
journalctl -u restic.service
OK plus de pb avec -v

Mais il y a toujours :
ls: impossible d'accéder à etc/yunohost/hooks.d/backup/': Permission non accordée
/usr/local/bin/backup-with-restic, ligne 25 donc.

Pour les N° de ligne dans nano c’est : Alt+N :wink:

Logique :slight_smile:

Difficile à dire quel comportement est attendu…
Le dossier en question est vide, donc a priori tu pourrais supprimer le dossier de la ligne et ça ne changerait rien, pour l’instant… Mais ça risque de ne pas backuper des trucs à cause de ça, un jour, chais pas.
Mieux vaut attendre l’avis d’un·e professionnel·le.

Oui et puis il ce fait tard. :sleeping: :wave:
@+