Vous devez maîtriser : création manuelle d'utilisateurs, création de cours, assignation de rôles, paramètres généraux du site (vu en Sprint 1 de la Phase 0). Si ce n'est pas le cas, cliquez sur ← Phase 0 pour réviser.
🎯 Ce que vous saurez faire à la fin de ce sprint
Authentification LDAP Validée
Connecter Moodle à l'annuaire d'entreprise · Single Sign-On de baseLDAP (Lightweight Directory Access Protocol) permet à Moodle d'interroger l'annuaire centralisé de votre organisation (Active Directory, OpenLDAP, Samba4…) pour authentifier les utilisateurs avec leurs identifiants d'entreprise habituels.
- 🔐Un seul mot de passe pour l'utilisateur — celui de son compte d'entreprise. Plus besoin de gérer des mots de passe Moodle séparés.
- 👥Création auto : un nouvel employé créé dans l'annuaire apparaît automatiquement dans Moodle à sa première connexion.
- 🚪Départ = accès coupé : désactivation dans l'annuaire → Moodle refuse l'accès immédiatement.
- 🔄Synchronisation programmée (CRON) : service, département, téléphone… mis à jour automatiquement.
📍 Chemin exact dans Moodle :
Gérer l'authentification
Formulaire de configuration — 3 sections essentielles
Paramètres — Serveur LDAP
ldaps:// (chiffré TLS, port 636). Jamais ldap:// en production.sAMAccountName | OpenLDAP : uidldaps://sAMAccountName pour ADsAMAccountName. OpenLDAP : identifiant = uid. Vérifiez toujours avec votre équipe système.ldaps:// (port 636, chiffré) en production. ldap:// (port 389) envoie les mots de passe en clair sur le réseau.- Suivez le chemin : Administration du site → Plugins → Authentification → Gérer l'authentification.
- Dans la liste, repérez « Serveur LDAP ». Cliquez sur l'icône 👁️ (œil) pour activer le plugin.
- Cliquez sur
Paramètresà côté de « Serveur LDAP ». - Renseignez à minima : URL du serveur (
ldaps://votre.serveur.fr:636), DN de liaison, Mot de passe de liaison, Contexte de recherche. - Définissez Attribut identifiant =
sAMAccountName(AD) ouuid(OpenLDAP). - Sauvegardez, puis cliquez « Tester les paramètres ». Vérifiez que Moodle renvoie « Connexion réussie ».
- Test final : ouvrez une fenêtre privée, connectez-vous avec un compte LDAP réel. Vérifiez que le compte apparaît ensuite dans Administration → Utilisateurs → Parcourir la liste avec la méthode d'authentification LDAP.
Authentification OAuth 2 (Google, Microsoft, Apple) Validée
Single Sign-On cloud · « Se connecter avec Google » sur la page de loginOAuth 2 est le standard d'authentification déléguée utilisé par tous les grands fournisseurs cloud. Moodle permet à l'utilisateur de se connecter avec son compte Google, Microsoft 365, Apple, ou tout fournisseur OpenID Connect compatible.
- 🔐Zéro mot de passe stocké dans Moodle — le mot de passe reste chez Google/Microsoft. Fin des fuites de mots de passe côté LMS.
- ⚡UX instantanée : 1 clic sur « Continuer avec Google » → l'utilisateur est dans Moodle en 2 secondes.
- 🏫Idéal pour Google Workspace / Microsoft 365 : les comptes des apprenants sont déjà provisionnés côté Google/MS, on évite la double gestion.
- 🔄MFA délégué : si Google exige un code par SMS, c'est géré côté Google. Moodle n'a rien à faire.
📍 Chemin exact dans Moodle :
Services OAuth 2 enregistrés
Services OAuth 2 enregistrés
Configuration du service Google (champs essentiels)
Configurer le service Google
@monecole.fr seront acceptés.Résultat visible par l'apprenant sur la page de login
localhost en dev).- Côté Google : allez sur
console.cloud.google.com→ créez un projet « Moodle-MonEcole ». - Menu APIs & Services → OAuth consent screen → choisissez Internal (Google Workspace) ou External → remplissez : nom app, email support, domaine autorisé
monecole.fr. - Menu Credentials → Create credentials → OAuth 2.0 Client ID → Type Web application.
- Dans Authorized redirect URIs, collez :
https://moodle.monecole.fr/admin/oauth2callback.php. - Copiez le Client ID et le Client Secret qui s'affichent.
- Côté Moodle : Administration du site → Serveur → Services OAuth 2 → « Créer un nouveau service Google ».
- Collez le Client ID et le Client Secret, nommez le service, enregistrez.
- Cliquez « Découvrir des services » → Moodle récupère automatiquement les endpoints OAuth Google.
- Allez dans Plugins → Authentification → Gérer l'authentification → activez « OAuth 2 ».
- Test : ouvrez une fenêtre privée → la page de login doit afficher le bouton « Continuer avec Google ». Cliquez, authentifiez-vous avec un compte Gmail de votre domaine, vérifiez l'arrivée sur le tableau de bord Moodle.
@monecole.fr peut cliquer sur « Continuer avec Google » et arriver directement sur son tableau de bord Moodle, sans jamais saisir de mot de passe Moodle. Son compte apparaît dans la liste des utilisateurs avec la méthode d'auth « OAuth 2 ».Authentification SAML 2 (Shibboleth / Azure AD Enterprise) Validée
Fédération d'identité XML · Usage universitaire et entreprise haut niveauSAML 2 (Security Assertion Markup Language) est le standard de fédération d'identité XML utilisé par les universités (Shibboleth, Renater), les grandes entreprises (Azure AD Enterprise, ADFS, Okta, Ping Identity) et les administrations. Moodle joue le rôle de Service Provider (SP) qui fait confiance à un Identity Provider (IdP).
- 🎓Universités & fédérations : un seul compte pour Moodle, la bibliothèque, les ressources Elsevier, Zoom Pro, etc. via Renater / eduGAIN.
- 🏢Entreprise : intégration native Azure AD / ADFS / Okta — les apps d'entreprise parlent toutes SAML.
- 🔏Assertions signées cryptographiquement (XML Signature) : aucune possibilité de falsification, même si un attaquant intercepte la requête.
- 👥Attributs riches : email, nom, affiliation, département, groupes — tout ce dont Moodle a besoin arrive en une seule assertion.
SAMLAuthnRequest XML et redirige vers l'IdPauth_saml2 (édité par Catalyst IT) — référence absolue, utilisé par 15 000+ sites Moodle, compatible Azure AD, Shibboleth, ADFS, Okta.
📍 Chemin d'installation :
Répertoire officiel des plugins Moodle
SAML2 v5.1.3 ✓ Vérifié
Configuration du plugin SAML2 — 3 sections
Paramètres SAML2 · Service Provider (SP)
MIIDxTCCAq2gAwIBAgIJAKkK/d3zN9YEMA0GCSqGSIb3DQEB…
…auto-généré par le plugin — valide jusqu'au 2028-04-15…
-----END CERTIFICATE-----
| Attribut SAML (IdP) | Champ Moodle | Statut | |
|---|---|---|---|
| http://schemas.xmlsoap.org/…/emailaddress | → | Requis | |
| http://schemas.xmlsoap.org/…/givenname | → | firstname | Requis |
| http://schemas.xmlsoap.org/…/surname | → | lastname | Requis |
| http://schemas.xmlsoap.org/…/name | → | username | Requis |
| http://schemas.microsoft.com/…/department | → | department | Optionnel |
| http://schemas.microsoft.com/…/groups | → | cohorts (auto-assign) | Optionnel |
urn:oid:0.9.2342.19200300.100.1.3 (mail), urn:oid:2.5.4.42 (givenName), etc.Extrait des métadonnées SP (XML généré automatiquement)
Page de login entreprise (SSO SAML)
Connexion à Moodle
Connexion sécurisée SAML 2.0 · Single Sign-On
- Côté Moodle : Administration → Plugins → Installer des plugins → recherchez
auth_saml2→ Installer. - Une fois installé, allez dans Plugins → Authentification → Gérer l'authentification → activez « SAML2 ».
- Cliquez Paramètres du plugin SAML2. Notez le SP Entity ID et l'URL des métadonnées SP.
- Côté Azure AD : allez sur
portal.azure.com→ Entra ID → Enterprise applications → New application → Non-gallery app → nommez « Moodle SAML ». - Dans l'app créée : Single sign-on → SAML → renseignez :
- Identifier (Entity ID) = SP Entity ID copié depuis Moodle
- Reply URL =
https://moodle.monecole.fr/auth/saml2/sp/saml2-acs.php
- Toujours côté Azure : section User Attributes & Claims → vérifiez que
emailaddress,givenname,surname,namesont bien exportés. - Section SAML Certificates → copiez l'URL « App Federation Metadata Url ».
- Retour dans Moodle : collez cette URL dans le champ « URL des métadonnées IdP ». Enregistrez.
- Dans Azure : Users and groups → ajoutez un utilisateur test à l'app.
- Test : fenêtre privée → page de login Moodle → cliquez « Connexion avec mon compte entreprise » → vous êtes redirigé vers Azure → connectez-vous → retour automatique sur le tableau de bord Moodle.
Cohortes avancées & inscriptions automatiques Validée
Sync AD groups → cohortes Moodle · Règles par champ profil · Parcours métierUne cohorte est un groupe global d'utilisateurs — différent d'un groupe de cours qui est local. Les cohortes permettent d'industrialiser l'inscription : alimenter la cohorte depuis une source externe (AD, CSV, profil), puis inscrire toute la cohorte à un cours en un clic.
- ⚡Fin des inscriptions manuelles : déclarez une règle une seule fois (ex : « département = Marketing → cohorte Marketing »), Moodle s'en occupe.
- 🔄Synchronisation temps quasi-réel : le CRON Moodle rejoue les règles toutes les X minutes — un nouvel arrivant apparaît vite dans son cours.
- 🏢Cohérence avec l'organigramme : mutation, promotion, départ — la cohorte suit automatiquement.
- 📈Scalabilité : 10 apprenants ou 10 000, le même effort de configuration initial.
📍 Chemin exact dans Moodle :
Cohortes système — vue d'ensemble
Cohortes système (6)
| Cohorte | Source | Membres | Dernière sync | Actions |
|---|---|---|---|---|
| Équipe Marketing 2026marketing-2026 | LDAP · GRP_Marketing | 42 | il y a 3 min ✓ | |
| Promotion Bac+3 2025-2026promo-L3-2026 | CSV · importé 2026-01-12 | 218 | statique | |
| Managers (N+1)managers | Règle profil · role=manager |
87 | il y a 10 min ✓ | |
| Nouveaux arrivantsonboarding | API REST · SIRH | 14 | il y a 2 min ✓ | |
| Formateurs internestrainers | Manuel | 12 | — |
Configuration règle de synchronisation — « Équipe Marketing 2026 »
Éditer la cohorte — Équipe Marketing 2026
Attacher la cohorte au cours « Formation Marketing »
Méthodes d'inscription
Exemple de parcours métier « Nouveau marketeur »
1. Nouveau arrivant
Créé dans Active Directory par l'équipe RH (compte + groupe GRP_Marketing)
2. Sync LDAP
CRON détecte le nouveau membre dans GRP_Marketing sous 10 minutes
3. Cohorte peuplée
Ajouté à « Équipe Marketing 2026 » · visible en admin
4. Cours visible
« Formation Marketing » apparaît dans son tableau de bord — 0 clic admin
- Côté AD : vérifiez (ou créez) un groupe de test, par exemple
GRP_Demo_Formation, avec 2-3 comptes utilisateurs de test. - Moodle : Administration → Utilisateurs → Comptes → Cohortes → Nouvelle cohorte.
- Nommez-la
Cohorte Demo Formation. ID :demo-formation. Contexte : Système. - Enregistrez, puis éditez-la → section Source de synchronisation → choisissez Groupe LDAP.
- Collez le DN :
CN=GRP_Demo_Formation,OU=Groupes,DC=monecole,DC=fr. Fréquence : 10 min. Retirer absents : Oui. - Cliquez « Forcer la synchronisation maintenant » → vérifiez que les 2-3 comptes apparaissent dans la cohorte.
- Créez (ou ouvrez) un cours Test Automatisation. Allez dans Participants → Méthodes d'inscription.
- Cliquez « Ajouter une méthode » → choisissez « Synchronisation de cohorte ».
- Liez la cohorte
Cohorte Demo Formation, rôle Apprenant. Enregistrez. - Test final : dans Participants, vérifiez que les 2-3 comptes sont inscrits automatiquement. Puis retirez un utilisateur du groupe AD, attendez 10 min, et constatez sa désinscription automatique.
GRP_Demo_Formation se répercute en moins de 15 minutes dans le cours Moodle Test Automatisation, sans aucune intervention d'un administrateur ou d'un enseignant. La colonne Méthode d'inscription du participant affiche « Synchronisation de cohorte ».Journalisation RGPD & rapports d'audit Validée
Logstore · Rapports d'activité · Export données personnelles · AnonymisationMoodle journalise chaque action dans un logstore — base d'événements horodatés. Ce journal alimente trois domaines : la conformité RGPD (preuve d'accès), le pilotage pédagogique (mesure d'engagement) et les audits sécurité (traçabilité incidents).
- ⚖️Conformité RGPD native depuis Moodle 3.5 : export données, droit à l'oubli, rétention, consentement — tout est bundle, rien à installer.
- 🔍Traçabilité complète : qui a consulté quoi, quand, depuis quelle IP — indispensable en cas de contrôle CNIL ou d'incident.
- 📊Pilotage pédagogique : rapports d'engagement, temps passé, complétion — données objectives pour l'équipe formation.
- 👤Rôle DPO dédié : Délégué à la Protection des Données avec permissions fines pour traiter demandes et exports.
📍 Chemins exacts dans Moodle :
Visualiseur de logs — événements filtrables
Journaux d'événements (logstore_standard)
| Horodatage | Utilisateur | Événement | Contexte | IP |
|---|---|---|---|---|
| 22/04 15:38:12 | JD Jean Dupont |
assign · submission_created | Formation Marketing · Devoir 3 | 192.168.4.142 |
| 22/04 15:37:48 | MA Marie Alaoui |
course · course_viewed | Sécurité IT · section 2 | 10.0.12.55 |
| 22/04 15:36:02 | AD Admin Site |
grade · user_graded | Excel Avancé · Carnet de notes | 10.0.2.1 |
| 22/04 15:34:19 | PL Paul Leroy |
user · user_loggedin | Site · auth SAML2 | 82.67.143.8 |
| 22/04 15:31:45 | JD Jean Dupont |
mod_quiz · quiz_viewed | Formation Marketing · Quiz chapitre 3 | 192.168.4.142 |
| 22/04 15:28:33 | AD Admin Site |
user · user_deleted | Utilisateur obsolète (politique rétention) | 10.0.2.1 |
Tableau de bord DPO — demandes RGPD
Pilotage RGPD
Politique de rétention — anonymisation automatique par finalité
Durées de conservation par finalité
Timeline d'un utilisateur — extrait export RGPD
- Créer le rôle DPO : Administration → Utilisateurs → Permissions → Définir les rôles → Ajouter un rôle. Baser sur « Manager ». Cocher uniquement les
tool/dataprivacy:*. Enregistrer. - Assignez ce rôle à votre compte test (simule le DPO).
- Simuler une demande côté apprenant : connectez-vous en tant qu'un utilisateur test → Profil → Confidentialité et politiques → « Demander un export de mes données ».
- Retour côté DPO : Administration → Utilisateurs → Confidentialité et politiques → Demandes de données.
- Vous voyez la demande en statut « En attente ». Cliquez « Approuver ».
- Moodle déclenche la génération du ZIP en tâche de fond (CRON). Attendez 2-5 minutes, puis rafraîchissez.
- La demande passe en « Complétée » → cliquez « Télécharger » → vérifiez le contenu du ZIP (HTML avec structure + JSON + fichiers).
- Politique de rétention : Administration → Utilisateurs → Confidentialité et politiques → Durées de conservation. Définissez « Logs techniques : 13 mois ».
- Lancez l'anonymisation manuelle : Administration → Serveur → Tâches programmées → cherchez
\\tool_dataprivacy\\task\\delete_expired_contexts→ Exécuter maintenant. - Vérification : dans Journaux, filtrez sur événement
user_deletedoucore\\event\\data_privacy_expired→ vous voyez la trace d'anonymisation.
Sauvegardes automatiques & restauration Validée
CRON backup · DB + moodledata + code · DRP · Restauration granulaire · MigrationUn Moodle se compose de 3 couches indissociables : la base de données, le répertoire moodledata (fichiers) et le code applicatif. Une sauvegarde valable inclut les 3 simultanément. Moodle embarque un système de sauvegarde automatique des cours, et l'administrateur système ajoute une stratégie DRP globale.
- 🛡️Règle 3-2-1 : 3 copies, 2 supports différents, 1 copie hors site. Standard DRP incontournable.
- ⏱️RPO / RTO : définissez combien de minutes de données vous pouvez perdre (RPO) et combien de temps d'indisponibilité est acceptable (RTO).
- 🧪Une sauvegarde non testée n'existe pas : programmez des exercices de restauration trimestriels sur une plateforme de préprod.
- 🔀Restauration granulaire : Moodle permet de restaurer un cours entier, une activité unique, ou les données d'un seul utilisateur.
.mbz + dumps SQL)mysqldump, rsync, restic, ou solutions managées (Acronis, Veeam).
📍 Chemin exact dans Moodle :
Configuration des sauvegardes automatiques
Sauvegardes automatiques — cours Moodle
Tableau de bord DRP — état du système de sauvegarde
État du système DRP
Historique des 5 derniers backups
| Date | Type | Durée | Taille | Statut | Stockage |
|---|---|---|---|---|---|
| 22/04/2026 02:00 | Automatique quotidien | 2h 14min | 18,2 Go | Réussi | NAS + S3 ✓ |
| 21/04/2026 02:00 | Automatique quotidien | 2h 08min | 18,1 Go | Réussi | NAS + S3 ✓ |
| 20/04/2026 02:00 | Automatique quotidien | 3h 42min | 17,9 Go | Dépassement RTO | NAS + S3 ⚠ |
| 19/04/2026 02:00 | Automatique quotidien | 2h 03min | 17,8 Go | Réussi | NAS + S3 ✓ |
| 14/04/2026 10:15 | Manuel (exercice DRP) | 4h 22min | 17,4 Go | Restauration testée ✓ | preprod OK |
Assistant de restauration granulaire — 4 étapes
Restauration — Formation Marketing (sauvegarde 21/04 02:00)
Scénario DRP — restauration après incident
1. Incident
Panne stockage, corruption DB, erreur humaine, ransomware
2. Choix du point
Sélectionner la sauvegarde la plus récente saine (avant corruption)
3. Restauration
DB + moodledata + code réinstallés sur serveur cible (production ou secours)
4. Vérification
Tests de bascule, contrôle intégrité, communication utilisateurs
- Configuration auto-backup : Administration → Cours → Sauvegardes → Configuration des sauvegardes automatiques.
- État : Activé. Jours : tous. Heure :
02:00. - Inclure : notes, devoirs, tentatives quiz, forums. Décochez les journaux (volumineux).
- Chemin :
/moodledata/backup/. Définissez l'export externe vers votre stockage S3 ou équivalent. - Rétention : 7 quotidiennes + 4 hebdomadaires + 12 mensuelles. Enregistrez.
- Forcer un backup immédiat : Administration → Serveur → Tâches programmées → cherchez
\\core\\task\\automated_backup_task→ Exécuter maintenant. - Attendez la fin. Vérifiez qu'un fichier
.mbzapparaît dans/moodledata/backup/. - Restauration test : créez un cours vide Test Restauration. Allez dans Cours → Restaurer → téléversez le
.mbz. - Suivez l'assistant : Source → Contenu (tout inclus) → Destination (cours Test Restauration) → Confirmation. Lancez.
- Vérifiez : le cours restauré contient toutes les activités, les notes des utilisateurs existants, et les fichiers téléversés.
Performance : cache MUC, Redis, CRON Validée
Cache multiniveau · Redis production · Tâches planifiées · Monitoring temps de réponseLa performance Moodle à grande échelle repose sur 3 piliers : le cache multiniveau (MUC + Redis), le CRON qui exécute toutes les tâches différées, et le monitoring qui mesure en continu. Ces 3 piliers divisent par 10 le temps de réponse perçu.
- ⚡MUC + Redis : temps de réponse divisé par 10 à 100, sur les pages vues les plus fréquentes (dashboard, course view, grade report).
- 🗓️CRON toutes les minutes : indispensable en production. Sync cohortes, emails, backups, indexation — tout passe par là.
- 📈Monitoring temps réel : cache hit rate, p95 / p99 du temps de réponse, requêtes lentes SQL — détection proactive des goulots.
- 💰Économie d'infrastructure : un site Moodle bien caché supporte 5-10× plus d'utilisateurs sur le même serveur.
📍 Chemins dans Moodle :
Configuration MUC — mapping cache → store
Moodle Universal Cache — définitions
| Définition | Type | Store actuel | Latence | Action |
|---|---|---|---|---|
| core/config Configuration site |
Application | APCuAPCu local | 0,04 ms | |
| core/language Chaînes traduites |
Application | RRedis prod | 0,8 ms | |
| core/string Chaînes interface |
Application | RRedis prod | 0,8 ms | |
| core/coursecat Catégories de cours |
Application | RRedis prod | 0,9 ms | |
| core/plugin_functions Fonctions plugins |
Application | FFile ⚠ | 12 ms | |
| session_handler Sessions utilisateur |
Session | RRedis prod (DB 1) | 1,1 ms | |
| core/grade_categories Catégories notes |
Request | APCuAPCu local | 0,03 ms |
Paramètres du store Redis production
Store Redis « redis_prod »
Extrait config.php — session Redis + cache APCu
Tâches planifiées — file CRON
File CRON — 247 tâches · 3 en cours · 1 en échec
Dashboard performance temps réel
Performance — 24 dernières heures
Cache hit rate global
Charge CPU serveur
opcache.preload dans PHP 7.4+ pour charger le framework Moodle en mémoire au démarrage PHP-FPM. Gain : 10-15 % supplémentaires sur le temps de réponse.* * * * * www-data php /var/www/moodle/admin/cli/cron.php). Webcron est moins fiable et expose une URL publique.- Installer Redis côté système :
sudo apt install redis-server php-redis. Démarrer :systemctl enable --now redis-server. - Sécuriser Redis : éditer
/etc/redis/redis.conf→bind 127.0.0.1,requirepass VOTRE_MDP,maxmemory 2gb,maxmemory-policy allkeys-lru. - Tester avec benchmark baseline AVANT :
ab -n 500 -c 10 https://moodle.monecole.fr/my/. Notez le temps moyen. - Configuration Moodle : éditer
config.phpet ajouter les lignessession_redis_*du snippet ci-dessus. - Dans Moodle : Administration → Plugins → Cache → Configuration → Ajouter un store → Redis → remplir les paramètres.
- Mapper les définitions core/language, core/string, core/coursecat, core/plugin_functions vers le store Redis.
- Purger tous les caches pour prendre en compte le nouveau mapping.
- Configurer le CRON système :
sudo crontab -u www-data -epuis ajouter :* * * * * /usr/bin/php /var/www/moodle/admin/cli/cron.php >/dev/null 2>&1 - Vérifier dans Tâches planifiées que la dernière exécution CRON est < 2 min. Plus d'alerte rouge en haut de Moodle.
- Re-benchmark APRÈS :
ab -n 500 -c 10 https://moodle.monecole.fr/my/. Comparez : vous devriez voir 3-10× plus rapide sur les pages fréquentées.
Multisite & MNet — fédération inter-Moodle Validée
MNet · Hub-and-spoke · Multi-tenancy · SSO inter-MoodleMNet (Moodle Network) est le protocole de fédération entre instances Moodle. Il permet à des Moodles distincts d'établir une relation de confiance cryptographique et de partager comptes + cours, avec SSO transparent entre eux.
- 🌐Hub-and-spoke : 1 Moodle central gère les comptes, N Moodles satellites hébergent les cours locaux à chaque site/école.
- 🔑SSO inter-Moodle : l'apprenant navigue d'un Moodle à l'autre sans jamais ressaisir ses identifiants — clés publiques échangées.
- 🏢Multi-tenancy : chaque site/filiale garde son autonomie (thème, cours, équipes) tout en restant fédéré.
- ⚠️MNet se déprécie : pour les nouveaux projets, OAuth 2 / SAML 2 sont recommandés. Mais MNet reste largement déployé dans l'enseignement supérieur.
📍 Chemins dans Moodle :
Pairs MNet — 4 établissements fédérés avec le hub
Pairs MNet (4 satellites actifs)
Ajouter un nouveau pair MNet
Nouveau pair MNet
Parcours SSO — apprenant passe d'École Nord au Hub
1. Connecté sur Nord
L'apprenant est authentifié sur moodle-nord.reseau.fr (SAML Azure AD)
2. Clic lien Hub
Il clique sur un cours du hub : « Formation mutualisée »
3. Jeton MNet
Nord génère un jeton XML-RPC signé, envoyé au hub
4. Accès accordé
Hub valide la signature, crée une session locale, affiche le cours
Comparatif des 4 architectures multisite
| Architecture | Cas d'usage type | Autonomie sites | Complexité | Coût infra | Recommandé si |
|---|---|---|---|---|---|
| Hub-and-spoke | Groupe scolaire · académie · groupe d'entreprises | Comptes centralisés · cours autonomes | |||
| Mesh (peer-to-peer) | Consortium d'universités · eduGAIN · Renater | Aucune hiérarchie · partage mutuel | |||
| Multi-tenant (Workplace) | Organisme formation SaaS · groupe avec filiales | Produit Workplace (non open-source, payant) | |||
| Instance unique + cohortes | PME · université monosite · formation continue | Moins de 10 000 users · pas de filiales |
- Prérequis : 2 instances Moodle en HTTPS (
moodle-hubetmoodle-nord). PHP extensionxmlrpcou remplaçant installée sur les deux. - Activer MNet sur les 2 : Administration → Fonctionnalités avancées → cocher Activer les fonctionnalités réseau (MNet).
- Sur chacun : Serveur → MNet → Paramètres → régénérer la clé publique locale si nécessaire. Copier la clé publique affichée.
- Sur le hub : Serveur → MNet → Pairs → Ajouter un pair. URL :
https://moodle-nord.reseau.fr. Le hub récupère automatiquement la clé publique distante → vérifiez l'empreinte avec l'admin de Nord par téléphone. - Approuver. Activer les services : IDP (sortant), SP (entrant), Inscription distante.
- Sur Nord : faire la même opération inverse — ajouter le hub comme pair, vérifier empreinte, activer services.
- Activer le plugin auth MNet sur les 2 : Plugins → Authentification → Gérer → activer Authentification MNet.
- Test SSO : connectez-vous sur
moodle-nord. Dans votre profil, bloc Hôtes du réseau, vous voyez moodle-hub. Cliquez. - Vous êtes automatiquement connecté sur le hub avec un compte miroir. Vérifiez que votre nom et email sont présents.
- Vérification côté hub : Utilisateurs → Parcourir la liste → votre compte apparaît avec méthode d'authentification MNet et hôte d'origine moodle-nord.
Écosystème des plugins indispensables BONUS 1/5 Validée
14 plugins clés · 7 catégories · 3 méthodes d'installation · vérification signatureL'écosystème Moodle compte 2000+ plugins sur Moodle.org. Un admin pro connaît 14 plugins essentiels couvrant 90 % des besoins, et sait les installer via 3 méthodes selon le contexte (prod, dev, offline).
- 📦Plugin Directory Moodle.org : 2000+ plugins audités par la communauté avec badge Verified + compatibilité version affichée.
- 🛡️3 catégories de sources : natifs (bundled), vérifiés Moodle.org (confiance haute), tiers externes (audit manuel requis).
- ⚙️3 méthodes d'installation : UI (ZIP upload), CLI (
admin/cli/install_plugin.php), manuelle (extraction FS + upgrade). - 📝Inventaire documenté :
doc/plugins.mdavec version, source, date — indispensable pour migration et audit.
doc/plugins.md + tests + configuration + monitoring📍 Chemins dans Moodle :
Les 14 plugins essentiels — par catégorie fonctionnelle
3 méthodes d'installation — choisir selon le contexte
Via l'interface web
- Télécharger ZIP depuis
moodle.org/plugins - Admin → Plugins → Installer des plugins
- Glisser-déposer le
.zip - Cliquer Installer depuis le ZIP
- Moodle valide + lance upgrade BD automatiquement
Via CLI (ligne de commande)
- Se connecter SSH au serveur Moodle
- Télécharger ZIP depuis Moodle.org :
wget URL.zip - Lancer :
php admin/cli/install_plugin.php --zip=mon_plugin.zip - Puis upgrade :
php admin/cli/upgrade.php --non-interactive - Vérifier :
php admin/cli/uninstall_plugins.php --show-all
Manuelle (filesystem)
- Identifier le type :
auth/,mod/,blocks/,theme/… - Extraire le ZIP dans le bon dossier :
ex :unzip auth_saml2.zip -d /var/www/moodle/auth/ - Vérifier droits :
chown -R www-data /var/www/moodle - Dans Moodle UI : Admin → Notifications déclenche l'upgrade
- Valider l'installation sur la page d'upgrade
Matrice décisionnelle — 3 sources de plugins
| Critère | Bundled (core) | Verified Moodle.org | Tiers externe |
|---|---|---|---|
| Audit de sécurité | ✓ Équipe Moodle HQ | ✓ Reviewers communauté | ✗ Audit interne requis |
| Compatibilité garantie | ✓ Par version Moodle | ✓ Version annoncée | ⚠ À tester |
| Maintenance long terme | ✓ Suivie par HQ | ✓ Communauté + dev | ✗ Risque abandon |
| Conformité RGPD | ✓ Native | ✓ Déclarée | ⚠ À vérifier |
| Support Moodle Tracker | ✓ Oui | ✓ Oui | ✗ Non officiel |
| Autorisation production | ✓ Sans restriction | ✓ Sans restriction | ✗ DSI requise |
Vue d'ensemble des plugins installés — avec mises à jour disponibles
Plugins installés — 12 additionnels
doc/plugins.md dans votre dépôt Git avec pour chaque plugin : nom, version, source, date d'install, raison d'installation, responsable. En cas de migration ou d'audit, c'est vital.- Créer un inventaire : dans le dépôt Git de votre Moodle (ou sur votre poste), créez
doc/plugins.mdavec pour en-tête les colonnes : Nom · Type · Version · Source · Date · Responsable · Raison. - Plugin 1 — mod_customcert : allez sur
moodle.org/plugins/mod_customcert→ téléchargez le ZIP → Admin → Plugins → Installer des plugins → glissez-déposez → Installer. - Configurez une fois installé : Admin → Plugins → Activités → Custom certificate → créez un template par défaut avec logo de votre organisation.
- Documentez dans
plugins.md: ligne ajoutée avec version exacte, date du jour, raison « délivrance certificats formation obligatoire ». - Plugin 2 — block_completion_progress : même procédure d'installation. Ajoutez ensuite le bloc dans un cours test → Activer le mode édition → Ajouter un bloc → Barre de progression.
- Vérifiez : la barre affiche toutes les activités du cours avec état (à faire / en cours / terminé) par apprenant. Documentez dans
plugins.md. - Plugin 3 — theme_adaptable : installer → Admin → Apparence → Thèmes → Sélecteur de thème → basculer sur Adaptable → explorer les options.
- Personnalisez au moins : logo, couleur primaire, slider d'accueil, footer avec mentions légales. Documentez.
- Méthode CLI bonus : si vous avez un accès SSH au serveur, réinstallez un de ces plugins via
php admin/cli/install_plugin.php --zip=fichier.zippuisphp admin/cli/upgrade.php --non-interactive. Documentez dansplugins.mdla méthode utilisée. - Vérification finale : dans Admin → Plugins → Vue d'ensemble, les 3 nouveaux plugins apparaissent en statut ACTIF. Committez votre
plugins.mdà jour dans Git.
doc/plugins.md créé et versionné avec les 3 entrées complètes, au moins 1 plugin installé via CLI. Le Moodle peut être rebâti à partir de ce fichier d'inventaire.Sécurité avancée · hardening Moodle BONUS 2/5
2FA natif · Politiques MDP · Brute-force · HTTPS hardening · IP whitelist · Site policiesLa sécurité Moodle en production suit une approche defense in depth — plusieurs couches qui compensent mutuellement leurs faiblesses. Au-delà de l'authentification, il faut durcir : 2FA, politiques MDP, anti-brute-force, TLS, IP whitelist admin, policies RGPD.
- 🔑2FA natif (Moodle 4.3+) : TOTP via Google Authenticator / Authy · imposable par rôle (obligatoire admin).
- 🚫Brute-force protection : blocage IP automatique après N tentatives, avec throttling progressif.
- 🔒TLS hardening : HSTS preload, TLS 1.3 uniquement, cipher suites modernes, rating A+ SSL Labs.
- 📋Rapport sécurité natif : Admin → Rapports → Vue d'ensemble de la sécurité — checklist automatisée de la config.
/admin uniquement depuis IP DSI📍 Chemins dans Moodle :
Rapport de sécurité Moodle — 18 contrôles automatiques
Score de sécurité : 84 / 100
$CFG->debug = DEBUG_DEVELOPER à passer en NONEcookiehttponly dans config.phpEnrôlement 2FA — QR code TOTP (Google Authenticator / Authy)
Activer l'authentification à deux facteurs
📱 Scannez avec votre app
- Ouvrez Google Authenticator, Authy, ou Microsoft Authenticator
- Cliquez + Ajouter compte → Scanner un QR code
- Scannez le code à gauche
- Saisissez le code à 6 chiffres ci-dessous pour confirmer
7F9K-2P4M · A3D8-B1E6 · 9Q2X-R5W7 (à conserver hors ligne)
ssllabs.com/ssltest avec votre domaine. L'objectif est le rating A+ (TLS 1.3 uniquement, HSTS preload, cipher suites fortes, pas de TLS 1.0/1.1).- Rapports → Vue d'ensemble sécurité → notez votre score actuel sur 100.
- Politique MDP : Utilisateurs → Stratégies → Politique MDP → longueur 12, 1 majuscule, 1 chiffre, 1 symbole, expiration 90j, historique 5.
- Brute-force : Utilisateurs → Stratégies → Gérer l'authentification → verrouillage après 5 échecs, fenêtre 1h, durée blocage 15 min.
- 2FA : Plugins → Authentification → MFA → activer · méthodes TOTP + codes secours · imposer pour rôle Administrateur.
- Enrôlez votre compte admin (QR code + app Authenticator + codes secours sauvegardés).
- HTTPS hardening côté serveur (nginx/apache) : activer HSTS preload, TLS 1.3 only, désactiver TLS 1.0/1.1.
- Dans
config.php:$CFG->cookiesecure = true;·$CFG->cookiehttponly = true;·$CFG->debug = 0;. - IP whitelist admin : dans
config.php→$CFG->loginhttps = true;et bloquer/adminsur IP DSI uniquement via nginx. - Testez sur
ssllabs.com/ssltest→ visez rating A+. - Re-lancez le rapport sécurité Moodle → votre score doit passer de baseline à 90+.
/admin restreint par IP.Monétisation & paiements BONUS 3/5
enrol_fee natif · Stripe · PayPal · CPF/OPCO · TVA · coupons · facturesDepuis Moodle 4.2, une passerelle de paiement native unifiée permet de facturer l'accès à un cours. Stripe et PayPal en standard · plugins tiers pour CPF/OPCO français. Couvre : tarification, checkout, remboursements, export comptable.
- 💳Passerelles natives : Stripe + PayPal · configuration en 5 minutes · frais 1,4 % à 2,9 %.
- 🇫🇷Conformité CPF/OPCO : plugin
local_edofpour remontée EDOF · factures conformes code formation. - 🎟️Coupons & réductions :
enrol_coupon· codes promo, packs entreprise, inscriptions offertes. - 📊Dashboard revenu : CA jour/mois/année · top cours · remboursements · export comptable CSV.
Passerelles de paiement configurées
Passerelles actives
Tarification publique — page de vente du cours
- Toutes les vidéos du module
- Quiz et devoirs
- Support forum
- Tout « Accès seul »
- Certificat PDF + QR vérifiable
- 2 sessions live BigBlueButton
- CPF éligible ✓
- Tout « Avec certificat »
- Dashboard manager
- Facture OPCO conforme
- Support dédié
Tableau de bord financier — revenue dashboard
sk_test_*) pour valider votre intégration, un en mode Live pour la prod. Bascule via une seule variable de config.- Créez un compte Stripe (test) sur
stripe.com. Récupérez les cléspk_test_*etsk_test_*. - Moodle : Admin → Paiements → Comptes de paiement → Créer un compte → Stripe → coller les clés de test.
- Créez un cours « Test Payant » (catégorie visible publiquement).
- Dans le cours : Participants → Méthodes d'inscription → Ajouter → Paiement à l'inscription.
- Prix : 10 € · Devise EUR · Compte : Stripe test · Rôle : Apprenant.
- Déconnectez-vous, créez un compte test, essayez de vous inscrire → redirection Stripe → utilisez la carte test
4242 4242 4242 4242. - Paiement validé → inscription automatique → accès cours immédiat.
- Admin : Admin → Paiements → Rapports → vérifiez la transaction.
- Installez
enrol_coupon→ créez un codeBIENVENUE10à -10 % → testez. - Exportez le CSV des transactions du mois pour votre comptable.
Haute disponibilité & continuité de service BONUS 4/5
Cluster multi-serveurs · Load balancer · Réplication DB · Health checks · SLA 99,9 %Pour atteindre 99,9 % d'uptime (8h46 de panne max/an), une architecture mono-serveur ne suffit plus. Il faut du clustering : load balancer, web servers multiples, DB répliquée, cache partagé, et health checks automatisés.
- ⚖️Load balancer (Nginx/HAProxy) en frontal · distribution ronde, session affinity, SSL termination.
- 🗄️DB répliquée : maître écriture + N esclaves lecture · failover automatique via MaxScale/ProxySQL.
- 💾moodledata partagé : NFS, GlusterFS ou S3 · visible identiquement par tous les serveurs web.
- 🏥Health checks toutes les 30 s · bascule auto si panne · alertes PagerDuty/Opsgenie.
Health checks cluster — état temps réel
État de l'infrastructure Moodle
- Définissez votre SLA cible : 99 % (3j panne/an), 99,9 % (8h46/an), ou 99,99 % (52 min/an). Écrivez-le.
- Calculez le dimensionnement : utilisateurs simultanés × 2 = requêtes/s cible · ajoutez 50 % de marge.
- Choisissez le load balancer : Nginx (HTTP + SSL) ou HAProxy (TCP + plus perf).
- Provisionnez au moins 2 serveurs web identiques. Utilisez Ansible/Terraform pour garantir l'identique.
- Déployez MariaDB en master/slave avec réplication asynchrone · slave en lecture seule.
- Partagez le moodledata via NFS ou S3 · montage identique sur tous les web servers.
- Configurez Redis Sentinel (3 nodes) pour la HA du cache et des sessions.
- Mettez en place les health checks LB → web servers · script HTTP 200 toutes les 30 s.
- Souscrivez à un monitoring externe : UptimeRobot, Datadog, Pingdom — alerte PagerDuty en cas de panne.
- Rédigez le runbook incident : qui est on-call, téléphone, procédure étape par étape pour chaque type de panne.
Protection du contenu · anti-scraping BONUS 5/5
Rate limiting · CAPTCHA · DRM vidéo · Watermark PDF · Détection scraping · API protectionVotre contenu pédagogique a de la valeur. Sans protection, il peut être scrapé, copié, revendu. La protection nécessite 5 couches : rate limiting, CAPTCHA, DRM vidéo, watermark PDF, détection comportementale.
- 🚦Rate limiting : Cloudflare/Nginx bloque les IPs qui font > 60 req/min · couche n° 1 contre les bots.
- 🎬DRM vidéo : Vimeo/Cloudflare Stream chiffre le flux · liaison session · impossible à télécharger.
- 📄Watermark PDF : nom + email + IP + date incrustés dans chaque PDF téléchargé · traçage des fuites.
- 🤖Détection comportement : analyse xAPI · vitesse de lecture anormale = script → alerte + blocage.
🚦 Exemple de règles rate limit Nginx / Cloudflare :
PDF téléchargé par l'apprenant — watermark identifiable
Module 3 — Techniques de négociation commerciale
La négociation commerciale est un art subtil qui combine écoute active, argumentation construite et gestion de l'objection. Dans ce module, nous explorons les techniques les plus efficaces pour conclure une vente tout en préservant la relation client.
La première étape consiste à bien préparer son entretien : connaître son produit sur le bout des doigts, anticiper les objections fréquentes, fixer ses marges de manœuvre et préparer des questions ouvertes pour faire parler le prospect.
La seconde étape est l'écoute active. Plus vous laissez parler votre interlocuteur, plus vous collectez d'informations qui vous permettront d'ajuster votre proposition et de répondre précisément à ses besoins réels plutôt qu'à ses besoins exprimés.
Document téléchargé le 22/04/2026 à 16:12 par jean.dupont@monecole.fr (IP 192.168.4.142) · usage personnel · reproduction interdite
Stratégie de protection vidéo selon la sensibilité
events / timespent dans les logs → seuil > 5 = alerte + suspension compte.- Cloudflare devant Moodle : activer mode Under attack temporairement · règle rate limit 60 req/min/IP sur tout le site.
- Nginx rate limit : ajouter les 3 blocs
limit_req_zone(login, API, téléchargements) vu ci-dessus. - CAPTCHA : Admin → Plugins → Authentification → Gérer → activer hCaptcha sur création de compte + login après 3 échecs.
- Vidéos : migrez vos vidéos sensibles de MP4 direct vers Vimeo Pro (plan Premium 75 €/mois) · activez Domain-level privacy pour n'autoriser que
monecole.fr. - Watermark PDF : installez plugin
mod_pdfannotatorou script custom PHP avec TCPDF qui injecte email+IP dans chaque PDF servi. - Détection scraping : SQL sur
mdl_logstore_standard_log→ repérez users avec > 100 events en 10 min → dashboard alertes. - Tokens web services : imposez limite 30 req/min par token · rotation annuelle obligatoire.
- Robots.txt : bloquez l'indexation des contenus privés (
Disallow: /course/,Disallow: /pluginfile.php). - Test : lancez un
wget --recursivedepuis une IP externe → doit être bloqué au bout de 60 req. - Rédigez une CGU ajoutant clauses anti-scraping + anti-revente · faites-la signer à l'inscription.
🏆 Sprint 1B — Admin Moodle Elite Pro
Vous avez validé les 13 étapes du Sprint 1B (8 cœur + 5 bonus). Vous êtes désormais capable de déployer un Moodle professionnel fédéré, sécurisé hardening complet, performant, conforme RGPD, résilient aux incidents, monétisé, protégé contre le scraping et hautement disponible. Niveau admin référent d'entreprise.