Déploiement de Nextcloud pour un établissement scolaire

Ci-dessous un exemple de déploiement fonctionnel d'un Nextcloud à destination de 200 élèves (6 à 17 ans) et 50 professeurs.

L'établissement (privé hors contrat) n'ayant pas d'ENT ni d'outils numérique en ligne, il semblait peu envisageable d'utiliser une plateforme type moodle alors que la plupart des professeurs privilégient le papier dans leurs cours (pour des raisons pédagogiques).

Il semblait plus simple d'envisager que les professeurs partagent des documents type traitement de texte ou photos.

Le module de discussion Nextcloud talk permet par ailleurs de maintenir le lien entre toutes les personnes de l'école. Ainsi que d'organiser des réunions audios à 3 personnes (l'optimisation de ce point est en cours).

Ce déploiement a été réalisé dans le but d'aider les professeurs à accompagner leurs élèves dans la période de confinement ayant débuté le 17 mars 2020. Elle a été réalisée en peu de temps, suivant ce calendrier:

  • Lundi matin: approbation de la mise en place de l'outil
  • Lundi après-midi: création d'un fichier CSV des comptes à créer (élèves et professeurs)
  • Lundi soir: création du VPS chez Alsace Réseau Neutre, déploiement YunoHost/Nextcloud, premières configurations
  • Mardi: activation des comptes des professeurs et accompagnement de ces derniers, optimisation correctives en termes de performances
  • Mercredi: ajout de contenus et propositions par les professeurs
  • Jeudi: ouverture aux élèves

La plateforme est hébergée sur un VPS Alsace Réseau Neutre, l'école étant déjà adhérente de l'association.

Le VPS choisi a les caractèristiques suivantes:

  • 4 vcpu
  • 4 Go de RAM
  • 10G de disques SSD (RAID5+drbd) (pour le système)
  • 200G de disque dur (drbd)
  • 1 IPv4 et 1 ipv6
  • connectivité maximale mutualisée entre les adhérents 100Mbps

Coût du vps chez ARN (24€/mois).

En résumé: Le Nextcloud 18 a été installé avec YunoHost 3.6. Le paquet d'application testing a été utilisé car la version de production est à la version Nextcloud 15 et que ljf qui a fait le déploiement a évalué qu'il y avait plus de stabilité avec la version testing. La configuration standard a été éditée en ce qui concerne le nombre de processus nginx et php-fpm, sans quoi impossible de supporter plus de 5 utilisateurs simultanés.

Pour le déploiement une recette ansible a été utilisée, mais ce n'est pas forcément nécessaire.

Le VPS a été commandé chez ARN: https://vps.arn-fai.net

NB: il a fallu corriger quelques éléments dans la config du VPS ARN concernant IPv6 et le apt sources list, ces problèmes ont été remontés.

Le VPS d'ARN ne monte pas le disque de 200G, donc je l'ai monté sur /home et j'ai modifié fstab en conséquence.

yunohost tools postinstall -d adistance.ECOLE.fr
yunohost domain add office.ECOLE.fr
yunohost domain dns-conf adistance.ECOLE.fr
yunohost domain dns-conf office.ECOLE.fr

Il faut répercuter ça dans la zone DNS du domaine chez le registrar (le plus souvent).

yunohost domain cert-install
yunohost app install https://github.com/YunoHost-Apps/nextcloud_ynh/tree/testing

Note: à l'heure où j'écris ce tuto il faut utiliser la branche testing mais une fois sorti on peut remplacer cette URL par nextcloud.

Optimisation pour supporter la charge

Dans /etc/nginx/nginx.conf

worker_connections 4; # à la place de auto, ici j'ai mis le nombre de vcpu
worker_connections 4096; # à la place de 758

Dans /etc/php/7.3/fpm/pool.d/nextcloud.conf

pm.max_children = 100
yunohost app install onlyoffice
yunohost app install borg
yunohost app install borg
yunohost app install unattended_upgrades

Les modules suivants ont été activés:

  • Audio Player : pour lire des audio directement sur la plateforme
  • Calendar : en vue de partager des agenda pour chaque classe ou un calendrier de réunion
  • Custom CSS : pour faire un petit hack pour supprimer le bouton “#contactsmenu” (on va faire ça mieux après)
  • External Sites : pour ajouter le lien vers le webamil des profs et le portail numérique des profs
  • Link editor : pour permettre l'ajout de lien cliquable en tant que fichier, permet de mettre un fichier “Visio conf” par exemple
  • Plain text editor: éditeur de code pour un cours d'informatique
  • OnlyOffice : pour permettre au professeur et élèves d'éditer des documents même via smartphone
  • Talk : pour avoir un chat type mattermost et de la visio (réduite) afin de délester les instances jistsi public

Les modules suivants ont été désactivés:

  • Activity: ce module alourdis l'interface dans ce cas par rapport au gain
  • Auditing / Logging
  • Comments : Nous ne souhaitons pas que les élèves commentent les fichiers des professeurs
  • Contacts : pas l'utilité
  • First run wizard: il y avait un bug et nous ne souhaitons pas forcément que tous les élèves mettent en place le logiciel client de synchro
  • Photos: pour l'instant pas le besoin
  • Recommendations: ce module affiche les fichiers fréquement modifier entre l'aperçu du readme et la liste des fichiers, nous l'avons jugé non souhaitable pour notre usage

Il a été choisi de créer un dossier par classe. Dans chacun de ces dossiers les professeurs de classe organisent le contenu de la façon jugée la plus pertinente, le plus souvent un dossier par matière (ou période).

La fonctionnalité Readme de Nextcloud 18 permet de mettre un message de bienvenue et expliquant les instructions.

Des groupes représentant chaque classe ont été créés, ainsi qu'un groupe Professeurs, les comptes ont été ajouté en ligne de commande comme ceci:

cd /var/www/nextcloud
sudo -u nextcloud OC_PASS=XXXXX php7.3 ./occ user:add --group='1e classe' --display-name='André Dupont' adupont
sudo -u nextcloud php7.3 ./occ user:setting adupont settings email 'adupont@example.com'

Les lignes de commandes ont été générées à partir du tableur, avec la fonction CONCATENER (tout bêtement)

rm -Rf /var/www/nextcloud/core/skeleton/*

Paramètres de base

Il faut configurer l'adresse source et tester la réception du mail.

Partage

Autorisations de partage par défaut, il faut décocher “Créer” “Modifier” “Supprimer” “Repartager” pour éviter que les professeurs se trompent et voient leur travaux supprimés ou édités par les élèves.

Il faut également enlever les options de partage fédérés.

Stockage externe

Il faut enlever les stockages externes multimedia et home configurés par Yunohost

Personnaliser l'apparence

Mettre logo, favicon et photo de l'école

Configurer le CSS suivant:

#contactsmenu {
    display: none;
}

OnlyOffice

Application par défaut pour ouvrir le format : csv, doc, docx, ods, odt, ppt, pttx, rtf, xls, xlsx Ouvrir le fichier pour édition: csv, odp, ods, odt, rtf, txt

Sites externes

Ajout des liens que l'on souhaite. Attention à sélectionner les bons groupes si on veut que ces liens ne soient par exemple visible que des professeurs.

Il y a un bug sur l'ajout d'icône voir section bug plus bas.

Discussion

Le module discussion ne permet pas la modération du chat, nous avons toutefois fait le choix de laisser les élèves créés des discussions et nous agirons si certains ont des comportements inappropriés. Nous pensons qu'en ces temps de confinement, leur permettre d'échanger entre elles et eux est important.

A noter que la visio ne fonctionne qu'avec 3 personnes. Il faudrait ajouter un serveur de signalement (pas encore fait).

Les 2 premiers jours nous avons eu pas mal de support à faire à destination des professeurs notamment pour se connecter.

Cas qui sont arrivés plusieurs fois:

  • Erreur de jeton car la personne a cliqué plusieurs fois sur réinitialiser le mot de passe et à cliquer sur le premier mail arrivé
  • Incompréhension: tentative de connexion avec le mot de passe de son compte mail de l'école
  • Difficultés à comprendre le fonctionnement pour partager les contenus
  • Sensibilisation des professeurs pour bien choisir le nom des fichiers pour éviter que les élèves soient perdus
  • La visualisation de l'héritage des permissions affiche un message d'erreur
  • Sur certaines tailles d'écrans le menu de gauche du panneau des utilisateurs ne saffiche pas même si on clique sur le menu hamburger
  • Le dossier icônes de l'app external site n'est pas créé, il était impossible de charger des icônes, l'opération a été faites en CLI
  • services/nextcloud/exemple_de_deploiement.txt
  • Dernière modification : 2021/06/02 13:35
  • de antoinejaba