Sauvegarder son serveur Yunohost pour les nuls (1/2)

backup yunohost server
Dernière mise a jour 11 Août 2023 a 05:27 pm

Doit on rappeler l’importance de sauvegarder les données de son serveur ? Et plus vital encore, de tester régulièrement la restauration de ses sauvegardes. Un adminsys averti le sait, mais qu’en est-il des personnes dont l’informatique n’est pas leur cœur de métier et qui se sont lancées dans l’autohébergement grâce à des solutions comme l’excellentissime distribution Yunohost.

Et comme trop souvent, c’est le jour où ton serveur crashe que tu te dis que tu n’aurais jamais dû procrastiner l’étape des backup.
Il existe plusieurs méthodes pour sauvegarder son serveur yunohost . L’idée de ce billet étant de proposer une solution pour sauvegarder/restaurer le système et les applications sans se prendre la tête et de limiter la perte de ses données.

Stratégie de backup ?

Mais avant de passer à l’action , il est nécessaire que tu prennes le temps de répondre à ces quelques questions qui te permettront de définir ta stratégie de sauvegarde :
– Quoi sauvegarder? Quelles données? Système? Applicatives? Les deux ?…
– Où le faire? sur un disque dur externe, vers une machine du même réseau , vers une machine extérieure?
– Comment sauvegarder? A quelle fréquence? Sauvegarde incrémentale, différentielle? Chiffrement?

L’objet de ce billet n’est pas de s’attarder sur ces enjeux mais de te donner une recette simple pour minimiser la perte de tes données en cas d’incident. Pour t’aider à appréhender les notions de sauvegarde, tu peux t’inspirer de la doc officielle yunohost ici et aussi de ce diaporama à destination des néophytes dont j’avais fait la présentation au festival Libre en fête.

Quelle solution pratique pour sauvegarder sur Yunohost ?

En général pour sauvegarder tu peux :

  • utiliser tes propres scripts à base de rsync. Ça fonctionne très bien mais lourd à gérer pour quelqu’un qui ne connaît pas bien le bash et ses subtilités systèmes.
  • utiliser une application dédiée comme Borgbackup. Un très bon choix , notamment pour ses options de déduplication et de chiffrement qui permettent d’avoir des sauvegardes sécurisées et rationalisées. Mais pas forcément évident à mettre en place pour un néophyte.
  • autre solution , propre à Yunohost, utiliser son interface web et ses commandes internes. La meilleure solution selon moi pour qui débuterait.

    Encore une fois, le but de ce billet est de rester le plus simple possible , pardon d’avance pour les puristes de la sauvegarde. Nous allons donc voir comment faire une sauvegarde complète puis comment faire pour l’automatiser.

Sauvegarder en mode manuel

Pour créer une sauvegarde complète manuelle, tu as le choix :

  1. le faire à partir de l’interface d’administration de Yunohost
  2. le faire à partir d’un terminal en ligne de commande

Dans notre exemple , nous allons nous concentrer pour faire une sauvegarde système. Elle contiendra donc les fichiers concernant :

  • Les données utilisateurs situées dans /home/USER
  • L’annuaire des utilisateurs (ldap)
  • La configurations de YunoHost,
  • Les certificats SSL,
  • Les fichiers de configuration modifiés manuellement

Voyons voir comment faire tout ça en 1 clic…

1 – Sauvegarder via l’interface:

Menu ‘sauvegardes’ – ‘créer une sauvegarde’.

On coche les données systèmes à sauvegarder. Je te conseille surtout :
– « Configurations systèmes »
– « Données des utilisateurs »

Pour les applications, coche celles qui te semblent les plus indispensables, comme par exemple Nextcloud. Mais avant assure toi aussi d’avoir assez de place sur ton disque de sauvegarde pour pouvoir les stocker.

Selon le poids de tes données , la sauvegarde peut prendre un certain temps. Sur ma raspberry3 , ça m’a coûté 28 minutes pour une archive .tar de 7gb.


Tu possèdes donc maintenant une sauvegarde complète de tes fichiers systèmes ce qui te permettra en cas d’incident de restaurer les profils utilisateurs entre autre (on voit ça à la fin du billet).

Voyons voir maintenant une alternative qui te permettra de faire la même chose mais depuis la ligne de commande.

2 – via le terminal

La commande à taper pour tout sauvegarder (système et applis):

sudo yunohost backup create

– pour sauvegarder uniquement les fichiers de conf système:

sudo yunohost backup create --system

– pour sauvegarder uniquement les applis:

sudo yunohost backup create --apps

– pour sauvegarder que certaines applis:

yunohost backup create --apps nextcloud calibre

Dans mon cas , je choisis de sauvegarder la conf système:

Voilà on a notre fichier de sauvegarde sous forme d’une archive tar.

Pour vérifier les fichiers qu’elle contient, tu peux les lister comme ça:

tar -tvf /home/yunohost.backup/archives/20230301-091951.tar | less

Sauvegarde automatisée

Malheureusement l’interface de Yunohost ne prévoit pas la possibilité de réaliser une sauvegarde automatisée. Il va donc falloir scripter un peu en bash mais rien de compliqué tu vas voir.

on crée le fichier script appelé ‘backup_syst.sh’ qui fera:
– la purge des archives âgées de plus de 1 mois
– la sauvegarde complète des fichiers systèmes de Yunohost

#!/bin/bash
# sauvegarde systeme complete de yunohost

rep="/home/yunohost.backup/archives"
log="/tmp/backup_syst.log
>$log # raz du log

# on supprime les backup vieux de plus de 30 jours
$(find $rep -type f -iname "*.tar" -mtime +30 -delete > $log)

# on crée une nouvelle sauvegarde systeme
$(yunohost backup create --system 2>/dev/null >> $log )

Rendre exécutable le script:

chmod u+x backup_syst.sh

Planifier la sauvegarde:

Pour notre exemple, nous planifierons un backup hebdomadaire :

sous linux , ça se passe dans la crontab:

vi /etc/crontab

Ajouter cette ligne pour sauvegarder par exemple tous les mercredi à 03h du matin:

0 3 * * 3 /root/SCRIPTS/backup_syst.sh 

Restaurer une sauvegarde Yunohost ?

A partir du menu – Sauvegardes – Local, sélectionner l’archive à restaurer puis cliquer sur le bouton restaurer en bas à droite.

Tu vois ce n’est pas plus compliqué que ça.

Dans un prochain article nous verrons comment ajouter un disque dédié et monter le répertoire de sauvegarde dessus.

7 commentaires sur Sauvegarder son serveur Yunohost pour les nuls (1/2)

  1. Merci, très intéressant, surtout le script pour l’automatisation.
    Si mon Raspberry a bien ses sauvegardes automatisées via « Rdiff-backup » je n’ai rien automatisé sur mon serveur sous YunoHost.
    Je vais tester ça, encore merci.

    • Bonsoir,

      Comme écrit au point « 2 – via le terminal », vous pouvez faire une sauvegarde dédié aux applications grâce à la commande ‘yunohost backup create –apps’

      Vous pouvez sinon rajouter –apps à la ligne de commande system pour faire 2 en 1 :
      $(yunohost backup create –system –apps 2>/dev/null >> $log)

      C’est ce que je fait (dans un autre script que celui du tuto) et ça fonctionne très bien.

      • Pour compléter et reciter un passage du tuto 🙂

        – pour sauvegarder uniquement les applis:
        sudo yunohost backup create –apps

        – pour sauvegarder que certaines applis:
        yunohost backup create –apps nextcloud calibre

      • Merci Charles et benzo
        En personnalisant le script tout fonctionne parfaitement et j’ai aussi rajouté une fonction qui envois les sauvegardes sur un autre serveur sftp
        ——————
        # on envois sur le serveur distant
        HOST= »sftp://blabla.com »
        USER= »nico »
        PASS= »password »
        PORT= »22″
        DELETE= »–delete »
        #DELETE= » »
        # on supprime les backup vieux de plus de 15 jours
        find $rep -type f -iname « *.tar » -mtime +15 -delete > $log
        dir_local= »/home/yunohost.backup/ »
        dir_distant= »/backup »
        dir_lst= »archives »

        # Make the mirror of a local directory on the FTP
        # $1 the local directory
        # $2 the SFTP directory
        function sync_dir(){
        date
        echo « ——- »
        echo « SYNC DIR $1 TO $2 »
        echo « ——- »
        lftp -p $PORT -u $USER,$PASS -e « lcd $1; mkdir -pf $2; cd $2; mirror –reverse –verbose –no-perms $DELETE; » $HOST
        }

        for dir in $dir_lst; do
        sync_dir « $dir_local/$dir » « $dir_distant/$dir »
        done
        —————————–

        par-contre je me posais la question si il un moyen d’éviter juste la sauvegarde du répertoire /home/user dans la sauvegarde system ? ou encore mieux juste comme exemple de ne pas sauvegarder le répertoire home/toto … j’ai essayé pas mal de chose mais je patauge dans la s’moul 🙂
        Merci

Leave a Reply

Votre adresse de messagerie ne sera pas publiée.


*