Situation Professionnelle : Mise en place d’un service Cloud sécurisé et résilient (Projet SoluCloud)
Compétences du référentiel visées :
-
1.2 : Exploiter les référentiels
- Justification : Utilisation des standards du web (HTTPS/WebDAV), des standards Linux (FHS pour les logs) et de l'intégrité des données (MD5).
-
1.4 : Vérifier la continuité
- Justification : Mise en place d’un système de sauvegarde externalisé avec vérification d’intégrité (MD5) et tests croisés permettant de garantir la restauration des données dans le respect du RTO.
-
1.5 : Gérer les sauvegardes
- Justification : Automatisation des sauvegardes vers le cloud.
-
1.6 : Vérifier le respect des règles
- Justification : Mise en place du HTTPS obligatoire, de la redirection de sécurité, et surtout de la gestion des secrets (le .gitignore pour protéger les mots de passe)
-
4.1 Analyser les objectifs et les modalités d'organisation d'un projet
- Justification : Définition des rôles dans la Squad (Lead Prod, Backup, Automation) et analyse des besoins de Solutech.
-
4.2 Planifier les activités
- Justification : Utilisation du Board Kanban pour découper le projet en tâches et suivre leur avancement (To Do / Doing / Closed)
-
5.1 Réaliser les tests d'intégration et d'acceptation d'un service
- Justification : Utilisation du Cycle de Cross-Test (B teste C et vice versa) et rédaction du document RECETTE.md
-
5.2 Déployer un service
- Justification : Réalisation de la mise en production finale après validation sur les serveurs de Lab
-
5.3 Accompagner les utilisateurs
- Justification : Rédaction du fichier README.md pour permettre la reprise en main technique du service.
Compétences techniques mobilisées :
-
Administration système Linux (Debian, Apache, MariaDB, PHP)
-
Développement de scripts Bash (automatisation, logs, gestion d’erreurs)
-
Utilisation du protocole WebDAV (transfert de fichiers via curl)
-
Sécurisation des accès (gestion des secrets, droits Linux, HTTPS)
-
Utilisation de GitLab (versioning, board Kanban, gestion collaborative)
-
Application des bonnes pratiques ITIL (continuité de service, traçabilité, gestion des incidents)
Contexte et Objectifs :
Dans le cadre de la fusion entre Solutech et Horizon, l’entreprise a souhaité mettre en place un service de stockage cloud interne nommé SoluCloud, basé sur Nextcloud, afin de centraliser les données et améliorer la collaboration entre les équipes.
Cependant, la perte ou la corruption des données hébergées représenterait un risque majeur pour l’activité. Il est donc nécessaire de garantir la sécurité, la disponibilité et la résilience du service.
L’objectif principal est de déployer une infrastructure fonctionnelle (LAMP + Nextcloud), puis de mettre en place une stratégie de sauvegarde externalisée, respectant la règle 3-2-1.
Enfin, la solution doit être sécurisée, documentée à l'aide d'un fichier README, automatisée et testée, avec une validation complète via une procédure de recette et des tests croisés entre les membres de l’équipe.
Besoins identifiés :
-
Déployer un service cloud interne fonctionnel (Nextcloud)
-
Assurer la protection des données stockées
-
Garantir la disponibilité du service en cas d’incident
-
Mettre en place une sauvegarde externalisée (cloud)
-
Respecter la règle de sauvegarde 3-2-1
-
Sécuriser les accès et les données sensibles
-
Garantir la traçabilité des opérations (logs)
Solution technique retenue :
La solution technique consiste à déployer un serveur Nextcloud sur une architecture LAMP (Linux, Apache, MariaDB, PHP) afin de fournir un service de stockage cloud interne.
Une base de données MariaDB est configurée pour stocker les informations du service, et les fichiers applicatifs sont hébergés sur Apache.
Dans une optique de résilience, un système de sauvegarde externalisé a été mis en place. Celui-ci repose sur un script Bash permettant de transférer automatiquement les sauvegardes du serveur GLPI vers Nextcloud via le protocole WebDAV.
Les identifiants nécessaires à l’authentification sont sécurisés dans un fichier local (~/.nextcloud.creds) protégé par des droits restreints et exclu du versioning grâce à .gitignore, garantissant la confidentialité des accès.
Afin d’assurer l’intégrité des sauvegardes, une empreinte MD5 est générée pour chaque fichier avant son transfert. Cette empreinte permet de vérifier que les données n’ont pas été corrompues lors du transport ou du stockage.
Le système intègre également une journalisation complète des opérations dans un fichier de log, assurant la traçabilité et facilitant le diagnostic en cas d’incident.
Enfin, la solution est validée par des tests croisés (cross-test) entre les membres de l’équipe ainsi que par une procédure de recette formalisée (RECETTE.md), garantissant la conformité et la fiabilité du service.
Travail réalisé :
-
Installation et configuration d’un serveur LAMP (Apache, MariaDB, PHP)
-
Déploiement de l’application Nextcloud sur serveur Debian
-
Création et configuration de la base de données dédiée
-
Mise en place des droits d’accès sur les fichiers
-
Création d’un utilisateur dédié aux sauvegardes sur Nextcloud
-
Mise en place d’un système de stockage distant pour les backups
-
Développement d’un script Bash de transfert automatisé vers le cloud
-
Utilisation du protocole WebDAV pour l’envoi sécurisé des fichiers
-
Sécurisation des identifiants via un fichier .creds local
-
Mise en place d’un .gitignore pour éviter toute fuite de secrets
-
Génération et gestion des empreintes MD5 pour garantir l’intégrité
-
Mise en place d’un système de logs pour assurer la traçabilité
-
Rédaction d’une documentation technique (README-backup.md)
-
Réalisation de tests croisés (audit du script d’un autre membre)
-
Participation à la validation via le fichier RECETTE.md
Travail d’équipe
Le projet a été réalisé par groupe de 3 avec une répartition des rôles :
-
Étudiant A (Production) :
- gestion des quotas utilisateurs
- personnalisation de l’interface (branding)
- validation finale du service (GO / NO-GO)
-
Étudiant B (Automation) :
- développement du script d’installation des plugins
- mise en place du HTTPS et sécurisation Apache
-
Étudiant C (Backup) :
- Mon profil présenté tout au long de cette page de portfolio
Le travail et sa répartition a été organisé via un Kanban GitLab, avec gestion des tickets, versioning et validation collaborative.
Résultats :
La mise en place de cette solution a permis de déployer un service cloud interne fonctionnel, sécurisé et résilient.
L’infrastructure LAMP associée à Nextcloud garantit un accès centralisé aux données, tandis que le système de sauvegarde externalisé permet de protéger efficacement les informations critiques.
L’automatisation du transfert des sauvegardes via script Bash a permis de fiabiliser le processus et de réduire les erreurs humaines, tout en assurant une exécution reproductible.
La mise en place des empreintes MD5 garantit l’intégrité des données sauvegardées, ce qui est essentiel dans un contexte de reprise après incident.
La sécurisation des identifiants via des fichiers locaux protégés et exclus du dépôt Gitlab renforce la protection du système contre les fuites de données sensibles.
Enfin, les tests croisés et la procédure de recette ont permis de valider le bon fonctionnement global du service.
Cette solution répond pleinement aux exigences de continuité de service et de résilience attendues en environnement professionnel.
Preuves de réalisation :
Voici une capture d'écran du board Kanban initial avec chaques tâches présentées sous forme de tickets :
Cette image valide la compétence "1.4 Travailler en mode projet".
Ensuite, voici une capture d'écran du dashboard de Nextcloud avec le dossier backups_glpi de visible (Cette image valide la compétence "1.5 Déployer un service") :
A présent, voici une capture d'écran de mon script de backup avec des log et un fichier MD5 :
Voici maintenant une capture d'écran du fichier README.md fusionné comprenant le readme pour les backups et le readme pour les plugins et le certificat ssl :

Pour continuer, voici une capture d'écran du schéma fais sur draw.io de notre topologie en étoile complète :

Voici également une capture d'écran du board Kanban avec tout els tickets dans la liste closed :

Enfin, voici une capture d'écran du fichier RECETTE validé :
