Table des matières

Gestion de Yunohost

Cette page décrit des astuces et des applications utilitaires facilitant la gestion administrative de ma machine (VPS ou Raspberry Pi) et du serveur Yunohost.

Emplacement des applications de Yunohost

Les applications installées sont situées dans /var/www :

Initialement, seuls les répertoires 'html' et 'well-known' sont présents.

Midnight Commander pour gérer les fichiers

:-| Je fais tenter de 'merger' ce contenu avec celui de la page 'mc' de Daniel

J'installe cet outil (appelé dorénavant 'mc') sur mon poste de travail et sur mon serveur (VPS ou Raspberry Pi) afin de faciliter la gestions des fichiers :

sudo apt-get install mc
mc

Pour l'installation de cet outil sur mon serveur Yunohost :

sudo apt-get install mc
mc

Sauvegarde manuelle de Yunohost sur VPS

Avec mc, vérifiez l'emplacement des archives locales :

Sauvegarde programmée de Yunohost sur VPS

Voici une contribution de François afin d'effectuer une copie journalière de son installation de Yunohost sur VPS vers un ordinateur local :

Une façon simple de faire un backup est d'utiliser rsync depuis une autre machine. Mettre les deux scripts dans cron avec le délai de sauvegarde désiré. Pour ma part, c'est une fois par jour à 1h UTC.

script_backup_distant.sh
rsync -vau utilisateur@adresse:/home/yunohost.backup/archives/ /repertoire-de-sauvegarde-local
0 1 * * * bash /root/script_backup_distant.sh
script_backup_serveur.sh
rm /home/yunohost.backup/archives/*
yunohost backup create
0 0 * * * bash /root/script_backup_serveur.sh

Sauvegarder programmée : démonstration de mise en place

Pour les personnes moins expérimentées, voici un guide expliquant comment procéder pour mettre en place la sauvegarde programmée de Yunohost sur VPS.

D'abord, sur le serveur (VPS)…

De votre poste de travail local, vous connecter avec votre compte poweruser en SSH (via le port configuré précédemment):

ssh poweruser@vps123456.vps.ovh.ca -p nn

(remplacez 'poweruser' par votre compte avec accès sudo, 123456 par votre nom de VPS et nn par le port SSH configuré précédemment)

Maintenant connecté, élevez vos privilèges en 'root':

sudo su

(entrer le mot de passe du compte poweruser)

Créez le script sur le serveur (sera dans /root) :

nano script_backup_serveur.sh

Saisir son contenu :

rm /home/yunohost.backup/archives/*
yunohost backup create

Sauvegarder et quitter nano (Ctrl-O, Ctrl-X)

(S'assurer que la propriété 'Autoriser l'exécution du fichier comme un programme' du script est activée par chmod +x script_backup_server.sh)

Ajoutez la tâche dans le cron :

crontab -e

Choisir l'éditeur nano (choix 1)

Saisir la commande :

0 0 * * * bash /root/script_backup_serveur.sh

Sauvegarder et quitter le cron (Ctrl-O, Ctrl-X)

Message : 'crontab: installing new crontab'

Maintenant sur la machine de sauvegarde (ex: votre poste de travail local)…

Passez en root :

sudo su

(entrer le mot de passe de votre compte poweruser local)

Créez le script sur le poste local (sera dans /root) :

nano script_backup_distant.sh

Saisir son contenu :

rsync -vau poweruser@vps123456:/home/yunohost.backup/archives/ /home/jean/Documents/yunohost_vps_ovh_backups

(remplacez 'poweruser' par votre compte avec accès sudo, 123456 par votre nom de VPS et 'jean' par votre compte local)

Sauvegarder et quitter nano (Ctrl-O, Ctrl-X)

(S'assurer que la propriété 'Autoriser l'exécution du fichier comme un programme' du script est activée par chmod +x script_backup_distant.sh)

Ajoutez la tâche dans le cron :

crontab -e

Choisir l'éditeur nano (choix 1)

Saisir la commande :

0 1 * * * bash /root/script_backup_distant.sh

Sauvegarder et quitter le cron (Ctrl-O, Ctrl-X)

Message : 'crontab: installing new crontab'

Vérification du script serveur : Pour tester immédiatement le script serveur, modifier le temps programmé de son cron par l'heure actuelle et les minutes actuelles + 2 min

D'abord, vérifier l'heure du serveur :

date +"%H:%M"

(message, par ex: 13:25) (je programme le cron pour 13 h 27)

27 13 * * * bash /root/script_backup_serveur.sh

Je confirme le fonctionnement du script avec mc :

ou au terminal en 'root':

cd /home/yunohost.backup/archives
ls -la

qui devrait afficher un contenu similaire à ceci :

root@mondomaine:/home/yunohost.backup/archives# ls -al
total 9928
drwxr-x--- 2 admin root     4096 Mar 10 13:27 .
drwxr-xr-x 4 root  root     4096 Mar 10 12:47 ..
-rw-r--r-- 1 root  root     1533 Mar 10 13:27 20190310-172702.info.json
-rw-r--r-- 1 root  root 10153504 Mar 10 13:27 20190310-172702.tar.gz
root@mondomaine:/home/yunohost.backup/archives#

Vérification du script local :

J'ai aussi modifié (en root) les droits du répertoire 'archives' afin que rsync et l'utilisateur poweruser aient accès à son contenu (autrement message 'failed: Permission denied (13)') :

cd /home/yunohost.backup/
chmod 777 archives

Je vérifie les accès en exécutant immédiatement la commande au terminal (permet d'ajuster jusqu'à ce qu'elle fonctionne bien) :

rsync -vau poweruser@999.99.999.999:/home/yunohost.backup/archives/ /home/jean/Documents/yunohost_vps_ovh_backups

(saisir le mot de passe du poweruser)

:!: Ma commande rsync ne fonctionnant pas avec le port SSH nn (autre que 22), plutôt que de remettre le port 22 par défaut (un paramètre à fournir?), je fais le compromis de ne laisser le port SSH 22 que pendant la sauvegarde.

Message :

receiving incremental file list
./
20190310-172702.info.json
20190310-172702.tar.gz

sent 65 bytes  received 10,157,705 bytes  655,340.00 bytes/sec
total size is 10,155,037  speedup is 1.00

Je vérifie dans mon répertoire local et les 2 fichiers y sont.

(Notez que rsync ne copie que les fichiers qui ont changé. Je supprime donc les archives locales pour la suite.)

Je teste immédiatement le script local :

./script_backup_distant.sh

(saisir le mot de passe du poweruser)

(Je supprime à nouveau les archives locales pour la suite.)

Modifier le temps programmé de son cron par l'heure actuelle et les minutes actuelles + 2 min

Dans la barre des tâches, mon poste m'indique qu'il est 13 h 50.

(Je programme le cron pour 13 h 52)

52 13 * * * bash /root/script_backup_distant.sh

Je confirme le fonctionnement du script :

:!: Le script ne s'exécute pas. J'ai essayé de passer en paramètre un fichier contenant le mot de passe, mais message d'erreur 'The –password-file option may only be used when accessing an rsync daemon. '. Selon cette page rsync cron job with a password ?, il serait préférable que…look at setting up public keys between the servers so they 'trust' each other and passwords are not needed.

Il fonctionne si on utilise 'root' pour exécuter la commande, mais faille de sécurité…

À suivre, en attendant j'exécuterai le script local manuellement sur une base régulière.

Grsync, outil graphique de rsync

À explorer :