270 lines
7.0 KiB
Markdown
270 lines
7.0 KiB
Markdown
# ✅ Déploiement de la fonctionnalité de suivi - RÉUSSI
|
|
|
|
**Date**: 23 décembre 2025
|
|
**Version**: IPWatch 1.0.1
|
|
**Fonctionnalité**: Suivi d'équipements avec Wake-on-LAN
|
|
|
|
---
|
|
|
|
## 📋 Résumé de l'implémentation
|
|
|
|
La fonctionnalité de **suivi d'équipements** a été déployée avec succès dans IPWatch.
|
|
|
|
### ✅ Modifications backend (FastAPI)
|
|
|
|
- [x] Modèle `IP` modifié : ajout du champ `tracked` (boolean) avec index
|
|
- [x] Schémas Pydantic mis à jour : `IPUpdate` et `IPResponse` incluent `tracked`
|
|
- [x] Nouveau router `/api/tracking/` créé avec 3 endpoints :
|
|
- `GET /api/tracking/` - Liste des IPs suivies
|
|
- `POST /api/tracking/wol/{ip}` - Wake-on-LAN
|
|
- `POST /api/tracking/shutdown/{ip}` - Éteindre (à configurer)
|
|
- [x] Migration de base de données exécutée avec succès
|
|
- [x] Dépendance `wakeonlan==3.1.0` ajoutée et installée
|
|
|
|
### ✅ Modifications frontend (Vue 3 + Router)
|
|
|
|
- [x] Vue Router installé (`vue-router@4.2.5`)
|
|
- [x] Configuration du routing créée (`/` et `/tracking`)
|
|
- [x] Page `MainView.vue` créée (page principale)
|
|
- [x] Page `TrackingView.vue` créée (page de suivi)
|
|
- [x] Composant `IPDetails.vue` modifié : checkbox "IP suivie" ajoutée
|
|
- [x] Composant `AppHeader.vue` modifié : bouton "Suivi" ajouté (jaune/orange)
|
|
- [x] `App.vue` transformé en router-view
|
|
- [x] `main.js` mis à jour avec le router
|
|
|
|
---
|
|
|
|
## 🎯 Utilisation
|
|
|
|
### 1. Marquer une IP comme suivie
|
|
|
|
1. Cliquez sur une cellule IP dans la grille principale
|
|
2. Dans le panneau de gauche, cochez **"IP suivie"**
|
|
3. Cliquez sur **"Enregistrer"**
|
|
|
|
### 2. Accéder à la page de suivi
|
|
|
|
1. Cliquez sur le bouton **"⭐ Suivi"** dans le header (jaune/orange)
|
|
2. Vous êtes redirigé vers la page `/tracking`
|
|
|
|
### 3. Actions disponibles sur la page de suivi
|
|
|
|
Pour chaque équipement suivi :
|
|
|
|
- **Bouton WOL (vert)** : Envoie un paquet Magic Packet Wake-on-LAN
|
|
- Nécessite une adresse MAC enregistrée
|
|
- Désactivé si l'équipement est déjà en ligne
|
|
|
|
- **Bouton Éteindre (rose)** : Envoie une commande d'arrêt
|
|
- ⚠️ Non implémenté (retourne HTTP 501)
|
|
- Nécessite configuration selon votre infrastructure
|
|
|
|
- **Bouton Détails (violet)** : Retourne à la page principale avec l'IP sélectionnée
|
|
|
|
- **Bouton Rafraîchir** : Actualise la liste des équipements suivis
|
|
|
|
---
|
|
|
|
## 🛠️ Configuration Wake-on-LAN
|
|
|
|
### Prérequis matériels
|
|
|
|
Pour que WOL fonctionne, l'équipement cible doit :
|
|
|
|
1. Avoir **Wake-on-LAN activé dans le BIOS/UEFI**
|
|
2. Avoir le support WOL activé sur la carte réseau
|
|
3. Être branché à l'alimentation (ATX)
|
|
|
|
### Test Wake-on-LAN
|
|
|
|
```bash
|
|
# Depuis le conteneur Docker
|
|
docker exec ipwatch python -c "
|
|
from wakeonlan import send_magic_packet
|
|
send_magic_packet('AA:BB:CC:DD:EE:FF')
|
|
print('Paquet WOL envoyé !')
|
|
"
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 Vérification du déploiement
|
|
|
|
### 1. Vérifier la migration de base de données
|
|
|
|
```bash
|
|
docker exec ipwatch sqlite3 ./data/db.sqlite "PRAGMA table_info(ip);" | grep tracked
|
|
```
|
|
|
|
**Sortie attendue** :
|
|
```
|
|
14|tracked|BOOLEAN|0|0|0
|
|
```
|
|
|
|
### 1b. Migration VM (nouveau champ)
|
|
|
|
```bash
|
|
docker exec ipwatch python -m backend.app.migrations.add_vm_field
|
|
docker exec ipwatch sqlite3 ./data/db.sqlite "PRAGMA table_info(ip);" | grep vm
|
|
```
|
|
|
|
**Sortie attendue** :
|
|
```
|
|
15|vm|BOOLEAN|0|0|0
|
|
```
|
|
|
|
### 2. Vérifier les endpoints API
|
|
|
|
```bash
|
|
# Liste des IPs suivies
|
|
curl http://localhost:8080/api/tracking/
|
|
|
|
# Health check
|
|
curl http://localhost:8080/health
|
|
```
|
|
|
|
### 3. Vérifier le frontend
|
|
|
|
Ouvrez votre navigateur sur `http://localhost:8080` :
|
|
|
|
✅ Le bouton **"⭐ Suivi"** est visible dans le header
|
|
✅ Cliquer dessus charge la page `/tracking`
|
|
✅ La checkbox "IP suivie" est présente dans le panneau de gauche
|
|
|
|
---
|
|
|
|
## 📊 Statut du déploiement
|
|
|
|
```
|
|
=== Démarrage IPWatch ===
|
|
✓ Configuration chargée: 10.0.0.0/22
|
|
✓ Base de données initialisée: ./data/db.sqlite
|
|
✓ Scheduler démarré
|
|
=== IPWatch prêt ===
|
|
|
|
Migration de base de données:
|
|
✓ Colonne 'tracked' ajoutée
|
|
✓ Index 'idx_ip_tracked' créé
|
|
|
|
Serveur:
|
|
✓ Uvicorn running on http://0.0.0.0:8080
|
|
```
|
|
|
|
---
|
|
|
|
## 📂 Fichiers modifiés/créés
|
|
|
|
### Backend
|
|
```
|
|
backend/app/models/ip.py [MODIFIÉ]
|
|
backend/app/routers/ips.py [MODIFIÉ]
|
|
backend/app/routers/tracking.py [CRÉÉ]
|
|
backend/app/migrations/add_tracked_field.py [CRÉÉ]
|
|
backend/app/migrations/__init__.py [CRÉÉ]
|
|
backend/app/main.py [MODIFIÉ]
|
|
backend/requirements.txt [MODIFIÉ]
|
|
```
|
|
|
|
### Frontend
|
|
```
|
|
frontend/src/router/index.js [CRÉÉ]
|
|
frontend/src/views/MainView.vue [CRÉÉ]
|
|
frontend/src/views/TrackingView.vue [CRÉÉ]
|
|
frontend/src/components/AppHeader.vue [MODIFIÉ]
|
|
frontend/src/components/IPDetails.vue [MODIFIÉ]
|
|
frontend/src/App.vue [MODIFIÉ]
|
|
frontend/src/main.js [MODIFIÉ]
|
|
frontend/package.json [MODIFIÉ]
|
|
```
|
|
|
|
### Documentation
|
|
```
|
|
SUIVI_EQUIPEMENTS.md [CRÉÉ]
|
|
DEPLOIEMENT_REUSSI.md [CE FICHIER]
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Prochaines étapes
|
|
|
|
### Configuration optionnelle : Shutdown
|
|
|
|
Pour activer la fonctionnalité d'arrêt, éditez `backend/app/routers/tracking.py` :
|
|
|
|
#### Option 1 : SSH (Linux)
|
|
```python
|
|
pip install paramiko
|
|
|
|
import paramiko
|
|
|
|
def shutdown_via_ssh(ip_address, username, password):
|
|
ssh = paramiko.SSHClient()
|
|
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
|
ssh.connect(ip_address, username=username, password=password)
|
|
ssh.exec_command("sudo shutdown -h now")
|
|
ssh.close()
|
|
```
|
|
|
|
#### Option 2 : WMI (Windows)
|
|
```python
|
|
pip install wmi-client-wrapper
|
|
|
|
import wmi
|
|
|
|
def shutdown_via_wmi(ip_address, username, password):
|
|
c = wmi.WMI(computer=ip_address, user=username, password=password)
|
|
os = c.Win32_OperatingSystem(Primary=1)[0]
|
|
os.Shutdown()
|
|
```
|
|
|
|
⚠️ **Sécurité** : Stockez les credentials dans des variables d'environnement, jamais en clair.
|
|
|
|
---
|
|
|
|
## 📞 Support
|
|
|
|
### Logs du conteneur
|
|
```bash
|
|
docker logs ipwatch -f
|
|
```
|
|
|
|
### Logs de la base de données
|
|
```bash
|
|
docker exec ipwatch sqlite3 ./data/db.sqlite "SELECT * FROM ip WHERE tracked = 1;"
|
|
```
|
|
|
|
### Redémarrage
|
|
```bash
|
|
docker compose restart ipwatch
|
|
```
|
|
|
|
### Rebuild complet
|
|
```bash
|
|
docker compose build --no-cache
|
|
docker compose up -d
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ Checklist de validation
|
|
|
|
- [x] Migration de base de données exécutée
|
|
- [x] Colonne `tracked` présente dans la table `ip`
|
|
- [x] Index `idx_ip_tracked` créé
|
|
- [x] Conteneur démarré sans erreurs
|
|
- [x] Endpoints API `/api/tracking/` accessibles
|
|
- [x] Frontend construit et déployé
|
|
- [x] Bouton "Suivi" visible dans le header
|
|
- [x] Checkbox "IP suivie" présente dans IPDetails
|
|
- [x] Navigation vers `/tracking` fonctionnelle
|
|
- [x] Page de suivi affiche correctement les équipements
|
|
- [x] Boutons WOL, Éteindre, Détails présents
|
|
- [x] Dépendance `wakeonlan` installée
|
|
|
|
---
|
|
|
|
**🎉 DÉPLOIEMENT RÉUSSI !**
|
|
|
|
Votre fonctionnalité de suivi d'équipements est maintenant opérationnelle.
|
|
Consultez [SUIVI_EQUIPEMENTS.md](SUIVI_EQUIPEMENTS.md) pour plus d'informations.
|