Thanks to visit codestin.com
Credit goes to github.com

Skip to content

kalibrado/moodle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Moodle Docker - Configuration Multi-Base de Données

Configuration Docker complète pour Moodle avec support de MariaDB, MySQL et PostgreSQL.

📋 Prérequis

  • Docker 20.10+
  • Docker Compose 2.0+
  • 2 GB RAM minimum (4 GB recommandé)
  • 10 GB d'espace disque

🚀 Installation rapide

1. Cloner et configurer

# Créer le répertoire du projet
mkdir moodle-docker && cd moodle-docker

# Copier les fichiers (Dockerfile, config.php, docker-compose.yml)
# ...

# Copier le fichier d'environnement
cp .env.example .env

2. Choisir votre base de données

Éditez le fichier .env et configurez le type de base de données :

Option A : MariaDB (Recommandée)

MOODLE_DB_TYPE=mariadb
MOODLE_DB_HOST=mariadb

Lancer avec :

docker-compose --profile mariadb up -d

Option B : MySQL

MOODLE_DB_TYPE=mysqli
MOODLE_DB_HOST=mysql

Lancer avec :

docker-compose --profile mysql up -d

Option C : PostgreSQL

MOODLE_DB_TYPE=pgsql
MOODLE_DB_HOST=postgres
MOODLE_DB_PORT=5432

Lancer avec :

docker-compose --profile postgres up -d

3. Installer Moodle

Après le démarrage des conteneurs (attendre ~30 secondes), installez la base de données :

# Pour MariaDB/MySQL
docker-compose exec moodle php /var/www/moodle/admin/cli/install_database.php \
  --agree-license \
  --adminpass=Admin123! \
  --fullname="Mon Site Moodle" \
  --shortname="Moodle"

# Pour PostgreSQL (même commande)
docker-compose exec moodle php /var/www/moodle/admin/cli/install_database.php \
  --agree-license \
  --adminpass=Admin123! \
  --fullname="Mon Site Moodle" \
  --shortname="Moodle"

4. Accéder à Moodle

🔧 Configuration avancée

Activer Redis pour le cache et les sessions

  1. Ajoutez au fichier .env :
MOODLE_SESSION_HANDLER=\core\session\redis
MOODLE_SESSION_REDIS_HOST=redis
MOODLE_SESSION_REDIS_PORT=6379
MOODLE_SESSION_REDIS_DB=0
  1. Lancez avec le profile Redis :
docker-compose --profile mariadb --profile redis up -d

Activer le CRON automatique

Lancez avec le profile cron :

docker-compose --profile mariadb --profile cron up -d

Le CRON s'exécutera automatiquement toutes les minutes.

Configuration SMTP

Ajoutez au fichier .env :

MOODLE_SMTP_HOST=smtp.gmail.com:587
MOODLE_SMTP_SECURE=tls
MOODLE_SMTP_USER=[email protected]
MOODLE_SMTP_PASSWORD=votre-mot-de-passe
MOODLE_NOREPLY_ADDRESS=[email protected]

Mode DEBUG (Développement uniquement)

⚠️ NE JAMAIS ACTIVER EN PRODUCTION !

MOODLE_DEBUG=15
MOODLE_DEBUG_DISPLAY=true
MOODLE_CACHE_JS=false
MOODLE_CACHE_TEMPLATES=false

🔄 Commandes utiles

Démarrer/Arrêter

# Démarrer
docker-compose --profile mariadb up -d

# Arrêter
docker-compose down

# Arrêter et supprimer les volumes (⚠️ PERTE DE DONNÉES)
docker-compose down -v

Logs

# Voir tous les logs
docker-compose logs -f

# Logs Moodle uniquement
docker-compose logs -f moodle

# Logs base de données
docker-compose logs -f mariadb

Backup et restore

Backup

# Backup de la base de données (MariaDB)
docker-compose exec mariadb mysqldump -u moodle -pmoodle_pass moodle > backup_$(date +%Y%m%d).sql

# Backup des fichiers
docker run --rm -v moodle_data:/data -v $(pwd):/backup alpine tar czf /backup/moodledata_$(date +%Y%m%d).tar.gz -C /data .

Restore

# Restore de la base de données
docker-compose exec -T mariadb mysql -u moodle -pmoodle_pass moodle < backup_20250127.sql

# Restore des fichiers
docker run --rm -v moodle_data:/data -v $(pwd):/backup alpine tar xzf /backup/moodledata_20250127.tar.gz -C /data

Mise à jour de Moodle

# 1. Arrêter Moodle
docker-compose stop moodle

# 2. Backup (voir ci-dessus)

# 3. Reconstruire l'image avec la nouvelle version
docker-compose build --no-cache moodle

# 4. Redémarrer
docker-compose --profile mariadb up -d

# 5. Mettre à jour la base de données
docker-compose exec moodle php /var/www/moodle/admin/cli/upgrade.php --non-interactive

Accès shell

# Shell dans le conteneur Moodle
docker-compose exec moodle bash

# Shell dans la base de données
docker-compose exec mariadb mysql -u moodle -pmoodle_pass moodle

Exécuter des commandes CLI Moodle

# Purger tous les caches
docker-compose exec moodle php /var/www/moodle/admin/cli/purge_caches.php

# Réinitialiser un mot de passe utilisateur
docker-compose exec moodle php /var/www/moodle/admin/cli/reset_password.php --username=admin

# Installer un plugin
docker-compose exec moodle php /var/www/moodle/admin/cli/install_plugins.php

🔒 Sécurité en production

Checklist de sécurité

  • Changer tous les mots de passe par défaut
  • Activer HTTPS avec un certificat SSL valide
  • Configurer MOODLE_FORCE_SSL=true
  • Désactiver le debug : MOODLE_DEBUG=0
  • Changer le nom du dossier admin : MOODLE_ADMIN=monsuperadmin
  • Générer un salt unique : MOODLE_PASSWORD_SALT=$(openssl rand -hex 32)
  • Configurer les sauvegardes automatiques
  • Limiter l'accès réseau avec un firewall
  • Activer les logs d'audit Moodle
  • Configurer fail2ban si exposition publique

Configuration HTTPS avec Traefik

Exemple de docker-compose.override.yml :

version: '3.8'

services:
  moodle:
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.moodle.rule=Host(`moodle.example.com`)"
      - "traefik.http.routers.moodle.entrypoints=websecure"
      - "traefik.http.routers.moodle.tls.certresolver=letsencrypt"
    environment:
      - MOODLE_WWW_ROOT=https://moodle.example.com
      - MOODLE_FORCE_SSL=true

📊 Monitoring

Vérifier la santé des conteneurs

docker-compose ps

Statistiques de ressources

docker stats

Vérifier l'espace disque

# Espace utilisé par les volumes
docker system df -v

# Taille du répertoire moodledata
docker run --rm -v moodle_data:/data alpine du -sh /data

🐛 Dépannage

Problème : "Access denied for user"

# Recréer les volumes de la base de données
docker-compose down -v
docker-compose --profile mariadb up -d

Problème : "The Moodle root directory must not be publicly accessible"

Vérifiez que le Dockerfile pointe bien vers /var/www/moodle/public comme document root.

Problème : Erreur de connexion à la base de données

# Tester la connexion depuis le conteneur Moodle
docker-compose exec moodle mysql -h mariadb -u moodle -pmoodle_pass moodle -e "SELECT 1;"

Problème : Moodle lent

  1. Activer Redis pour le cache
  2. Augmenter la mémoire PHP : MOODLE_EXTRA_MEMORY_LIMIT=512M
  3. Activer OPcache (déjà configuré par défaut)

Problème : Upload de fichiers échoue

Vérifiez les permissions :

docker-compose exec moodle chown -R www-data:www-data /var/moodledata
docker-compose exec moodle chmod -R 755 /var/moodledata

📚 Documentation

🤝 Support

Pour obtenir de l'aide :

  1. Consultez les logs : docker-compose logs -f
  2. Vérifiez la configuration : docker-compose config
  3. Forum Moodle : https://moodle.org/mod/forum/
  4. Documentation Docker : https://docs.docker.com/

📝 License

Ce projet suit la licence GPL v3, comme Moodle lui-même.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published