← Tous les projets

[ Infrastructure · DevOps · Jibri · 2026 ]

INSAACInfraMoodle

Client
INSAAC
Année
2026
Rôle
Fullstack Developer & Software Engineer — Infrastructure / DevOps
Durée
En cours
INSAAC — Infra Moodle

[ Aperçu ]

Conception, déploiement et migration d'une nouvelle infrastructure numérique dédiée à l'enseignement en ligne, avec séparation stricte des services : un serveur Moodle et un serveur visioconférence avec enregistrement des sessions via Jibri.

[ Le défi ]

Migrer un environnement Moodle existant sans perte de données ni interruption pour les étudiants, tout en construisant une architecture évolutive capable d'absorber les pics de classes virtuelles et le volume croissant d'enregistrements.

[ L'approche ]

Deux VPS dédiés. Serveur 1 : Nginx, Moodle, PHP-FPM, MariaDB, domaines et certificats SSL, migration complète des données. Serveur 2 : Nginx en reverse proxy, Jitsi Meet sous Docker, Jitsi Videobridge et Jibri pour l'enregistrement des sessions. Sécurisation des deux infrastructures, configuration réseau, tests de charge et de fonctionnement, puis mise en production. Une solution de stockage externe est prévue pour les enregistrements dès que le volume l'exigera.

Architecture — Deux serveurs

Étudiants & enseignants → HTTPS 443

SERVEUR 01Moodle

Plateforme pédagogique & données

  • Nginx — SSL / vhosts
  • Moodle — PHP-FPM
  • MariaDB — base migrée
  • moodledata — stockage cours
  • Cron · Let's Encrypt

Migration complète depuis l'ancien environnement

SERVEUR 02Jitsi + Jibri

Visioconférence & enregistrement

  • Nginx — reverse proxy
  • Docker — Jitsi Meet
  • Jitsi Videobridge — UDP 10000
  • Jibri — enregistrement des sessions
  • Stockage externe (évolutif)

Pics de classes virtuelles isolés du LMS

Lien inter-serveurs — SSO Moodle ↔ salles Jitsi
Fig. 01 — Séparation stricte : le LMS et la visioconférence vivent sur deux serveurs indépendants.

01 · Contexte

L'INSAAC exploitait un environnement Moodle vieillissant, saturé dès que les classes virtuelles démarraient. L'objectif : reconstruire une infrastructure professionnelle, migrer l'existant sans perte, et prévoir la montée en charge et l'enregistrement des cours.

  • Zéro perte de données lors de la migration
  • Continuité de service pour les étudiants
  • Architecture évolutive et documentée

02 · Déploiement

Deux VPS provisionnés en parallèle. Le serveur 1 reçoit la stack Moodle et la migration des données (base, code, moodledata) avec bascule DNS contrôlée. Le serveur 2 accueille Jitsi Meet sous Docker, le Videobridge et Jibri pour l'enregistrement, derrière un reverse proxy Nginx.

  • Bascule DNS planifiée hors heures de cours
  • Tests de charge sur les salles virtuelles
  • Stockage externe prévu pour les enregistrements

03 · Sécurité

Chaque serveur est durci indépendamment : pare-feu dédié, ouverture minimale des ports, SSH par clé, certificats Let's Encrypt automatisés et cloisonnement des conteneurs. La séparation des services limite mécaniquement la surface d'attaque et le rayon d'impact d'un incident.

  • Un incident visio n'impacte pas les cours
  • Sauvegardes séparées par serveur
  • Enregistrements Jibri à accès restreint

[ Galerie ]

INSAAC — Infra Moodle — 101 / 01

[ Résultats ]

2

Serveurs dédiés séparés

100%

Données migrées

Jibri

Enregistrement des sessions

Stockage externe évolutif

[ Crédits ]

  • 01 · Infrastructure & DevOpsHassan Diarrassouba — Xel digital
  • 02 · Coordination pédagogiqueÉquipe INSAAC

[ Stack technique ]

  • Linux
  • Nginx
  • PHP-FPM
  • MariaDB
  • Moodle
  • Docker
  • Jitsi Meet
  • Jibri
  • Let's Encrypt
  • SSL/TLS
  • Reverse proxy

[ Témoignage client ]

L'architecture séparée nous donne de la marge : les cours ne ralentissent plus quand les classes virtuelles tournent, et les sessions sont enregistrées.

ÉI

Équipe INSAAC

Direction numérique, INSAAC

Une Vo1x

Projet suivant

Une Vo1x

Projet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1xProjet suivant · Une Vo1x