Je vais indiquer ici comment j'ai organisé mon serveur YunoHost, qui sert également pour récupérer les sauvegardes de Tricassinux.
Environnement Virtualisé
- J'ai installé et configuré un serveur physique, équipé de LinuxMint, qui sert de système hôte.
- Dedans, j'ai installé Virtualbox, qui permet de virtualiser un système invité (yunohost, en l'occurrence)
- Comme expliqué ici, c'est notamment pour permettre de déplacer ou restaurer plus facilement le serveur en cas de problème.
Il serait évidemment possible d'utiliser docker, qui serait plus adapté pour cet usage, mais ne maîtrisant pas cette technologie, je vais rester sur quelque chose de plus basique.
Pour un serveur à utiliser dans un environnement sans administrateur système, on peut envisager d'installer par exemple SambaEdu sur une machine dédiée (avec virtualbox) et des sauvegardes sur disque externe, et sur un autre ordinateur de secours d'avoir Virtualbox également d'installé, dans le cas d'un plantage du serveur principal, un utilisateur aura simplement à brancher le disque dur externe sur l'ordinateur de secours et à démarrer virtualbox et la machine virtuelle sur le disque externe.
Une fois yunohost installé dans cet environnement virtualisé, mon serveur se trouve donc maintenant dans l'unique fichier "yunohost.vdi"
Démarrage automatique du serveur virtuel
Dans mon répertoire home, j'ai créé ces scripts de maintenance virtualbox (ce sont juste les commandes de base, mais je n'avais pas envie de les chercher ou de les mémoriser :
start_yunohost.sh
VBoxManage startvm yunohost --type headless
pause_yunohost.sh
VBoxManage controlvm yunohost savestate
stop_yunohost.sh
VBoxManage controlvm yunohost acpipowerbutton
Pour démarrer yunohost en même temps que le serveur physique, j'ai créé un fichier /etc/rc.local :
#!/bin/sh -e
#
# rc.local
/root/start_yunohost.sh
exit 0
Le script de pause ou d'arrêt par acpi, sera pour arrêter la machine virtuelle lors de la sauvegarde du fichier "yunohost.vdi" sur disque externe (à faire dans le futur).
Lien avec Tricassinux
Du côté du serveur Tricassinux, je rappelle que j'ai créé une tâche crontab pour automatiser les sauvegardes tous les mercredi à 15h30 :
crontab -e
(en admin)
30 15 * * 3 sudo yunohost backup create
et dans le dossier de sauvegardes où ça arrive (/home/yunohost.backup/archives), j'ai créé un petit script de backup vers mon propre serveur, avec la commande scp (secure cp, via ssh) :
scp -P1424 $1 admin@monserveur.ynh.fr:/home/yunohost.backup/archives/tricassinux
Manuellement, depuis le dossier /home/yunohost.backup/archives de tricassinux, si je tape ./backup.sh 20200227-124152.tar.gz
pour un fichier en particulier, cela me demande mon mot de passer sur mon propre serveur, et transfère la sauvegarde par ssh.
Il faut juste penser à se connecter de temps en temps, pour effectuer manuellement cette sauvegarde.
À faire
Pour bien faire et automatiser également cette étape, il faudra créer un petit script plus élaboré, qui pourra :
- à période régulière scanner le dossier /home/yunohost.backup/archives et déterminer quel fichier de sauvegarde est le plus récent
- transférer la sauvegarde par scp, mais en utilisant une clé au lieu d'un mot de passe
- effacer les plus vieux fichiers de sauvegarde (ce qui est un peu dangereux si le transfert ou la sauvegarde n'aboutissent pas)
- Idéalement il faudrait en plus envoyer un rapport de sauvegarde et de transfert par email, pour s'assurer que tout va bien sur la durée.
à suivre...