Update README.md

This commit is contained in:
Ssyleric
2025-11-13 17:52:34 +01:00
committed by GitHub
parent 3fb97cbdb3
commit 896a6a79f8

195
README.md
View File

@@ -1 +1,194 @@
# pve-scripts-local # 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` :
```bash
mkdir -p /home/scripts
```
### 4.2. Création du script
Créer le fichier :
```bash
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 :
```bash
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 :
```bash
/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` :
```bash
crontab -e
```
Ajouter la ligne suivante :
```cron
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 :
```bash
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.