Partie II - Rendre les modifications permanentes
Vous avez aimé (ou pas) l’éposode 1 alors vous allez adorer (détester) l’épisode 2 :smile:
Comme je l’ai indiqué plus tôt, le système QTS procède à un Reset d’un certain nombre de fichiers/dossier lors du re-démarrage d’un Nas QNAP.
Ce comportment a pour effet de supprimer les personnalisations apportés par l’utilisateur. J’attire l’attention sur le fait que même le dossier de l’utiliseur admin (root) est ré-initialisé.
Donc la 1ère chose à faire est de trouver un endroit de stockage pérenne pour les informations nécessaires à notre modification. Il apparaît que le système QTS utilise un dossier particuliers (/share) pour installer les volumes de stockage (disques durs du Nas) et que dans cette arborescence, il existe un dossier particuliers qui sert à stocker les applications du système (exécutable, fichiers de configuration, images…). Ce dossier (.qpkg) n’est pas concerné par la phase de Reset au démarrage et nous allons donc nous en servir pour stocker nos informations.
Pour déterminer le chemin en question, nous allons utiliser la commande
find /share -type d -name '.qpkg'
Pour le Nas concerné, le résultat est
/share/CACHEDEV1_DATA/.qpkg
Ce chemin va servir de dossier de base pour enregistrer nos données.
Donc on recommence le processus pour les certificats Let’s Encrypt
# on cree un dossier de stockage
mkdir -p /share/CACHEDEV1_DATA/.qpkg/myroot/lets-encrypt-certs
cd /share/CACHEDEV1_DATA/.qpkg/myroot/lets-encrypt-certs
# on recupere les certificats
curl --ipv4 --insecure -O https://letsencrypt.org/certs/isrgrootx1.pem
curl --ipv4 --insecure -O https://letsencrypt.org/certs/isrg-root-x2.pem
# on modifie le nom des fichiers pour les rendre compatible ave openssl
for filename in *pem; do cp $filename `openssl x509 -hash -noout -in $filename`.0; done;
# on ajoute les fichiers de certificat au bundle de Certificats Root CA du systeme
cp *.0 /etc/ssl/certs/
cd ..
Nous voici revenu à la situation précédente avec des certificats Let’s Encrypt à jour.
Nous allons maintenant nous occuper de rendre les modifications permanentes.
Nous allons utiliser une possibilité offerte par le système QTS : lancer un script utilisateur au démarrage du Nas.
Bon comme on est sur un Nas et que rien n’est simple, il faut utiliser une méthode particulière pour accéder à ce script.
En effet il est directment stocké dans la mémoire flash du Nas, et son accès nécessite de ‘monter la partition’ en question dans le système de fichier.
Nota : Voici la source qui permet de déterminer comment monter la partition en question selon le modèle du Nas
https://wiki.qnap.com/wiki/Running_Your_Own_Application_at_Startup
Pour le Nas en question, cela donne (Il est important de bien suivre toutes les instructions)
# Montage de la partition Flash dans le dossier /tmp/config
mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config
# deplacement ans le dossier de montage
cd /tmp/config
# creation du script autorun.sh (on evitant d'utiliser vi)
echo '#!/bin/sh' > autorun.sh
echo '/share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh &' >> autorun.sh
# on rend le script executable
chmod u+x autorun.sh
# deplacement dans le dossier d'origine - indispensable sinon on ne peut pas demonter le point de montage /tmp/config
cd /share/CACHEDEV1_DATA/.qpkg/myroot
# IMPORTANT, demontage du point de montage /tmp/config
umount /tmp/config
Voila le script autorun.sh est en place 🙂
Mais vous noterez qu’il ne fait pas grand chose, en fait, il ne fait que lancer un autre script qui est placé dans notre dossier de travail. De cette manière, on peut apporter des modifications à notre script de démarrage sans devoir repasser par l’étape (pénible) du montage de la partition Flash.
Donc maintenant nous allons créer le nouveau script qui effectue réellement les modifications nécessaires pour les certificats let’s Encrypt.
Script : /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
# creation du script my_autorun.sh (toujours en evitant vi)
echo '#!/bin/sh' > /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
echo 'LOGFILE=/root/my_autorun_`date +"%Y%m%d_%k_%M_%S"`.txt' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
echo 'echo "START : $0" >> "$LOGFILE"' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
echo 'if [ -d /share/CACHEDEV1_DATA/.qpkg/myroot/lets-encrypt-certs ]; then' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
echo ' echo "COPY LETS ENCRYPT CERTS" >> "$LOGFILE"' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
echo ' cd /share/CACHEDEV1_DATA/.qpkg/myroot/lets-encrypt-certs' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
echo ' cp -f *.0 /etc/ssl/certs/' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
echo 'fi' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
echo 'exit 0' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
# on rend le script executable
chmod u+x /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
On a terminé avec SSH et on peut ENFIN fermer la session à distance sur le Nas.
Maintenant le point final : on active la fonction Autorun de QTS dans l’interface Web
1 - On se connecte avec l’utilisateur admin sur l’interface Web du nas
2 - On lance le Panneau de configuration > Matériel > Cocher ‘Exécuter les processus définis par l’utilisateur lors du démarrage’
3 - On peut vérifier le contenu du script autorun.sh avec le lien (Voir autorun.sh)
4 - On valide en cliquant Appliquer
4 - On ferme le Panneau de configuration
Panneau de Configuration
Il ne reste plus qu’à stopper toutes les tâches en cours et à redémarrer le Nas pour vérifier le bon fonctionnement de l’Autorun.
Merci pour votre attention et prenez soin de vous et de vos proches 😉
REMARQUE IMPORTANTE :
1 - Ni le forum ni moi-même ne sont responsables de vos actions sur votre Nas, si vous ne comprennez pas ce aque vous êtes en train de faire alors ne le faite pas !
Je remercie à nouveau la personne qui m’a permis de tester ce HOW-TO sur son Nas QNAP 😉
Guest Star : Fab et son Nas QNAP