====== 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: * 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 ===== 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: * 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). ===== 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: * 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 ==== Modules désactivés ==== 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 ===== 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). {{::nextcloud_etablissement.png?600|}} 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: * 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 ===== Bugs identifiés à reporter ===== * 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