Projet FOXTROT / DCS Games
Hébergement sécurisé d'un tableau de bord PHP / MariaDB de suivi des consommations Cloud, déployé sur une infrastructure Proxmox et publié en HTTPS.
Ce projet Campus IT a été mené en 2e année de BTS SIO avec une logique de répartition claire entre développement applicatif et infrastructure.
Le besoin consistait à publier un dashboard permettant de suivre des indicateurs de consommation Cloud, avec une architecture stable, sécurisée et démontrable à l'oral.
- Pôle SLAM: Raphaël et Ilyes.
- Pôle SISR: Jâsir Bounini-Ghourabi et Adrien.
- Présentation officielle: 5 mars 2026.
J'ai travaillé côté SISR sur l'hébergement, la sécurité et la mise à disposition de l'environnement de production.
- Préparation d'une VM Debian 12 sur Proxmox VE.
- Durcissement SSH, UFW et Fail2Ban.
- Mise en place d'un tunnel WireGuard pour les dépôts du pôle SLAM.
- Publication HTTPS via Nginx Proxy Manager et certificat Let's Encrypt.
- Préparation de la base MariaDB `campus_it` et du compte applicatif dédié.
- Définition d'une stratégie de sauvegarde par snapshots Proxmox et export MariaDB.
Je n'ai pas développé seul le dashboard métier: cette partie relevait du pôle SLAM. Mon rôle a bien porté sur l'infrastructure et son exploitation.
- Hébergement on-premise sur mini PC Intel N150, 16 Go RAM, SSD 512 Go et disque externe 2 To.
- Hyperviseur Proxmox VE.
- VM Debian 12 sans interface graphique, dimensionnée à 2 vCPU, 4 Go de RAM et 30 Go de stockage.
- Nginx Proxy Manager en Docker pour exposer `dcsgames.jasir.fr` en HTTPS.
- Backend Apache / PHP 8.2 sur port interne 8080.
- Base de données MariaDB `campus_it` locale au serveur.
- Politique UFW restrictive: refus par défaut des connexions entrantes.
- Ouverture contrôlée des ports 51820/UDP, 80/TCP et 443/TCP.
- Fail2Ban pour limiter les tentatives de brute force.
- SSH durci: pas de login root, pas de mot de passe, authentification par clés Ed25519.
- WireGuard retenu pour éviter d'exposer SSH et SFTP sur Internet.
- Compte MariaDB dédié à l'application, limité à la base concernée.
Captures du dashboard publié. Un clic sur une image ouvre la visionneuse avec navigation clavier et balayage tactile.
Cette AP m'a permis de travailler sur un vrai enchaînement SISR: hébergement, cloisonnement, publication web, accès distant sécurisé et préparation d'un socle exploitable pour une équipe de développement. Elle montre aussi ma capacité à cadrer précisément mon rôle dans un projet collaboratif.
Contexte et Enjeux
Le projet FOXTROT devait fournir un tableau de bord web capable d'exploiter des données de consommation Cloud, tout en étant hébergé sur une infrastructure que nous maîtrisions de bout en bout. L'enjeu principal était de démontrer une mise en production crédible, sécurisée et collaborative entre le pôle SLAM et le pôle SISR.
Démarche Technique
- Dimensionnement de l'hébergement : choix d'un hébergement on-premise sous Proxmox VE avec VM Debian 12 dédiée.
- Durcissement système : configuration UFW, Fail2Ban et durcissement SSH avec clés Ed25519.
- Canal de déploiement sécurisé : mise en place d'un tunnel WireGuard pour permettre au pôle SLAM de déposer l'application sans exposition directe des accès d'administration.
- Publication web : déploiement de Nginx Proxy Manager en Docker, reverse proxy HTTPS et certificat Let's Encrypt sur le domaine `dcsgames.jasir.fr`.
- Préparation du socle applicatif : base MariaDB `campus_it`, compte applicatif dédié et arborescence web prête pour le dépôt de l'application.
- Protection des données : stratégie de sauvegarde avec snapshots Proxmox et export MariaDB quotidien.
Bilan et Validation E5
Cette réalisation valide ma capacité à héberger une application web dans un cadre proche de la production, à séparer clairement les rôles entre infrastructure et développement, et à sécuriser les accès tout en gardant une chaîne de déploiement simple pour l'équipe projet.
⚙️ Architecture & Déploiement
Les commandes ci-dessous résument le socle de sécurité et de publication mis en place côté SISR pour rendre le service exploitable.
Extraits de configuration
ufw allow 51820/udp
ufw allow 80/tcp
ufw allow 443/tcp
CREATE DATABASE campus_it;
CREATE USER 'app_campus'@'localhost' IDENTIFIED BY '********';
GRANT ALL PRIVILEGES ON campus_it.* TO 'app_campus'@'localhost';