NextcloudSNT/README.md
2025-08-20 08:37:24 +00:00

246 lines
No EOL
7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Système Nextcloud SNT
## 🎯 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
---