Update README.md
This commit is contained in:
195
README.md
195
README.md
@@ -1 +1,194 @@
|
|||||||
# pve-scripts-local
|
# README – Supervision du conteneur `pve-scripts-local`
|
||||||
|
|
||||||
|
## 1. Objectif
|
||||||
|
|
||||||
|
Ce conteneur LXC `pve-scripts-local` héberge l’application **PVE Scripts Local** (ProxmoxVE-Local), qui permet de gérer les scripts d’aide 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 l’application **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` ;
|
||||||
|
- l’envoi de fichier via `curl -F`.
|
||||||
|
|
||||||
|
Le script est prévu pour tourner **tous les jours à 06h00** via `cron`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Principe de fonctionnement
|
||||||
|
|
||||||
|
1. **Collecte d’informations 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 l’application (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 l’application 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 d’un é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é** :
|
||||||
|
> - L’URL 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.
|
||||||
|
|||||||
Reference in New Issue
Block a user