ipwatch
This commit is contained in:
269
DEPLOIEMENT_REUSSI.md
Normal file
269
DEPLOIEMENT_REUSSI.md
Normal file
@@ -0,0 +1,269 @@
|
||||
# ✅ 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.
|
||||
Reference in New Issue
Block a user