From 0ac8a2ecfacafd67be411ac35d73f1db0f4defdb Mon Sep 17 00:00:00 2001 From: Dom Date: Mon, 13 Apr 2026 15:58:35 +0200 Subject: [PATCH] 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) --- README.md | 99 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 71 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index cb65ed9..a1f8513 100644 --- a/README.md +++ b/README.md @@ -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). Envoie des alertes email lorsque les seuils configures sont depasses. +**Binaire natif Rust** — aucune dependance runtime, ~6 Mo. + --- ## Fonctionnalites @@ -31,9 +33,11 @@ Envoie des alertes email lorsque les seuils configures sont depasses. ### 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 : @@ -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%) +> Le dossier `data\` est cree automatiquement au premier lancement avec la configuration par defaut. + --- ## 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 -- 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 : - ```cmd - 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 +```bash +cargo build --release ``` -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.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 -├── static\ # CSS +│ ├── base.html +│ ├── login.html +│ ├── dashboard.html +│ ├── settings.html +│ └── alerts.html +├── static\ +│ └── style.css # Styles CSS └── data\ # (cree au 1er lancement) ├── config.json # Configuration (seuils, SMTP, processus) └── alerts.json # Historique des alertes ``` -> **Important** : ne pas supprimer le dossier `_internal\`, il est necessaire au fonctionnement. - --- ## 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 | 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) | | 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) | -| 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 |