Sauvegarde Yunohost avec restic

Salut @Aristid, comme indiqué dans la doc du paquet je sais comment restaurer des fichiers depuis une sauvegarde restic en revanche je n’ai jamais utilisé la restauration de YNH.

Tout ce que je peux te dire c’est que d’après la documentation, tu devrais pouvoir restaurer une application depuis l’interface d’administration web ou avec la commande yunohost backup restore --apps <nomdetonappli>

Si ça ne suffit pas, tu peux au moins récupérer tes fichiers avec les archives restic et partir de là pour demander de l’aide sur le forum.

Bonsoir,

Vous pouvez aussi utiliser un répertoire local (sur un disque dur externe monté par exemple) et bénéficier quand même des fonctionalités de restic.

Dans ce cas vous pouvez vous passer de la configuration du serveur cible, il suffit simplement de s’assurer que le répertoire cible de la sauvegarde existe

C’est à dire ? j’indique quoi et où ? Par exemple si j’ai un hdd attaché à mon Pi/Yunohost /mnt/space/backupyunohost

Merci.

Bonjour,

Au lieu de rentrer sftp://... comme destination, il faut entrer file:///mnt/space/backupyunohost mais le dépôt doit d’abord être préparé (voir la doc).

Attention, le paquet ne gère pas de sauvegarde locale pour l’instant, si tu veux faire ça il faut tout configurer manuellement.

Je te conseille de le tester avant de l’utiliser sur ton serveur de ‘production’.

1 Like

Ok, merci.

Bonsoir,
Je viens d’installer restic sur mon laptop et j’aime bien, je sauvegarde les données de mon laptop sur amazon s3.
Peut-on sauvegarder sur amazon s3 avec restic yunohost ?
Merci.

Salut @arnauld, je n’ai pas intégré d’autres backend que le sftp dans le paquet, désolé.
Ça me semble être le cas le plus générique.

Maintenant, peut-être que Amazon te fournit une interface en sftp?

1 Like

Je ne sais pas…

Cool thread. I just discovered Restic too. Seems easier to use for me compared to Borg. I’m also going to investigate how to use this.

Salut @bleeh, est-ce que tu prévois d’intégrer les sauvegardes locales à ton paquet ? J’ai une sauvegarde distante avec Restic qui marche très bien, j’aimerais bien pouvoir l’utiliser aussi en local.

Bonjour,

Je souhaitais me servir de Restic pour faire des sauvegardes locales. J’ai donc tester lors de l’installation de Restic pour Ynh de mettre en serveur source ainsi qu’en serveur cible le même serveur. J’ai bien créer un dossier, accordé les droits, ajouter la clé SSH.
A l’heure prévu du lancement de restic je reçois un mail sur l’adresse root. Ce mail est vide et avec comme objet " YunoHost Restic backup log on serveur.fr (SUCCESS)". Lorsque je vais voir dans le dossier sensé contenir la sauvegarde il y a juste un dossier vide “Lost+found” qui est apparu… Il doit donc y avoir un problème quelque part…

Serait-il possible d’avoir un petit coup de main soit pour corriger ce soucis ou pour plus simplement arriver à faire une backup locale ?

Merci à vous !

Salut, visiblement cette question de sauvegarde locale intéresse un peu de monde alors je vais essayer d’y jeter un oeil.

@tomdereub Ce qui est sûr c’est que pour l’instant avoir plusieurs instances de l’appli ne fonctionne pas comme ça devrait donc évite pour l’instant d’en ajouter une à celle qui fonctionne

@Sty_X effectivement utiliser le serveur ssh local comme destination devrait être un contournement valable. Il faudrait voir les journaux du service restic pour en savoir plus. Il faudrait que je teste pour être sûr de ne pas te dire de bêtise.

Salut bleeh,

Ca serait vraiment vraiment top !!! Merci à toi !

@Sty_X
Je viens de tester la sauvegarde ssh “locale” en définissant les paramètres suivants (entre autres):

apps: all
backup_path: localbackups
conf: '1'
data: '1'
passphrase: Un mot de passe.
port: '22'
server: localhost
ssh_user: vagrant

Puis j’ai autorisé la clé ssh affichée à la fin de l’installation pour l’utilisateur vagrant

echo "ssh-ed25519 <laclesshpublique> root@<ledomaine>" >> /home/vagrant/.ssh/authorized_keys

J’ai lancé un backup en surveillant les fichiers de log

sudo systemctl start restic
# dans deux shells différents
sudo journalctl -f -u restic.service
tail -f /var/log/restic_backup.*

Tout s’est bien passé et j’ai pu aller vérifier les backups en me connectant en tant que vagrant:

$ ls -l localbackups/
total 16
drwxr-xr-x 7 vagrant vagrant 4096 Feb 27 20:28 auto_conf
drwxr-xr-x 7 vagrant vagrant 4096 Feb 27 20:28 auto_data
drwxr-xr-x 7 vagrant vagrant 4096 Feb 27 20:29 auto_my_webapp
drwxr-xr-x 7 vagrant vagrant 4096 Feb 27 20:29 auto_restic
$ export RESTIC_PASSWORD='Un mot de passe.'
$ restic -r localbackups/auto_conf/ snapshots
repository 84fb71b0 opened successfully, password is correct
created new cache in /home/vagrant/.cache/restic
ID        Time                 Host            Tags        Paths
----------------------------------------------------------------------------------------------
fcf365d7  2021-02-27 20:28:48  yunohost.local              /home/yunohost.backup/tmp/auto_conf
----------------------------------------------------------------------------------------------
1 snapshots

Donc il faudrait voir pourquoi ça ne fonctionne pas pour toi.
Vérifie que tu as bien autorisé la clé ssh pour le bon utilisateur et surveille les logs comme j’ai fait et partage les erreurs que tu voies.

PS: J’ai installé la version 0.12, j’ai mis le paquet à jour la semaine dernière.

@tomdereub Je vais déjà corriger le bug avec le multi-instance, ce qui te permettra d’ajouter une instance de restic avec le serveur ssh local en destination en attendant que je m’attaque véritablement à la sauvegarde locale, qui va prendre plus de temps et de toute façon nécessite que le multi-instance fonctionne correctement.

@bleeh Salut et merci !

Alors voila ce que ça donne pour moi. J’ai désinstallé restric puis réinstallé avec les paramètres suivants (car je ne sais pas comment modifier ces paramètres à posteriori…) :

root@kanakodou: yunohost app install restic
Indicate the server where you want put your backups: localhost
sftp port of your server (default: 22): 22
The directory where you want your backup repositories to be created in (default: .): /SSD_Backup
Indicate the ssh user to use to connect on this server: Red
Indicate a strong passphrase, that you will keep preciously if you want to be able to use your backups: 
Would you like to backup your YunoHost configuration ? [yes | no] (default: yes): yes
Would you like to backup mails and user home directory ? [yes | no] (default: yes): yes
Which apps would you backup (list separated by comma or 'all') ? (default: all): all
Allow backup method to temporarily use more space? [yes | no] (default: yes): yes
Indicate the backup frequency (see systemd OnCalendar format) (default: *-*-* 0:15:00): *-*-* 4:00:00            
Indicate the backup check frequency (see systemd OnCalendar format) (default: Sat *-*-8..31 3:15:00): Sat *-*-8..31 5:00:00        
Indicate the complete backup check frequency (see systemd OnCalendar format) (default: Sat *-*-1..7 3:15:00): Sat *-*-1..7 5:00:00

Ensuite j’ajoute bien la clé ssh indiquée en fin d’installation au fichier /home/Red/.ssh/authorized_keys

Je lance une backup avec la commande
sudo systemctl start restic

Voila ce que me retourne la commande

root@kanakodou: sudo journalctl -f -u restic.service
-- Logs begin at Fri 2021-02-26 15:27:25 CET. --
Feb 28 18:07:18 kanakodou.fr backup-with-restic[374]: Échec de l’exécution du script : /etc/yunohost/hooks.d/backup_method/05-restic_app
Feb 28 18:07:19kanakodou.fr backup-with-restic[374]: subprocess ssh: Warning: Permanently added '[localhost]:22' (ECDSA) to the list of known hosts.
Feb 28 18:07:19 kanakodou.fr backup-with-restic[374]: subprocess ssh: Debian GNU/Linux 10
Feb 28 18:07:19 kanakodou.fr backup-with-restic[374]: Fatal: unable to open config file: Lstat: file does not exist
Feb 28 18:07:19 kanakodou.fr backup-with-restic[374]: Is there a repository at the following location?
Feb 28 18:07:19 kanakodou.fr backup-with-restic[374]: sftp://Red@localhost:22//SSD_Backup//auto_vpnclient
Feb 28 18:07:19 kanakodou.fr backup-with-restic[374]: Échec de l’exécution du script : /etc/yunohost/hooks.d/backup_method/05-restic_app
Feb 28 18:07:19 kanakodou.fr backup-with-restic[374]: Échec de la méthode de sauvegarde personnalisée à l’étape 'backup'
Feb 28 18:07:19 kanakodou.fr systemd[1]: restic.service: Succeeded.
Feb 28 18:07:19 kanakodou.fr systemd[1]: Started Run backup restic.

Et la commande

Red@kanakodou:~$ tail -f /var/log/restic_backup.*
==> /var/log/restic_backup.err <==
sftp://Red@localhost:22//SSD_Backup//auto_vpnclient
subprocess ssh: Warning: Permanently added '[localhost]:22' (ECDSA) to the list of known hosts.
subprocess ssh: Debian GNU/Linux 10
Fatal: create repository at sftp://Red@localhost:22//SSD_Backup//auto_vpnclient failed: sftp: "Permission denied" (SSH_FX_PERMISSION_DENIED)

subprocess ssh: Warning: Permanently added '[localhost]:22' (ECDSA) to the list of known hosts.
subprocess ssh: Debian GNU/Linux 10
Fatal: unable to open config file: Lstat: file does not exist
Is there a repository at the following location?
sftp://Red@localhost:22//SSD_Backup//auto_vpnclient

==> /var/log/restic_backup.log <==

Le fichier /var/log/restic_backup.log est vide mais le fichier /var/log/restic_backup.err contient le même contenu que ce que me retourne tail -f /var/log/restic_backup.* mais avec un même pas seulement pour “auto_vpnclient” mais pour chaque app et data.

Le dossier /SSD_Backup est vide.

Je dois surement faire une connerie quelque part…

Merci pour ton aide !

(PS : question de sécurité j’ai changé le nom du serveur, de l’utilisateur et du port).

Ok, deux choses à vérifier:

  1. Les permissions sur le répertoire de destination.
    L’utilisateur Red a bien le droit d’écrire dans /SSD_Backup? un sudo -u Red touch /SSD_Backup/test fonctionne?
  2. L’autorisation de la clé SSH.
    Si tu te mets en root et que tu essaies une connexion ssh, ça fonctionne?:
sudo -i
ssh Red@localhost -i /root/.ssh/id_restic_ed25519

@bleeh Top ! Ça à l’air d’avoir fonctionné ! C’était bien un soucis d’accès au dossier /SSD_Backup… Pourtant il me semblait avoir définis Red en tant que propriétaire du dossier.

Merci beaucoup à toi pour ton aide !

Il me reste deux petites questions :

  • Ne faudrait-il pas exclure le dossier /SSD_Backup du processus de backup ? Pour ne pas faire des backup de backup.

  • Y’a-t-il une compression lors des backups ? Car la taille du dossier de backup est inférieure à la taille totale de ce qui “doit” être sauvegardé. Voila les log : Bin.InFini - Transmettez des messages chiffrés Le dossier /home ou alors le dossier /home/yunohost.app/nextcloud/data ne semblent pas pris en compte ?

Merci !

Ce paquet offre une méthode de sauvegarde supplémentaire pour YunoHost, il fait donc des sauvegardes des composants YunoHost, à aucun moment il sauvegarde les éléments du système étrangers à YNH, tels qu’un répertoire quelconque à la racine comme celui que tu cites. Je te laisse aller voir dans la doc de YNH pour les chemins exacts sauvegardés.

Restic ne fait aucune compression pour l’instant, il me semble qu’il ya de la déduplication cependant mais concernant le cas de nextcloud, vérifie s’il n’y a pas une option quelque part qui dit à YNH de ne pas sauvegarder les data de l’application.

J’ai essayé d’accéder à la page de la doc mais il semble y avoir un souci sur l’infra YNH, j’ai une erreur 403, en revanche tu peux retrouver des infos dans ce post du forum: [Resolu]Sauvegarde Nextcloud.

Note qu’une fois que le paquet est installé, l’application restic reste disponible au système, donc libre à toi de l’utiliser pour sauvegarder ce que tu veux comme tu veux avec.

Je te laisse voir la doc pour savoir comment t’en servir.

@tomdereub J’ai mis à jour le paquet, le multi-instance fonctionne bien maintenant. Tu peux ajouter une instance qui fera un backup vers le serveur sftp local.