Pour envoyer et récupérer activités des élèves via Nextcloud
| LICENSE | ||
| README.md | ||
Système Nextcloud SNT - Résumé Complet
🎯 Objectif
Système automatisé pour l'enseignement SNT avec Nextcloud gérant 180 élèves (6 classes × 30 élèves) avec distribution et collecte automatique des devoirs.
🏗️ Architecture Finale
Structure serveur
/var/www/html/nextcloud/data/
├── profsnt/files/
│ ├── Modeles_SNT/ # Modèles pour toutes classes
│ │ ├── Sequence1_Introduction_SNT/
│ │ ├── Sequence2_Web/
│ │ └── ... (7 séquences SNT)
│ └── Classes_SNT/ # Rendus par classe
│ ├── 2nde1/Rendus/
│ ├── 2nde2/Rendus/
│ └── ...
└── [eleve]/files/SNT/ # Espace de travail élève
├── Sequence1_Introduction_SNT/
└── ...
Configuration
- Quotas : 125MB par élève (optimisé pour 25GB serveur)
- Groupe : "eleves" pour gestion centralisée
- Comptes : Allégés (sans fichiers par défaut Nextcloud)
- Sécurité : Politique mots de passe assouplie (4 caractères minimum)
🔧 Scripts Opérationnels
1. setup_complet_snt_v2.sh - Création des comptes
# Usage
./setup_complet_snt_v2.sh eleves.csv
# Format CSV
Classe,Nom,Prenom,Email,MotDePasse
2nde1,Martin,Paul,paul.martin@lycee.fr,1234
Fonctions :
- Création 180 comptes avec mots de passe du CSV
- Ajout au groupe "eleves"
- Quotas 125MB
- Structure SNT/ dans chaque espace élève
- Création Modeles_SNT/ chez prof
- Suppression fichiers par défaut Nextcloud
2. distribution_modeles_v2.sh - Distribution intelligente
# Usage
./distribution_modeles_v2.sh # Toutes classes
./distribution_modeles_v2.sh 2nde1 # Classe spécifique
./distribution_modeles_v2.sh 2nde1 csv # Avec CSV custom
Fonctions :
- Distribue depuis Modeles_SNT/ unique
- Ajoute suffixe
_v0aux fichiers distribués - Ne distribue QUE si aucune version n'existe (v0,v1,v2... ou fichier sans version)
- Gère les espaces dans noms de fichiers
- Rescan automatique pour visibilité immédiate
3. collecte_final.sh - Collecte avec historique
# Usage
./collecte_final.sh eleves.csv
Fonctions :
- Collecte fichiers modifiés (30 dernières minutes)
- Historique automatique : v1, v2, v3...
- Anti-doublons MD5 (pas de version si contenu identique)
- Gère tous patterns versions :
_v1,v1,-v1,v1 - Gestion robuste des espaces dans noms
- Compteur précis des fichiers collectés
4. gestion_comptes.sh - Administration
./gestion_comptes.sh lister # Liste comptes + groupe
./gestion_comptes.sh groupe # Infos groupe eleves
./gestion_comptes.sh quota-groupe # Modifier quotas en masse
./gestion_comptes.sh verifier # Vérifier comptes existants
./gestion_comptes.sh nettoyer # Suppression fin d'année
📊 Workflow de Production
Setup initial
1. ./setup_complet_snt_v2.sh eleves_complets.csv
2. Création modèles dans Modeles_SNT/ via interface web
3. ./distribution_modeles_v2.sh
4. Crontab : */30 8-17 * * 1-5 /scripts/collecte_final.sh
Workflow élève
- Reçoit :
Exercise_v0.docx(modèle à conserver) - Travaille sur :
Exercise_v1.docx,v2.docx, etc. - Collecte : Automatique toutes les 30 min
- Interface : Épurée (seulement dossier SNT/)
🎯 Points Techniques Importants
Gestion des espaces
find -print0+IFS= read -r -d ''pour fichiers avec espacesfindau lieu de glob bash pour détection versions
Anti-doublons
- Comparaison MD5 avec version précédente
- Évite stockage inutile si contenu identique
Permissions
- Tous scripts en root (nécessaire pour occ)
chown www-data:www-datasystématique après création- Rescan obligatoire pour visibilité interface
Format CSV
Classe,Nom,Prenom,Email,MotDePasse
2nde1,Martin,Paul,paul.martin@lycee.fr,1234
2nde1,Dupont,Sophie,sophie.dupont@lycee.fr,5678
🔧 Commandes Utiles
Surveillance système
# Espace utilisé
du -sh /var/www/html/nextcloud/data/
# Statistiques groupe
sudo -u www-data php /var/www/html/nextcloud/occ group:list-users eleves
# Rescan manuel
sudo -u www-data php /var/www/html/nextcloud/occ files:scan username
# Vérifier quota élève
sudo -u www-data php /var/www/html/nextcloud/occ user:info username
Debug et maintenance
# Logs Nextcloud
sudo -u www-data php /var/www/html/nextcloud/occ log:tail
# Nettoyer cache
sudo -u www-data php /var/www/html/nextcloud/occ files:cleanup
# Statistiques collecte
find /var/www/html/nextcloud/data/profsnt/files/Classes_SNT -name "*.docx" | wc -l
📝 Pour Interface Web
Scripts à interfacer
-
Setup
- Upload CSV → Exécution setup → Affichage résultats
- Validation format CSV
- Progression en temps réel
-
Distribution
- Sélection classe → Exécution → Statistiques
- Aperçu modèles disponibles
- Logs de distribution
-
Collecte
- Bouton collecte manuelle → Résumé fichiers collectés
- Statistiques par classe/élève
- Historique des collectes
-
Gestion
- Quotas, stats groupe, nettoyage
- Monitoring espace disque
- Administration groupe élèves
Variables importantes
NEXTCLOUD_DATA="/var/www/html/nextcloud/data"
PROF_USERNAME="profsnt"
SCRIPTS_PATH="/scripts/"
NEXTCLOUD_ROOT="/var/www/html/nextcloud"
Résultats à parser
Compteurs :
(\d+) fichier\(s\) collecté\(s\)- Nombre fichiers collectés(\d+) fichier\(s\) distribué\(s\)- Nombre fichiers distribués(\d+) comptes créés- Nombre comptes créés
Status :
✅- Succès❌- Erreur⚠️- Avertissement↔️- Fichier identique (non collecté)
Messages d'erreur courants :
Unknown user- Problème utilisateurPermission denied- Problème permissionsNo such file- Fichier/dossier manquant
API suggestions pour interface
// Endpoints
POST /api/setup - Upload CSV + création comptes
GET /api/classes - Liste des classes
POST /api/distribute - Distribution modèles
POST /api/collect - Collecte manuelle
GET /api/stats - Statistiques système
GET /api/logs - Logs en temps réel
🎓 Système Final Validé
Fonctionnalités opérationnelles
- ✅ 180 élèves opérationnels
- ✅ Distribution intelligente sans doublons
- ✅ Collecte robuste avec historique
- ✅ Gestion des espaces dans noms fichiers
- ✅ Anti-doublons MD5 fonctionnel
- ✅ Interface épurée élèves
- ✅ Administration centralisée
Capacités système
- Stockage : 22,5 GB utilisables (180 × 125MB)
- Performance : Collecte 30 min, rescan automatique
- Robustesse : Gestion erreurs, anti-doublons, logging
- Scalabilité : Extensible à plus de classes
Sécurité
- Isolation : Chaque élève dans son espace
- Groupe : Gestion centralisée via groupe "eleves"
- Quotas : Limitation espace par utilisateur
- Permissions : Contrôle accès granulaire