# 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.sh` - Création des comptes ```bash # Usage ./setup_complet_snt.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.sh` - Distribution intelligente ```bash # Usage ./distribution_modeles.sh # Toutes classes ./distribution_modeles.sh 2nde1 # Classe spécifique ./distribution_modeles.sh 2nde1 csv # Avec CSV custom ``` **Fonctions :** - Distribue depuis Modeles_SNT/ unique - Ajoute suffixe `_v0` aux 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 ```bash # 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 ```bash ./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 ```bash 1. ./setup_complet_snt.sh eleves_complets.csv 2. Création modèles dans Modeles_SNT/ via interface web 3. ./distribution_modeles.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 espaces - `find` au 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-data` systématique après création - Rescan obligatoire pour visibilité interface ### Format CSV ```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 ```bash # 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 ```bash # 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 1. **Setup** - Upload CSV → Exécution setup → Affichage résultats - Validation format CSV - Progression en temps réel 2. **Distribution** - Sélection classe → Exécution → Statistiques - Aperçu modèles disponibles - Logs de distribution 3. **Collecte** - Bouton collecte manuelle → Résumé fichiers collectés - Statistiques par classe/élève - Historique des collectes 4. **Gestion** - Quotas, stats groupe, nettoyage - Monitoring espace disque - Administration groupe élèves ### Variables importantes ```bash 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 utilisateur - `Permission denied` - Problème permissions - `No such file` - Fichier/dossier manquant ### API pour interface ```javascript // 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 ---