docs: mise a jour README pour la version Rust

Instructions de compilation (locale + cross-compilation Windows),
deploiement, stack technique, migration depuis Python.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-04-13 15:58:35 +02:00
parent 545ae921e5
commit 0ac8a2ecfa

View File

@@ -4,6 +4,8 @@ Outil de surveillance systeme avec interface web securisee.
Surveille CPU, RAM, disques et processus specifiques (JVM, Nginx, Amadea Web 8 x64). Surveille CPU, RAM, disques et processus specifiques (JVM, Nginx, Amadea Web 8 x64).
Envoie des alertes email lorsque les seuils configures sont depasses. Envoie des alertes email lorsque les seuils configures sont depasses.
**Binaire natif Rust** — aucune dependance runtime, ~6 Mo.
--- ---
## Fonctionnalites ## Fonctionnalites
@@ -31,9 +33,11 @@ Envoie des alertes email lorsque les seuils configures sont depasses.
### Etapes ### Etapes
1. **Dezipper** `supervision_portable.zip` dans un dossier, par exemple : 1. **Copier** les fichiers suivants dans un dossier, par exemple `C:\supervision\` :
``` ```
C:\supervision\ supervision.exe
templates\ (dossier complet)
static\ (dossier complet)
``` ```
2. **Lancer** l'executable : 2. **Lancer** l'executable :
@@ -56,6 +60,8 @@ Envoie des alertes email lorsque les seuils configures sont depasses.
7. **Ajuster les seuils** si necessaire (valeurs par defaut : CPU 90%, RAM 85%, Disque 90%) 7. **Ajuster les seuils** si necessaire (valeurs par defaut : CPU 90%, RAM 85%, Disque 90%)
> Le dossier `data\` est cree automatiquement au premier lancement avec la configuration par defaut.
--- ---
## Acces distant ## Acces distant
@@ -98,34 +104,54 @@ Pour que Supervision demarre automatiquement avec Windows, utiliser [NSSM](https
--- ---
## Installation depuis les sources (developpement) ## Compilation depuis les sources
### Pre-requis ### Pre-requis
- Python 3.10 ou superieur - [Rust](https://rustup.rs/) 1.75 ou superieur
### Etapes ### Compiler pour la machine locale (Linux/Windows)
1. Creer l'environnement virtuel et installer les dependances : ```bash
```cmd cargo build --release
cd C:\supervision
python -m venv .venv
.venv\Scripts\pip.exe install -r requirements.txt
```
2. Lancer :
```cmd
.venv\Scripts\python.exe app.py
```
### Compiler en executable
```cmd
.venv\Scripts\pip.exe install pyinstaller
.venv\Scripts\pyinstaller.exe --name supervision --onedir --add-data "templates;templates" --add-data "static;static" --hidden-import flask --hidden-import flask_login --hidden-import flask_limiter --hidden-import psutil --noconfirm app.py
``` ```
L'executable est genere dans `dist\supervision\`. L'executable est genere dans `target/release/supervision` (Linux) ou `target\release\supervision.exe` (Windows).
### Cross-compiler pour Windows depuis Linux
```bash
# Installation (une seule fois)
rustup target add x86_64-pc-windows-gnu
sudo apt install gcc-mingw-w64-x86-64
# Compilation
cargo build --release --target x86_64-pc-windows-gnu
```
L'executable Windows est genere dans `target/x86_64-pc-windows-gnu/release/supervision.exe`.
### Lancer en mode developpement
```bash
cargo run
```
L'application demarre sur http://localhost:5000 avec rechargement des templates depuis le dossier `templates/`.
---
## Stack technique
| Composant | Crate Rust | Remplace (Python) |
|-----------|-----------|-------------------|
| Serveur web | axum | Flask |
| Metriques systeme | sysinfo | psutil |
| Templates HTML | tera (Jinja2-compatible) | Jinja2 |
| Envoi email | lettre | smtplib |
| Hashing mot de passe | argon2 | werkzeug (PBKDF2) |
| Serialisation JSON | serde + serde_json | json |
| Async runtime | tokio | threading |
--- ---
@@ -134,16 +160,25 @@ L'executable est genere dans `dist\supervision\`.
``` ```
supervision\ supervision\
├── supervision.exe # Executable principal ├── supervision.exe # Executable principal
├── _internal\ # Dependances Python embarquees ├── Cargo.toml # Dependances Rust
├── src\
│ ├── main.rs # Serveur web, routes, sessions
│ ├── config.rs # Gestion configuration JSON
│ ├── monitor.rs # Collecte metriques systeme
│ └── alerter.rs # Envoi alertes email SMTP
├── templates\ # Pages HTML de l'interface ├── templates\ # Pages HTML de l'interface
├── static\ # CSS │ ├── base.html
│ ├── login.html
│ ├── dashboard.html
│ ├── settings.html
│ └── alerts.html
├── static\
│ └── style.css # Styles CSS
└── data\ # (cree au 1er lancement) └── data\ # (cree au 1er lancement)
├── config.json # Configuration (seuils, SMTP, processus) ├── config.json # Configuration (seuils, SMTP, processus)
└── alerts.json # Historique des alertes └── alerts.json # Historique des alertes
``` ```
> **Important** : ne pas supprimer le dossier `_internal\`, il est necessaire au fonctionnement.
--- ---
## Configuration par defaut ## Configuration par defaut
@@ -169,6 +204,14 @@ Tous les parametres sont modifiables depuis l'interface web.
--- ---
## Migration depuis la version Python
Si un fichier `data/config.json` existant contient un hash de mot de passe au format Python (werkzeug/PBKDF2), la version Rust le detecte automatiquement et reinitialise le mot de passe a `admin`. Un message d'avertissement s'affiche dans la console.
Les autres parametres (seuils, SMTP, processus) sont conserves.
---
## Depannage ## Depannage
| Probleme | Solution | | Probleme | Solution |
@@ -177,4 +220,4 @@ Tous les parametres sont modifiables depuis l'interface web.
| Impossible de se connecter a distance | Verifier la regle firewall (port 5000 TCP entrant) | | Impossible de se connecter a distance | Verifier la regle firewall (port 5000 TCP entrant) |
| Pas d'email recu | Verifier la configuration SMTP et utiliser le bouton "Envoyer un email de test" | | Pas d'email recu | Verifier la configuration SMTP et utiliser le bouton "Envoyer un email de test" |
| Mot de passe oublie | Supprimer `data\config.json` et relancer (reinitialise a admin/admin) | | Mot de passe oublie | Supprimer `data\config.json` et relancer (reinitialise a admin/admin) |
| L'executable ne se lance pas | Verifier que le dossier `_internal\` est present a cote de `supervision.exe` | | L'executable ne se lance pas | Verifier que les dossiers `templates\` et `static\` sont a cote de l'executable |