Nextcloud

Utiliser nextcloud pour permettre aux utilisateurs d'accéder à leurs partages de l'extérieur de l'établissement.

Procédure

  1. Demander la mise en place d'une redirection

    Si vous êtes derrière un serveur Amon, il vous faut demander à votre DSI la mise ne place d'une redirection depuis un domaine du type https://nuage-CODE_UAI.ac-academie.fr vers l'adresse IP (port 443) du serveur qui hébergera Nextcloud.

  2. Installer Debian Buster sur le serveur qui hébergera Nextcloud

    Conseil

    Si vos serveurs SE4 sont virtualisés, une VM supplémentaire pourra contenir l'installation de Nextcloud.

    Les caractéristiques suivantes sont tout à fait suffisantes :

    • 2 cœurs,

      4G de RAM,

      DD de 32G.

    Par défaut, Debian Buster n'autorise pas l'accès SSH pour l'utilisateur root.

    Pour y remédier, il faut ajouter dans le fichier /etc/ssh/sshd_config la ligne :

    PermitRootLogin yes

    Puis relancer le service :

    # systemctl restart sshd

    Définition du proxy

    Pour définir le serveur Amon du réseau comme proxy pour apt et l'ensemble du système :

    Dans le fichier /etc/apt/apt.conf vérifier la présence de la ligne :

    Acquire::http::Proxy "http://IP_Du_AMON:3128";

    Créer le fichier /etc/environment puis y ajouter les lignes :

    http_proxy=http://172.16.0.246:3128

    https_proxy=http://172.16.0.246:3128

    Il est nécessaire de fermer puis rouvrir la session pour la prise en compte des modifications.

  3. Installer les paquets nécessaires

    Installer les paquets suivants :

    # apt install apache2 libapache2-mod-php mariadb-server php-xml php-cli php-cgi php-mysql php-mbstring php-gd php-curl php-zip sudo unzip smbclient php-libsmbclient php-ldap php-imagick php-intl php-apcu

  4. Configurer Apache

    Activer les modules suivants :

    # a2enmod ssl

    # a2enmod headers

    # a2enmod rewrite

    # e2ensite default-ssl.conf

    # systemctl restart apache2

    1. L'appel de la page https://nuage-CODE_UAI.ac-academie.fr doit afficher la page du serveur Apache.

  5. Configurer MySQL

    Pour configurer MySQL, lancer le script :

    # mysql_secure_installation

    Choisir le mot de passe du compte root de MySQL, et répondre aux différentes questions en laissant les choix par défaut.

  6. Créer la base de données

    Lancer les commandes suivantes :

    sudo mysql -u root -p

    CREATE DATABASE nextcloud;

    CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'yourpassword'; (à adapter !)

    GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost';

    FLUSH PRIVILEGES;

    \q

  7. Télécharger Nextcloud

    wget --no-check-certificate https://download.nextcloud.com/server/releases/nextcloud-18.0.3.zip (à adapter à la version courante)

    unzip nextcloud-18.0.3.zip

    mv nextcloud /var/www/

    chown -R www-data:www-data /var/www/nextcloud

  8. Réglages divers

    Création du dossier Data

    mkdir /nextcloud-data

    chown www-data:www-data /nextcloud-data

    Configuration de Apache

    Éditer le fichier /etc/apache2/sites-enabled/default-ssl.conf

    Modifier : DocumentRoot /var/www/nextcloud

    Ajouter en fin de fichier :

    <IfModule mod_headers.c>

    Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

    </IfModule>

    <Directory /var/www/nextcloud/>

    Options +FollowSymlinks

    AllowOverride All

    <IfModule mod_dav.c>

    Dav off

    </IfModule>

    SetEnv HOME /var/www/nextcloud

    SetEnv HTTP_HOME /var/www/nextcloud

    </Directory>

    Configuration de PHP

    Éditer le fichier /etc/php/7.3/apache2/php.ini

    Modifier et/ou ajouter les lignes :

    memory_limit = 512M

    apc.enable_cli = 1

    Redémarrer Apache

    systemctl restart apache2

  9. Installer Nextcloud

    Rendez-vous sur la page https://nuage-CODE_UAI.ac-academie.fr pour procéder à l'installation de Nextcloud.

    Répondez simplement aux questions posées.

  10. Actions post-installation

    Personnaliser la configuration initiale

    Éditer le fichier /var/www/nextcloud/config/config.php

    Ajouter les lignes suivantes :

    'skeletondirectory' => '',

    'proxy' => 'IP_DU_AMON:3128', // à adapter

    'memcache.local' => '\OC\Memcache\APCu',

    'lost_password_link' => 'disabled',

    array (

    0 => 'IP_DU_AMON', // à adapter

    ),

    array (

    0 => 'HTTP_X_FORWARDED_FOR',

    1 => 'HTTP_FORWARDED_FOR',

    ),

    Actions post-install

    cd /var/www/nextcloud

    sudo -u www-data php occ db:add-missing-indices

    sudo -u www-data php occ db:convert-filecache-bigint

    Mise en place de la tâhe cron

    crontab -u www-data -e

    Ajouter la ligne :

    */5 * * * * php -f /var/www/nextcloud/cron.php

  11. Réglages dans l'interface

    Pour un simple accès aux partages Samba, on pourra régler dans l'interface :

    Désactiver l'API de partage

    Quota par défaut de 10M

  12. Activer les applications

    Dans l'interface, activer les applications :

    • LDAP user and group backend

    • External storage support

  13. Configurer l'accès à l'Active Directory

    Onglet Serveur

    Serveur : ldaps://IP_SE4AD port 636

    DN utilisateur : CN=Administrator,CN=Users,DC=domaine,DC=etab-CODE_UAI,DC=ac-academie,DC=fr

    Mot de passe du compte Administrator de l'AD

    Onglet Utilisateurs

    Seulement ces classes d'objets : person

    Seulement dans ces groupes : Prof, Eleves

    Onglet Attributs de login

    Nom d'utilisateur LDAP/AD : 

    Autre attributs : sAMAccountName

    Onglet Groupes

    Seulement dans ces groupes : Profs, Eleves

    Ces choix permettent de rendre ces groupes disponibles dans Nextcloud

    Attention : bug dans NC 18.0.3 : https://github.com/nextcloud/server/pull/20039/commits/77c63e3b243f4119ee7e100ba4df4f466c419870

    Onglet Avancé

    Configuration active :

    Désactiver la validation des certificats SSL :

    Attributs spéciaux : "$home" Champ Placeholder : sAMAccountName

  14. Configurer les partages accessibles

    Partage Docs

    Support : SMB/CIFS

    Identifiants de connexion, sauvegardés pour la session

    Serveur : IP_SE4FS

    Partage : Users

    Sous-dossier distant : $home/Docs

    Domaine : domaine

    Partage Classes

    Support : SMB/CIFS

    Identifiants de connexion, sauvegardés pour la session

    Serveur : IP_SE4FS

    Partage : Classes

    Sous-dossier distant : laisser vide

    Domaine : domaine

    Autres partages

    Support : SMB/CIFS

    Identifiants de connexion, sauvegardés pour la session

    Serveur : IP_SE4FS

    Partage : Docs

    Sous-dossier distant : laisser vide

    Domaine : domaine

    On pourra restreindre ce partage à certain groupes.