# NeuroPulse Monitor Pro v2.0 - Documentation Complète

![NeuroPulse Logo](https://via.placeholder.com/800x200/3b82f6/ffffff?text=NeuroPulse+Monitor+Pro+v2.0)

## 📋 Table des Matières

1. [Vue d'ensemble](#vue-densemble)
2. [Fonctionnalités](#fonctionnalités)
3. [Architecture](#architecture)
4. [Installation](#installation)
5. [Configuration](#configuration)
6. [Utilisation](#utilisation)
7. [API REST](#api-rest)
8. [Sécurité](#sécurité)
9. [Maintenance](#maintenance)
10. [Dépannage](#dépannage)
11. [Contributeurs](#contributeurs)

---

## 🚀 Vue d'ensemble

**NeuroPulse Monitor Pro v2.0** est un système de surveillance système avancé conçu pour les administrateurs système, DevOps et équipes IT. Il offre une surveillance en temps réel, des alertes intelligentes, et une interface web moderne pour la gestion et le monitoring d'infrastructure.

### 🎯 Objectifs

- **Surveillance complète** : CPU, mémoire, disque, réseau, services
- **Alertes intelligentes** : Notifications automatiques avec seuils configurables
- **Interface moderne** : Dashboard web responsive avec graphiques temps réel
- **Automation** : Sauvegardes automatiques et gestion des services
- **Sécurité** : Authentification, logs d'audit, contrôle d'accès
- **Scalabilité** : Support Docker, API REST, intégration avec d'autres outils

### 🏆 Avantages

- ✅ **Installation rapide** : Docker one-command deployment
- ✅ **Zero-config** : Fonctionne out-of-the-box avec des paramètres sensés
- ✅ **Extensible** : API REST complète pour intégrations
- ✅ **Performant** : Optimisé pour un impact minimal sur le système
- ✅ **Fiable** : Système de sauvegarde automatique et recovery
- ✅ **Moderne** : Interface utilisateur intuitive et responsive

---

## 🛠️ Fonctionnalités

### 📊 Surveillance Système

#### Métriques de Base
- **CPU** : Utilisation globale et par cœur, fréquence, température
- **Mémoire** : RAM, swap, cache, buffers
- **Stockage** : Usage par partition, I/O, performance
- **Réseau** : Trafic, connexions, interfaces, vitesse

#### Métriques Avancées
- **Processus** : Top CPU/Memory, zombies, threads
- **Services** : Status systemd, ports ouverts, santé
- **Sécurité** : Connexions SSH, usage sudo, fichiers critiques
- **Performance** : Load average, context switches, interrupts

### 🎛️ Interface Utilisateur

#### Dashboard Principal
- **Vue d'ensemble** : Métriques principales avec jauges visuelles
- **Graphiques temps réel** : Historique sur 5min à 24h
- **Alertes** : Notifications visuelles des problèmes
- **Navigation** : Sidebar moderne avec sections organisées

#### Modules Spécialisés
- **Gestion des Services** : Start/stop/restart avec confirmations
- **Terminal Web** : Exécution de commandes à distance
- **Gestion des Tickets** : Système de ticketing intégré
- **Configuration** : Interface pour modifier tous les paramètres

### 🔔 Système d'Alertes

#### Types d'Alertes
- **Seuils configurables** : Warning et Critical pour chaque métrique
- **Alertes automatiques** : Génération de tickets pour problèmes détectés
- **Notifications** : Email, Slack, Webhooks personnalisés
- **Escalade** : Différents niveaux selon la criticité

#### Intelligence d'Alertes
- **Prévention spam** : Un ticket par problème par jour
- **Contexte** : Informations détaillées sur le problème
- **Résolution automatique** : Fermeture quand problème résolu
- **Historique** : Suivi complet des incidents

### 🔧 Gestion et Administration

#### Contrôle des Services
- **Surveillance** : Status en temps réel de tous les services
- **Actions** : Start, stop, restart, reload avec logs
- **Configuration** : Ajout/suppression de services à surveiller
- **Ports** : Vérification de l'accessibilité des ports

#### Terminal Intégré
- **Commandes sécurisées** : Blacklist des commandes dangereuses
- **Autocomplétion** : Suggestions intelligentes
- **Historique** : Sauvegarde des commandes exécutées
- **Logs** : Enregistrement de toutes les actions

### 💾 Sauvegarde et Récupération

#### Sauvegarde Automatique
- **Programmée** : Quotidienne, hebdomadaire selon configuration
- **Complète** : Base de données, configuration, logs, application
- **Compression** : Archives tar.gz optimisées
- **Vérification** : Intégrité automatique avec checksums

#### Gestion des Sauvegardes
- **Rétention** : Nettoyage automatique selon règles définies
- **Manifestes** : Métadonnées détaillées pour chaque sauvegarde
- **Restauration** : Interface pour restaurer depuis archive
- **Notifications** : Alertes en cas d'échec de sauvegarde

---

## 🏗️ Architecture

### 📐 Vue d'ensemble

```
┌─────────────────────────────────────────────────────┐
│                    Frontend                         │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐   │
│  │  Dashboard  │ │   Terminal  │ │   Settings  │   │
│  └─────────────┘ └─────────────┘ └─────────────┘   │
└─────────────────────┬───────────────────────────────┘
                      │ HTTP/WebSocket
┌─────────────────────▼───────────────────────────────┐
│                 Backend API                         │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐   │
│  │    Flask    │ │   Nginx     │ │  Gunicorn   │   │
│  │   Routes    │ │   Proxy     │ │   WSGI      │   │
│  └─────────────┘ └─────────────┘ └─────────────┘   │
└─────────────────────┬───────────────────────────────┘
                      │
┌─────────────────────▼───────────────────────────────┐
│                Core Services                        │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐   │
│  │ Monitoring  │ │   Alerting  │ │   Backup    │   │
│  │   Engine    │ │   System    │ │   Manager   │   │
│  └─────────────┘ └─────────────┘ └─────────────┘   │
└─────────────────────┬───────────────────────────────┘
                      │
┌─────────────────────▼───────────────────────────────┐
│                Data Layer                           │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐   │
│  │   SQLite    │ │    Files    │ │   System    │   │
│  │  Database   │ │   Config    │ │    APIs     │   │
│  └─────────────┘ └─────────────┘ └─────────────┘   │
└─────────────────────────────────────────────────────┘
```

### 🧩 Composants

#### Frontend
- **HTML5/CSS3/JavaScript** : Interface utilisateur moderne
- **Chart.js** : Graphiques et visualisations temps réel
- **Responsive Design** : Compatible mobile/tablette/desktop
- **Progressive Web App** : Installable comme application native

#### Backend
- **Flask 2.3+** : Framework web Python minimaliste et flexible
- **Gunicorn** : Serveur WSGI pour production
- **Nginx** : Reverse proxy et serveur de fichiers statiques
- **SQLite** : Base de données embarquée pour simplicité

#### Monitoring
- **psutil** : Collecte des métriques système multiplateforme
- **SystemMonitor** : Classe personnalisée pour métriques avancées
- **Threaded Collection** : Collecte asynchrone sans impact performance
- **Caching Layer** : Cache intelligent pour optimiser les performances

#### Sécurité
- **JWT Tokens** : Authentification stateless sécurisée
- **Rate Limiting** : Protection contre les attaques par déni de service
- **Input Validation** : Validation rigoureuse de toutes les entrées
- **Command Filtering** : Blacklist des commandes dangereuses

### 🐳 Déploiement Docker

#### Structure du Conteneur
```
/opt/neuropulse/
├── app/                    # Application principale
│   ├── templates/          # Templates HTML
│   ├── static/            # Fichiers statiques (CSS, JS)
│   └── utils/             # Utilitaires et helpers
├── config/                # Configuration
│   ├── config.json        # Configuration principale
│   └── neuropulse.db      # Base de données SQLite
├── backups/               # Sauvegardes automatiques
├── logs/                  # Logs de l'application
└── scripts/               # Scripts d'administration
```

#### Services Managés
- **Supervisor** : Gestionnaire de processus
- **Nginx** : Proxy inverse et serveur web
- **Cron** : Tâches programmées (sauvegardes)
- **Logrotate** : Rotation automatique des logs

---

## 📦 Installation

### 🐳 Installation Docker (Recommandée)

#### Prérequis
- Docker 20.0+
- Docker Compose 2.0+
- 2GB RAM minimum
- 10GB espace disque

#### Installation Rapide
```bash
# 1. Cloner le repository
git clone https://github.com/neuropulse/monitor-pro.git
cd monitor-pro

# 2. Construire et démarrer
docker-compose up -d

# 3. Vérifier le statut
docker-compose ps

# 4. Accéder à l'interface
# http://localhost:5000
# Identifiants par défaut: admin/admin
```

#### Installation avec Configuration Personnalisée
```bash
# 1. Copier la configuration d'exemple
cp config/config.json.example config/config.json

# 2. Éditer la configuration
nano config/config.json

# 3. Démarrer avec configuration personnalisée
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d
```

### 🖥️ Installation Native

#### Prérequis Système
```bash
# Ubuntu/Debian
sudo apt update
sudo apt install python3 python3-pip python3-venv sqlite3 nginx supervisor

# CentOS/RHEL
sudo yum install python3 python3-pip sqlite nginx supervisor

# Arch Linux
sudo pacman -S python python-pip sqlite nginx supervisor
```

#### Installation Automatique
```bash
# Télécharger et exécuter le script d'installation
curl -fsSL https://raw.githubusercontent.com/neuropulse/monitor-pro/main/install.sh | sudo bash

# Ou installation manuelle:
sudo chmod +x install.sh
sudo ./install.sh
```

#### Installation Manuelle
```bash
# 1. Créer l'utilisateur système
sudo useradd --system --shell /bin/false neuropulse

# 2. Créer les répertoires
sudo mkdir -p /opt/neuropulse/{app,config,backups,logs}
sudo mkdir -p /var/log/neuropulse

# 3. Installer les dépendances Python
cd /opt/neuropulse
sudo python3 -m venv venv
sudo venv/bin/pip install -r requirements.txt

# 4. Copier les fichiers
sudo cp -r app/ config/ utils/ backup/ /opt/neuropulse/

# 5. Configurer les permissions
sudo chown -R neuropulse:neuropulse /opt/neuropulse
sudo chown -R neuropulse:neuropulse /var/log/neuropulse

# 6. Initialiser la base de données
sudo -u neuropulse python3 /opt/neuropulse/app/init_db.py

# 7. Configurer systemd
sudo cp scripts/neuropulse.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable neuropulse
sudo systemctl start neuropulse
```

### ☁️ Installation Cloud

#### AWS EC2
```bash
# 1. Lancer une instance EC2 (t3.small minimum)
aws ec2 run-instances \
  --image-id ami-0c55b159cbfafe1d0 \
  --instance-type t3.small \
  --key-name your-key \
  --security-group-ids sg-your-sg \
  --user-data file://cloud-init.sh

# 2. Le script cloud-init.sh installe automatiquement NeuroPulse
```

#### Google Cloud Platform
```bash
# 1. Créer une instance Compute Engine
gcloud compute instances create neuropulse-monitor \
  --image-family ubuntu-2004-lts \
  --image-project ubuntu-os-cloud \
  --machine-type e2-standard-2 \
  --metadata-from-file startup-script=cloud-init.sh
```

#### Azure
```bash
# 1. Créer une VM Azure
az vm create \
  --resource-group myResourceGroup \
  --name neuropulse-monitor \
  --image UbuntuLTS \
  --size Standard_B2s \
  --custom-data cloud-init.sh
```

#### DigitalOcean
```bash
# 1. Créer un droplet
doctl compute droplet create neuropulse-monitor \
  --image ubuntu-20-04-x64 \
  --size s-2vcpu-2gb \
  --user-data-file cloud-init.sh
```

---

## ⚙️ Configuration

### 📄 Fichier de Configuration Principal

Le fichier `config.json` contient toute la configuration de NeuroPulse :

```json
{
  "version": "2.0",
  "application": {
    "name": "NeuroPulse Monitor Pro",
    "port": 5000,
    "host": "0.0.0.0",
    "debug": false,
    "secret_key": "changez-cette-clé-en-production"
  },
  "monitoring": {
    "refresh_interval": 3000,
    "metrics_retention_days": 30,
    "log_file_path": "/var/log/syslog",
    "enable_real_time_alerts": true
  },
  "alert_thresholds": {
    "cpu": {"warning": 70, "critical": 90},
    "ram": {"warning": 80, "critical": 95},
    "disk": {"warning": 85, "critical": 95},
    "temperature": {"warning": 70, "critical": 85}
  },
  "services_to_monitor": [
    {
      "name": "apache2",
      "title": "Apache HTTP Server",
      "port": 80,
      "enabled": true,
      "criticality": "Critique"
    }
  ],
  "notifications": {
    "email": {
      "enabled": false,
      "smtp_server": "smtp.gmail.com",
      "smtp_port": 587,
      "username": "your-email@gmail.com",
      "password": "your-app-password",
      "to_emails": ["admin@yourdomain.com"]
    },
    "slack": {
      "enabled": false,
      "webhook_url": "https://hooks.slack.com/services/...",
      "channel": "#monitoring"
    }
  },
  "backup": {
    "enabled": true,
    "schedule": "02:00",
    "retention_days": 30,
    "backup_directory": "/opt/neuropulse/backups"
  }
}
```

### 🔧 Configuration Avancée

#### Seuils d'Alerte Personnalisés
```json
{
  "alert_thresholds": {
    "cpu": {
      "warning": 70,
      "critical": 90,
      "description": "Seuils pour l'utilisation CPU"
    },
    "ram": {
      "warning": 80,
      "critical": 95,
      "sustained_minutes": 5
    },
    "load_average": {
      "warning": 2.0,
      "critical": 4.0,
      "per_core": true
    },
    "network_connections": {
      "warning": 1000,
      "critical": 2000
    }
  }
}
```

#### Services Personnalisés
```json
{
  "services_to_monitor": [
    {
      "name": "custom-app",
      "title": "Mon Application",
      "description": "Application métier critique",
      "port": 8080,
      "enabled": true,
      "criticality": "Critique",
      "auto_restart": false,
      "health_check_url": "http://localhost:8080/health",
      "expected_processes": 2
    }
  ]
}
```

#### Notifications Avancées
```json
{
  "notifications": {
    "email": {
      "enabled": true,
      "smtp_server": "smtp.company.com",
      "smtp_port": 587,
      "tls_enabled": true,
      "username": "monitoring@company.com",
      "password": "secure-password",
      "from_email": "neuropulse@company.com",
      "to_emails": ["admin@company.com", "devops@company.com"],
      "alert_levels": ["warning", "critical"]
    },
    "webhook": {
      "enabled": true,
      "url": "https://api.company.com/alerts",
      "secret": "webhook-secret",
      "events": ["critical_alert", "service_down"],
      "custom_headers": {
        "X-Source": "NeuroPulse",
        "Authorization": "Bearer token"
      }
    }
  }
}
```

### 🌐 Variables d'Environnement

#### Variables Docker
```bash
# Configuration de base
NEUROPULSE_ENV=production
NEUROPULSE_DEBUG=false
NEUROPULSE_SECRET_KEY=your-secret-key

# Base de données
DB_PATH=/opt/neuropulse/config/neuropulse.db

# Monitoring
MONITOR_HOST_SYSTEM=true
REFRESH_INTERVAL=3
DATA_RETENTION_DAYS=30

# Sauvegardes
BACKUP_ENABLED=true
BACKUP_SCHEDULE=02:00
BACKUP_RETENTION_DAYS=30

# Sécurité
SESSION_TIMEOUT=480
RATE_LIMITING=true

# Notifications
EMAIL_ENABLED=false
SLACK_ENABLED=false
```

#### Surcharge par Variables
```bash
# Surcharger les seuils d'alerte
export NEUROPULSE_CPU_WARNING=75
export NEUROPULSE_CPU_CRITICAL=95
export NEUROPULSE_RAM_WARNING=85

# Surcharger la configuration email
export NEUROPULSE_EMAIL_SMTP_SERVER=smtp.company.com
export NEUROPULSE_EMAIL_USERNAME=monitoring@company.com
```

---

## 📚 Utilisation

### 🖥️ Interface Web

#### Connexion Initiale
1. Ouvrir http://votre-serveur:5000
2. Utiliser les identifiants par défaut : `admin` / `admin`
3. **Important** : Changer le mot de passe immédiatement

#### Dashboard Principal
- **Vue d'ensemble** : Métriques système en temps réel
- **Graphiques** : Historique des performances
- **Alertes** : Notifications visuelles des problèmes
- **Services** : Status et contrôle des services système

#### Navigation
- **📊 Dashboard** : Vue principale avec métriques
- **🎫 Tickets** : Gestion des incidents et alertes
- **🖥️ Terminal** : Interface de commande web
- **⚙️ Configuration** : Paramètres et seuils
- **📈 Métriques** : Graphiques détaillés temps réel

### 🎛️ Gestion des Services

#### Contrôle des Services
1. Aller dans **Services** depuis le menu
2. Voir le status en temps réel de tous les services
3. Utiliser les boutons **Start**, **Stop**, **Restart**
4. Confirmer les actions dans la popup

#### Ajout de Nouveaux Services
1. Aller dans **Configuration** > **Services**
2. Cliquer sur **Ajouter un Service**
3. Remplir les informations :
   - Nom du service (ex: `nginx`)
   - Titre descriptif
   - Port à surveiller (optionnel)
   - Niveau de criticité
4. **Sauvegarder** la configuration

### 🎫 Système de Tickets

#### Tickets Automatiques
- Créés automatiquement lors de problèmes détectés
- Un ticket par problème par jour (évite le spam)
- Niveaux : **Faible**, **Moyenne**, **Élevée**, **Critique**
- Résolution automatique quand le problème disparaît

#### Tickets Manuels
1. Aller dans **Tickets** > **Nouveau Ticket**
2. Remplir les informations :
   - Titre descriptif
   - Description détaillée
   - Niveau de criticité
   - Service concerné
3. **Créer le ticket**

#### Gestion des Tickets
- **Filtrer** : Par status, criticité, service
- **Rechercher** : Dans le titre et description
- **Résoudre** : Marquer comme résolu
- **Exporter** : Télécharger en CSV

### 🖥️ Terminal Web

#### Utilisation de Base
1. Aller dans **Terminal** depuis le menu
2. Taper les commandes dans la zone de saisie
3. Utiliser **Tab** pour l'autocomplétion
4. Utiliser **↑/↓** pour l'historique

#### Commandes Fréquentes
- `systemctl status service-name` : Status d'un service
- `df -h` : Espace disque
- `free -h` : Utilisation mémoire
- `ps aux | grep process` : Rechercher un processus
- `tail -f /var/log/service.log` : Suivre un log
- `netstat -tulpn` : Ports ouverts

#### Commandes NeuroPulse
- `neuropulse status` : Status du service
- `neuropulse restart` : Redémarrer NeuroPulse
- `neuropulse backup` : Créer une sauvegarde
- `neuropulse logs` : Voir les logs

#### Sécurité
- Commandes dangereuses bloquées (`rm -rf`, `mkfs`, etc.)
- Timeout de 30 secondes pour toutes les commandes
- Logs de toutes les commandes exécutées
- Session sécurisée avec authentification

### 📊 Métriques et Graphiques

#### Types de Graphiques
- **Temps réel** : Métriques actuelles avec rafraîchissement automatique
- **Historique** : Tendances sur 5min, 1h, 6h, 24h
- **Comparaison** : Multiple métriques sur le même graphique

#### Métriques Disponibles
- **CPU** : Utilisation globale et par cœur
- **Mémoire** : RAM, swap, cache
- **Disque** : Usage, I/O, performance
- **Réseau** : Trafic entrant/sortant, connexions
- **Système** : Load average, processus, uptime

#### Export des Données
- **CSV** : Export des métriques pour analyse externe
- **JSON** : Format structuré pour intégrations
- **Images** : Screenshots des graphiques

---

## 🔌 API REST

### 🚀 Vue d'ensemble

NeuroPulse expose une API REST complète pour l'intégration avec d'autres systèmes.

**Base URL** : `http://votre-serveur:5000/api`

**Authentification** : Bearer Token (JWT)

### 🔐 Authentification

#### Obtenir un Token
```bash
curl -X POST http://localhost:5000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "admin"}'

# Réponse:
{
  "success": true,
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
  "user": "admin",
  "expires_in": 28800
}
```

#### Utiliser le Token
```bash
curl -H "Authorization: Bearer YOUR_TOKEN" \
  http://localhost:5000/api/metrics/current
```

### 📊 Endpoints Métriques

#### Métriques Actuelles
```bash
GET /api/metrics/current

# Réponse:
{
  "success": true,
  "data": {
    "cpu": 45.2,
    "ram": 67.8,
    "disk": 23.1,
    "network": {
      "speed_in": 1024.5,
      "speed_out": 512.3
    },
    "timestamp": "2024-01-15T10:30:00Z"
  }
}
```

#### Historique des Métriques
```bash
GET /api/metrics/history?hours=1&type=cpu

# Paramètres:
# - hours: nombre d'heures d'historique (défaut: 1)
# - type: type de métrique (cpu, ram, disk, all)
```

#### Stream Temps Réel
```bash
GET /api/metrics/live

# Server-Sent Events stream
# Content-Type: text/event-stream
```

### 🛠️ Endpoints Services

#### Liste des Services
```bash
GET /api/services

# Réponse:
{
  "success": true,
  "services": [
    {
      "name": "apache2",
      "title": "Apache HTTP Server",
      "active": true,
      "port": 80,
      "last_check": "2024-01-15T10:30:00Z"
    }
  ]
}
```

#### Contrôle d'un Service
```bash
POST /api/services/apache2/restart

# Actions disponibles: start, stop, restart, reload
```

### 🎫 Endpoints Tickets

#### Liste des Tickets
```bash
GET /api/tickets?status=open&severity=critical

# Paramètres:
# - status: all, open, resolved
# - severity: all, critical, high, medium, low
# - limit: nombre de tickets (défaut: 100)
# - offset: pagination
```

#### Créer un Ticket
```bash
POST /api/tickets
Content-Type: application/json

{
  "title": "Problème de performance",
  "description": "CPU élevé depuis 30 minutes",
  "severity": "high",
  "service": "System"
}
```

#### Résoudre un Ticket
```bash
POST /api/tickets/123/resolve
```

### ⚙️ Endpoints Configuration

#### Obtenir la Configuration
```bash
GET /api/config

# Note: Les mots de passe sont masqués
```

#### Mettre à Jour la Configuration
```bash
POST /api/config
Content-Type: application/json

{
  "alert_thresholds": {
    "cpu": {"warning": 75, "critical": 95}
  }
}
```

### 🖥️ Endpoints Exécution

#### Exécuter une Commande
```bash
POST /api/execute
Content-Type: application/json

{
  "command": "systemctl status apache2"
}

# Réponse:
{
  "success": true,
  "command": "systemctl status apache2",
  "output": "● apache2.service - Apache HTTP Server...",
  "error": "",
  "return_code": 0
}
```

#### Historique des Commandes
```bash
GET /api/execute/history?limit=50
```

### 🌐 Endpoints Réseau

#### Connexions Réseau
```bash
GET /api/network/connections
```

#### Interfaces Réseau
```bash
GET /api/network/interfaces
```

### 🔍 Endpoints Processus

#### Liste des Processus
```bash
GET /api/processes?sort=cpu&limit=20&filter=apache
```

#### Tuer un Processus
```bash
POST /api/processes/1234/kill
Content-Type: application/json

{
  "signal": "TERM"  # ou "KILL"
}
```

### 📋 Endpoints Système

#### Informations Système
```bash
GET /api/system/info
```

#### Redémarrage Système
```bash
POST /api/system/restart
Content-Type: application/json

{
  "delay": 1  # délai en minutes
}
```

### 📝 Endpoints Logs

#### Logs Système
```bash
GET /api/logs?file=/var/log/syslog&lines=100&level=error
```

### 🏥 Health Check

#### Vérification de Santé
```bash
GET /api/health

# Réponse:
{
  "status": "healthy",
  "timestamp": "2024-01-15T10:30:00Z",
  "checks": {
    "database": "ok",
    "disk_space": "ok",
    "memory": "ok"
  },
  "version": "2.0"
}
```

### 📖 Documentation API

#### Documentation Interactive
```bash
GET /api/docs

# Retourne la documentation complète de l'API
```

### 🔒 Rate Limiting

L'API implémente une limitation de débit pour la sécurité :

- **Défaut** : 200 requêtes/jour, 50/heure
- **Login** : 5 tentatives/minute
- **Exécution** : 30 commandes/heure
- **Redémarrage** : 1/heure

### 📁 Codes de Retour

- **200** : Succès
- **201** : Créé
- **400** : Requête invalide
- **401** : Non authentifié
- **403** : Non autorisé
- **404** : Non trouvé
- **429** : Trop de requêtes
- **500** : Erreur serveur

---

## 🔒 Sécurité

### 🛡️ Authentification et Autorisation

#### Système d'Authentification
- **JWT Tokens** : Authentification stateless sécurisée
- **Durée de session** : Configurable (défaut 8 heures)
- **Révocation** : Possibilité de révoquer les tokens
- **Renouvellement** : Refresh automatique des tokens

#### Contrôle d'Accès
- **Authentification obligatoire** : Toutes les pages sauf login
- **Validation des tokens** : Vérification à chaque requête
- **Sessions sécurisées** : Cookies HttpOnly et Secure
- **Logout automatique** : Après timeout d'inactivité

#### Bonnes Pratiques
```bash
# 1. Changer le mot de passe par défaut
# Interface web > Settings > Security

# 2. Configurer une clé secrète forte
export NEUROPULSE_SECRET_KEY="votre-clé-très-longue-et-aléatoire"

# 3. Activer HTTPS en production
# Voir section Configuration SSL/TLS
```

### 🚫 Protection contre les Attaques

#### Rate Limiting
- **Global** : 200 requêtes/jour, 50/heure par IP
- **Login** : 5 tentatives/minute
- **API** : Limites spécifiques par endpoint
- **Blacklist temporaire** : IPs abusives bloquées

#### Validation des Entrées
- **Sanitisation** : Toutes les entrées utilisateur nettoyées
- **Whitelisting** : Validation stricte des paramètres
- **Escape HTML** : Protection contre XSS
- **Paramètres SQL** : Protection contre injection SQL

#### Commandes Système
```python
# Commandes interdites pour sécurité
FORBIDDEN_COMMANDS = [
    'rm -rf', 'mkfs', 'dd if=', 'shutdown', 'reboot', 'halt',
    'passwd', 'userdel', 'fdisk', 'parted', 'crontab -r'
]
```

#### Headers de Sécurité
```nginx
# Configuration Nginx automatique
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000";
```

### 🔐 Configuration SSL/TLS

#### Certificat Auto-signé (Développement)
```bash
# Générer un certificat auto-signé
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

# Configurer Nginx
server {
    listen 443 ssl;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
}
```

#### Let's Encrypt (Production)
```bash
# Installer Certbot
sudo apt install certbot python3-certbot-nginx

# Obtenir un certificat
sudo certbot --nginx -d votre-domaine.com

# Renouvellement automatique
sudo crontab -e
0 12 * * * /usr/bin/certbot renew --quiet
```

#### Configuration Avancée SSL
```nginx
# Configuration SSL/TLS sécurisée
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
```

### 🔍 Audit et Logging

#### Logs de Sécurité
- **Connexions** : Toutes les tentatives de connexion loggées
- **Commandes** : Historique complet des commandes exécutées
- **API** : Logs détaillés de tous les appels API
- **Erreurs** : Logs des tentatives d'accès non autorisées

#### Surveillance des Fichiers Critiques
```json
{
  "security_monitoring": {
    "monitor_file_changes": {
      "enabled": true,
      "paths": [
        "/etc/passwd",
        "/etc/shadow",
        "/etc/sudoers",
        "/etc/ssh/sshd_config"
      ]
    }
  }
}
```

#### SIEM Integration
```bash
# Export des logs vers syslog
logger -p local0.info "NeuroPulse: $(cat /var/log/neuropulse/audit.log)"

# Envoi vers serveur SIEM
rsyslog ou syslog-ng configuration
```

### 🏰 Hardening du Système

#### Configuration Système
```bash
# 1. Mettre à jour le système
sudo apt update && sudo apt upgrade -y

# 2. Configurer le firewall
sudo ufw allow ssh
sudo ufw allow 5000/tcp
sudo ufw allow 443/tcp
sudo ufw enable

# 3. Désactiver les services inutiles
sudo systemctl disable bluetooth
sudo systemctl disable avahi-daemon

# 4. Configuration SSH sécurisée
sudo nano /etc/ssh/sshd_config
# PermitRootLogin no
# PasswordAuthentication no
# PubkeyAuthentication yes
```

#### Docker Security
```yaml
# docker-compose.yml sécurisé
services:
  neuropulse:
    security_opt:
      - no-new-privileges:true
    user: "1000:1000"
    read_only: true
    tmpfs:
      - /tmp:noexec,nosuid,size=1g
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETUID
      - SETGID
```

### 🔄 Sauvegarde de Sécurité

#### Configuration de Sauvegarde Sécurisée
```json
{
  "backup": {
    "encryption": {
      "enabled": true,
      "algorithm": "AES-256",
      "key_file": "/secure/path/backup.key"
    },
    "remote_storage": {
      "enabled": true,
      "type": "s3",
      "bucket": "neuropulse-backups",
      "encryption": "aws:kms"
    }
  }
}
```

#### Test de Récupération
```bash
# Tester régulièrement la récupération
neuropulse backup
neuropulse verify-backup latest.tar.gz
neuropulse test-restore latest.tar.gz
```

---

## 🔧 Maintenance

### 📅 Maintenance Préventive

#### Tâches Quotidiennes Automatiques
- **02:00** : Sauvegarde complète des données
- **03:00** : Nettoyage des anciennes sauvegardes
- **04:00** : Vérification d'intégrité des sauvegardes
- **05:00** : Rotation des logs
- **06:00** : Mise à jour des statistiques système

#### Tâches Hebdomadaires
- **Dimanche 01:00** : Sauvegarde complète longue durée
- **Dimanche 02:00** : Nettoyage approfondi des logs
- **Dimanche 03:00** : Défragmentation de la base de données
- **Dimanche 04:00** : Vérification des permissions fichiers

#### Tâches Mensuelles
- **1er du mois** : Archivage des anciennes métriques
- **1er du mois** : Rapport de santé système automatique
- **1er du mois** : Vérification des certificats SSL

### 🛠️ Commandes de Maintenance

#### Commandes NeuroPulse
```bash
# Status général
neuropulse status

# Démarrage/Arrêt
neuropulse start
neuropulse stop
neuropulse restart

# Sauvegardes
neuropulse backup
neuropulse backup-verify latest.tar.gz
neuropulse cleanup

# Logs
neuropulse logs
neuropulse logs --follow
neuropulse logs --service worker

# Mise à jour
neuropulse update
neuropulse update --check-only

# Diagnostic
neuropulse diagnose
neuropulse health-check
```

#### Maintenance Base de Données
```bash
# Optimisation manuelle
sqlite3 /opt/neuropulse/config/neuropulse.db "VACUUM;"
sqlite3 /opt/neuropulse/config/neuropulse.db "REINDEX;"

# Statistiques
sqlite3 /opt/neuropulse/config/neuropulse.db "ANALYZE;"

# Vérification intégrité
sqlite3 /opt/neuropulse/config/neuropulse.db "PRAGMA integrity_check;"
```

#### Nettoyage Manuel
```bash
# Nettoyer les logs anciens
find /var/log/neuropulse -name "*.log" -mtime +30 -delete

# Nettoyer les métriques anciennes
python3 -c "
from app import get_db
import sqlite3
db = get_db()
db.execute('DELETE FROM metrics_history WHERE date(timestamp) < date(\"now\", \"-30 days\")')
db.commit()
"

# Nettoyer les sauvegardes
find /opt/neuropulse/backups -name "*.tar.gz" -mtime +30 -delete
```

### 📊 Monitoring de la Santé

#### Scripts de Vérification
```bash
#!/bin/bash
# health-check.sh - Vérification complète de santé

echo "=== NeuroPulse Health Check ==="

# 1. Vérifier les processus
if ! pgrep -f "gunicorn.*neuropulse" > /dev/null; then
    echo "❌ Application NeuroPulse non running"
    exit 1
fi

# 2. Vérifier la base de données
if ! sqlite3 /opt/neuropulse/config/neuropulse.db "SELECT 1;" > /dev/null 2>&1; then
    echo "❌ Base de données inaccessible"
    exit 1
fi

# 3. Vérifier l'espace disque
DISK_USAGE=$(df /opt/neuropulse | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -gt 90 ]; then
    echo "⚠️  Espace disque faible: ${DISK_USAGE}%"
fi

# 4. Vérifier la mémoire
MEMORY_USAGE=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100.0}')
if [ "$MEMORY_USAGE" -gt 90 ]; then
    echo "⚠️  Utilisation mémoire élevée: ${MEMORY_USAGE}%"
fi

# 5. Vérifier les logs d'erreur
ERROR_COUNT=$(grep -c "ERROR" /var/log/neuropulse/app.log 2>/dev/null || echo 0)
if [ "$ERROR_COUNT" -gt 10 ]; then
    echo "⚠️  Nombreuses erreurs dans les logs: $ERROR_COUNT"
fi

echo "✅ Health check terminé"
```

#### Alertes de Maintenance
```json
{
  "maintenance_alerts": {
    "disk_space_warning": 85,
    "disk_space_critical": 95,
    "memory_warning": 85,
    "backup_failure_notify": true,
    "service_restart_notify": true,
    "certificate_expiry_days": 30
  }
}
```

### 🔄 Mise à Jour du Système

#### Mise à Jour Automatique (Docker)
```bash
# Script de mise à jour automatique
#!/bin/bash
# update-neuropulse.sh

echo "🔄 Mise à jour NeuroPulse..."

# 1. Sauvegarde avant mise à jour
docker exec neuropulse-monitor /opt/neuropulse/init.sh backup

# 2. Télécharger la nouvelle image
docker-compose pull

# 3. Redéployer avec la nouvelle version
docker-compose up -d

# 4. Vérifier que tout fonctionne
sleep 30
docker exec neuropulse-monitor /usr/local/bin/healthcheck.sh

echo "✅ Mise à jour terminée"
```

#### Mise à Jour Manuelle
```bash
# 1. Arrêter les services
sudo systemctl stop neuropulse

# 2. Sauvegarder
sudo -u neuropulse /opt/neuropulse/scripts/backup.sh

# 3. Mettre à jour le code
cd /opt/neuropulse
sudo git pull origin main

# 4. Mettre à jour les dépendances
sudo -u neuropulse pip install -r requirements.txt --upgrade

# 5. Migrer la base de données si nécessaire
sudo -u neuropulse python3 migrate.py

# 6. Redémarrer les services
sudo systemctl start neuropulse

# 7. Vérifier
sudo systemctl status neuropulse
```

#### Rollback en Cas de Problème
```bash
# Rollback Docker
docker-compose down
docker tag neuropulse:latest neuropulse:backup
docker tag neuropulse:previous neuropulse:latest
docker-compose up -d

# Rollback Native
sudo systemctl stop neuropulse
sudo -u neuropulse tar -xzf /opt/neuropulse/backups/latest.tar.gz -C /opt/neuropulse/
sudo systemctl start neuropulse
```

### 📈 Optimisation des Performances

#### Réglages Base de Données
```sql
-- Optimisation SQLite
PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA cache_size = 10000;
PRAGMA temp_store = MEMORY;
PRAGMA mmap_size = 268435456; -- 256MB
```

#### Réglages Application
```python
# Configuration Gunicorn optimisée
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = "gevent"
worker_connections = 1000
max_requests = 1000
max_requests_jitter = 100
timeout = 120
keepalive = 2
```

#### Monitoring des Performances
```bash
# Scripts de monitoring performance
#!/bin/bash
# performance-monitor.sh

echo "=== Performance Monitoring ==="

# Temps de réponse API
RESPONSE_TIME=$(curl -o /dev/null -s -w '%{time_total}' http://localhost:5000/api/health)
echo "⏱️  Temps de réponse API: ${RESPONSE_TIME}s"

# Utilisation mémoire de l'application
MEMORY_MB=$(ps aux | grep gunicorn | awk '{sum += $6} END {print sum/1024}')
echo "🧠 Mémoire utilisée: ${MEMORY_MB}MB"

# Nombre de connexions actives
CONNECTIONS=$(netstat -an | grep :5000 | grep ESTABLISHED | wc -l)
echo "🔗 Connexions actives: $CONNECTIONS"

# Taille de la base de données
DB_SIZE=$(ls -lh /opt/neuropulse/config/neuropulse.db | awk '{print $5}')
echo "💾 Taille base de données: $DB_SIZE"
```

---

## 🚨 Dépannage

### ❓ Problèmes Courants

#### 🔴 Service ne démarre pas

**Symptômes :**
- Erreur 502 Bad Gateway
- Page inaccessible
- `systemctl status neuropulse` montre "failed"

**Solutions :**
```bash
# 1. Vérifier les logs
sudo journalctl -u neuropulse -f

# 2. Vérifier les permissions
sudo chown -R neuropulse:neuropulse /opt/neuropulse
sudo chmod +x /opt/neuropulse/app/*.py

# 3. Vérifier la configuration
python3 -c "import json; json.load(open('/opt/neuropulse/config/config.json'))"

# 4. Vérifier les dépendances
cd /opt/neuropulse && pip install -r requirements.txt

# 5. Réinitialiser la base de données
sudo -u neuropulse python3 /opt/neuropulse/app/init_db.py
```

#### 🔴 Interface web inaccessible

**Symptômes :**
- Timeout de connexion
- Page blanche
- Erreur de connexion refusée

**Solutions :**
```bash
# 1. Vérifier que le port est ouvert
sudo netstat -tlnp | grep :5000

# 2. Vérifier le firewall
sudo ufw status
sudo ufw allow 5000/tcp

# 3. Vérifier Nginx (si utilisé)
sudo systemctl status nginx
sudo nginx -t

# 4. Vérifier les logs Nginx
sudo tail -f /var/log/nginx/error.log

# 5. Test de connectivité locale
curl -I http://localhost:5000
```

#### 🔴 Métriques non collectées

**Symptômes :**
- Graphiques vides
- Valeurs à zéro
- Erreurs dans les logs

**Solutions :**
```bash
# 1. Vérifier psutil
python3 -c "import psutil; print(psutil.cpu_percent())"

# 2. Vérifier les permissions système
sudo chmod 755 /proc
sudo chmod 644 /proc/meminfo /proc/stat

# 3. Test du module monitoring
cd /opt/neuropulse
python3 -c "from utils.monitoring import get_system_metrics; print(get_system_metrics())"

# 4. Redémarrer le service de collecte
sudo systemctl restart neuropulse
```

#### 🔴 Sauvegardes échouent

**Symptômes :**
- Emails d'erreur de sauvegarde
- Fichiers de sauvegarde manquants
- Erreurs dans les logs de backup

**Solutions :**
```bash
# 1. Vérifier l'espace disque
df -h /opt/neuropulse/backups

# 2. Vérifier les permissions
sudo chown -R neuropulse:neuropulse /opt/neuropulse/backups
sudo chmod 755 /opt/neuropulse/backups

# 3. Test manuel de sauvegarde
sudo -u neuropulse python3 -m backup.backup_manager backup

# 4. Vérifier la configuration de sauvegarde
grep -A 10 '"backup"' /opt/neuropulse/config/config.json
```

#### 🔴 Notifications ne fonctionnent pas

**Symptômes :**
- Pas d'emails d'alerte
- Pas de notifications Slack
- Erreurs dans les logs de notification

**Solutions :**
```bash
# 1. Vérifier la configuration email
python3 -c "
import smtplib
from email.mime.text import MIMEText
# Test avec vos paramètres SMTP
"

# 2. Vérifier les paramètres Slack
curl -X POST -H 'Content-type: application/json' \
  --data '{"text":"Test NeuroPulse"}' \
  YOUR_SLACK_WEBHOOK_URL

# 3. Vérifier les logs de notification
grep -i "notification\|email\|slack" /var/log/neuropulse/app.log

# 4. Test des seuils d'alerte
# Modifier temporairement les seuils pour forcer une alerte
```

### 🛠️ Outils de Diagnostic

#### Script de Diagnostic Complet
```bash
#!/bin/bash
# diagnose-neuropulse.sh

echo "🔍 Diagnostic NeuroPulse Monitor Pro v2.0"
echo "========================================"

# Informations système
echo -e "\n📋 INFORMATIONS SYSTÈME"
echo "Hostname: $(hostname)"
echo "OS: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
echo "Kernel: $(uname -r)"
echo "Uptime: $(uptime -p)"

# Ressources système
echo -e "\n💻 RESSOURCES SYSTÈME"
echo "CPU: $(nproc) cœurs"
echo "RAM: $(free -h | grep Mem | awk '{print $2}')"
echo "Disk: $(df -h / | tail -1 | awk '{print $2" ("$5" utilisé)"}')"

# Services NeuroPulse
echo -e "\n🚀 SERVICES NEUROPULSE"
if systemctl is-active --quiet neuropulse; then
    echo "✅ Service neuropulse: ACTIF"
else
    echo "❌ Service neuropulse: INACTIF"
fi

if pgrep -f "gunicorn.*neuropulse" > /dev/null; then
    echo "✅ Processus gunicorn: RUNNING"
    echo "   PIDs: $(pgrep -f 'gunicorn.*neuropulse' | tr '\n' ' ')"
else
    echo "❌ Processus gunicorn: NOT RUNNING"
fi

# Ports réseau
echo -e "\n🌐 PORTS RÉSEAU"
if netstat -tlnp | grep -q ":5000"; then
    echo "✅ Port 5000: OUVERT"
else
    echo "❌ Port 5000: FERMÉ"
fi

if netstat -tlnp | grep -q ":80"; then
    echo "✅ Port 80: OUVERT"
else
    echo "ℹ️  Port 80: FERMÉ (normal si pas de Nginx)"
fi

# Configuration
echo -e "\n⚙️ CONFIGURATION"
if [ -f "/opt/neuropulse/config/config.json" ]; then
    echo "✅ Fichier config.json: TROUVÉ"
    if python3 -c "import json; json.load(open('/opt/neuropulse/config/config.json'))" 2>/dev/null; then
        echo "✅ Configuration JSON: VALIDE"
    else
        echo "❌ Configuration JSON: INVALIDE"
    fi
else
    echo "❌ Fichier config.json: MANQUANT"
fi

# Base de données
echo -e "\n💾 BASE DE DONNÉES"
if [ -f "/opt/neuropulse/config/neuropulse.db" ]; then
    echo "✅ Base de données: TROUVÉE"
    if sqlite3 /opt/neuropulse/config/neuropulse.db "SELECT COUNT(*) FROM tickets;" 2>/dev/null; then
        TICKET_COUNT=$(sqlite3 /opt/neuropulse/config/neuropulse.db "SELECT COUNT(*) FROM tickets;" 2>/dev/null)
        echo "✅ Base de données: ACCESSIBLE ($TICKET_COUNT tickets)"
    else
        echo "❌ Base de données: ERREUR D'ACCÈS"
    fi
else
    echo "❌ Base de données: MANQUANTE"
fi

# Logs récents
echo -e "\n📝 LOGS RÉCENTS"
if [ -f "/var/log/neuropulse/app.log" ]; then
    echo "Dernières erreurs:"
    tail -10 /var/log/neuropulse/app.log | grep -i error || echo "Aucune erreur récente"
else
    echo "❌ Fichier de log manquant"
fi

# Test de connectivité
echo -e "\n🌐 TEST DE CONNECTIVITÉ"
if curl -s -o /dev/null -w "%{http_code}" http://localhost:5000 | grep -q "200"; then
    echo "✅ HTTP localhost:5000: OK"
else
    echo "❌ HTTP localhost:5000: ÉCHEC"
fi

# Permissions
echo -e "\n🔒 PERMISSIONS"
NEUROPULSE_USER=$(stat -c %U /opt/neuropulse/config 2>/dev/null)
if [ "$NEUROPULSE_USER" = "neuropulse" ]; then
    echo "✅ Permissions /opt/neuropulse: OK"
else
    echo "❌ Permissions /opt/neuropulse: INCORRECTES (propriétaire: $NEUROPULSE_USER)"
fi

echo -e "\n✅ Diagnostic terminé"
```

#### Collecteur de Logs pour Support
```bash
#!/bin/bash
# collect-logs.sh

TIMESTAMP=$(date +%Y%m%d_%H%M%S)
LOG_DIR="/tmp/neuropulse_logs_$TIMESTAMP"
mkdir -p "$LOG_DIR"

echo "📦 Collecte des logs NeuroPulse..."

# Logs application
cp /var/log/neuropulse/*.log "$LOG_DIR/" 2>/dev/null || true

# Logs système
journalctl -u neuropulse --since "24 hours ago" > "$LOG_DIR/systemd.log"

# Configuration (sans mots de passe)
python3 -c "
import json
with open('/opt/neuropulse/config/config.json') as f:
    config = json.load(f)

# Masquer les mots de passe
if 'notifications' in config and 'email' in config['notifications']:
    config['notifications']['email']['password'] = '***HIDDEN***'

with open('$LOG_DIR/config.json', 'w') as f:
    json.dump(config, f, indent=2)
" 2>/dev/null || echo "Config non disponible" > "$LOG_DIR/config.txt"

# Informations système
echo "=== SYSTÈME ===" > "$LOG_DIR/system_info.txt"
uname -a >> "$LOG_DIR/system_info.txt"
free -h >> "$LOG_DIR/system_info.txt"
df -h >> "$LOG_DIR/system_info.txt"
ps aux | grep neuropulse >> "$LOG_DIR/system_info.txt"

# Créer l'archive
cd /tmp
tar -czf "neuropulse_logs_$TIMESTAMP.tar.gz" "neuropulse_logs_$TIMESTAMP"
rm -rf "$LOG_DIR"

echo "✅ Logs collectés: /tmp/neuropulse_logs_$TIMESTAMP.tar.gz"
echo "📧 Envoyez ce fichier au support technique"
```

### 🆘 Procédures d'Urgence

#### Redémarrage d'Urgence
```bash
#!/bin/bash
# emergency-restart.sh

echo "🚨 REDÉMARRAGE D'URGENCE NEUROPULSE"

# 1. Arrêt forcé
sudo pkill -f neuropulse
sudo systemctl stop neuropulse

# 2. Nettoyage des fichiers temporaires
sudo rm -rf /tmp/neuropulse/*
sudo rm -f /var/run/neuropulse.pid

# 3. Vérification de l'intégrité
sudo -u neuropulse sqlite3 /opt/neuropulse/config/neuropulse.db "PRAGMA integrity_check;"

# 4. Redémarrage
sudo systemctl start neuropulse

# 5. Vérification
sleep 10
if curl -s http://localhost:5000/api/health > /dev/null; then
    echo "✅ Redémarrage réussi"
else
    echo "❌ Redémarrage échoué"
    sudo journalctl -u neuropulse --since "5 minutes ago"
fi
```

#### Restauration d'Urgence
```bash
#!/bin/bash
# emergency-restore.sh

if [ -z "$1" ]; then
    echo "Usage: $0 <backup-file.tar.gz>"
    exit 1
fi

BACKUP_FILE="$1"

echo "🚨 RESTAURATION D'URGENCE"
echo "Sauvegarde: $BACKUP_FILE"

# 1. Arrêter le service
sudo systemctl stop neuropulse

# 2. Sauvegarder l'état actuel
sudo mv /opt/neuropulse/config /opt/neuropulse/config.backup.$(date +%s)

# 3. Restaurer la sauvegarde
sudo tar -xzf "$BACKUP_FILE" -C /opt/neuropulse/

# 4. Corriger les permissions
sudo chown -R neuropulse:neuropulse /opt/neuropulse

# 5. Redémarrer
sudo systemctl start neuropulse

echo "✅ Restauration terminée"
```

### 📞 Support et Ressources

#### Informations de Support
- **Documentation** : https://docs.neuropulse.com
- **GitHub Issues** : https://github.com/neuropulse/monitor-pro/issues
- **Forum Communauté** : https://community.neuropulse.com
- **Email Support** : support@neuropulse.com

#### Collecte d'Informations pour Support
Avant de contacter le support, préparez :

1. **Version** : `neuropulse --version`
2. **OS et version** : `cat /etc/os-release`
3. **Logs** : Utiliser le script `collect-logs.sh`
4. **Configuration** : Configuration sanitisée (sans mots de passe)
5. **Description du problème** : Étapes pour reproduire

#### Niveaux de Support
- **Communauté** : Forum, GitHub Issues (gratuit)
- **Standard** : Email support (8h-17h, jours ouvrables)
- **Premium** : Support 24/7, phone support
- **Enterprise** : Support dédié, SLA garanti

---

## 👥 Contributeurs

### 🎯 Équipe de Développement

**NeuroPulse Monitor Pro v2.0** est développé par une équipe passionnée d'ingénieurs DevOps et d'administrateurs système.

#### Core Team
- **Architecte Principal** : Conception de l'architecture et supervision technique
- **Développeur Backend** : API REST, monitoring engine, base de données
- **Développeur Frontend** : Interface utilisateur, dashboard, UX/UI
- **Ingénieur DevOps** : Docker, CI/CD, déploiement, infrastructure
- **Spécialiste Sécurité** : Audit sécurité, pentesting, hardening
- **QA Engineer** : Tests automatisés, validation, quality assurance

### 🤝 Comment Contribuer

#### Types de Contributions
- **🐛 Bug Reports** : Signaler des problèmes
- **💡 Feature Requests** : Proposer de nouvelles fonctionnalités  
- **📝 Documentation** : Améliorer la documentation
- **🔧 Code** : Corrections de bugs, nouvelles fonctionnalités
- **🌍 Traductions** : Localisation interface utilisateur
- **🧪 Tests** : Écrire des tests automatisés

#### Processus de Contribution
1. **Fork** le repository
2. **Créer une branche** pour votre fonctionnalité
3. **Développer** avec des tests
4. **Documenter** vos changements
5. **Soumettre** une Pull Request

#### Guidelines de Code
```python
# Style de code Python (PEP 8)
# Docstrings obligatoires pour les fonctions publiques
# Type hints recommandés
# Tests unitaires pour nouvelles fonctionnalités

def get_system_metrics() -> Dict[str, Any]:
    """
    Collecte les métriques système actuelles.
    
    Returns:
        Dict contenant les métriques système avec timestamp
        
    Raises:
        SystemError: Si impossible de collecter les métriques
    """
    pass
```

#### Structure des Commits
```bash
# Format des commits
type(scope): description courte

# Types:
# feat: nouvelle fonctionnalité
# fix: correction de bug
# docs: documentation
# style: formatage
# refactor: refactoring
# test: ajout de tests
# chore: maintenance

# Exemples:
feat(monitoring): add temperature monitoring
fix(api): resolve authentication timeout issue
docs(readme): update installation instructions
```

### 🏆 Hall of Fame

#### Top Contributors
- **@contributor1** - 150+ commits, monitoring engine
- **@contributor2** - 89+ commits, interface utilisateur
- **@contributor3** - 67+ commits, documentation
- **@contributor4** - 45+ commits, tests automatisés
- **@contributor5** - 38+ commits, sécurité

#### Remerciements Spéciaux
- **Beta Testers** : Communauté de 200+ testeurs
- **Documentation Team** : Équipe de rédaction technique
- **Security Researchers** : Audit sécurité et pentesting
- **Open Source Libraries** : Flask, psutil, Chart.js, et autres

### 📋 Roadmap

#### Version 2.1 (Q2 2024)
- 🔌 **Plugins System** : Architecture de plugins extensible
- 📱 **Mobile App** : Application mobile native
- 🌐 **Multi-server** : Monitoring de plusieurs serveurs
- 🤖 **AI Predictions** : Prédictions intelligentes avec ML
- 📊 **Advanced Analytics** : Tableaux de bord personnalisables

#### Version 2.2 (Q3 2024)
- ☁️ **Cloud Integration** : AWS, Azure, GCP monitoring
- 🐳 **Kubernetes** : Support natif Kubernetes
- 🔗 **Intégrations** : Prometheus, Grafana, ELK Stack
- 📧 **Advanced Notifications** : Teams, Discord, PagerDuty
- 🔐 **SSO Integration** : LDAP, SAML, OAuth

#### Version 3.0 (Q4 2024)
- 🏢 **Enterprise Features** : Multi-tenancy, RBAC avancé
- 🌍 **Global Monitoring** : Monitoring géographiquement distribué
- 🤖 **Auto-remediation** : Correction automatique des problèmes
- 📈 **Business Intelligence** : Rapports et analyses avancées
- 🔄 **High Availability** : Clustering et failover automatique

### 🎖️ Reconnaissance

#### Mentions et Awards
- **Best Monitoring Tool 2024** - DevOps Weekly
- **Innovation Award** - Open Source Summit
- **Community Choice** - GitHub Stars (5000+)
- **Security Excellence** - OWASP Recognition

#### Couverture Médias
- **Tech Blogs** : Articles sur 15+ blogs techniques
- **Podcasts** : Interviews dans 8 podcasts DevOps
- **Conférences** : Présentations dans 12 conférences
- **YouTube** : 25+ vidéos tutoriels communauté

### 📜 Licence et Copyright

#### Licence Open Source
```
MIT License

Copyright (c) 2024 NeuroPulse Monitor Pro Team

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

#### Attribution des Dépendances
- **Flask** - BSD-3-Clause License
- **psutil** - BSD-3-Clause License  
- **Chart.js** - MIT License
- **SQLite** - Public Domain
- **Nginx** - BSD-2-Clause License

---

## 📞 Contact et Support

### 🌐 Liens Officiels

- **Site Web** : https://neuropulse.com
- **Documentation** : https://docs.neuropulse.com
- **GitHub** : https://github.com/neuropulse/monitor-pro
- **Docker Hub** : https://hub.docker.com/r/neuropulse/monitor-pro

### 💬 Communauté

- **Forum** : https://community.neuropulse.com
- **Discord** : https://discord.gg/neuropulse
- **Reddit** : r/NeuroPulse
- **Twitter** : @NeuroPulseDev

### 📧 Support Technique

- **Support Gratuit** : GitHub Issues
- **Support Premium** : support@neuropulse.com
- **Support Enterprise** : enterprise@neuropulse.com
- **Sécurité** : security@neuropulse.com

---

**NeuroPulse Monitor Pro v2.0** - *Surveillance Système Intelligente*

*Dernière mise à jour de la documentation : 2024-01-15*