Table des matières

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.

Pourquoi Nextcloud ?

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).

Retour temporel sur le déploiement

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:

Configuration matériel

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:

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

Configuration logicielle

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.

Commander un VPS yunohost ou debian stretch

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.

Création des sous-domaines

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

Configuration DNS

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).

Génération des certificats Let's Encrypt

yunohost domain cert-install

Installation Nextcloud

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

Installation OnlyOffice

yunohost app install onlyoffice

Installation BorgBackup 1 et BorgBackup 2

yunohost app install borg
yunohost app install borg

Installation Unattended Upgrade

yunohost app install unattended_upgrades

Modules activés

Les modules suivants ont été activés:

Modules désactivés

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

Paramétrage de Nextcloud

Arborescence

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.

Groupes et utilisateurs

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)

Éviter les fichiers par défauts

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

Options à modifier

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).

Support

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:

Bugs identifiés à reporter