Projet Infrastructure

Infrastructure TuxForge

Migration d'une infrastructure auto-hébergée vers une architecture virtualisée sous Proxmox.

Proxmox Debian Docker Authentik Grafana Vaultwarden Forgejo Nextcloud OnlyOffice

5 machines virtuelles

Architecture virtualisée sous Proxmox VE

15+ services déployés

Applications et outils métiers

8 incidents résolus

Diagnostic et résolution documentés

1 semaine de migrations

Validation complète des services

01

Présentation du projet

TuxForge est un projet personnel né de la volonté d'approfondir des technologies peu abordées durant ma formation, notamment Docker, la supervision d'infrastructure et l'auto-hébergement de services.


La première version de l'environnement reposait sur une machine virtuelle Ubuntu 24 hébergée directement sur la solution de virtualisation intégrée à une Freebox. Cette machine disposait de 2 vCPU, 2 Go de mémoire vive et 80 Go de stockage.


Elle hébergeait déjà plusieurs services : Nextcloud ; OnlyOffice ; Grafana ; Prometheus ; Forgejo ; Nginx Proxy Manager ; Uptime Kuma.


Rapidement, l'ajout de nouvelles fonctionnalités et l'augmentation des besoins en ressources ont mis en évidence les limites de cette architecture. Les performances devenaient insuffisantes et la maintenance plus complexe.

Infrastructure initiale sur Freebox
Figure 01 - Infrastructure initiale hébergée sur Freebox.

Une refonte complète de l'infrastructure a alors été entreprise autour de Proxmox VE afin de mettre en place une architecture plus modulaire, évolutive et proche des pratiques professionnelles. Les services ont été répartis dans plusieurs machines virtuelles spécialisées selon leur fonction (monitoring, gestion des identités, DevOps, sécurité et collaboration).


Cette évolution a transformé un simple laboratoire d'apprentissage en une véritable plateforme technique, servant à la fois d'environnement d'expérimentation, de support de formation continue et de portfolio professionnel.


TuxForge peut être défini comme une infrastructure auto-hébergée basée sur des logiciels libres, conçue comme laboratoire d'apprentissage, environnement de production personnel et démonstrateur de compétences en administration systèmes et réseaux.


Aujourd'hui, TuxForge s'inscrit dans une démarche privilégiant les technologies open source et l'auto-hébergement. Au-delà de l'aspect pédagogique, le projet vise à démontrer qu'il est possible de construire une infrastructure moderne, fonctionnelle et collaborative en s'appuyant majoritairement sur des solutions libres. Cette approche permet de conserver la maîtrise des données, de comprendre le fonctionnement des services déployés et de limiter la dépendance à des plateformes propriétaires

02

Contexte et Objectifs

Besoins


L'objectif initial était de disposer d'un environnement technique permettant d'approfondir des technologies peu ou pas abordées durant la formation, notamment la conteneurisation avec Docker, la supervision d'infrastructure et l'auto-hébergement de services.


Le projet devait également répondre à plusieurs besoins :

  • Centraliser et publier les travaux réalisés durant la formation.
  • Constituer un portfolio technique accessible aux recruteurs.
  • Disposer d'un environnement de test permanent pour expérimenter de nouvelles technologies.
  • Développer des compétences en virtualisation et en administration Linux.
  • Héberger des services personnels de manière autonome.
  • Réduire progressivement la dépendance aux services cloud propriétaires.

À terme, l'infrastructure doit également permettre de proposer des services collaboratifs à d'autres utilisateurs, notamment dans un cadre associatif.


Contraintes


Contraintes matérielles

Le projet repose sur une infrastructure auto-hébergée à domicile utilisant du matériel personnel.

Les ressources matérielles étant limitées, l'architecture devait être conçue de manière à optimiser l'utilisation du processeur, de la mémoire et du stockage tout en conservant une bonne évolutivité.


Contraintes budgétaires

Le projet étant réalisé à titre personnel, les coûts de mise en œuvre devaient rester maîtrisés.

Cette contrainte a orienté le choix vers des solutions open source et gratuites lorsque cela était possible.


Contraintes d'exploitation

L'ensemble de l'infrastructure est administré par une seule personne.

Les solutions retenues devaient donc privilégier :

  • La simplicité de maintenance.
  • La facilité de sauvegarde.
  • La facilité de restauration.
  • La documentation des procédures.

Objectifs techniques


Afin de répondre aux besoins identifiés, plusieurs objectifs techniques ont été définis :


Virtualisation

  • Déployer un hyperviseur de type 1.
  • Isoler les services dans plusieurs machines virtuelles spécialisées.
  • Faciliter les sauvegardes et les opérations de maintenance.

Conteneurisation

  • Utiliser Docker pour simplifier le déploiement des applications.
  • Standardiser les procédures d'installation et de mise à jour.
  • Améliorer l'isolation des services.

Supervision

  • Mettre en place une supervision complète de l'infrastructure.
  • Centraliser les métriques système et applicatives.
  • Disposer de tableaux de bord temps réel.

Gestion des identités

  • Centraliser l'authentification des applications.
  • Mettre en œuvre une solution de Single Sign-On (SSO).
  • Simplifier la gestion des utilisateurs.

Collaboration

  • Déployer une plateforme de partage de fichiers.
  • Mettre à disposition des outils bureautiques collaboratifs.
  • Préparer l'ouverture future de certains services à d'autres utilisateurs.

Documentation

  • Produire une documentation technique complète de l'infrastructure.
  • Conserver les procédures de déploiement et de maintenance.
  • Valoriser les compétences acquises dans le cadre du portfolio TuxForge.

Critères de réussite


Le projet sera considéré comme opérationnel lorsque les objectifs suivants seront atteints :

  • Les services sont accessibles depuis Internet de manière sécurisée.
  • Les données sont sauvegardées régulièrement.
  • Les ressources système sont supervisées en temps réel.
  • Les applications critiques sont protégées par une authentification centralisée.
  • L'infrastructure est suffisamment documentée pour permettre sa maintenance et son évolution.
  • La plateforme peut servir à la fois d'environnement personnel, de laboratoire d'apprentissage et de support de présentation professionnelle.
  • Les services sont répartis dans une architecture modulaire facilitant leur maintenance et leur évolution.
03

Infrastructure matérielle

L'infrastructure TuxForge repose sur une architecture virtualisée hébergée sur un serveur personnel.

L'ensemble des services est réparti dans plusieurs machines virtuelles spécialisées afin de faciliter la maintenance, la sécurité et l'évolution de la plateforme. Cette organisation permet de séparer les différents rôles métier tout en conservant une administration centralisée.


Infrastructure physique


L'infrastructure TuxForge repose sur un serveur personnel auto-hébergé conçu à partir de composants grand public. Ce choix permet de disposer d'un environnement d'expérimentation performant tout en conservant un budget maîtrisé.


Configuration matérielle


Composant Configuration
Carte mère Gigabyte GA-AX370-Gaming K3
Processeur AMD Ryzen 7 1700
Cœurs/Threads 8 cœurs / 16 threads
Mémoire vive 16 Go DDR4
Carte graphique NVIDIA GeForce GTX 970
Disque système SSD M.2 SATA 128 Go
Stockage machines virtuelles SSD SATA 500 Go
Stockage sauvegardes HDD SATA 1 To

Cette configuration offre un compromis intéressant entre performances, coût d'exploitation et évolutivité pour un environnement de laboratoire et de production personnelle.


Hyperviseur


L'ensemble de l'infrastructure est virtualisé à l'aide de Proxmox VE.


Configuration


Éléments Valeur
Hyperviseur Proxmox VE
Version 9.2.3
Noyau Linux 7.0.6-2
Adresse IP 192.168.1.50

Réseau


L'infrastructure est hébergée derrière une connexion Internet résidentielle.


Équipements réseau


Éléments Adresse
Routeur / Passerelle 192.168.1.254
Hyperviseur Proxmox 192.168.1.50

Le domaine principal utilisé est :

tuxforge.eu

Les services sont publiés sur Internet via un reverse proxy centralisé.


Organisation des machines virtuelles


L'architecture a été conçue selon une logique de séparation fonctionnelle. Chaque machine virtuelle héberge un ensemble de services partageant un même rôle métier.

Cette approche facilite la maintenance, la supervision et l'évolution de l'infrastructure.


Machines virtuelles déployées


VM Nom IP RAM CPU Disque Fonction
101 Monitoring 192.168.1.101 2 Go 2 40 Go Supervision
102 IAM 192.168.1.102 2 Go 2 40 Go Authentification et publication
103 DevOps 192.168.1.103 1 Go 1 50 Go Forge Git
104 Sécurité 192.168.1.104 1 Go 1 30 Go Gestion des mots de passe
105 Collaboration 192.168.1.105 4 Go 4 150 Go Partage documentaire

Les cinq machines virtuelles présentées ci-dessus constituent l'environnement de production actuel de TuxForge. Cette organisation permet d'isoler les différents services selon leur rôle fonctionnel tout en facilitant leur maintenance et leur évolution.

04

Architecture logique

Architecture logique de TuxForge
Figure 02 — Architecture logique de l'infrastructure TuxForge.

Philosophie du projet


TuxForge a été conçu selon une approche privilégiant les logiciels libres, l'auto-hébergement et la maîtrise des données.

L'objectif n'était pas uniquement de créer un laboratoire d'apprentissage, mais également de démontrer qu'il est possible de construire une infrastructure moderne à partir de solutions open source tout en conservant le contrôle de ses services et de ses informations.

Cette philosophie se retrouve dans l'ensemble des choix techniques réalisés au cours du projet :

  • Debian comme système d'exploitation ;
  • Proxmox VE comme hyperviseur ;
  • Docker pour la conteneurisation ;
  • Nextcloud pour le stockage collaboratif ;
  • OnlyOffice pour l'édition de documents ;
  • Forgejo pour la gestion de code ;
  • Vaultwarden pour la gestion des mots de passe ;
  • Authentik pour l'authentification centralisée ;
  • Grafana et Prometheus pour la supervision.

Au-delà de l'aspect technique, cette démarche vise également à réduire progressivement la dépendance aux services propriétaires et à favoriser l'utilisation de solutions libres et auto-hébergées.


Choix de l'hyperviseur


Pourquoi Proxmox VE ?

La première version de TuxForge reposait sur une unique machine virtuelle hébergée directement sur la plateforme de virtualisation intégrée à la Freebox.

Avec l'ajout progressif de nouveaux services, cette architecture a rapidement montré ses limites en termes de performances, de maintenance et d'évolutivité.

Le choix de Proxmox VE a permis de répondre à plusieurs besoins :

  • Isolation des services.
  • Création de plusieurs machines virtuelles spécialisées.
  • Gestion simplifiée des sauvegardes.
  • Administration centralisée.
  • Évolution future de l'infrastructure.

Proxmox a également été retenu pour son caractère open source, sa gratuité et sa large adoption dans les environnements professionnels.


Organisation du stockage


Une attention particulière a été portée à la séparation des usages afin de simplifier l'administration et d'améliorer les performances.

Le SSD M.2 est dédié à l'hyperviseur Proxmox et à ses composants système.

Le SSD de 500 Go est réservé aux disques des machines virtuelles afin de garantir de bonnes performances d'accès aux données.

Le disque dur de 1 To est utilisé pour le stockage des sauvegardes Proxmox ainsi que pour l'archivage des images ISO et des ressources nécessaires aux déploiements.

Cette organisation permet de limiter l'impact des opérations de sauvegarde sur les performances des services en production.


Répartition logique des stockages

Stockage Support Usage
local SSD M.2 128 Go ISO, templates et fichiers système
local-lvm SSD M.2 128 Go Stockage système Proxmox
vmdata SSD SATA 500 Go Disques des machines virtuelles
storage HDD SATA 1 To Sauvegardes et archivage

Choix du système d'exploitation


Pourquoi Debian 13 ?

L'ensemble des machines virtuelles de l'infrastructure repose sur Debian.

J’ai choisi Debian pour plusieurs raisons :

  • Distribution largement utilisée dans les environnements serveurs.
  • Grande stabilité des versions publiées.
  • Consommation de ressources limitée.
  • Documentation abondante.
  • Large compatibilité avec les solutions déployées.

L'utilisation d'une même distribution sur l'ensemble des serveurs simplifie également l'administration, les mises à jour et la maintenance quotidienne.


Choix de Docker


La majorité des applications sont déployées sous forme de conteneurs Docker.

J’ai choisi Docker car cela permet :

  • D'isoler les applications.
  • De simplifier les mises à jour.
  • De reproduire facilement les déploiements.
  • De limiter les conflits entre services.
  • De faciliter les sauvegardes et les restaurations.

Docker constitue également une compétence largement utilisée dans les infrastructures modernes et représentait un axe d'apprentissage important du projet.


Organisation par domaines fonctionnels


Plutôt que d'héberger l'ensemble des services dans une seule machine virtuelle, l'infrastructure a été organisée autour de plusieurs domaines fonctionnels.

Chaque machine virtuelle regroupe des services partageant un même rôle.


Domaine Fonction
Monitoring Supervision et disponibilité
IAM Authentification et publication des services
DevOps Gestion du code et documentation
Sécurité Gestion des mots de passe
Collaboration Partage de fichiers et travail collaboratif

Cette organisation facilite :

  • La maintenance.
  • La supervision.
  • Le diagnostic des incidents.
  • Les évolutions futures de l'infrastructure.

Elle s'inspire également des pratiques couramment rencontrées dans les environnements professionnels.


Choix des solutions applicatives


Authentik

L'infrastructure comporte plusieurs applications accessibles via le web.

La multiplication des comptes utilisateurs aurait rendu l'administration plus complexe et moins confortable au quotidien.

J’ai donc choisi Authentik afin de mettre en place un système d'authentification centralisé permettant de simplifier l'accès aux différents services grâce au Single Sign-On (SSO).

Cette solution améliore à la fois l'expérience utilisateur et la gestion des accès.


Nextcloud et OnlyOffice

L'un des objectifs du projet était de réduire progressivement la dépendance aux services cloud propriétaires.

J’ai choisi Nextcloud afin de disposer d'une plateforme de stockage et de synchronisation de fichiers auto-hébergée.

L'intégration d'OnlyOffice permet d'ajouter des fonctionnalités collaboratives comparables à celles proposées par les suites bureautiques en ligne traditionnelles.

Cette plateforme constitue aujourd'hui le principal espace de partage documentaire de l'infrastructure.


Forgejo

La mise en place d'une forge logicielle faisait partie des objectifs d'apprentissage du projet.

J’ai choisi Forgejo pour son caractère open source et sa simplicité de déploiement.

Cette solution permet de centraliser les dépôts Git liés aux projets personnels et aux documentations produites dans le cadre de la formation.


Vaultwarden

La gestion sécurisée des mots de passe représentait un besoin important.

Avant la mise en place de Vaultwarden, les identifiants étaient principalement stockés dans les navigateurs ou dans des services tiers.

J’ai choisi Vaultwarden car il permet de conserver la maîtrise des données sensibles tout en bénéficiant des fonctionnalités d'un gestionnaire de mots de passe moderne accessible depuis différents appareils.


Grafana et Prometheus

La supervision constitue un élément essentiel de l'infrastructure.

J’ai donc choisi Prometheus qui collecte les métriques des serveurs, des machines virtuelles et des conteneurs Docker.

Puis Grafana qui permet ensuite de visualiser ces informations à travers des tableaux de bord facilitant le suivi des performances et le diagnostic des incidents.


Architecture logique


L'infrastructure est organisée autour d'un hyperviseur Proxmox hébergeant cinq machines virtuelles spécialisées.

Chaque machine virtuelle possède un rôle clairement défini et communique avec les autres services lorsque cela est nécessaire.

Cette architecture permet de concilier simplicité d'administration, modularité et évolutivité tout en conservant une consommation de ressources adaptée au matériel disponible.


Conclusion


En moins de trois semaines, le projet est passé d'une simple machine virtuelle hébergée sur une Freebox à une infrastructure virtualisée sous Proxmox composée de cinq machines virtuelles spécialisées et de plus de quinze services auto-hébergés.

05

Déploiement & Migration

Préparation de l'infrastructure physique

Contexte

La première version de TuxForge était hébergée sur une machine virtuelle Ubuntu exécutée directement sur la plateforme de virtualisation intégrée à la Freebox.

Bien que cette solution ait permis de découvrir rapidement plusieurs technologies, elle a rapidement montré ses limites lorsque de nouveaux services ont été ajoutés à l'infrastructure.

L'augmentation du nombre d'applications, l'apparition de besoins en supervision ainsi que la volonté de disposer d'un environnement plus proche des standards professionnels ont conduit à envisager une migration vers un serveur dédié.

Infrastructure initiale sur Freebox
Figure 03 - Infrastructure initiale hébergée sur Freebox.
Réutilisation d'un ancien poste de travail

Afin de limiter les coûts du projet, j’ai choisi de réutiliser un ancien ordinateur personnel devenu inutilisé après l'acquisition d'un nouvel ordinateur portable pour ma formation.

Cette approche présentait plusieurs avantages :

  • Aucun investissement matériel supplémentaire.
  • Ressources largement supérieures à celles disponibles sur la plateforme de virtualisation de la Freebox.
  • Possibilité d'exécuter plusieurs machines virtuelles simultanément.
  • Évolutivité future de l'infrastructure.

Configuration retenue


Le projet a été migré sur un ancien poste de travail personnel équipé d'un processeur AMD Ryzen 7 1700, de 16 Go de mémoire vive et de plusieurs supports de stockage dédiés au système, aux machines virtuelles et aux sauvegardes.

Le détail complet de la configuration matérielle est présenté dans le chapitre Matériel.


Validation de la plateforme


Avant le déploiement de l'hyperviseur, plusieurs vérifications ont été réalisées :

  • Contrôle du bon fonctionnement du matériel.
  • Vérification du support de la virtualisation AMD-V.
  • Contrôle de l'état des supports de stockage.
  • Mise à jour des paramètres du BIOS lorsque nécessaire.

Après validation du matériel et de la compatibilité avec la virtualisation matérielle AMD-V, le serveur était prêt à recevoir l'hyperviseur Proxmox VE, première étape de la construction de la nouvelle infrastructure.

Installation de Proxmox VE

Proxmox VE a été installé sur le SSD M.2 dédié au système afin de séparer l'hyperviseur des données de production et des sauvegardes.

L'installation a été réalisée à partir de l'image officielle de Proxmox VE.

Le système a été installé sur le SSD M.2 de 128 Go afin de réserver les autres supports de stockage aux machines virtuelles et aux sauvegardes.

Une fois l'installation terminée, l'interface d'administration était accessible sur le réseau local à l'adresse :

192.168.1.50


Configuration des dépôts


Par défaut, Proxmox utilise les dépôts Enterprise nécessitant une souscription.

Dans le cadre de ce projet personnel, ces dépôts ont été désactivés au profit du dépôt communautaire « No Subscription ».

Cette configuration permet de bénéficier des mises à jour tout en utilisant la version libre de la plateforme.

Actions réalisées

  • Désactivation du dépôt Enterprise.
  • Activation du dépôt No Subscription.
  • Vérification de la connectivité aux dépôts.
  • Mise à jour de l'ensemble des paquets système.
Configuration des dépôts dans Proxmox VE
Figure 04 - Configuration des dépôts dans Proxmox VE.

Mise à jour de l'hyperviseur


Une mise à jour complète a ensuite été effectuée afin de disposer des dernières corrections de sécurité et améliorations disponibles.

Cette étape a permis de garantir un environnement stable avant le déploiement des machines virtuelles.


Installation d'outil complémentaire


Glances

Afin de disposer d'une vision rapide de l'état du serveur directement depuis le terminal, j’ai choisi d’installer l'outil Glances.

# apt install glances

Cet outil permet notamment de surveiller :

  • La charge processeur.
  • L'utilisation de la mémoire.
  • L'activité disque.
  • Les interfaces réseau.
  • Les processus actifs.

Cette supervision locale complète les outils de monitoring déployés par la suite dans l'infrastructure.

Glances
Figure 05 - Visualisation dans Glances.

Configuration des espaces de stockage


Après l'installation de Proxmox VE, les différents supports de stockage ont été intégrés à l'hyperviseur afin de séparer les usages et de faciliter l'administration de l'infrastructure.

Disques physique Proxmox VE
Figure 06 - Visualisation des disques physique dans Proxmox VE.

Le SSD M.2 utilisé pour l'installation de Proxmox héberge les espaces de stockage local et local-lvm, utilisés respectivement pour les images ISO, les modèles de machines virtuelles et les composants système de l'hyperviseur.


Un second espace de stockage nommé vmdata a été créé sur le SSD de 500 Go afin d'héberger les disques des machines virtuelles. Ce choix permet de bénéficier de meilleures performances pour les services en production.


Enfin, un espace de stockage nommé storage a été configuré sur le disque dur de 1 To dédié aux sauvegardes. Cette séparation permet d'isoler les opérations de sauvegarde des disques utilisés par les machines virtuelles.


Voir le tableau "Répartition logique des stockages" dans le chapitre 04
Stockages dans Proxmox VE
Figure 07 - Visualisation des stockages dans Proxmox VE.

Validation


À l'issue de cette étape :

  • L'hyperviseur était opérationnel.
  • Les dépôts étaient configurés.
  • Le système était entièrement mis à jour.
  • Les espaces de stockage étaient disponibles.
  • Les outils de supervision locale étaient installés.
  • L'interface d'administration était accessible depuis le réseau local.

L'infrastructure était alors prête à accueillir les premières machines virtuelles.


Retour d'expérience


Lors de la première version hébergée sur la Freebox, l'ensemble des données était regroupé sur un même espace de stockage. La migration vers Proxmox a été l'occasion d'adopter une organisation plus structurée. Cette séparation des usages apporte aujourd'hui une meilleure lisibilité de l'infrastructure et simplifie les opérations de maintenance et de sauvegarde.

Création des Machines Virtuelles

Une fois l'hyperviseur opérationnel, les différentes machines virtuelles nécessaires à l'infrastructure ont été créées.


L'objectif était de répartir les services dans plusieurs environnements spécialisés afin de faciliter leur administration, leur supervision et leur évolution. Conformément à l'architecture logique définie au chapitre 04, cinq machines virtuelles spécialisées ont été créées.


Les cinq machines virtuelles ont ainsi été déployées :

VMID Domaine Fonction
101 Monitoring Supervision et disponibilité
102 IAM Authentification et publication des services
103 DevOps Gestion du code et documentation
104 Sécurité Gestion des mots de passe
105 Collaboration Partage de fichiers et travail collaboratif
Liste des VM
Figure 08 - Liste des VM sur Proxmox VE.

Standardisation de la configuration


Afin de simplifier l'administration future de l'infrastructure, les machines virtuelles ont été créées selon une configuration homogène.

Les paramètres suivants ont été retenus :

  • Virtualisation KVM
  • Contrôleur disque VirtIO SCSI
  • Interface réseau VirtIO
  • QEMU Guest Agent
  • Démarrage automatique des VM
Options des VM
Figure 09 - Options de configuration des VM.

Attribution des ressources


Les ressources ont ensuite été réparties en fonction du rôle de chaque machine virtuelle. Les besoins de chaque serveur étant différents, les ressources processeur, mémoire et stockage ont été adaptées en fonction des services prévus.


VMID RAM CPU Disque Domaine
101 2 Go 2 40 Go Monitoring
102 2 Go 2 40 Go IAM
103 1 Go 1 50 Go DevOps
104 1 Go 1 30 Go Sécurité
105 4 Go 4 150 Go Collaboration

Cette répartition a été réalisée en tenant compte des besoins estimés des services hébergés tout en restant compatible avec les ressources disponibles sur le serveur physique.

Configuration de la VM101
Figure 10 - Configuration matériel de la VM101.

Validation


À l'issue de cette étape :

  • Les cinq machines virtuelles étaient créées.
  • Les ressources matérielles étaient attribuées.
  • Les paramètres de virtualisation étaient configurés.
  • L'environnement était prêt à recevoir les systèmes Debian.

Retour d'expérience


Chaque machine virtuelle a été créée manuellement afin de mieux comprendre les différentes étapes de déploiement et de configuration sous Proxmox VE. Cette approche a nécessité davantage de temps mais a permis de mieux appréhender le fonctionnement de l'hyperviseur et des différents paramètres de virtualisation.


Avec le recul, une approche basée sur un modèle Debian (template) suivi de clones aurait permis d'accélérer considérablement le déploiement tout en garantissant une meilleure homogénéité des configurations. Cette méthode serait privilégiée dans le cadre d'un futur projet similaire.

Installation de Debian 13

Une fois les machines virtuelles créées, le système d'exploitation Debian 13 a été installé sur chacune d'entre elles.

J’ai fait le choix d’utiliser Debian pour l'ensemble de l'infrastructure afin de simplifier l'administration, les mises à jour et la maintenance quotidienne tout en garantissant un environnement homogène.

Chaque installation a été réalisée à partir de l'image ISO officielle de Debian en sélectionnant une installation minimale adaptée à un usage serveur.

Installation Debian 13
Figure 11 - Installation de Debian 13 sur une VM.

Standardisation des serveurs


Afin de garantir une configuration homogène sur l'ensemble des machines virtuelles, j’ai développé un script d'installation exécuté après chaque déploiement Debian.

Ce script permet d'automatiser l'installation et la configuration des composants communs à l'ensemble de l'infrastructure.

Les actions réalisées comprennent notamment :

  • Installation des mises à jour système.
  • Installation de Docker.
  • Installation de Docker Compose.
  • Installation d'outils d'administration courants.
  • Configuration de certains paramètres communs aux serveurs.

Cette approche permet de réduire le temps de préparation des machines tout en garantissant une base logicielle identique sur l'ensemble de l'environnement.

Script d'installation
Figure 12 - Mon script d'installation des composants communs.

Configuration réseau


Après l'installation du système, chaque machine virtuelle a été configurée avec une adresse IP statique afin de garantir un adressage stable au sein de l'infrastructure.

Les adresses ont été attribuées selon une convention simple facilitant leur identification, ici le dernier octet correspondant à l'ID de la VM :


VM Adresse IP
Monitoring 192.168.1.101
IAM 192.168.1.102
DevOps 192.168.1.103
Sécurité 192.168.1.104
Collaboration 192.168.1.105

La passerelle utilisée est l'adresse du routeur principal :

192.168.1.254


# nano /etc/network/interfaces
Configuration IP
Figure 13 - Fichier de configuration IP dans Debian.

Configuration des identités système


Afin de faciliter l'administration de l'infrastructure, chaque serveur a reçu un nom d'hôte correspondant à son rôle fonctionnel : Monitoring ; IAM ; DevOps ; Sécurité ; Collaboration.

Cette convention simplifie l'identification des machines lors des opérations de maintenance, de supervision et de dépannage.

ID du Serveur IAM
Figure 14 - Configuration ID du Serveur IAM.

Configuration de l'accès distant


Le service SSH a été installé et configuré sur l'ensemble des serveurs afin de permettre leur administration à distance.

Les paramètres par défaut ont été adaptés afin d'améliorer la sécurité et le confort d'administration.

Actions réalisées :

  • Installation du service OpenSSH.
  • Modification du port d'écoute.
  • Vérification de l'accès distant.
  • Tests de connexion depuis le poste d'administration.

# nano /etc/ssh/sshd_config
Configuration SSH
Figure 15 - Fichier de configuration SSH dans Debian.

Validation


À l'issue de cette étape :

  • Les cinq machines virtuelles disposaient d'un système Debian opérationnel.
  • Les adresses IP étaient configurées et accessibles sur le réseau.
  • Les noms d'hôtes étaient définis.
  • L'administration distante via SSH était fonctionnelle.
  • Les systèmes étaient entièrement mis à jour.
  • Docker et les outils communs étaient installés sur l'ensemble des serveurs.

L'environnement était alors prêt à recevoir les composants nécessaires au déploiement des différents services.


Retour d'expérience


Bien que j’ai installé les machines virtuelles manuellement, la mise en place de mon script de préparation commun a permis d'automatiser une partie des tâches répétitives. Cette démarche a constitué une première approche de la standardisation des déploiements et m’a permis de réduire les écarts de configuration entre les différents serveurs de l'infrastructure.

Configuration des sauvegardes Proxmox

Les sauvegardes ont été configurées directement depuis Proxmox VE.

Les paramètres retenus sont les suivants :

  • Sauvegarde automatique quotidienne.
  • Stockage des sauvegardes sur le disque dédié « storage ».
  • Sauvegarde complète des machines virtuelles.
  • Conservation de plusieurs versions.
Sauvegarde automatique
Figure 16 - Tâche de sauvegarde automatique.
Détails de la sauvegarde automatique
Figure 17 - Détail de la sauvegarde automatique.

Validation


À l'issue de cette étape :

  • Les sauvegardes automatiques étaient opérationnelles.
  • Les archives étaient stockées sur un support distinct des machines virtuelles.
  • Les restaurations pouvaient être réalisées depuis l'interface Proxmox.
Historique de sauvegarde
Figure 18 - Historique des sauvegardes.

Retour d'expérience


La mise en place des sauvegardes dès le début du projet s'est révélée particulièrement utile lors des différentes phases de test et de migration. Cette démarche m'a permis de travailler plus sereinement tout en limitant les risques liés aux erreurs de configuration ou aux manipulations involontaires.

Installation de Docker

Bien que Docker soit installé automatiquement par le script de préparation exécuté sur chaque machine virtuelle, j’ai réalisé une phase de validation afin de vérifier le bon fonctionnement du moteur de conteneurisation sur l'ensemble des serveurs.

Les versions installées ont été contrôlées et les services Docker ont été activés au démarrage afin de garantir leur disponibilité après un redémarrage.


$ docker --version
$ docker compose version
# systemctl status docker
Version de Docker
Figure 19 - Version de Docker installé.

Organisation des services


Afin de faciliter l'administration et la maintenance de l'infrastructure, j’ai organisé les applications dans des répertoires dédiés sur chaque machine virtuelle.

Chaque service dispose de son propre dossier contenant :

  • Le fichier docker-compose.yml
  • Les fichiers de configuration
  • Les volumes persistants
  • Les éventuels scripts complémentaires

Cette organisation permet de simplifier les sauvegardes, les mises à jour et le dépannage des applications.


Arborescence type :

/opt/docker/
├── monitoring
├── authentik
├── forgejo
├── vaultwarden
├── nextcloud
└── ...
Organisation dossiers
Figure 20 - Organisation des dossiers.

Utilisation de Docker Compose


L'ensemble des applications a été déployé à l'aide de Docker Compose.

Cette approche permet de décrire l'intégralité d'un service dans un fichier unique contenant :

  • Les images utilisées
  • Les variables d'environnement
  • Les ports exposés
  • Les volumes persistants
  • Les réseaux Docker

L'utilisation de Docker Compose facilite la reproductibilité des déploiements et simplifie les opérations de maintenance.


$ docker compose up -d
Fichier docker_compose.yml
Figure 21 - Exemple du fichier docker_compose.yml.

Validation


À l'issue de cette étape :

  • Docker était opérationnel sur l'ensemble des serveurs.
  • Docker Compose était disponible sur chaque machine virtuelle.
  • Les services pouvaient être déployés à partir de fichiers Compose.
  • L'organisation des répertoires était standardisée.
  • L'environnement était prêt à accueillir les applications de l'infrastructure.
  • Les conteneurs démarraient automatiquement avec les serveurs.
Résultat de la commande docker ps
Figure 22 - Résultat de la commande "docker ps".

Retour d'expérience


La découverte de Docker constituait l'un des principaux objectifs d'apprentissage du projet. Son utilisation quotidienne m'a permis de mieux comprendre les mécanismes de conteneurisation et les bonnes pratiques associées.

L'utilisation de Docker Compose s'est révélée particulièrement utile pour maintenir une organisation cohérente entre les différents serveurs et simplifier la gestion des applications. Avec le recul, Docker représente aujourd'hui l'une des technologies ayant apporté le plus de valeur au projet, tant sur le plan technique que sur le plan pédagogique.

Migration des services vers l'architecture Proxmox

Une fois l'infrastructure de base opérationnelle (Proxmox, machines virtuelles, Debian, sauvegardes et environnement Docker), j'ai pu débuter la migration des différents services vers la nouvelle architecture.

Lors de la première version de TuxForge, l'ensemble des applications était hébergé sur une unique machine virtuelle Ubuntu exécutée sur la plateforme de virtualisation intégrée à la Freebox. Cette architecture m'a permis de découvrir de nombreuses technologies et de valider les premiers services du projet. Toutefois, avec l'ajout progressif de nouvelles applications, ses limites sont rapidement apparues en matière de performances, de maintenance et d'évolutivité.

Infrastructure initiale sur Freebox
Figure 23 - Infrastructure initiale hébergée sur Freebox.

La mise en place de la nouvelle infrastructure sous Proxmox m'a permis de repenser entièrement l'organisation des services. Plutôt que de réaliser une migration globale, j'ai choisi de migrer chaque environnement fonctionnel individuellement afin de valider son fonctionnement avant de poursuivre avec les services suivants.

Cette approche m'a permis de limiter les risques, de faciliter le diagnostic des éventuels problèmes et de mieux comprendre les interactions entre les différents composants de l'infrastructure.


Préparation de la migration


Avant toute opération de migration, j'ai arrêté les conteneurs Docker afin de garantir la cohérence des données et d'éviter toute modification pendant la sauvegarde.


$ docker compose down

Les répertoires contenant les fichiers de configuration, les volumes Docker et les données persistantes ont ensuite été archivés.


$ tar -czf monitoring.tar.gz /home/vincent/docker
Contenu monitoring.tar.gz
Figure 24 - Contenu de l'archive monitoring.tar.gz.

Transfert des données


Une fois l'archive créée, j'ai transféré celle-ci vers sa nouvelle machine virtuelle hébergée sur Proxmox en utilisant le protocole SSH.

Cette méthode a permis de conserver l'intégralité de la configuration ainsi que les données nécessaires au redémarrage des services.


$ scp monitoring.tar.gz root@192.168.1.101:/opt/docker
Transfert SSH
Figure 25 - Exemple de transfert SSH avec le fichier prometheus.tar.gz.

Validation


Chaque migration était validée en vérifiant :

  • la présence de l'archive sur la machine virtuelle de destination ;
  • l'intégrité des fichiers transférés ;
  • la présence des répertoires et fichiers attendus dans l'archive ;
  • la disponibilité des données nécessaires à la restauration du service.

Retour d'expérience


Cette méthode de travail m’a permis de me familiariser avec les commandes d’archivage et de transfert. La vérification systématique des archives avant leur transfert a permis de limiter les risques de perte de configuration lors des étapes suivantes.

Les sections suivantes présentent les différentes opérations de restauration, de reconfiguration et de remise en service réalisées pour chaque environnement fonctionnel.

VM101 Monitoring

Restauration des données


L'environnement Monitoring a été le premier à être migré vers la nouvelle infrastructure. Ce choix m'a permis de disposer rapidement d'outils de supervision afin de suivre l'état des nouvelles machines virtuelles pendant la suite du projet.

Après le transfert de l'archive vers la machine virtuelle dédiée au monitoring, j'ai procédé à son extraction puis à la restauration de l'arborescence Docker utilisée sur l'ancienne infrastructure.


$ tar -xzf monitoring.tar.gz

L'ensemble des fichiers de configuration ainsi que les données persistantes de Grafana, Prometheus et Uptime Kuma ont ainsi été restaurés.


Remise en service des applications


Une fois les données restaurées, j'ai vérifié le contenu du fichier docker-compose.yml.

Fichier docker_compose.yml de monitoring
Figure 26 - Fichier "docker_compose.yml" de monitoring.

Après vérification de la configuration, les conteneurs ont été redémarrés à l'aide de Docker Compose.


docker compose up -d

Les applications concernées étaient :

  • Grafana ;
  • Prometheus ;
  • Uptime Kuma.
docker ps VM101
Figure 27 - Résultat de la commande "docker ps" sur la VM101.

Adaptation de la supervision


La migration vers une architecture composée de plusieurs machines virtuelles a nécessité une évolution de la supervision.

Sur l'ancienne machine Ubuntu, l'ensemble des services étant hébergé sur un seul serveur, Prometheus collectait directement les métriques locales.

Avec la nouvelle architecture, l'environnement de supervision a été isolé dans une machine virtuelle dédiée afin de centraliser la collecte et l'analyse des métriques.

J'ai également déployé Node Exporter et cAdvisor sur les différentes machines virtuelles afin de permettre la collecte centralisée des métriques système et Docker.

J'ai ensuite adapté la configuration de Prometheus afin d'ajouter les nouvelles cibles de supervision.

Fichier prometheus.yml de monitoring
Figure 28 - Fichier "prometheus.yml" de monitoring.

Mise à jour du reverse proxy


Après la migration des services, j'ai reconfiguré Nginx Proxy Manager afin que les sous-domaines pointent vers la nouvelle machine virtuelle Monitoring.

Les redirections suivantes ont notamment été mises à jour :


Sous-domaine Destination
grafana.tuxforge.eu 192.168.1.101
status.tuxforge.eu 192.168.1.101

Cette étape a permis de conserver les URL existantes tout en redirigeant les utilisateurs vers les services désormais hébergés sur la nouvelle infrastructure.


Validation


Après le redémarrage des conteneurs, plusieurs vérifications ont été réalisées :

  • démarrage des conteneurs ;
  • prise en compte de la configuration ;
  • collecte des métriques par Prometheus ;
  • détection des nouvelles machines virtuelles.

L'environnement de supervision était alors opérationnel et prêt à accompagner les migrations suivantes. Cette première réussite a permis de disposer immédiatement d'une visibilité sur l'état des nouvelles machines virtuelles avant la migration des autres services.


Retour d'expérience


Cette première migration m'a permis de valider la méthode d'archivage, de transfert et de restauration qui sera utilisée pour l'ensemble du projet.

Le choix de migrer l'environnement Monitoring en premier s'est révélé particulièrement pertinent. Une fois la supervision remise en service, j'ai pu suivre l'utilisation des ressources des nouvelles machines virtuelles, valider les déploiements réalisés et identifier rapidement les éventuels problèmes rencontrés lors des migrations suivantes.

VM102 IAM

Présentation de l'environnement


L'environnement IAM constitue le cœur de l'infrastructure TuxForge. Il regroupe plusieurs services essentiels au fonctionnement de la plateforme :

  • Authentik ;
  • PostgreSQL ;
  • Redis ;
  • Nginx Proxy Manager ;
  • Le site web TuxForge ;
  • le backend TuxForge.

Cette machine virtuelle assure à la fois la gestion des identités, la publication des services sur Internet et l'hébergement du site présentant le projet.


Migration d'Authentik


Authentik étant utilisé comme fournisseur d'identité centralisé de l'infrastructure, sa migration constituait une étape importante du projet. Ce service assure l'authentification des utilisateurs et centralise les accès aux différentes applications auto-hébergées.


Restauration des données


Après le transfert de l'archive vers la machine virtuelle IAM, j'ai procédé à sa décompression puis à la restauration de l'arborescence Docker d'origine.


$ tar -xzf authentik-migration.tar.gz

L'organisation des répertoires a été conservée afin de limiter les modifications de configuration et de simplifier la remise en service des conteneurs.

Les services restaurés étaient :

  • PostgreSQL ;
  • Redis ;
  • Authentik Server ;
  • Authentik Worker.

Une attention particulière a été portée aux volumes PostgreSQL contenant l'ensemble des utilisateurs, groupes, applications et paramètres d'Authentik.

Fichier docker_compose.yml de Authentik
Figure 29 - Fichier "docker_compose.yml" de Authentik.

Redémarrage des services


Une fois les fichiers restaurés, j'ai relancé l'ensemble des conteneurs.


$ docker compose up -d

J'ai ensuite vérifié leur état :


$ docker ps

Cette vérification m'a permis de confirmer que les quatre conteneurs étaient correctement démarrés et qu'aucun redémarrage en boucle n'était observé.


Vérification du fonctionnement


La première étape a consisté à contrôler le démarrage de PostgreSQL et Redis en consultant les journaux Docker.


$ docker logs authentik-postgres
$ docker logs authentik-redis

J'ai ensuite vérifié le fonctionnement des composants Authentik :


$ docker logs authentik-server
$ docker logs authentik-worker

L'absence d'erreurs liées à PostgreSQL ou Redis a permis de confirmer le bon fonctionnement des dépendances nécessaires à Authentik.


Une connexion à l'interface d'administration a ensuite été réalisée afin de vérifier :

  • la présence des utilisateurs ;
  • les groupes ;
  • les applications ;
  • les fournisseurs d'identité ;
  • les flux d'authentification.

L'ensemble de la configuration précédemment mise en place était toujours présent après migration.


Validation


Après restauration, les vérifications suivantes ont été réalisées :

  • accès à l'interface d'administration ;
  • authentification avec les comptes existants ;
  • présence des applications configurées ;
  • fonctionnement des services PostgreSQL et Redis ;
  • absence d'erreurs dans les journaux Docker.

Ces contrôles ont permis de confirmer que la migration s'était déroulée sans perte de données ni reconfiguration majeure.


Retour d'expérience


La migration d'Authentik s'est déroulée sans difficulté majeure grâce à la conservation de l'arborescence Docker d'origine et des volumes PostgreSQL contenant l'ensemble des données de l'application.

Cette étape m'a permis de mieux comprendre les dépendances entre Authentik, PostgreSQL et Redis ainsi que l'importance des volumes persistants dans les applications conteneurisées.

Certaines intégrations avec d'autres applications, notamment Uptime Kuma et Nginx Proxy Manager, n'étaient pas pleinement fonctionnelles avant la migration et sont restées dans le même état après restauration. Ces limitations ne sont donc pas liées à la migration elle-même mais à la configuration des intégrations concernées.


Migration de Nginx Proxy Manager


Nginx Proxy Manager constitue le point d'entrée principal de l'infrastructure TuxForge. Ce service assure la publication des différentes applications sur Internet, la gestion des certificats SSL Let's Encrypt ainsi que les redirections HTTPS.

Sa migration était particulièrement importante car l'ensemble des services hébergés sur l'infrastructure dépendent de son bon fonctionnement.


Restauration des données


Après le transfert de l'archive vers la machine virtuelle IAM, j'ai procédé à sa décompression puis à la restauration de l'arborescence Docker d'origine.


$ tar -xzf npm.tar.gz

Les volumes Docker contenant la configuration de Nginx Proxy Manager ont été restaurés afin de conserver :

  • les Proxy Hosts ;
  • les certificats SSL ;
  • les redirections ;
  • les paramètres de publication des services.

Cette approche a permis d'éviter une reconfiguration complète de l'application.

Fichier docker_compose.yml de NPM
Figure 30 - Fichier "docker_compose.yml" de Nginx Proxy Manager.

Redémarrage du service


Une fois les données restaurées, le conteneur a été redémarré à l'aide de Docker Compose.


$ docker compose up -d

J'ai ensuite vérifié son état :


$ docker ps

Cette vérification m'a permis de confirmer que le conteneur était correctement démarré et qu'aucun redémarrage en boucle n'était observé.


Vérification du fonctionnement


Une fois le conteneur démarré, j'ai contrôlé l'accès à l'interface d'administration.

J'ai également vérifié la présence des différents Proxy Hosts configurés avant la migration ainsi que la conservation des certificats SSL.

Les journaux Docker ont été consultés afin de détecter d'éventuelles erreurs au démarrage.


$ docker logs npm-npm-1

L'absence d'erreurs critiques dans les journaux a permis de confirmer le bon démarrage du service et le chargement correct de la configuration restaurée.


Adaptation de la configuration


Contrairement aux autres applications migrées, Nginx Proxy Manager dépend directement de l'ensemble des services publiés.

Après la migration, plusieurs destinations ont dû être mises à jour afin de prendre en compte les nouvelles adresses IP des machines virtuelles créées sous Proxmox.


Par exemple :

Service Nouvelle destination
Grafana 192.168.1.101
Uptime Kuma 192.168.1.101
Forgejo 192.168.1.103
Vaultwarden 192.168.1.104
Nextcloud 192.168.1.105

Cette étape a nécessité une vérification progressive des différents Proxy Hosts au fur et à mesure de la migration des services.

Après chaque modification, j'ai testé l'accès aux différents sous-domaines depuis un navigateur afin de vérifier que les requêtes étaient correctement redirigées vers les nouvelles machines virtuelles.

Redirection dans NPM
Figure 31 - Vérification des redirections dans Nginx Proxy Manager.

Vérification des certificats SSL


Une attention particulière a été portée aux certificats Let's Encrypt.

Les vérifications ont porté sur :

  • la présence des certificats existants ;
  • leur validité ;
  • les redirections HTTP vers HTTPS ;
  • le renouvellement automatique.

J'ai également vérifié depuis un navigateur la présence du cadenas HTTPS ainsi que les informations des certificats présentés par les différents services publiés.

Ces contrôles ont permis de confirmer que les services restaient accessibles de manière sécurisée après migration.


Difficultés rencontrées


La principale difficulté rencontrée concernait les dépendances entre Nginx Proxy Manager et les autres services de l'infrastructure.

Bien que Nginx Proxy Manager soit parfaitement fonctionnel, certains Proxy Hosts retournaient des erreurs 502 Bad Gateway.

Après analyse, le problème ne provenait pas du reverse proxy lui-même mais des applications cibles qui n'avaient pas encore été migrées ou dont la configuration n'était pas encore finalisée.

Une partie du travail a également consisté à vérifier les enregistrements DNS du domaine tuxforge.eu ainsi que les URL utilisées par les applications protégées par Authentik. Une incohérence entre un nom de domaine, une adresse IP ou une URL de redirection pouvait empêcher l'accès aux services ou perturber le fonctionnement du SSO.


Validation


Après les différentes modifications, les vérifications suivantes ont été réalisées :

  • accès à l'interface Nginx Proxy Manager ;
  • présence des Proxy Hosts ;
  • présence des certificats SSL ;
  • fonctionnement des redirections HTTPS ;
  • accès aux services déjà migrés.

L'ensemble des fonctionnalités principales de Nginx Proxy Manager était opérationnel après migration.


Retour d'expérience


Cette migration m'a permis de mieux comprendre le rôle central d'un reverse proxy dans une infrastructure distribuée.

Contrairement aux autres applications migrées, Nginx Proxy Manager dépend directement de la disponibilité des services qu'il publie. Cette étape a mis en évidence l'importance de l'ordre de migration ainsi que la nécessité de vérifier systématiquement les adresses IP, les noms de domaine et les certificats SSL lors du déplacement d'applications entre plusieurs serveurs.

Cette migration a également marqué ma première expérience de gestion d'un reverse proxy publiant plusieurs applications réparties sur des machines virtuelles distinctes.


Migration du Backend TuxForge


Le backend TuxForge est une application développée en Node.js permettant de centraliser et fournir les données dynamiques utilisées par le site web. Il assure notamment la récupération d'informations provenant des différents services de l'infrastructure afin d'alimenter les pages du portail TuxForge.


Restauration des données


Après le transfert de l'archive vers la machine virtuelle IAM, j'ai procédé à sa décompression puis à la restauration de l'arborescence Docker d'origine.


$ tar -xzf tuxforge-backend.tar.gz

L'ensemble des fichiers du projet ainsi que le fichier docker-compose.yml ont été restaurés sans modification de la structure initiale.

Fichier docker_compose.yml de Node
Figure 32 - Fichier "docker_compose.yml" du serveur Node.

Redémarrage du service


Une fois les fichiers restaurés, j'ai relancé le conteneur du backend.


$ docker compose up -d

J'ai ensuite vérifié son état :


$ docker ps

Cette vérification m'a permis de confirmer que le conteneur était correctement démarré et qu'aucun redémarrage en boucle n'était observé.


Adaptation de la configuration


La migration vers une architecture composée de plusieurs machines virtuelles a nécessité l'adaptation de plusieurs paramètres de configuration.

Dans la première version de l'infrastructure, l'ensemble des services était hébergé sur une unique machine virtuelle Ubuntu. Après la migration, les applications étaient réparties sur plusieurs serveurs disposant chacun de leur propre adresse IP.

J'ai donc dû mettre à jour les différentes références utilisées par le backend afin qu'il puisse continuer à communiquer avec les services de supervision et les applications désormais hébergées sur d'autres machines virtuelles.

Cette étape était indispensable pour permettre au site d'afficher les données réelles de l'infrastructure.


Vérification du fonctionnement


Après le démarrage du service, j'ai consulté les journaux du conteneur afin de détecter d'éventuelles erreurs liées au lancement de l'application.


$ docker logs tuxforge-backend

L'absence d'erreurs critiques dans les journaux a permis de confirmer le bon démarrage du backend.

J'ai ensuite accédé directement à l'endpoint exposé via Nginx Proxy Manager afin de vérifier que l'application retournait correctement les données utilisées par le site TuxForge.


https://backend.tuxforge.eu/status


Cette route retourne les informations collectées par le backend au format JSON, notamment l'état des services supervisés ainsi que certaines statistiques de l'infrastructure.

La présence des informations attendues a permis de confirmer :

  • le bon fonctionnement du backend ;
  • la récupération des données depuis les différents services ;
  • la génération correcte des réponses API.
Données backend
Figure 33 - Données collectées par le backend.

Cette réponse contenait notamment l'état des principaux services de l'infrastructure ainsi que plusieurs indicateurs système utilisés par le frontend.


Afin de valider l'intégration complète de l'application, j'ai ensuite accédé au site TuxForge et utilisé les outils de développement du navigateur (F12).

L'analyse de l'onglet Console m'a permis de vérifier l'absence d'erreurs JavaScript, tandis que l'onglet Réseau (Network) a permis de contrôler les échanges entre le frontend et le backend.

Les vérifications réalisées ont porté sur :

  • le bon déroulement des requêtes API ;
  • les codes de réponse retournés par le backend ;
  • la récupération des données ;
  • l'affichage correct des informations sur le site.

Validation


Après les différentes vérifications, les contrôles suivants ont été réalisés :

  • démarrage correct du conteneur ;
  • absence d'erreurs dans les journaux Docker ;
  • accessibilité de l'API ;
  • récupération des données au format JSON ;
  • communication entre le frontend et le backend ;
  • affichage des informations sur le site TuxForge.

L'ensemble des fonctionnalités du backend était opérationnel après migration.


Retour d'expérience


La migration du backend s'est déroulée sans difficulté majeure grâce à la conservation de l'arborescence Docker d'origine.

Cette étape m'a néanmoins permis de mieux comprendre les problématiques de communication entre applications dans une architecture distribuée. Contrairement à l'ancienne infrastructure où tous les services étaient hébergés sur une seule machine virtuelle, plusieurs composants utilisaient désormais des adresses IP distinctes, nécessitant une adaptation de la configuration du backend.

La validation de l'API et l'utilisation des outils de développement du navigateur m'ont également permis d'acquérir une meilleure compréhension des échanges entre le frontend et le backend ainsi que des mécanismes de diagnostic des applications web.

Cette migration m'a également permis de mieux comprendre le fonctionnement d'une application web développée autour d'une architecture frontend/backend ainsi que les mécanismes de communication entre les différentes couches de l'application.


Migration du Frontend TuxForge


Le frontend TuxForge constitue la partie visible de la plateforme. Développé sous la forme d'un site web statique en HTML, CSS et JavaScript, il regroupe l'ensemble des pages de présentation du projet ainsi que les composants permettant d'afficher les informations récupérées depuis le backend.

Le site est publié à l'aide d'un conteneur Nginx qui assure uniquement la diffusion des fichiers web. L'ensemble du code source et des ressources du projet est conservé dans une arborescence dédiée montée dans le conteneur via un volume Docker.


Restauration des données


Après le transfert de l'archive vers la machine virtuelle IAM, j'ai procédé à sa décompression puis à la restauration de l'arborescence Docker d'origine.


$ tar -xzf tuxforge-site.tar.gz

L'ensemble des fichiers du projet a été restauré, notamment :

  • les pages HTML ;
  • les feuilles de style CSS ;
  • les scripts JavaScript ;
  • les ressources graphiques ;
  • la documentation intégrée au projet.

L'organisation des répertoires a été conservée afin de limiter les modifications nécessaires lors de la remise en service du site.

Structuration TuxForge
Figure 34 - Structuration du site TuxForge.

Vérification de la configuration Docker


Avant le redémarrage du service, j'ai vérifié le fichier docker-compose.yml utilisé pour publier le site.

La configuration repose sur une image Nginx légère (nginx:alpine) et utilise un volume Docker permettant de rendre accessible l'ensemble du contenu du projet depuis le serveur web.

Fichier docker_compose.yml de Nginx
Figure 35 - Fichier "docker_compose.yml" de Nginx.

Redémarrage du service


Une fois les fichiers restaurés, j'ai relancé le conteneur Nginx.


$ docker compose up -d

J'ai ensuite vérifié son état :


$ docker ps

Cette vérification m'a permis de confirmer que le conteneur était correctement démarré et qu'aucun redémarrage en boucle n'était observé.

docker ps VM102
Figure 36 - Résultat de la commande "docker ps" sur la VM102.

Adaptation de la configuration


Après la migration, quelques ajustements ont été nécessaires afin d'adapter certains chemins et liens utilisés par le site.

L'organisation générale du projet a été conservée, mais j’ai dû modifier plusieurs références afin de tenir compte de la nouvelle architecture et des emplacements utilisés par certains services.

Ces modifications ont notamment concerné :

  • certains liens internes ;
  • des chemins de ressources ;
  • des URL utilisées pour communiquer avec le backend.

Cette étape a permis de garantir le bon fonctionnement du site dans son nouvel environnement.


Vérification du fonctionnement


Une fois le conteneur démarré, j'ai accédé au site depuis un navigateur afin de vérifier :

  • l'affichage des différentes pages ;
  • le chargement des feuilles de style ;
  • le chargement des images et icônes ;
  • le fonctionnement des liens internes ;
  • la communication avec le backend.

J'ai également utilisé les outils de développement du navigateur (F12) afin de détecter d'éventuelles erreurs JavaScript ou erreurs de chargement de ressources.

L'analyse de l'onglet Console a permis de vérifier l'absence d'erreurs côté client tandis que l'onglet Réseau (Network) a permis de contrôler les requêtes échangées avec le backend.


Difficultés rencontrées


La principale difficulté rencontrée concernait un comportement intermittent lors de certaines modifications du site.

À plusieurs reprises, les changements effectués semblaient ne pas être pris en compte immédiatement malgré le redémarrage du conteneur.

Après plusieurs vérifications, le problème semblait provenir de mécanismes de cache côté navigateur ou du serveur web. Le fonctionnement du site n'était toutefois pas impacté et aucune correction particulière n'a été nécessaire.


Validation


Après les différentes vérifications, les contrôles suivants ont été réalisés :

  • accès au site via son nom de domaine ;
  • chargement des ressources statiques ;
  • fonctionnement des liens internes ;
  • communication avec le backend ;
  • absence d'erreurs dans la console du navigateur.

L'ensemble des fonctionnalités du frontend était opérationnel après migration.


Retour d'expérience


La migration du frontend a été la plus simple des différentes étapes de l'environnement IAM. L'absence de base de données et la conservation de l'arborescence Docker d'origine ont permis une remise en service rapide du site.

Cette étape m'a néanmoins permis de mieux comprendre l'organisation d'un projet web structuré, le fonctionnement d'un serveur Nginx utilisé comme serveur de publication ainsi que l'utilisation des outils de développement intégrés aux navigateurs pour diagnostiquer les problèmes d'affichage et de communication avec le backend.

La création et l'évolution du site TuxForge ont également constitué ma première expérience concrète de développement, de maintenance et de déploiement d'une application web intégrée à une infrastructure auto-hébergée. Ce projet m'a permis de mieux comprendre les interactions entre le développement web, les conteneurs Docker et l'administration système.


Conclusion de la migration de l'environnement IAM


Cette migration a été sensiblement plus complexe que celle de l'environnement Monitoring en raison du nombre de services impliqués et des nombreuses dépendances entre les différents composants.

Elle m'a permis de mieux comprendre le fonctionnement d'un reverse proxy, la gestion des certificats SSL, les mécanismes d'authentification centralisée ainsi que les interactions entre plusieurs applications réparties sur différentes machines virtuelles.

Cette étape a également mis en évidence l'importance de l'ordre de déploiement dans une infrastructure distribuée. Un service comme Nginx Proxy Manager peut être parfaitement opérationnel tout en affichant des erreurs tant que les applications qu'il publie ne sont pas elles-mêmes disponibles.


La migration m'a aussi confronté à la problématique des changements d'adressage. Alors que tous les services communiquaient auparavant au sein d'une unique machine virtuelle Ubuntu, la nouvelle architecture reposait désormais sur plusieurs serveurs disposant chacun de leur propre adresse IP. J'ai donc dû adapter les configurations, les URL et les différents points de communication entre les applications afin de garantir leur bon fonctionnement.


Enfin, certaines intégrations entre Authentik et d'autres applications, notamment Uptime Kuma et Nginx Proxy Manager, n'ont pas pu être entièrement finalisées. Ces limitations étaient déjà présentes avant la migration et constituent encore aujourd'hui des pistes d'amélioration pour l'infrastructure TuxForge.

Au-delà de l'aspect technique, cette migration a représenté une étape importante dans ma compréhension d'une infrastructure moderne reposant sur Docker, le SSO, les certificats SSL, les reverse proxies et la communication entre services distribués.

VM103 DevOps

Présentation de l'environnement


L'environnement DevOps regroupe les outils liés au développement et à la gestion du code source. Dans le cadre du projet TuxForge, cette machine virtuelle héberge Forgejo, une forge Git open source permettant de centraliser les dépôts, la documentation et les différents projets personnels.

L'instance héberge notamment :

  • le dépôt du site TuxForge ;
  • les projets personnels ;
  • les utilisateurs ;
  • les clés SSH ;
  • les dépôts Git.

Migration de Forgejo


Après le transfert de l'archive vers la machine virtuelle DevOps, j'ai procédé à sa décompression puis à la restauration de l'arborescence Docker d'origine.


$ tar -xzf forgejo.tar.gz

L'ensemble des données de l'application était stocké dans le volume :

/opt/docker/forgejo/data


La taille relativement faible des données (environ 27 Mo) a permis une restauration rapide.

Les éléments restaurés comprenaient :

  • les dépôts Git ;
  • les comptes utilisateurs ;
  • les clés SSH ;
  • les paramètres de configuration ;
  • les données de l'application.
Fichier docker_compose.yml de Forgejo
Figure 37 - Fichier "docker_compose.yml" de Forgejo.

Redémarrage du service


Une fois les fichiers restaurés, j'ai relancé le conteneur Forgejo.


$ docker compose up -d

J'ai ensuite vérifié son état :


$ docker ps

Le service a démarré immédiatement sans nécessiter de modification particulière.

docker ps VM103
Figure 38 - Résultat de la commande "docker ps" sur la VM103.

Vérification de l'interface web


La première étape de validation a consisté à vérifier l'accès à l'interface d'administration.

https://forgejo.tuxforge.eu


Les contrôles réalisés ont permis de confirmer :

  • la présence des utilisateurs ;
  • la présence des dépôts ;
  • la conservation de l'historique Git ;
  • la conservation des paramètres de l'application.

Validation des dépôts Git


Une fois l'interface web validée, j'ai effectué un premier test de clonage Git en HTTPS.


$ git clone https://forgejo.tuxforge.eu/Vincent/tuxforge-site.git

Cette opération a fonctionné immédiatement.

Le dépôt a été récupéré sans erreur et l'intégralité de l'historique Git était présente.

Ce test a permis de valider simultanément :

  • l'interface web ;
  • le stockage des dépôts Git ;
  • la configuration de Forgejo ;
  • l'accès aux dépôts depuis le réseau.

Validation de l'accès SSH


Après validation du fonctionnement en HTTPS, j'ai souhaité vérifier le fonctionnement du protocole SSH utilisé pour les opérations Git.

La configuration du conteneur exposait les ports suivants :

ports:

- "3000:3000"

- "222:22"


J'ai alors réalisé plusieurs tests de connexion SSH.


# ssh -T -p 222 git@forgejo.tuxforge.eu

Le premier résultat obtenu était :

Connection refused


Cette erreur aurait pu laisser penser à un problème de configuration de Forgejo. J'ai donc entrepris plusieurs vérifications afin de déterminer si l'origine du problème était applicative ou réseau.


Après plusieurs vérifications, j'ai constaté que l'accès HTTPS fonctionnait parfaitement mais que le port SSH n'était pas encore accessible depuis Internet.

À ce stade du projet, l'infrastructure réseau définitive n'était pas encore en place et les règles de routage nécessaires au port 222 n'étaient pas encore configurées.

Afin de vérifier le fonctionnement réel de Forgejo, j'ai effectué un test directement depuis la machine virtuelle :


# ssh -T -p 222 git@localhost

Le résultat obtenu était :

Permission denied (publickey)


Bien que ce message puisse sembler être une erreur, il confirmait en réalité plusieurs points importants :

  • le port 222 était ouvert ;
  • le service SSH de Forgejo répondait correctement ;
  • le conteneur Docker fonctionnait ;
  • l'authentification par clé publique était active.

L'absence de clé SSH valide expliquait simplement le refus d'authentification.

Cette vérification a permis de confirmer que le service SSH de Forgejo fonctionnait correctement et que la limitation provenait uniquement de la configuration réseau externe encore en cours de migration.


Validation


Après les différents contrôles, les vérifications suivantes ont été validées :

  • accès à l'interface web ;
  • présence des utilisateurs ;
  • présence des dépôts ;
  • conservation de l'historique Git ;
  • clonage des dépôts en HTTPS ;
  • fonctionnement du service SSH ;
  • démarrage correct du conteneur Docker.

L'ensemble des fonctionnalités principales de Forgejo était opérationnel après migration.


Retour d'expérience


Cette migration s'est déroulée sans difficulté majeure grâce à la simplicité de l'architecture de Forgejo et à la faible quantité de données à restaurer.

La partie la plus enrichissante a concerné la validation de l'accès Git via SSH. Cette étape m'a permis de mieux comprendre la différence entre un problème applicatif et un problème réseau. Les tests réalisés ont montré que le service SSH fonctionnait correctement sur la machine virtuelle mais que son accessibilité depuis Internet dépendait également de la configuration du routage et des redirections de ports.


Cette migration m'a également permis de mieux comprendre le fonctionnement d'une forge Git auto-hébergée ainsi que les différents composants nécessaires à son fonctionnement, notamment Docker, HTTPS, SSH et les mécanismes d'authentification associés.

VM104 Sécurité

Présentation de l'environnement


L'environnement Sécurité est dédié à l'hébergement de Vaultwarden, un gestionnaire de mots de passe auto-hébergé compatible avec les clients Bitwarden.

Ce service permet de centraliser et sécuriser les identifiants utilisés dans l'infrastructure TuxForge tout en conservant la maîtrise complète des données.


Migration de Vaultwarden


Après le transfert de l'archive vers la machine virtuelle Sécurité, j'ai procédé à sa décompression puis à la restauration de l'arborescence Docker d'origine.


$ tar -xzf vaultwarden.tar.gz

L'ensemble des données de l'application était stocké dans le répertoire :

/opt/docker/vaultwarden/data


La taille relativement faible des données (environ 676 Ko) a permis une restauration très rapide.

Les éléments restaurés comprenaient :

  • les comptes utilisateurs ;
  • les coffres-forts ;
  • les paramètres de l'application ;
  • les données chiffrées stockées par Vaultwarden.
Fichier docker_compose.yml de Vaultwarden
Figure 39 - Fichier "docker_compose.yml" de Vaultwarden.

Redémarrage du service


Une fois les données restaurées, j'ai relancé le conteneur Vaultwarden.


$ docker compose up -d

J'ai ensuite vérifié son état :


$ docker ps

Le service a démarré immédiatement sans nécessiter de modification particulière.

docker ps VM104
Figure 40 - Résultat de la commande "docker ps" sur la VM104.

Vérification du fonctionnement


Une fois le conteneur démarré, j'ai vérifié l'accès à l'interface web.

https://vault.tuxforge.eu


Les contrôles réalisés ont permis de confirmer :

  • l'accès à l'interface de connexion ;
  • la présence des comptes existants ;
  • la présence des coffres-forts ;
  • la conservation des données stockées ;
  • le fonctionnement du chiffrement des informations.

Une attention particulière a été portée à la présence des données restaurées, celles-ci constituant l'élément le plus critique de l'application.


Vérification de l'intégration


Après validation du fonctionnement local, j'ai vérifié l'intégration du service avec les autres composants de l'infrastructure.

Les contrôles ont porté sur :

  • la publication via Nginx Proxy Manager ;
  • l'accès sécurisé en HTTPS ;
  • le bon fonctionnement du nom de domaine ;
  • l'intégration avec Authentik.

Cette étape a permis de retrouver les conditions d'utilisation identiques à celles de l'ancienne infrastructure.


Difficultés rencontrées


La principale interrogation concernait la taille particulièrement faible des données restaurées.

Avec environ 676 Ko de données, j'ai d'abord envisagé la possibilité qu'une partie du contenu n'ait pas été correctement sauvegardée.

J'ai donc réalisé plusieurs vérifications afin de confirmer la présence des comptes, des coffres-forts et des données enregistrées.

Après contrôle, l'ensemble des informations était bien présent. La faible taille de l'archive s'expliquait simplement par le nombre limité de secrets stockés dans l'instance à ce stade du projet.


Validation


Après les différentes vérifications, les contrôles suivants ont été validés :

  • démarrage correct du conteneur ;
  • accès à l'interface web ;
  • présence des comptes utilisateurs ;
  • présence des coffres-forts ;
  • fonctionnement du chiffrement ;
  • accès HTTPS via le nom de domaine ;
  • intégration avec les autres composants de l'infrastructure.

L'ensemble des fonctionnalités de Vaultwarden était opérationnel après migration.


Retour d'expérience


La migration de Vaultwarden s'est déroulée sans incident majeur grâce à la simplicité de l'application et au faible volume de données à restaurer.

Cette étape m'a toutefois sensibilisé à l'importance de la vérification des sauvegardes lorsqu'il s'agit de données sensibles. Même si la restauration s'est révélée très simple techniquement, la validation de l'intégrité des données était essentielle compte tenu du rôle de Vaultwarden dans l'infrastructure.

Cette migration m'a également permis de mieux comprendre le fonctionnement d'un gestionnaire de mots de passe auto-hébergé ainsi que les enjeux liés à la protection et à la disponibilité des données d'authentification.

Cette migration a également confirmé l'intérêt de disposer d'un service dédié pour les informations sensibles, distinct des autres applications de l'infrastructure.

VM105 Collaboration

Présentation de l'environnement


L'environnement Collaboration regroupe les services destinés au partage de fichiers et au travail collaboratif. Dans le cadre du projet TuxForge, cette machine virtuelle héberge Nextcloud, MariaDB, Redis et OnlyOffice.

La machine virtuelle dispose de :

  • 4 vCPU ;
  • 4 Go de mémoire vive ;
  • 150 Go d'espace de stockage.

Cette VM constitue l'un des environnements les plus importants de l'infrastructure puisqu'elle héberge les données utilisateurs, les documents ainsi que les outils collaboratifs utilisés quotidiennement.


Migration de Nextcloud


Restauration des données


L'ancienne plateforme Nextcloud était installée sous forme de package Snap sur le serveur Ubuntu de l'infrastructure historique.

Contrairement aux autres services du projet, cette migration ne consistait pas uniquement à déplacer des conteneurs Docker vers une nouvelle machine virtuelle. Il a également fallu migrer une installation Nextcloud basée sur Snap vers une architecture entièrement conteneurisée reposant sur MariaDB, Redis et Docker Compose.

Cette différence a nécessité plusieurs adaptations de configuration ainsi qu'une phase de validation plus importante que pour les autres services migrés.

Avant toute opération de migration, j'ai réalisé plusieurs sauvegardes afin de sécuriser les données :


$ tar -czf nextcloud-data.tar.gz /var/snap/nextcloud/common/nextcloud/data
$ tar -czf nextcloud-config.tar.gz /var/snap/nextcloud/current/nextcloud/config
$ tar -czf nextcloud-mysql.tar.gz /var/snap/nextcloud/common/mysql

Ces archives représentaient environ 5 Go de données.

Après leur transfert vers la VM Collaboration, j'ai procédé à leur restauration au sein de la nouvelle architecture Docker composée des conteneurs :

  • MariaDB ;
  • Redis ;
  • Nextcloud.

J'ai fait le choix d'utiliser des bind mounts plutôt que des volumes Docker afin de simplifier les futures sauvegardes et opérations de maintenance.

Fichier docker_compose.yml de Nextcloud
Figure 41 - Fichier "docker_compose.yml" de Nextcloud.

Difficultés rencontrées lors de la récupération des données


Avant même de débuter la migration vers Docker, une première difficulté importante est apparue sur l'ancienne machine Ubuntu hébergeant Nextcloud.

Les outils d'administration de l'application ne répondaient plus correctement. Plusieurs commandes indispensables à la préparation de la migration restaient bloquées sans retourner de résultat.

Les commandes concernées étaient notamment :


$ snap list
$ nextcloud.occ status
$ mysql --socket=/tmp/sockets/mysql.sock

Cette situation était particulièrement problématique car elle empêchait de vérifier l'état de l'application, d'accéder facilement à la base de données et de confirmer l'intégrité des données avant la sauvegarde.

Dans un premier temps, j'ai vérifié l'état général du serveur ainsi que les ressources disponibles afin d'écarter un problème de saturation. Les différents services semblaient actifs, mais les outils d'administration de Nextcloud restaient inaccessibles.

Après plusieurs tentatives de diagnostic, j'ai finalement procédé au redémarrage complet de la machine virtuelle Ubuntu.

Une fois le serveur redémarré, les commandes sont redevenues fonctionnelles et j'ai pu accéder de nouveau à l'environnement Nextcloud.

J'ai alors pu réaliser les sauvegardes nécessaires à la migration et poursuivre les opérations de transfert vers la nouvelle infrastructure.

Cette étape a constitué l'un des moments les plus critiques de la migration. Tant que les commandes d'administration restaient bloquées, il était impossible de vérifier correctement l'état de l'instance ou de préparer sereinement la récupération des données.


Premier démarrage


Une fois les données restaurées, j'ai démarré l'ensemble de la stack.


$ docker compose up -d

J'ai ensuite vérifié l'état des différents conteneurs :


$ docker ps

MariaDB, Redis et Nextcloud étaient correctement démarrés.


Problème de connexion à MariaDB


Lors du premier accès à l'interface web, Nextcloud affichait une erreur empêchant la connexion à la base de données.

J'ai commencé par consulter les journaux des conteneurs :


$ docker logs nextcloud
$ docker logs mariadb

L'analyse des messages d'erreur a permis d'identifier un problème dans les paramètres de connexion utilisés par Nextcloud.

J'ai alors vérifié les variables présentes dans le fichier docker-compose.yml ainsi que les informations contenues dans le fichier config.php restauré depuis l'ancienne installation.

Après correction des paramètres et redémarrage de la stack :


$ docker compose down
$ docker compose up -d

la connexion entre Nextcloud et MariaDB a été rétablie.


Adaptation de la configuration Nextcloud


La migration depuis une installation Snap vers Docker a nécessité plusieurs modifications du fichier config.php.

J'ai notamment dû adapter :

  • le répertoire de stockage des données ;
  • l'hôte MariaDB ;
  • la configuration Redis ;
  • les domaines de confiance ;
  • les proxys de confiance.

Les paramètres suivants ont notamment été modifiés :

'dbhost' => 'db',

'host' => 'redis',


afin de correspondre aux noms des conteneurs Docker utilisés dans la nouvelle infrastructure.

Fichier config.php
Figure 42 - Fichier "config.php".

Publication du service


Une fois Nextcloud fonctionnel, j'ai configuré sa publication via Nginx Proxy Manager.

Le service a été rendu accessible via :

https://cloud.tuxforge.eu


Les vérifications réalisées ont porté sur :

  • la génération du certificat Let's Encrypt ;
  • la redirection HTTP vers HTTPS ;
  • le bon fonctionnement du reverse proxy ;
  • l'accès depuis Internet.

Déploiement d'OnlyOffice


Une fois Nextcloud validé, j'ai procédé à l'installation d'OnlyOffice.

Ce service avait été désactivé sur l'ancienne infrastructure en raison des ressources limitées disponibles sur la machine virtuelle Ubuntu.

La nouvelle infrastructure Proxmox permettant de disposer de davantage de ressources, j'ai pu remettre en service l'édition collaborative de documents.

Après déploiement du conteneur :


$ docker compose up -d
Fichier docker_compose.yml d'OnlyOffice
Figure 43 - Fichier "docker_compose.yml" d'OnlyOffice.

Le service a été publié via :

https://office.tuxforge.eu


Vérification du fonctionnement


J'ai commencé par contrôler l'état du service :


$ curl https://office.tuxforge.eu/healthcheck

Le résultat obtenu :

true


a permis de confirmer le bon fonctionnement du serveur OnlyOffice.

docker ps VM105
Figure 44 - Résultat de la commande "docker ps" sur la VM105.

Problème « Invalid Token »


Lors de la configuration du connecteur OnlyOffice dans Nextcloud, l'erreur suivante était affichée :

Invalid Token


J'ai alors consulté les journaux Docker puis vérifié la configuration du serveur OnlyOffice.


$ docker logs onlyoffice
$ cat /etc/onlyoffice/documentserver/local.json

Les vérifications ont permis d'identifier une incohérence entre les secrets JWT utilisés par Nextcloud et OnlyOffice.

Après avoir appliqué le même secret dans les deux applications puis redémarré les conteneurs, la communication entre les services a été rétablie.


Documents bloqués à l'ouverture


Après correction du problème JWT, les documents restaient bloqués lors de leur ouverture.

J'ai commencé par vérifier l'état des services :


$ curl https://office.tuxforge.eu/healthcheck
$ curl http://192.168.1.105:8081/healthcheck

Les deux tests étant concluants, l'hypothèse d'un problème d'infrastructure a été écartée.

J'ai ensuite réalisé des essais depuis différents navigateurs.

Les documents s'ouvraient correctement sous Microsoft Edge mais restaient bloqués sous Firefox.

Après plusieurs vérifications, l'origine du problème a été identifiée comme étant l'extension uBlock Origin qui bloquait certaines ressources nécessaires au fonctionnement d'OnlyOffice.

Une fois cette restriction levée, l'ouverture et l'édition des documents sont devenues pleinement fonctionnelles.


Validation


Après les différentes corrections, les contrôles suivants ont été réalisés :

  • accès à Nextcloud ;
  • présence des comptes utilisateurs ;
  • présence des fichiers ;
  • fonctionnement de MariaDB ;
  • fonctionnement de Redis ;
  • synchronisation des données ;
  • accès à OnlyOffice ;
  • ouverture des documents ;
  • édition collaborative ;
  • publication HTTPS des services.

Les services sont désormais accessibles via :

  • https://cloud.tuxforge.eu
  • https://office.tuxforge.eu

L'ensemble de la plateforme collaborative était opérationnel après migration.


Retour d'expérience


La migration de l'environnement Collaboration a été la plus complexe de l'ensemble du projet.

Contrairement aux autres services, Nextcloud repose sur plusieurs composants interdépendants : base de données MariaDB, cache Redis, configuration applicative, stockage des fichiers utilisateurs, reverse proxy et intégration avec OnlyOffice.

Les difficultés ont commencé dès la récupération des données sur l'ancienne plateforme Ubuntu, où plusieurs commandes d'administration Nextcloud ne répondaient plus correctement. La migration s'est ensuite poursuivie avec différents problèmes liés à la connexion à MariaDB, à l'adaptation de la configuration issue de Snap ainsi qu'à l'intégration d'OnlyOffice.

Chaque difficulté a nécessité une phase de diagnostic, d'analyse des journaux et de tests afin d'identifier précisément l'origine du problème avant d'appliquer une correction.

Avec le recul, cette migration a constitué l'expérience la plus enrichissante du projet. Elle m'a permis de développer une méthodologie de dépannage plus rigoureuse et de mieux comprendre les interactions entre les différents composants d'une application moderne conteneurisée.

La remise en service complète de Nextcloud et d'OnlyOffice a également marqué une étape importante dans la modernisation de l'infrastructure TuxForge, en rétablissant des fonctionnalités collaboratives qui n'étaient plus utilisables sur l'ancienne plateforme faute de ressources suffisantes.

Conclusion de la migration des services

La migration des services a constitué l'étape la plus importante du projet TuxForge. Elle a permis de transférer l'ensemble des applications hébergées sur l'ancienne machine virtuelle Ubuntu vers une architecture répartie sur plusieurs machines virtuelles spécialisées sous Proxmox.


Cette nouvelle organisation a permis d'améliorer l'isolation des services, de simplifier leur administration et de mieux répartir les ressources matérielles en fonction des besoins de chaque application. Chaque environnement dispose désormais de sa propre machine virtuelle et peut être maintenu, sauvegardé ou redémarré indépendamment des autres services.

Au cours de cette migration, j'ai été confronté à des problématiques variées telles que la restauration de données, la migration de bases de données, la configuration de conteneurs Docker, la gestion des reverse proxy, l'intégration de services d'authentification, la publication sécurisée d'applications web ainsi que la résolution de problèmes de communication entre applications.


L'un des principaux changements apportés par cette nouvelle architecture concerne la répartition des services sur plusieurs machines virtuelles. Alors que l'ensemble des applications communiquaient auparavant au sein d'une unique machine Ubuntu, chaque service dispose désormais de sa propre adresse IP. Cette évolution a nécessité l'adaptation de nombreuses configurations, notamment au niveau des applications, des reverse proxy et des mécanismes de supervision.


Les différentes migrations ont également mis en évidence l'importance d'une méthodologie rigoureuse basée sur la sauvegarde, la vérification des données, la restauration progressive des services et la validation systématique de leur fonctionnement avant de poursuivre les étapes suivantes.

À l'issue de cette phase, l'ensemble des services de l'infrastructure TuxForge était opérationnel sur la nouvelle plateforme Proxmox. Les environnements Monitoring, IAM, DevOps, Sécurité et Collaboration étaient pleinement fonctionnels et prêts à être publiés sur Internet.

Publication des services sur Internet

Présentation


Une fois les différents services migrés vers la nouvelle infrastructure Proxmox, l'étape suivante a consisté à les rendre accessibles depuis Internet tout en conservant un niveau de sécurité adapté.

L'objectif était de permettre l'accès aux applications depuis l'extérieur du réseau local sans exposer directement chaque service. Pour cela, l'ensemble des accès web a été centralisé derrière un reverse proxy Nginx Proxy Manager chargé de distribuer les requêtes vers les différentes machines virtuelles.

L'architecture retenue est la suivante :

Internet
Freebox
Nginx Proxy Manager
Services internes

Cette approche permet de limiter le nombre de ports exposés, de simplifier la gestion des certificats SSL et de centraliser la publication des applications.


Configuration du nom de domaine


L'infrastructure repose sur le nom de domaine :

tuxforge.eu


Plusieurs sous-domaines ont été créés afin d'isoler les différents services. Pour chaque service, un enregistrement DNS de type A a été créé dans l'interface d'administration OVH afin d'associer le sous-domaine à l'adresse IP publique de l'infrastructure.


Service Sous-domaine
Site TuxForge tuxforge.eu
Backend backend.tuxforge.eu
Authentik auth.tuxforge.eu
Grafana grafana.tuxforge.eu
Uptime Kuma status.tuxforge.eu
Forgejo forgejo.tuxforge.eu
Vaultwarden vault.tuxforge.eu
Nextcloud cloud.tuxforge.eu
OnlyOffice office.tuxforge.eu

Cette organisation permet d'identifier clairement chaque application tout en conservant une architecture cohérente.

DNS sur OVH
Figure 45 - Configuration DNS sur OVH.

Afin de vérifier la propagation et le bon fonctionnement des enregistrements DNS, plusieurs tests ont été réalisés depuis différentes machines.


$ nslookup cloud.tuxforge.eu
$ nslookup forgejo.tuxforge.eu

Les résultats obtenus confirmaient la résolution correcte des sous-domaines vers l'adresse IP publique de l'infrastructure.


Configuration du reverse proxy


La publication des services est assurée par Nginx Proxy Manager hébergé sur la machine virtuelle IAM.

Pour chaque application, un Proxy Host a été créé afin d'associer un sous-domaine à l'adresse IP du service correspondant. Après la création de chaque Proxy Host, j'ai vérifié son bon fonctionnement en accédant directement aux applications via leur nom de domaine puis en contrôlant les journaux du reverse proxy afin de détecter d'éventuelles erreurs de routage.


Par exemple :

Sous-domaine Destination
grafana.tuxforge.eu 192.168.1.101
forgejo.tuxforge.eu 192.168.1.103
vault.tuxforge.eu 192.168.1.104
cloud.tuxforge.eu 192.168.1.105

Chaque règle a été configurée avec :

  • le protocole HTTP ou HTTPS ;
  • la redirection automatique vers HTTPS ;
  • le support HTTP/2 ;
  • les certificats Let's Encrypt.
Redirection DNS NPM
Figure 46 - Configuration redirection DNS sur Nginx Proxy Manager.

Gestion des certificats SSL


Afin de sécuriser les communications, chaque service publié utilise un certificat SSL délivré par Let's Encrypt.

Lors de la création d'un Proxy Host, Nginx Proxy Manager demande automatiquement le certificat correspondant au sous-domaine concerné.

Les paramètres suivants ont été activés :

  • Force SSL ;
  • HTTP/2 Support ;
  • HSTS lorsque compatible ;
  • Renouvellement automatique des certificats.

Cette configuration permet de garantir la confidentialité des échanges entre les utilisateurs et les services hébergés.

Certificat SSL sur NPM
Figure 47 - Configuration certificat SSL sur Nginx Proxy Manager.

Configuration de l'accès Internet


L’'accès Internet repose sur les fonctionnalités de routage intégrées à la Freebox.

Des redirections de ports ont été configurées afin de transmettre les requêtes externes vers Nginx


Proxy Manager :

Port externe Destination
80/TCP Nginx Proxy Manager
443/TCP Nginx Proxy Manager

Cette configuration permettait à Nginx Proxy Manager de recevoir les requêtes HTTP et HTTPS provenant d'Internet puis de les distribuer vers les services internes.

Ports sur freebox
Figure 48 - Configuration de la redirection des ports sur la Freebox.

Validation


Une fois la configuration terminée, plusieurs tests ont été réalisés depuis un réseau externe afin de vérifier le bon fonctionnement de l'infrastructure.

Les contrôles effectués ont permis de valider :

  • la résolution DNS des sous-domaines ;
  • l'accès HTTPS aux services ;
  • la validité des certificats SSL ;
  • le fonctionnement du reverse proxy ;
  • l'accès aux applications publiées.

Les services suivants étaient accessibles depuis Internet :

  • TuxForge ;
  • Authentik ;
  • Grafana ;
  • Uptime Kuma ;
  • Forgejo ;
  • Vaultwarden ;
  • Nextcloud ;
  • OnlyOffice.

Retour d'expérience


Cette étape a permis de concrétiser l'ensemble du travail réalisé lors des phases précédentes. Une fois les services migrés et publiés, l'infrastructure est devenue accessible depuis Internet dans des conditions proches d'un environnement de production.

La mise en œuvre de Nginx Proxy Manager m'a permis de mieux comprendre le rôle d'un reverse proxy, la gestion des certificats SSL ainsi que les mécanismes de publication d'applications web. J'ai également pu me familiariser avec la configuration DNS, les redirections de ports et les principes de sécurisation des accès externes.

Cette phase marque l'aboutissement de la migration vers Proxmox et prépare l'infrastructure à son exploitation quotidienne.

Cette étape a également mis en évidence l'importance de la cohérence entre les configurations DNS, les redirections réseau et les paramètres des applications publiées. Une erreur sur l'un de ces composants pouvait rendre un service inaccessible malgré son bon fonctionnement en local.

06

Validation des fonctionnalités

Validation de l'infrastructure virtualisée


L'une des premières étapes de validation a consisté à vérifier le bon fonctionnement de la plateforme de virtualisation Proxmox ainsi que l'état des différentes machines virtuelles créées dans le cadre du projet.

La capture ci-dessous présente l'ensemble des machines virtuelles déployées sur le serveur Proxmox :

VM sur Proxmox
Figure 49 - Ensemble des VM déployées sur Proxmox VE.

Les contrôles réalisés ont permis de confirmer :

  • le démarrage des cinq machines virtuelles ;
  • la disponibilité de l'hyperviseur Proxmox ;
  • la répartition des services selon l'architecture définie ;
  • le bon fonctionnement des espaces de stockage ;
  • l'absence d'erreurs critiques sur l'hôte.

Les machines virtuelles déployées étaient les suivantes :

ID Nom Rôle
101 Monitoring Supervision et métrologie
101 IAM Authentification et services web
101 DevOps Forgejo
101 Sécurité Vaultwarden
101 Collaboration Nextcloud et OnlyOffice

Cette première validation a permis de confirmer que l'architecture cible définie lors de la phase de conception était correctement déployée et opérationnelle.


Validation de l'authentification centralisée


Une fois l'infrastructure déployée, plusieurs contrôles ont été réalisés afin de valider le fonctionnement d'Authentik et des mécanismes d'authentification centralisée mis en place au sein de l'environnement TuxForge.

Interface d'Authentik
Figure 50 - Interface d'Authentik.
Fenêtre de connexion via Authentik
Figure 51 - Fenêtre de connexion via Authentik.

Les vérifications réalisées ont permis de confirmer :

  • accès à l'interface d'administration ;
  • présence des utilisateurs ;
  • présence des applications ;
  • authentification via Authentik ;
  • fonctionnement du Single Sign-On (SSO).

Ces vérifications ont permis de confirmer le bon fonctionnement du fournisseur d'identité ainsi que l'intégration des mécanismes SSO au sein de l'infrastructure.


Validation du reverse proxy et des certificats TLS


La publication des services sur Internet repose sur Nginx Proxy Manager et sur l'utilisation de certificats TLS délivrés par Let's Encrypt. Une série de contrôles a été effectuée afin de vérifier l'accessibilité des applications, la validité des certificats et le bon fonctionnement des redirections HTTPS.

Proxy Hosts dans NPM
Figure 52 - Proxy Hosts enregistrés dans Nginx Proxy Manager.

Vérifications réalisées :

  • publication des services ;
  • génération des certificats TLS ;
  • redirection HTTPS ;
  • accessibilité des applications ;
  • état des Proxy Hosts.

L'ensemble des services publiés était accessible en HTTPS avec des certificats TLS valides.


Validation de l'environnement DevOps


L'environnement DevOps héberge Forgejo, la forge logicielle utilisée pour centraliser les dépôts Git du projet. Les tests réalisés avaient pour objectif de vérifier l'intégrité des données restaurées ainsi que le bon fonctionnement des différents modes d'accès aux dépôts.

Page d'accueil de Forgejo
Figure 53 - Page d'accueil de Forgejo.
Page de projet dans Forgejo
Figure 54 - Page de projet dans Forgejo.

Vérifications réalisées :

  • accès à Forgejo ;
  • présence des dépôts ;
  • présence de l'historique Git ;
  • fonctionnement des projets ;
  • accès aux dépôts en HTTPS.

L'environnement DevOps était pleinement opérationnel et les dépôts Git accessibles après migration.


Validation de l'environnement Collaboration


L'environnement Collaboration regroupe les services Nextcloud et OnlyOffice. Les opérations de validation ont porté sur l'accès aux données, le fonctionnement du stockage de fichiers ainsi que les fonctionnalités d'édition collaborative mises en œuvre après la migration.

Nextcloud
Figure 55 - Page d'accueil de Nextcloud.
OnlyOffice
Figure 56 - Editeur de texte en ligne OnlyOffice.

Vérifications réalisées :

  • accès à Nextcloud ;
  • présence des données ;
  • accès aux fichiers ;
  • ouverture des documents ;
  • édition collaborative avec OnlyOffice ;
  • fonctionnement du reverse proxy.

La plateforme collaborative a retrouvé l'ensemble de ses fonctionnalités après migration.


Validation de l'environnement Sécurité


La validation de l'environnement Sécurité avait pour objectif de vérifier la restauration complète de Vaultwarden ainsi que son intégration au reste de l'infrastructure. Une attention particulière a été portée à la conservation des données sensibles et au fonctionnement des mécanismes d'authentification.

Vaultwarden
Figure 57 - Page d'accueil de Vaultwarden.

Vérifications réalisées :

  • accès à Vaultwarden ;
  • présence des coffres ;
  • authentification ;
  • intégration avec Authentik ;
  • accès HTTPS.

Les données sensibles ont été restaurées avec succès et l'accès sécurisé au coffre-fort a été validé.


Validation de la supervision


Les outils de supervision déployés sur l'infrastructure ont été vérifiés afin de confirmer la collecte des métriques, la surveillance des services et la remontée des alertes. Cette étape permet de s'assurer que l'ensemble des composants de l'infrastructure peut être supervisé de manière centralisée.

Grafana
Figure 58 - Interface web de Grafana.
Prometheus
Figure 59 - Interface web de Prometheus.
Uptime Kuma
Figure 60 - Interface web de Uptime Kuma.

Vérifications réalisées :

  • collecte des métriques ;
  • supervision des machines virtuelles ;
  • supervision des conteneurs Docker ;
  • détection des services ;
  • remontée des alertes ;
  • affichage des tableaux de bord.

L'écran Prometheus montre notamment que :

  • les cinq machines virtuelles sont supervisées ;
  • Node Exporter est opérationnel ;
  • cAdvisor est opérationnel ;
  • l'ensemble des cibles est dans l'état UP.

L'écran Grafana confirme quant à lui la collecte et l'exploitation des métriques par les tableaux de bord.

L'interface Uptime Kuma valide enfin la disponibilité des différents services publiés.

Les outils de supervision permettent désormais de surveiller l'ensemble des machines virtuelles et des services hébergés depuis une plateforme centralisée.


Conclusion de validation


L'ensemble des tests réalisés a permis de confirmer le bon fonctionnement de la nouvelle infrastructure TuxForge.

Les différents services migrés sont accessibles depuis Internet via des connexions sécurisées en HTTPS. Les mécanismes d'authentification centralisée assurés par Authentik sont opérationnels et les applications intégrées conservent leurs fonctionnalités après migration.

Les plateformes Forgejo, Vaultwarden, Nextcloud et OnlyOffice ont été restaurées avec succès et les données précédemment présentes ont été conservées. Les outils de supervision Grafana, Prometheus et Uptime Kuma permettent désormais de suivre en temps réel l'état des machines virtuelles, des conteneurs Docker et des services publiés.

Cette phase de validation confirme que les objectifs fixés lors de la conception de la nouvelle infrastructure ont été atteints. L'environnement est désormais pleinement opérationnel, documenté et prêt à être exploité dans des conditions proches d'un environnement de production.

07

Incidents rencontrés

La mise en œuvre de la nouvelle infrastructure TuxForge ne s'est pas limitée à l'installation et à la migration des différents services. Comme dans tout projet d'administration système et réseau, plusieurs incidents techniques ont été rencontrés au cours des différentes phases de déploiement.

Ces incidents ont concerné des domaines variés tels que la virtualisation, les applications conteneurisées, les bases de données, les services web, l'authentification centralisée ou encore la supervision de l'infrastructure.

problème a nécessité une phase de diagnostic afin d'identifier précisément son origine avant de mettre en œuvre une solution adaptée. Cette démarche m'a permis de développer une méthodologie de dépannage basée sur l'observation des symptômes, l'analyse des journaux système et applicatifs, la réalisation de tests ciblés et la validation des corrections apportées.

Les sections suivantes présentent les principaux incidents rencontrés au cours du projet ainsi que les actions réalisées pour les résoudre.

Incident 01 - Blocage des outils d'administration Nextcloud

Contexte

Lors de la préparation de la migration de Nextcloud vers la nouvelle infrastructure Proxmox, il était nécessaire de vérifier l'état de l'application et de réaliser plusieurs sauvegardes avant le transfert des données.

L'instance Nextcloud était alors installée sous forme de package Snap sur l'ancienne machine virtuelle Ubuntu.

Symptômes

Plusieurs commandes d'administration indispensables à la préparation de la migration ne répondaient plus correctement.

Les commandes concernées étaient notamment :
$ snap list
$ nextcloud.occ status
$ mysql --socket=/tmp/sockets/mysql.sock

Les commandes restaient bloquées sans retourner de résultat, empêchant l'accès aux informations nécessaires à la migration.

Diagnostic

Dans un premier temps, j'ai vérifié l'état général du serveur afin d'identifier une éventuelle saturation des ressources système.

Les contrôles ont notamment porté sur :


$ top
$ free -h
$ df -h

Les ressources matérielles restaient disponibles, aucun problème d'espace disque ou de mémoire n'a été identifié et le système d'exploitation continuait de répondre normalement aux commandes d'administration courantes.

Malgré cela, les outils d'administration de Nextcloud continuaient de ne pas répondre.

Cause

L'origine exacte du problème n'a pas pu être déterminée avec certitude.

Toutefois, le dysfonctionnement semblait lié aux services Snap utilisés par Nextcloud, ceux-ci ne répondant plus correctement aux commandes d'administration.

Résolution

Après plusieurs tentatives de diagnostic, j'ai procédé au redémarrage complet de la machine virtuelle Ubuntu.

Une fois le serveur redémarré, les commandes suivantes sont redevenues fonctionnelles :


$ snap list
$ nextcloud.occ status

J'ai alors pu accéder à l'environnement Nextcloud et réaliser les sauvegardes nécessaires à la migration.

Résultat

Le redémarrage de la machine virtuelle a permis de rétablir l'accès aux outils d'administration de Nextcloud.

Les sauvegardes des données, de la configuration et de la base de données ont ensuite pu être réalisées sans perte d'information, permettant de poursuivre la migration vers la nouvelle infrastructure.

Cet incident a mis en évidence l'importance de vérifier l'état de fonctionnement des outils d'administration avant toute opération de migration, particulièrement lorsqu'il s'agit d'applications installées via des mécanismes de gestion spécifiques comme Snap.

Incident 02 - Erreur MariaDB après migration

Contexte

Après la restauration des données Nextcloud sur la machine virtuelle Collaboration, l'application a été déployée dans une nouvelle architecture Docker reposant sur trois conteneurs distincts :

  • Nextcloud ;
  • MariaDB ;
  • Redis.

Cette nouvelle organisation remplaçait l'ancienne installation basée sur Snap utilisée sur le serveur Ubuntu historique.

Symptômes

Après le démarrage des conteneurs, l'interface web de Nextcloud était accessible mais l'application affichait une erreur empêchant la connexion à la base de données.

Les utilisateurs ne pouvaient pas accéder à leurs fichiers et la plateforme restait indisponible.

Diagnostic

Afin d'identifier l'origine du problème, j'ai commencé par vérifier l'état des conteneurs :


$ docker ps

Les trois conteneurs étaient correctement démarrés.

J'ai ensuite consulté les journaux des applications :


$ docker logs nextcloud
$ docker logs mariadb

L'analyse des messages d'erreur a révélé que Nextcloud ne parvenait pas à établir une connexion avec la base de données MariaDB.

J'ai alors vérifié la configuration utilisée par Nextcloud en consultant le fichier :


$ nano config.php

Cette vérification a permis de constater que plusieurs paramètres de connexion étaient encore issus de l'ancienne installation Snap. J'ai ensuite comparé ces informations avec les valeurs définies dans le fichier docker-compose.yml afin de vérifier la cohérence entre les noms des services Docker et les paramètres utilisés par l'application.

Cause

L'incident provenait de paramètres de connexion hérités de l'ancienne installation Snap.

Lors de la migration vers Docker, certains paramètres du fichier config.php ne correspondaient plus à la nouvelle architecture basée sur des conteneurs distincts.

Nextcloud tentait donc d'utiliser des informations de connexion devenues invalides après la migration.

Résolution

J'ai modifié la configuration de Nextcloud afin d'utiliser les nouveaux noms de services Docker définis dans le fichier docker-compose.yml.

Les paramètres relatifs à MariaDB et Redis ont notamment été adaptés afin de correspondre à la nouvelle architecture.

Les références vers les anciens services ont été remplacées par les noms des conteneurs Docker utilisés dans la nouvelle infrastructure, permettant à Nextcloud de résoudre correctement les services MariaDB et Redis via le réseau Docker.

Après modification de la configuration, j'ai redémarré l'ensemble de la stack :


$ docker compose down
$ docker compose up -d

Résultat

Après redémarrage, Nextcloud a pu établir correctement la connexion avec MariaDB.

L'interface web est redevenue pleinement opérationnelle et les données utilisateurs ont été retrouvées sans perte d'information.

Cet incident a mis en évidence l'importance de vérifier les paramètres applicatifs lors d'une migration impliquant un changement d'architecture, notamment lors du passage d'une installation Snap vers une infrastructure Docker conteneurisée.

Incident 03 - Invalid Token Nextcloud / OnlyOffice

Contexte

Après avoir rétabli la communication entre Nextcloud et OnlyOffice, une nouvelle erreur est apparue lors de la configuration du connecteur OnlyOffice dans Nextcloud.

Bien que les deux applications soient accessibles et puissent communiquer entre elles, la validation de la configuration échouait systématiquement.

Symptômes

Lors du test du connecteur OnlyOffice depuis l'interface d'administration de Nextcloud, le message suivant était affiché :

Invalid Token


Cette erreur empêchait l'enregistrement de la configuration et rendait impossible l'ouverture des documents depuis Nextcloud.

Diagnostic

L'erreur laissant supposer un problème d'authentification, j'ai vérifié la configuration JWT utilisée par OnlyOffice.

Pour cela, j'ai accédé au conteneur puis consulté le fichier de configuration :


$ docker exec -it onlyoffice bash
$ cat /etc/onlyoffice/documentserver/local.json

Cette vérification a permis d'identifier le secret JWT utilisé par le serveur OnlyOffice :


{
"secret": {
"browser": {
"string": "FMqbRawdpegHCJv3QqTFtUpXLJxHL6BR"
}
}
}


J'ai ensuite comparé cette valeur avec celle configurée dans le connecteur OnlyOffice de Nextcloud.

Cette comparaison a permis de confirmer que les deux applications utilisaient des secrets JWT différents.

Cause

Le secret JWT configuré dans Nextcloud ne correspondait pas à celui utilisé par OnlyOffice.

Les deux applications utilisaient donc des mécanismes d'authentification différents, empêchant la validation des échanges.

Résolution

J'ai configuré le même secret JWT sur les deux services.

Les variables suivantes ont notamment été ajoutées dans la configuration du conteneur OnlyOffice :


JWT_ENABLED=true
JWT_SECRET=FMqbRawdpegHCJv3QqTFtUpXLJxHL6BR


Le même secret a ensuite été renseigné dans la configuration du connecteur OnlyOffice de Nextcloud.

Une fois les modifications effectuées, les conteneurs ont été redémarrés :


$ docker compose down
$ docker compose up -d

Résultat

Après redémarrage des services, l'erreur « Invalid Token » a disparu.

Le connecteur OnlyOffice a pu être configuré correctement et les échanges entre Nextcloud et OnlyOffice ont été authentifiés avec succès.

Les documents pouvaient désormais être ouverts depuis Nextcloud sans erreur liée à l'authentification.

Cet incident m'a permis de mieux comprendre le fonctionnement des jetons JWT ainsi que leur rôle dans la sécurisation des communications entre applications distribuées.

Incident 04 - Documents bloqués dans OnlyOffice

Contexte

Après la résolution des problèmes de communication entre Nextcloud et OnlyOffice, le connecteur était correctement configuré et les deux applications pouvaient communiquer entre elles.

L'étape suivante consistait à vérifier l'ouverture et l'édition des documents directement depuis l'interface Nextcloud.

Symptômes

Malgré la résolution de l'erreur « Invalid Token », les documents ne s'ouvraient toujours pas correctement.

Lors de l'ouverture d'un document depuis Nextcloud, l'interface OnlyOffice restait bloquée au chargement sans afficher de message d'erreur explicite.

L'édition collaborative demeurait donc inutilisable.

Diagnostic

J'ai commencé par vérifier le fonctionnement du serveur OnlyOffice à l'aide de son point de contrôle intégré :


$ curl -k https://office.tuxforge.eu/healthcheck

Le résultat obtenu était :

true


Afin d'écarter un problème lié au reverse proxy ou au certificat TLS, j'ai également réalisé un test direct vers le service :


$ curl http://192.168.1.105:8081/healthcheck

Le résultat étant également positif, le serveur OnlyOffice fonctionnait correctement.

L'origine du problème ne semblait donc pas provenir de l'infrastructure, du réseau ou du serveur applicatif.

J'ai ensuite réalisé plusieurs essais depuis différents navigateurs afin de comparer les comportements observés.

Les documents s'ouvraient correctement sous Microsoft Edge mais restaient bloqués sous Mozilla Firefox.

Cette différence de comportement a orienté les recherches vers une extension ou un paramètre spécifique du navigateur. Le fait que le problème soit reproductible uniquement sous Firefox permettait d'écarter un dysfonctionnement du serveur OnlyOffice, de Nextcloud ou du reverse proxy.

Cause

Après plusieurs vérifications, l'origine du problème a été identifiée comme étant l'extension uBlock Origin installée sur Firefox.

Cette extension bloquait certaines ressources JavaScript nécessaires au fonctionnement d'OnlyOffice, empêchant le chargement complet de l'éditeur de documents.

Résolution

J'ai désactivé temporairement le filtrage appliqué au domaine concerné afin de vérifier cette hypothèse.

Une fois le filtrage désactivé, les documents se sont ouverts immédiatement dans OnlyOffice.

Une règle d'exception a ensuite été mise en place afin d'autoriser le fonctionnement normal de l'application.

Résultat

Après la désactivation du filtrage bloquant, les documents ont pu être ouverts et modifiés normalement depuis Nextcloud.

L'édition collaborative est redevenue pleinement fonctionnelle et les utilisateurs pouvaient de nouveau créer, consulter et modifier des documents directement depuis leur navigateur.

Cet incident a montré l'importance de ne pas limiter le diagnostic à l'infrastructure serveur. Dans certains cas, l'origine d'un dysfonctionnement peut également se situer du côté du poste client ou des extensions installées dans le navigateur.

Incident 05 - Erreur 502 Bad Gateway dans Nginx Proxy Manager

Contexte

Au cours de la migration des différents services vers la nouvelle infrastructure Proxmox, Nginx Proxy Manager a été restauré relativement tôt afin de préparer la publication des applications sur Internet.

Les Proxy Hosts, les certificats SSL et les paramètres de publication ont été récupérés avec succès à partir de l'ancienne infrastructure.

Symptômes

Après la remise en service de Nginx Proxy Manager, plusieurs services publiés retournaient une erreur lors de leur accès depuis le navigateur :

502 Bad Gateway


Bien que les sous-domaines soient correctement résolus et que le certificat TLS soit valide, certaines applications demeuraient inaccessibles.

Diagnostic

J'ai commencé par vérifier le fonctionnement de Nginx Proxy Manager ainsi que l'état du conteneur :


$ docker ps
$ docker logs npm-npm-1

Aucune erreur critique n'était présente dans les journaux et le conteneur fonctionnait normalement.

J'ai ensuite contrôlé la configuration des différents Proxy Hosts afin de vérifier les adresses IP et les ports utilisés pour joindre les applications.

Les paramètres configurés correspondaient bien à l'architecture cible.

Afin d'isoler le problème, j'ai testé directement l'accès aux services depuis le réseau local en utilisant leurs adresses IP et leurs ports respectifs.

Cette vérification a permis de comparer le comportement observé via Nginx Proxy Manager avec celui obtenu lors d'un accès direct aux applications.

Les tests ont montré que les services concernés n'étaient pas encore disponibles ou que leur migration n'était pas totalement terminée.

Cause

L'erreur ne provenait pas du reverse proxy lui-même mais des services publiés derrière celui-ci.

À ce stade du projet, certaines applications n'avaient pas encore été restaurées ou finalisées sur leurs nouvelles machines virtuelles.

Nginx Proxy Manager recevait correctement les requêtes mais ne trouvait aucun service fonctionnel à transmettre en retour, ce qui provoquait l'affichage de l'erreur :

502 Bad Gateway

Résolution

La résolution a consisté à terminer progressivement la migration des applications concernées puis à mettre à jour les destinations des Proxy Hosts lorsque cela était nécessaire.

Chaque service a ensuite été testé individuellement avant d'être publié via Nginx Proxy Manager.

Les contrôles ont notamment porté sur :

  • l'adresse IP de destination ;
  • le port utilisé ;
  • l'état du conteneur Docker ;
  • l'accessibilité du service depuis le réseau local.

Une fois les applications restaurées et opérationnelles, les erreurs ont disparu sans modification supplémentaire du reverse proxy.

Résultat

Après la finalisation des migrations, l'ensemble des services est redevenu accessible via leurs noms de domaine respectifs.

Cet incident m'a permis de mieux comprendre le rôle d'un reverse proxy et les mécanismes de communication entre les services publiés et les applications hébergées sur différentes machines virtuelles.

Il a également mis en évidence l'importance de l'ordre de migration dans une infrastructure distribuée. Un reverse proxy peut fonctionner parfaitement tout en affichant des erreurs si les services qu'il publie ne sont pas encore disponibles.

Incident 06 - Validation de l'accès SSH à Forgejo

Contexte

Après la migration de Forgejo vers la machine virtuelle DevOps, les premiers tests de validation avaient confirmé le bon fonctionnement de l'interface web ainsi que l'accès aux dépôts Git en HTTPS.

L'étape suivante consistait à vérifier le fonctionnement de l'accès Git via SSH, utilisé pour les opérations de clonage, de synchronisation et de publication des dépôts.

La configuration du conteneur exposait notamment le port SSH suivant :


ports:

- "3000:3000":

- "222:22":

Symptômes

Lors du test de connexion SSH vers Forgejo, la commande suivante retournait une erreur :


$ ssh -T -p 222 git@forgejo.tuxforge.eu

Résultat :

ssh: connect to host forgejo.tuxforge.eu port 222: Connection refused


Cette erreur empêchait l'utilisation des dépôts Git via SSH.

Diagnostic

Dans un premier temps, j'ai vérifié que le service Forgejo fonctionnait correctement.

L'accès à l'interface web était opérationnel et les dépôts Git pouvaient être clonés en HTTPS :


$ git clone https://forgejo.tuxforge.eu/Vincent/tuxforge-site.git

Ces vérifications permettaient déjà d'écarter un problème lié à l'application elle-même ou à ses données.

Le fait que l'interface web et les dépôts Git soient accessibles en HTTPS démontrait que Forgejo fonctionnait correctement et que les données avaient été restaurées avec succès.

J'ai ensuite testé l'accessibilité du port SSH depuis le réseau :


$ nc -vz forgejo.tuxforge.eu 222

Le résultat indiquait également un refus de connexion.

Afin de déterminer si le problème provenait réellement de Forgejo ou du réseau, j'ai effectué un test directement depuis la machine virtuelle hébergeant le service :


$ ssh -T -p 222 git@localhost

Le résultat obtenu était :

Permission denied (publickey)

Cause

Bien que ce message puisse sembler être une erreur, il confirmait en réalité que le serveur SSH de Forgejo fonctionnait correctement.

Le service répondait bien sur le port 222 et attendait simplement une authentification par clé publique valide.

L'origine du problème se situait donc au niveau de l'exposition réseau du service et non au niveau de Forgejo lui-même.

À ce stade du projet, l'infrastructure réseau définitive n'était pas encore finalisée et les règles de routage nécessaires à l'accès externe du port SSH n'étaient pas encore en place.

Résolution

Aucune modification n'a été apportée à Forgejo, celui-ci fonctionnant correctement.

Les vérifications réalisées ont permis de confirmer :

  • le fonctionnement du serveur SSH intégré ;
  • l'écoute du port 222 ;
  • le bon fonctionnement du conteneur Docker ;
  • la prise en charge de l'authentification par clé publique.

L'ouverture du port vers l'extérieur a été reportée à la phase de migration réseau.

Résultat

Les différents tests ont permis de confirmer que le service SSH de Forgejo était pleinement opérationnel sur la machine virtuelle DevOps.

L'incident ne provenait pas de l'application mais de l'absence de publication du port vers Internet à ce stade du projet.

Cette situation m'a permis de mieux comprendre la différence entre un problème applicatif et un problème d'infrastructure réseau. Les tests réalisés ont également montré l'importance de vérifier localement un service avant de conclure à un dysfonctionnement de l'application elle-même. Cet incident a également mis en évidence l'importance de tester un service directement sur son hôte avant d'investiguer des problèmes liés au routage, aux pare-feux ou à la publication sur Internet.

Incident 07 - Difficultés d'intégration du SSO Authentik avec NPM et Uptime Kuma

Contexte

Dans le cadre de la sécurisation de l'infrastructure TuxForge, l'objectif était d'utiliser Authentik comme fournisseur d'identité centralisé afin de protéger l'accès à certaines applications d'administration, notamment Nginx Proxy Manager et Uptime Kuma.

L'architecture retenue reposait sur l'utilisation d'un Proxy Provider Authentik associé à l'Embedded Outpost et au mécanisme d'authentification auth_request de Nginx.

L'objectif était d'obtenir le fonctionnement suivant :

Navigateur
Nginx Proxy Manager
Authentik Outpost
Application protégée

Symptômes

Après la création des applications et des Proxy Providers dans Authentik, l'accès aux services protégés ne fonctionnait pas correctement.

Plusieurs erreurs ont été observées au cours des différents tests :

  • erreur 502 Bad Gateway ;
  • erreur 500 Internal Server Error ;
  • erreur « configuration error » retournée par l'Outpost ;
  • erreur « invalid state » lors du retour d'authentification ;
  • erreur « mismatched session ID » dans les journaux Authentik.

Ces erreurs empêchaient la mise en œuvre complète du mécanisme SSO sur Nginx Proxy Manager et Uptime Kuma.

Diagnostic

Les premières vérifications ont porté sur l'état de l'Embedded Outpost.

Les contrôles réalisés dans Authentik ont permis de confirmer :

  • la présence des applications ;
  • l'association correcte des Proxy Providers ;
  • le bon état de l'Outpost ;
  • la synchronisation des configurations.

Les journaux indiquaient notamment :

outpost_send_update


confirmant que les modifications étaient correctement transmises à l'Outpost.

Afin de vérifier son fonctionnement, plusieurs tests ont été réalisés :


$ curl -I http://127.0.0.1:9000/outpost.goauthentik.io/ping
$ curl -I http://192.168.1.102:9000/outpost.goauthentik.io/ping

Résultat :

HTTP/1.1 204 No Content


L'Outpost fonctionnait correctement.

Des tests ont ensuite été réalisés via le reverse proxy :


$ curl -I https://status.tuxforge.eu/outpost.goauthentik.io/ping

Résultat :

HTTP/2 204


Ces vérifications ont permis d'écarter un problème de connectivité entre Nginx Proxy Manager et Authentik. À ce stade des investigations, les principaux composants de l'architecture étaient donc validés individuellement : serveur Authentik, Embedded Outpost, reverse proxy et mécanisme de redirection.

Les recherches ont alors été recentrées sur le processus d'authentification lui-même.

Une analyse plus approfondie a ensuite révélé la présence d'une ancienne adresse IP de l'infrastructure dans la configuration de l'Embedded Outpost :


authentik_host: http://192.168.1.22:9000


Cette adresse correspondait à l'ancienne machine Ubuntu utilisée avant la migration vers Proxmox.

Cause

La première cause identifiée provenait d'une configuration obsolète de l'Embedded Outpost qui faisait encore référence à l'ancienne infrastructure.

Après correction de cette configuration, les erreurs :

  • 502 Bad Gateway
  • configuration error

ont disparu.

Cependant, une seconde anomalie persistait lors du retour d'authentification OAuth.

Après authentification réussie sur Authentik, le navigateur était redirigé vers :


/outpost.goauthentik.io/callback


avec l'apparition d'une erreur :

400 Bad Request


Les journaux Authentik indiquaient alors :

mismatched session ID

invalid state


Ces messages suggèrent un problème lié à la gestion des sessions ou des cookies utilisés lors du processus d'authentification.

Résolution

Plusieurs corrections ont été appliquées :

  • création des Proxy Providers dédiés ;
  • association aux applications correspondantes ;
  • mise à jour de la configuration Nginx ;
  • correction de l'adresse de l'Embedded Outpost ;
  • validation du fonctionnement du point de terminaison /ping ;
  • validation du processus d'authentification utilisateur.

Les résultats obtenus ont permis de confirmer :

  • le bon fonctionnement du serveur Authentik ;
  • le bon fonctionnement de l'Embedded Outpost ;
  • le bon fonctionnement des redirections ;
  • la réussite de l'authentification utilisateur ;
  • l'accès au callback OAuth.

Résultat

Les investigations ont permis de résoudre l'ensemble des problèmes de connectivité et de configuration initialement rencontrés entre Authentik, Nginx Proxy Manager et Uptime Kuma.

Le problème restant est désormais limité à la phase finale du callback OAuth, où une incohérence de session provoque les erreurs « invalid state » et « mismatched session ID ».

Bien que l'intégration SSO ne soit pas encore pleinement opérationnelle à ce jour, les différentes étapes de diagnostic ont permis de réduire considérablement le périmètre de recherche et de confirmer le bon fonctionnement de la majorité des composants impliqués.

Cet incident m'a permis de développer une méthodologie d'investigation plus rigoureuse, fondée sur l'analyse des journaux, la validation progressive de chaque composant et l'isolation méthodique des différentes causes possibles d'un dysfonctionnement complexe.

Il m'a également permis de mieux comprendre le fonctionnement des Proxy Providers Authentik, du protocole OAuth2/OpenID Connect ainsi que les mécanismes de gestion de session utilisés lors des processus d'authentification centralisée.

Incident 08 - Saturation de l'infrastructure Ubuntu lors de l'intégration d'Authentik

Contexte

Au début du projet TuxForge, l'ensemble des services était hébergé sur une unique machine virtuelle Ubuntu exécutée sur la Freebox Ultra.

Cette machine disposait de ressources limitées et hébergeait simultanément plusieurs services essentiels de l'infrastructure :

  • Nextcloud installé via Snap ;
  • MariaDB ;
  • Redis ;
  • Grafana ;
  • Prometheus ;
  • cAdvisor ;
  • Nginx Proxy Manager ;
  • Vaultwarden ;
  • Forgejo ;
  • Uptime Kuma ;
  • le site TuxForge ;
  • le backend ;
  • OnlyOffice.

Au moment de l'intégration d'Authentik afin de mettre en place l'authentification centralisée de l'infrastructure, les performances globales de la plateforme se sont fortement dégradées.

Cet incident a constitué l'un des principaux déclencheurs du projet de migration vers Proxmox.

Symptômes

Progressivement, la machine est devenue difficile à administrer.

Les symptômes observés étaient les suivants :

  • ralentissements importants de l'ensemble des services ;
  • temps de réponse très élevés ;
  • difficultés à exécuter certaines commandes d'administration ;
  • interfaces web devenant lentes ou momentanément indisponibles ;
  • charge processeur constamment élevée.

Les contrôles effectués montraient régulièrement :


$ uptime

avec des résultats similaires à :

load average: 12.85, 15.52, 11.25


ou encore :

load average: 16.50, 16.16, 11.94


Ces valeurs étaient particulièrement élevées pour une machine ne disposant que de deux vCPU.

Une capture réalisée durant les investigations montrait également les deux processeurs utilisés à 100 % en permanence.

Diagnostic

Face à cette situation, plusieurs pistes ont été étudiées successivement.


Vérification du stockage

La première hypothèse concernait un manque d'espace disque.

Les contrôles réalisés avec :


$ df -h
$ lsblk

ont montré que le système de fichiers principal approchait de la saturation avec plus de 90 % d'occupation.

Une extension de l'espace de stockage de la machine virtuelle a alors été réalisée.

Malgré cette augmentation, les ralentissements ont persisté et la charge système est restée anormalement élevée.

L'hypothèse d'un problème lié au stockage a donc été progressivement écartée.


Vérification de la mémoire et du swap

Les investigations se sont ensuite orientées vers la mémoire.

Les commandes suivantes ont été utilisées :


$ free -h
$ top
$ htop

Les résultats ont révélé une utilisation importante du swap.

Une opération de nettoyage du swap a été effectuée afin de vérifier son impact sur les performances du système.


$ swapoff -a
$ swapon -a

Malgré cette intervention, aucune amélioration significative n'a été observée et la charge processeur restait extrêmement élevée.


Les relevés réalisés à différents moments de l'investigation montraient régulièrement des charges système comprises entre 12 et 16 alors que la machine ne disposait que de deux vCPU. Ces valeurs confirmaient que le serveur était durablement en situation de saturation et qu'une simple optimisation ponctuelle ne suffirait probablement pas à résoudre le problème.


Investigation sur les services hébergés

L'analyse s'est alors concentrée sur les applications exécutées sur la machine.

Les premières observations ont montré qu'OnlyOffice figurait parmi les services les plus consommateurs de ressources processeur.

Plusieurs processus liés au serveur documentaire apparaissaient régulièrement en tête des consommations CPU dans les relevés système.

Afin de vérifier cette hypothèse, le service OnlyOffice a été temporairement arrêté.

Cette opération a permis de récupérer une partie des ressources disponibles, mais les ralentissements généraux sont restés présents.

OnlyOffice n'était donc pas l'unique responsable de la saturation observée.


Analyse des conteneurs Docker

Les investigations ont ensuite été poursuivies au niveau des conteneurs Docker à l'aide de la commande :


$ docker stats --no-stream

Les différents relevés ont progressivement mis en évidence une consommation anormalement élevée du conteneur cAdvisor.

Selon les mesures effectuées, celui-ci utilisait régulièrement :

  • 33 % du processeur ;
  • 50 % du processeur ;
  • plus de 90 % du processeur ;

avec des pointes dépassant parfois 140 % d'utilisation CPU sur un système ne disposant que de deux vCPU.

À l'inverse, les autres services restaient relativement stables.

Cette analyse a permis d'identifier cAdvisor comme l'un des principaux contributeurs à la surcharge de la machine.

Cause

L'incident ne résultait pas d'un unique dysfonctionnement mais d'une accumulation de plusieurs facteurs.

L'infrastructure reposait sur une seule machine virtuelle disposant de ressources limitées alors que le nombre de services hébergés augmentait progressivement.

L'ajout progressif de nouveaux services tels que Nextcloud, OnlyOffice, Grafana, Prometheus, Vaultwarden, Forgejo, Nginx Proxy Manager, Uptime Kuma puis Authentik a progressivement conduit la plateforme à atteindre ses limites.

Dans ce contexte, la collecte intensive de métriques réalisée par cAdvisor a fortement contribué à la saturation du processeur.

L'installation d'Authentik n'était donc pas la cause directe du problème mais a constitué l'élément déclencheur qui a révélé les limites de l'architecture initiale.

Cet incident a également montré que la supervision elle-même pouvait devenir une source de consommation significative lorsqu'elle est déployée sur une infrastructure disposant de ressources limitées.

Résolution

Une première tentative d'optimisation a consisté à réduire la quantité de métriques collectées par cAdvisor.

La configuration suivante a notamment été ajoutée au fichier docker-compose.yml :.


command:
- --disable_metrics=process,diskIO


Cette modification a permis de diminuer partiellement la charge générée par le conteneur mais n'a pas suffi à rétablir un fonctionnement satisfaisant..

Face à cette situation, deux décisions ont été prises :.

  • arrêt temporaire d'OnlyOffice ;
  • arrêt temporaire de cAdvisor.

Ces mesures ont permis de réduire temporairement la charge système et de poursuivre les opérations de migration. Toutefois, elles ne constituaient pas une solution pérenne et la migration vers Proxmox est rapidement apparue comme la seule réponse durable au problème. .

Résultat

L'arrêt des services les plus consommateurs a permis de retrouver un niveau de performances acceptable et de poursuivre les opérations de migration..

Cet incident a surtout démontré que l'architecture initiale basée sur une unique machine virtuelle Ubuntu hébergeant l'ensemble des services n'était plus adaptée aux besoins du projet..

Il a directement conduit à la décision de migrer l'infrastructure vers Proxmox afin de répartir les charges entre plusieurs machines virtuelles spécialisées..

Avec le recul, cet incident constitue l'un des événements les plus marquants du projet TuxForge puisqu'il a mis en évidence les limites de l'infrastructure historique et a motivé la mise en œuvre de l'architecture virtualisée actuellement utilisée..

08

Bilan

Objectifs atteints


L'objectif principal de ce projet était de moderniser l'infrastructure TuxForge afin de remplacer l'ancienne architecture reposant sur une unique machine virtuelle Ubuntu hébergée sur une Freebox par une infrastructure virtualisée plus robuste et plus évolutive.


Les objectifs définis en début de projet ont été atteints :

  • migration de l'ensemble des services vers Proxmox VE ;
  • répartition des applications sur plusieurs machines virtuelles spécialisées ;
  • mise en place d'une authentification centralisée avec Authentik ;
  • déploiement d'une solution de supervision basée sur Prometheus, Grafana et Uptime Kuma ;
  • sécurisation des accès grâce aux certificats TLS Let's Encrypt ;
  • publication des services via Nginx Proxy Manager ;
  • restauration des données utilisateurs ;
  • remise en service de Nextcloud et OnlyOffice ;
  • centralisation de la gestion des mots de passe avec Vaultwarden ;
  • mise en place d'une forge Git avec Forgejo.

La nouvelle architecture répond désormais aux besoins du projet tout en offrant davantage de souplesse pour les évolutions futures.


Résultats obtenus


À l'issue du projet, l'infrastructure TuxForge repose sur cinq machines virtuelles spécialisées hébergées sur Proxmox :

  • VM101 : Monitoring ;
  • VM102 : IAM ;
  • VM103 : DevOps ;
  • VM104 : Sécurité ;
  • VM105 : Collaboration.

Cette organisation permet d'isoler les services selon leur rôle, de simplifier leur administration et de faciliter les opérations de maintenance.

L'ensemble des applications principales est désormais opérationnel :

  • Authentik ;
  • Nginx Proxy Manager ;
  • Grafana ;
  • Prometheus ;
  • Uptime Kuma ;
  • Forgejo ;
  • Vaultwarden ;
  • Nextcloud ;
  • OnlyOffice ;
  • site web TuxForge ;
  • backend TuxForge.

Les services sont accessibles depuis Internet au travers de connexions sécurisées en HTTPS et bénéficient d'un système de supervision permettant de suivre leur disponibilité et leurs performances.

Par rapport à l'infrastructure d'origine, cette nouvelle architecture apporte une meilleure répartition des ressources, une plus grande facilité d'administration ainsi qu'une meilleure évolutivité pour les futurs développements du projet.


Limites actuelles


Malgré les résultats obtenus, certains sujets restent à finaliser.

L'intégration du Single Sign-On via Authentik n'est pas encore totalement fonctionnelle pour Nginx Proxy Manager et Uptime Kuma. Les investigations menées ont permis d'identifier l'origine probable du problème, mais des travaux complémentaires seront nécessaires afin de finaliser cette intégration.

Certaines optimisations restent également envisageables concernant la supervision des conteneurs Docker et l'exploitation des métriques remontées par Prometheus.

Enfin, l'infrastructure réseau continue d'évoluer et plusieurs améliorations de sécurité pourront être mises en œuvre lors des prochaines phases du projet.


Perspectives d'évolution


Plusieurs évolutions sont envisagées afin de poursuivre le développement de l'infrastructure TuxForge :

  • finalisation de l'intégration SSO sur l'ensemble des applications ;
  • déploiement de pfSense comme composant réseau central ;
  • mise en place de CrowdSec pour renforcer la protection des services exposés ;
  • amélioration des mécanismes de sauvegarde ;
  • optimisation de la supervision ;
  • enrichissement du portail TuxForge ;
  • ajout de nouveaux services auto-hébergés.

Ces évolutions permettront de poursuivre l'amélioration de l'infrastructure tout en conservant les principes qui ont guidé le projet : maîtrise des données, utilisation de logiciels libres et montée en compétences sur les technologies d'administration système et réseau.

Le projet TuxForge reste un environnement en constante évolution. La nouvelle infrastructure mise en place constitue désormais une base solide permettant d'expérimenter de nouvelles technologies, de renforcer la sécurité des services et de poursuivre la montée en compétences dans les domaines de l'administration systèmes et réseaux.

09

Compétences

Administration systèmes et Linux


La réalisation du projet TuxForge m'a permis de renforcer mes compétences en administration systèmes Linux à travers l'installation, la configuration et la maintenance de plusieurs serveurs Debian et Ubuntu.

Les différentes phases du projet m'ont notamment permis de développer les compétences suivantes :

  • installation et configuration de systèmes Linux ;
  • gestion des utilisateurs et des droits d'accès ;
  • administration des services système ;
  • gestion du stockage et des systèmes de fichiers ;
  • analyse des journaux système ;
  • sauvegarde et restauration de données ;
  • diagnostic et résolution d'incidents.

Les nombreuses opérations de migration et de dépannage réalisées au cours du projet m'ont également permis d'acquérir une meilleure maîtrise des outils d'administration en ligne de commande.


Virtualisation et conteneurisation


Le projet a constitué une première expérience approfondie de la virtualisation avec Proxmox VE.

La mise en place de l'infrastructure m'a permis d'apprendre à :

  • installer et administrer un hyperviseur Proxmox ;
  • créer et configurer des machines virtuelles ;
  • allouer les ressources matérielles ;
  • gérer le stockage des machines virtuelles ;
  • réaliser des migrations de services ;
  • effectuer des sauvegardes et des restaurations.

Le projet m'a également permis de développer mes compétences sur Docker et Docker Compose :

  • déploiement de conteneurs ;
  • gestion des images Docker ;
  • utilisation des volumes et bind mounts ;
  • administration de stacks Docker Compose ;
  • migration d'applications conteneurisées.

Réseau et publication de services


La publication des services sur Internet m'a permis d'approfondir plusieurs notions liées aux infrastructures réseau.

Les travaux réalisés ont porté notamment sur :

  • la gestion d'un nom de domaine ;
  • la configuration DNS ;
  • les redirections de ports ;
  • l'utilisation d'un reverse proxy ;
  • la publication sécurisée de services web ;
  • la résolution de problèmes de connectivité.

La mise en œuvre de Nginx Proxy Manager m'a permis de mieux comprendre le fonctionnement des reverse proxy et leur rôle dans une architecture moderne.


Sécurité et gestion des identités


La mise en place d'Authentik a constitué une première expérience concrète de gestion centralisée des identités.

Cette partie du projet m'a permis d'acquérir des compétences dans les domaines suivants :

  • gestion des utilisateurs et des groupes ;
  • authentification centralisée ;
  • Single Sign-On (SSO) ;
  • gestion des accès aux applications ;
  • sécurisation des services exposés sur Internet ;
  • utilisation de certificats TLS Let's Encrypt.

L'intégration de Vaultwarden m'a également sensibilisé aux problématiques liées à la protection des identifiants et à la gestion sécurisée des mots de passe.


Supervision et méthodologie de projet


Le déploiement de l'environnement de supervision m'a permis de découvrir les outils de métrologie et de supervision utilisés dans les infrastructures modernes.

Les compétences développées concernent notamment :

  • l'utilisation de Prometheus ;
  • la création de tableaux de bord Grafana ;
  • la supervision de machines virtuelles ;
  • la supervision de conteneurs Docker ;
  • l'analyse des performances ;
  • la détection et le diagnostic d'incidents.

Au-delà des aspects techniques, ce projet m'a également permis de développer une véritable méthodologie de travail :

  • analyse des besoins ;
  • conception d'une architecture ;
  • planification des migrations ;
  • documentation technique ;
  • résolution d'incidents ;
  • validation des fonctionnalités ;
  • suivi et amélioration continue.

Conclusion


Ce projet m'a permis de mettre en pratique de nombreuses compétences habituellement abordées séparément au cours de la formation. La conception, la migration, la sécurisation et la supervision de l'infrastructure TuxForge m'ont apporté une vision globale de l'administration systèmes et réseaux.

Au-delà des connaissances techniques acquises, ce projet a également renforcé ma capacité à analyser une situation, identifier les causes d'un problème, mettre en œuvre des solutions adaptées et documenter l'ensemble des actions réalisées dans un contexte proche des environnements professionnels.

La réalisation de ce projet de bout en bout m'a permis de travailler sur l'ensemble du cycle de vie d'une infrastructure informatique : conception, déploiement, migration, sécurisation, supervision et maintenance. Cette expérience constitue un véritable complément aux enseignements de la formation en offrant une mise en pratique concrète des compétences acquises dans un environnement réel.

10

Conclusion

Le projet TuxForge est né d'un besoin simple : disposer d'une infrastructure personnelle permettant d'héberger différents services tout en développant des compétences concrètes en administration systèmes et réseaux.


Au fil de son évolution, ce qui n'était au départ qu'une unique machine virtuelle Ubuntu hébergée sur une Freebox est devenu une infrastructure complète reposant sur Proxmox, organisée autour de plusieurs machines virtuelles spécialisées et de nombreux services interconnectés..

La migration vers cette nouvelle architecture a représenté un défi technique important. Elle a nécessité la sauvegarde et la restauration de données, la migration d'applications, la résolution de nombreux incidents, la mise en place d'une supervision centralisée ainsi que la sécurisation des accès grâce à Authentik et aux certificats TLS..


Au-delà des aspects techniques, ce projet m'a permis de développer une véritable démarche professionnelle fondée sur l'analyse, la méthodologie et la résolution de problèmes. Les différentes difficultés rencontrées tout au long du projet ont constitué autant d'occasions d'apprendre, de rechercher des solutions et d'améliorer progressivement l'infrastructure..


Aujourd'hui, l'ensemble des services principaux est opérationnel, supervisé et accessible au travers d'une architecture plus robuste, plus évolutive et mieux adaptée aux besoins du projet. Cette nouvelle infrastructure constitue une base solide pour les futurs développements de TuxForge et pour l'intégration de nouveaux services..


Enfin, ce projet représente une expérience particulièrement enrichissante dans le cadre de ma formation. Il m'a permis de mettre en pratique de nombreuses compétences techniques dans un contexte réel, tout en développant mon autonomie, ma capacité d'analyse et ma maîtrise des outils utilisés quotidiennement dans les métiers de l'administration systèmes et réseaux..


L'infrastructure TuxForge continue aujourd'hui d'évoluer, mais cette migration vers Proxmox constitue une étape majeure dans sa construction et marque l'aboutissement des objectifs fixés au début du projet..

Retour aux projets
×