Table des matières

, , ,

Serveur Nextcloud

Nextcloud est une solution de stockage et de partage de fichiers en ligne.

Nextcloud permet également de synchroniser agendas et carnets d'adresses. Il existe de nombreuses autres fonctionnalités disponibles grâce à des modules externes.

Sa grande force réside dans le fait que vous contrôlez entièrement vos données, l'emplacement du stockage, le partage, la suppression, etc. Tout reste sous votre contrôle, à la différence des services comme Dropbox ou Google Drive, dont on ne peut être sûr de ce qu'ils font de vos données.

Cette page traite de l'installation et de la configuration d'un serveur Nextcloud. Pour une approche plus générale de ce projet consultez cette page de la documentation.

Nextcloud étant une solution de cloud centralisé, elle requiert la mise en place d'un serveur. Si vous ne vous sentez pas l'âme d'un administrateur système vous pouvez profiter des services d'un prestataire qui s'occupera de cet aspect particulièrement technique.

Nous allons voir ici comment déployer et utiliser ce service sur un serveur privé (ou éventuellement mutualisé). La procédure complète est décrite ici en anglais

Pré-requis

La procédure décrite ici concerne une installation sur un serveur Ubuntu/Debian nu (fresh install). Il vous faudra l'adapter en fonction de vos besoins, par exemple si vous l'installez sur un hébergement mutualisé ou sur un serveur privé virtuel (VPS), avec une interface d'administration web du type webmin, virtualmin, cpanel ou autre.

Installation

Téléchargement et Extraction de Nextcloud

Le téléchargement se fait via le site officiel.

L’installateur se présente sous la forme d'une archive ZIP, à dézipper à la racine de votre serveur web. En supposant que votre archive à été téléchargée dans le dossier Téléchargement, décompressez y le zip. L'extraction va créer un dossier nextcloud. Ouvrez un terminal dans le dossier Téléchargements, et déplacez le contenu du dossier nextcloud à la racine du serveur avec la commande suivante :

sudo cp -r nextcloud /var/www/nextcloud

N.B. : l’emplacement /var/www/nextcloud n'est qu'un exemple. Vous pouvez utiliser le répertoire de votre choix.

Créer la base de données et l'utilisateur MySQL / Mariadb

Ouvrez la console d'administration mysql /mariadb :

sudo mysql

ou si vous avez activé authentification par mot de passe de l'utilisateur root

sudo mysql -uroot -p

Créez les utilisateurs pour mariadb et la base de données :

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'username'@'localhost';
FLUSH PRIVILEGES;

Remplacez username et password par vos identifiant et mot de passe.

Installer les paquets PHP requis

Un certain nombre de modules PHP sont indispensables. Pour les installer, si ce n'est déjà fait :

sudo apt install php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-imagick php-xml php-zip

Configurez Apache

Créez le fichier /etc/apache2/sites-available/nextcloud.conf avec les droits d'administration, et copiez-y le contenu suivant :

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName nextcloud.localhost
    DocumentRoot /var/www/nextcloud
 
    <Directory /var/www/nextcloud/>
      Require all granted
      AllowOverride All
      Options FollowSymLinks MultiViews
    </Directory>
</VirtualHost>

Si vous avez un nom de domaine, utilisez-le dans la directive ServerName à la place du nom local (nextcloud.localhost). Puis activez ce nouvel hôte virtuel :

a2ensite nextcloud.conf

Activez les modules Apache indispensables :

a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime

Donnez les droits adéquats aux fichiers et répertoires :

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

Finalement, redémarrez apache :

sudo systemctl restart apache2

Assistant d'installation de Nextcloud

Rendez-vous avec votre navigateur sur la page web de votre serveur, soit par son domaine si vous l'avez configuré, soit par son nom local. Dans notre exemple, il s'agit de : http://nextcloud.localhost

La fenêtre va vous demander de définir un nom d'utilisateur et un mot de passe pour l'administrateur. C'est ce compte qui servira à créer d'autres comptes, à mettre à jour, à installer des applications, etc.

Il faudra aussi indiquer le nom de la base de données. Dans notre exemple ci-dessus, elle s'appelle nextcloud, l'utilisateur et son mot de passe définis plus haut. Par défaut le nom d'hôte est localhost et le port 3306.

Pour le choix du répertoire des données, il est conseillé de changer l'emplacement pour qu'il soit en dehors du répertoire racine de l'application (/var/www/nextcloud dans notre exemple). Si vous changez l'emplacement, il vous faudra donner les droits (dans notre exemple changer le propriétaire et le groupe par www-data)au serveur web pour pouvoir y accéder.

Pour finir ensuite sur "Terminer l'installation" , l'installation prend un moment en fonction de la puissance de votre serveur. Si vous tombez sur une "Erreur 500", rechargez la page jusqu'à ce que l'installation finisse (F5). Lorsque la page de connexion apparaît, l'installation est terminée. Procédez ensuite au réglage des performances du serveur Nextcloud.

Applications

Une fois installé, vous disposez des partages de base: Fichiers, Galerie
Il est possible d'en ajouter d'autre, notamment: Agenda, Contacts, Task (tâches), … partage social : Diaspora, Chat voir visioconférence avec Talk
Pour cela, cliquez sur votre icône en haut à droite puis dans le menu, + Applications
Dans la liste de gauche, vous avez Pack d'applications, dans la liste, il suffit de cliquer le bouton sur la droite Activer

Tout ce qui suit cet avertissement n'a ni été relu, ni actualisé. Il ya donc sans doute pas mal d'informations obsolètes.

Réglage des performances

Connectez vous avec vos identifiant et mot de passe choisis à l'installation, puis cliquez sur la roue dentée en haut à droite, sur le bandeau bleu, et enfin sur "Administration/Paramètres de Base"

Vous voyez en haut de la page le titre "Avertissement de sécurité & configuration", nous allons nous occuper de tout cela.

Redirection HTTPS automatique

Par défaut, même après avoir activé le mode SSL d'apache et déclaré votre site, l'accès en HTTP fonctionne toujours. Nous allons paramétrer une redirection automatique de HTTP vers HTTPS, comme lepréconise la documentation Nextcloud.

Partie à revoir

Ouvrez votre session SSH en administrateur, et modifiez le fichier de configuration de votre site qui se trouve dans ce dossier :

$ nano /etc/apache2/sites-available/"votre-site.conf"   # remplacer "votre-site.conf par le nom correct de votre fichier de configuration

Rajouter en dessous de la ligne "ServerName cloud.nextcloud.com":

ServerSignature Off
RewriteEngine On
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

Un petit CTRL + O pour enregistrer, un CTRL + X pour quitter. On active le module rewrite d'apache2 pour que ces lignes soient prise en compte :

$ a2enmod rewrite 

Puis on redémarre le serveur web pour prendre en compte la configuration:

$ service apache2 restart 

On rafraîchit la page web. Si vous n'avez pas de certificat validé par une autorité, cela vous occasionnera une erreur SSL. Passez outre la recommandation, vous pourrez changer de certificat SSL plus tard.

Utilisation HTTP/2 pour le HTTPS

Si votre site est configuré pour le HTTPS, il est possible d'utiliser le protocole HTTP/2 qui est censé améliorer les performances. Il faut commencer par activer le module http2 d'Apache.

Le module http2 a très peu d’intérêt s'il est utilisé avec le MPM prefork d'Apache qui est celui utilisé par défaut. Voir la doc ici
$ a2enmod http2

Rajoutez les lignes suivantes à votre fichier de configuration d'hôte virtuel HTTPS :

    <IfModule mod_http2.c>
      Protocols h2 http/1.1
    </IfModule>

Puis on redémarre le serveur web pour prendre en compte la configuration:

$ systemctl restart apache2 

Activer HSTS ( HTTP Strict-Transport-Security )

Toujours en accord avec les recommandations officielles, "HTTP Strict Transport Security" (wikipedia) est un mécanisme de sécurité supplémentaire contre les attaques de type man-in-the-middle. Il est recommandé de l'activer.

Pour ce faire, nous allons retourner dans notre session SSH et modifier le fichier de configuration d'hôte virtuel HTTPS.

Rajouter en dessous de "ServerName" :

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>

On enregistre, on quitte l'éditeur, puis on active le module correspondant dans apache, pour que ces lignes soient prises en compte :

a2enmod headers

On redémarre le serveur apache pour que la configuration soit prise en compte, puis on recharge la page web du serveur Nextcloud. La ligne traitant de "HTTP Strict-Transport-Security" à disparu, nous pouvons continuer.

Cache mémoire

Le cache mémoire est conseillé pour améliorer la réactivité de votre serveur. Les fichiers les plus demandés sont mis en cache mémoire pour une plus grande disponibilité.

Dans la documentation officielle, le cache php-apc est désigné comme obsolète. Elle préconise d'utiliser REDIS ou APCu que nous utiliserons ici.

Reprenez votre session SSH, allez à la racine de votre serveur nextcloud ( en général dans /var/www/html )

On installe et on active le module php-apcu

$ apt install php-apcu
$ phpenmod apcu

Puis on modifie le fichier config.php se trouvant dans le dossier config du serveur.

Rajoutez une ligne à la fin, avant la dernière parenthèse :

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

Enregistrez puis dans le fichier /etc/php/<php_version>/mods-available/apcu.ini, rajoutez la ligne :

apc.enable_cli=1

Enregistrez également, redémarrez le serveur web, puis rechargez la page web Nextcloud : la ligne concernant le cache est partie.

PHP OPcache

L'OPcache est une recommandation de la documentation. Il est complémentaire du cache mémoire Apcu ou Redis.
Nous allons éditer le fichier php.ini, pour activer la prise en charge d'OPcache.

$ nano /etc/php/7.x/apache2/php.ini    # remplacez 7.x par votre version de php

rajouter, tout en bas du fichier :

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

On enregistre, on quitte, on redémarre le serveur web, et on recharge la page web Nextcloud : tous les tests on réussi, le serveur est correctement configuré. Pour autant, il reste une dernière configuration à effectuer : la tâche CRON.

Configurer le CRON

Nextcloud utilise une tâche cron pour lancer des scripts à intervalles réguliers. Par défaut, il est configuré pour utiliser AJAX, mais qui à le désavantage de ne fonctionner que via l'explorateur web. Pour une utilisation via l'application, il est recommandé d'utiliser le CRON de votre serveur, paramétré avec l'utilisateur qui gère votre site (par défaut www-data)

Nous allons appeler le fichier cron.php se trouvant à la racine de votre serveur web toutes les 5 minutes, par l'utilisateur www-data. ( à adapter selon votre configuration serveur)

$ crontab -u www-data -e

À la dernière ligne, rajouter le cron de 5 minutes : /!\Attention de bien modifier le chemin vers votre fichier cron.php ex: /var/www/html/nextcloud/cron.php, ou tout autre chemin selon votre configuration, sinon le cron ne fonctionera pas. /!\

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

Quittez en enregistrant, puis vérifiez la configuration par

$ crontab -u www-data -l
*/5  *  *  *  * php -f /var/www/cron.php

Votre serveur Nextcloud est maintenant installé et configuré selon les recommandations de l'éditeur. Pour configurer le client, voir la page dédié au Client Nextcloud

Pour vérifier le bon fonctionnement de cron depuis votre interface d'administration Nextcloud, vous pouvez forcer le redémarrage de cron afin que le fichier cron.php soit appelé directement et ne pas devoir attendre le délais de 15min, pour cela redémarrer cron avec

$ sudo service cron restart

Si tout est correct, vous obtiendrez le message suivant depuis l'interface d'administration Nextcloud :

"Tâches de fond | Dernière tâche exécutée il y a 1 minute" (ou inférieur)

Paramétrage Divers

Langue

Vous pouvez définir une langue par défaut à chaque création d'utilisateur, et les paramêtre régionnaux correspondant.

Pour ce faire, rajoutez ces lignes dans le fichier config/config.php :

'default_language' => 'fr_FR',
'force_language' => 'fr_FR',
'default_locale' => 'fr_FR',
'force_locale' => 'fr_FR',

Adaptez cette valeur à la langue que vous souhaitez.

Source : Nextcloud Language Configuration

Thème

Pour que l'interface web adapte les icônes automatiquement à vos couleur, installez ceci :

$ sudo apt install php-imagick libmagickcore-6.q16-3-extra

On Active le module php :

$ phpenmod imagick

puis on redémarre le serveur Apache :

$ service apache2 restart

Source : Nextcloud Theming of Icons

Voir aussi


Contributeurs principaux : filerem1, bcag2.