Files
pve-scripts-local/README.md
2025-11-13 17:52:34 +01:00

5.9 KiB
Raw Permalink Blame History

README Supervision du conteneur pve-scripts-local

1. Objectif

Ce conteneur LXC pve-scripts-local héberge lapplication PVE Scripts Local (ProxmoxVE-Local), qui permet de gérer les scripts daide Proxmox en local, sans dépendre directement du site web.

Ce README décrit un script Bash qui :

  • Vérifie létat général du conteneur (OS, uptime, charge, mémoire, disques).
  • Vérifie létat de lapplication PVE Scripts Local :
    • service systemd (pvescriptslocal) ;
    • accessibilité HTTP sur http://127.0.0.1:3000.
  • Inventorie tous les scripts locaux sous /opt/ProxmoxVE-Local/scripts.
  • Détecte les changements dans ces scripts :
    • fichiers nouveaux (téléchargés) ;
    • fichiers supprimés ;
    • fichiers modifiés (taille ou date de modification).
  • Envoie un résumé dans un canal Discord + un log détaillé en pièce jointe, en respectant :
    • la limite stricte de 2000 caractères ;
    • un JSON propre via jq -Rs ;
    • lenvoi de fichier via curl -F.

Le script est prévu pour tourner tous les jours à 06h00 via cron.


2. Principe de fonctionnement

  1. Collecte dinformations système

    • OS, hostname, IP, uptime humain + date de démarrage, charge moyenne, mémoire utilisée.
    • Espace disque sur / et sur le répertoire applicatif /opt/ProxmoxVE-Local.
  2. Vérification de PVE Scripts Local

    • Lecture de la version de lapplication (fichier VERSION si présent).
    • Version de Node.js (node -v).
    • Statut du service pvescriptslocal via systemctl.
    • Test HTTP sur http://127.0.0.1:3000 via curl (code HTTP ou absence de réponse).
  3. Inventaire des scripts locaux

    • Répertoire principal : LOCAL_SCRIPTS_DIR=/opt/ProxmoxVE-Local/scripts.
    • Comptage du nombre de fichiers scripts.
    • Calcul de la taille totale.
  4. Baseline et détection de changements

    • Le script maintient un fichier de référence :
      • BASELINE=/var/lib/pve-scripts-local/scripts_baseline.txt
    • Format : chemin_relatif|taille|mtime_epoch, trié.
    • Première exécution :
      • Tous les fichiers sont considérés comme létat initial.
    • Exécutions suivantes :
      • Détection :
        • des nouveaux fichiers (présents maintenant, absents avant) ;
        • des fichiers supprimés (présents avant, absents maintenant) ;
        • des fichiers modifiés (taille ou date modifiée).
      • Résumé des changements sous forme :
        • X nouveau(x), Y supprimé(s), Z modifié(s).
  5. Log détaillé et envoi vers Discord

    • Un log complet est généré à chaque exécution dans :
      • /var/log/pve-scripts-local/pve-scripts-local_status_YYYY-MM-DDTHH-MM-SS+ZZZZ.log
    • Le message Discord contient un résumé synthétique :
      • état du conteneur ;
      • état de lapplication PVE Scripts Local ;
      • stats sur les scripts ;
      • résumé des changements.
    • Le message respecte la limite de 2000 caractères (tronquage propre si nécessaire).
    • Le log complet est envoyé comme pièce jointe avec curl -F.

3. Prérequis

  • Conteneur LXC pve-scripts-local sous Debian 13.
  • Application PVE Scripts Local installée dans :
    • /opt/ProxmoxVE-Local
  • Accès root (ou équivalent) dans le conteneur.
  • Outils nécessaires :
    • curl
    • jq (installé automatiquement si absent).
  • Un webhook Discord valide (URL à renseigner dans le script).

4. Installation du script

4.1. Création du répertoire des scripts

Dans le conteneur pve-scripts-local :

mkdir -p /home/scripts

4.2. Création du script

Créer le fichier :

nano /home/scripts/pve-scripts-local-status.sh

Coller le script nettoyé (voir annexe à la fin de ce README), puis sauvegarder.

Rendre le script exécutable :

chmod +x /home/scripts/pve-scripts-local-status.sh

4.3. Répertoires de travail

Le script utilise automatiquement :

  • Pour létat / baseline :
    • /var/lib/pve-scripts-local/
  • Pour les logs :
    • /var/log/pve-scripts-local/

Ils sont créés si nécessaire.


5. Test manuel

Lancer un test :

/home/scripts/pve-scripts-local-status.sh

À la fin :

  • Un fichier log doit apparaître dans :
    • /var/log/pve-scripts-local/
  • Un message doit être visible dans le canal Discord :
    • avec un résumé dans le texte ;
    • et le log complet en pièce jointe.

6. Planification quotidienne à 06h00

Pour lancer ce check tous les jours à 06h00, ajouter une entrée cron :

crontab -e

Ajouter la ligne suivante :

0 6 * * * /home/scripts/pve-scripts-local-status.sh >/dev/null 2>&1

Explication :

  • 0 6 * * * → tous les jours à 06h00.
  • La sortie standard et les erreurs sont ignorées (>/dev/null 2>&1), le détail étant dans le log et dans Discord.

7. Emplacement des fichiers générés

  • Baseline des scripts :

    • /var/lib/pve-scripts-local/scripts_baseline.txt
  • Logs :

    • /var/log/pve-scripts-local/pve-scripts-local_status_YYYY-MM-DDTHH-MM-SS+ZZZZ.log

Ces fichiers peuvent être sauvegardés ou copiés dans une procédure de backup si nécessaire.


8. Réinitialiser la baseline

Si tu veux repartir dun état “propre” (par exemple après un gros changement de scripts), tu peux supprimer la baseline :

rm -f /var/lib/pve-scripts-local/scripts_baseline.txt

Lors de la prochaine exécution du script :

  • Tous les scripts actuels seront considérés comme nouvelle baseline.
  • Le résumé Discord indiquera une initialisation.

9. Annexe : Script complet (nettoyé)

⚠️ Important : ce script est nettoyé :

  • LURL du webhook Discord est mise sous forme de placeholder.
  • Aucun code sensible, aucun e-mail réel, aucune donnée privée.

Pense à remplacer "<DISCORD_WEBHOOK_URL>" par ton URL réelle.