Skip to content

Étape 1 - Planification et installation Hardware

Tout d'abord, nous définissons les premiers jours ce que nous allons concrètement faire comme projet, l'entreprise à un besoin spécifique :

Définition du projet

Objectif : Concevoir et déployer une solution d'infrastructure réseau et de stockage "clé en main" pour une TPE. Le système offre les capacités d'un NAS professionnel sécurisé, entièrement administrable via une interface web intuitive, sans nécessiter de compétences en ligne de commande pour l'utilisateur final.

1. Infrastructure et Réseau (Virtualisation)

  • Hyperviseur : Serveur physique sous Proxmox VE pour la gestion des ressources.
  • Sécurité Périmétrique : Machine virtuelle pfSense gérant le routage, le pare-feu, le DHCP et le DNS local.
  • Serveur Applicatif : Machine virtuelle Debian isolée derrière pfSense, avec accès direct aux ports USB physiques (passthrough) pour les sauvegardes.

2. Architecture Logicielle (Stack Technique)

  • Système & Monitoring (C) : Développement d'un daemon interagissant avec le noyau pour remonter les métriques de santé (CPU, RAM, SMART) et détecter le branchement de périphériques de stockage (événements udev).
  • Backend & API (Python) : Création d'une API REST (FastAPI/Flask) qui traduit les requêtes web en commandes d'administration système (création d'utilisateurs, modification de /etc/samba/smb.conf, gestion des quotas).
  • Interface Web (JavaScript) : Développement d'un tableau de bord (React ou Vue.js) permettant de piloter le serveur et de visualiser son état en temps réel.
  • Automatisation (Bash / Ansible) : Scripts de déploiement "Zero Touch" pour l'installation complète de l'environnement, et scripts rsync pour les sauvegardes automatisées.

3. Enjeux DevOps et SecOps

  • Déploiement Reproductible : Industrialisation de l'installation de la VM Debian et de l'ensemble de la pile logicielle.
  • Durcissement (Hardening) : Cloisonnement strict du réseau via pfSense, sécurisation locale avec nftables, et principe de moindre privilège appliqué à l'API Python (via une configuration sudoers restreinte).

Planification du projet

Phase 1 : Cadrage, Socle Technique & Infrastructure

Mise en place de l'environnement matériel, réseau et validation des concepts de base.

  • Infrastructure et Virtualisation :
  • Installation et configuration d'un hyperviseur Proxmox VE sur la machine physique hôte.
  • Déploiement d'une machine virtuelle pfSense pour gérer le routage, le service DHCP, le DNS local et le pare-feu en amont de l'infrastructure.
  • Création de la VM "OfficeBox" (Debian Server) isolée derrière le pfSense, avec configuration des adresses IP statiques.
  • Architecture logicielle : * Définition des standards de code, choix des versions (Python, C, Node/JS) et élaboration des contrats d'API (Endpoints REST).
  • Preuve de concept (POC) : * Test manuel de configuration Samba et Rsync sur la VM Debian.
  • Test du "passthrough" USB sous Proxmox pour s'assurer que la VM Debian détecte bien les périphériques physiques branchés au serveur.

Phase 2 : Développement "Bottom-Up" (Briques indépendantes)

Création des composants logiciels isolés.

  • Brique Système & Backend (Dev A) :
  • Développement de l'API REST en Python (FastAPI ou Flask).
  • Création des fonctions d'interaction système : ajout d'utilisateurs (useradd), modification dynamique de /etc/samba/smb.conf, gestion des quotas de stockage et redémarrage des services.
  • Brique Bas Niveau & Hardware (Dev B) :
  • Développement du Daemon en langage C (service systemd).
  • Extraction des métriques de santé de la VM (CPU, RAM, I/O disques via /proc et sysfs).
  • Implémentation de l'écoute des événements udev pour déclencher automatiquement les scripts Bash de sauvegarde (Rsync) lors de la détection d'un montage USB.

Phase 3 : Interface Utilisateur et Intégration

Création du frontend et connexion de tous les modules.

  • Brique Frontend (Dev B ou A) :
  • Maquettage et développement de l'interface d'administration (React ou Vue.js).
  • Implémentation du Dashboard de santé, du panneau de gestion des utilisateurs et du panneau de gestion des partages réseau.
  • Intégration API / Daemon / Front (Dev A et B) :
  • Communication inter-processus : le Daemon C remonte les métriques et alertes (ex: fin de sauvegarde) à l'API Python.
  • Consommation de l'API Python par l'interface web pour un affichage en temps réel.

Phase 4 : Industrialisation DevOps & Sécurité

Automatisation du déploiement et durcissement du système.

  • Scripting de déploiement (Zero Touch) : * Création d'un playbook Ansible ou d'un script Bash d'amorçage pour automatiser l'installation complète de l'application sur une VM Debian vierge (dépendances, compilation du C, services, serveurs web).
  • Sécurité & Hardening (SecOps) :
  • Configuration stricte du pare-feu pfSense (règles NAT/Rules) et du pare-feu local de la VM (nftables / ufw).
  • Isolation des privilèges : exécution de l'API via un utilisateur non-root avec des permissions sudoers granulaires (limitation stricte aux commandes nécessaires).

Phase 5 : Tests Grandeur Nature, Recette et Documentation

Validation finale et préparation des livrables.

  • Tests End-to-End : * Re-déploiement complet automatisé sur une VM vierge.
  • Scénarios de tests réels : simulation d'attaques basiques (pour tester pfSense), montage/démontage de disques USB physiques, tests de charge réseau via les partages Samba.
  • Livrables et Documentation : * Rédaction du README technique et de la documentation de l'API.
  • Création des schémas d'architecture réseau (Proxmox/pfSense/VM).
  • Rédaction du manuel utilisateur simplifié destiné aux employés de la TPE.