NextCloud

Holà à tous,

En cette période de confinement pas forcément évidente, j’ai décidé de rédiger un petit How To pour mettre en place un partage de fichiers dans le cloud.

L’élu et vous avez pu le deviner au titre de l’article sera Nextcloud, le fork de OwnCloud.

Le lien menant au site de NextCloud :

https://nextcloud.com/

La documentation dont l’article est en partie issu :

https://docs.nextcloud.com/server/18/admin_manual/installation/system_requirements.html

 

Les prérequis nécessaires pour aborder cette installation dans de bonnes conditions :

 

Une distribution Linux, vous avez le choix

  • Ubuntu 18.04 LTS (recommandé)
  • Red Hat Enterprise Linux 8 (recommandé)
  • Debian 10 (Buster)
  • SUSE Linux Enterprise Server 15
  • openSUSE Leap 42.1+
  • CentOS 8

 

Pour la base de données, pareil, vaste choix de Bdd.

  • MySQL 5.7+ or MariaDB 10.2+ (recommandé)
  • Oracle Database 11g (only as part of an enterprise subscription)
  • PostgreSQL 9.5/9.6/10/11
  • SQLite (Uniquement pour tester ou et avec configuration vps basique)

 

 

Coté serveur web, que du classique :

  • Apache 2.4 with mod_php or php-fpm (recommandé)
  • nginx with php-fpm

 

Et pour finir l’indispensable PHP:

  • 7.3 (recommendé)
  • 7.4 (recommendé)

 

De mon coté je vais prendre un Ubuntu18 LTS, MariaDB, Apache2 et PHP 7.4.

Concernant PHP, voici le lien permettant une installation manuelle des modules PHP.

https://docs.nextcloud.com/server/18/admin_manual/installation/source_installation.html

Les modules à installer :

  • PHP (7.2, 7.3 or 7.4)
  • PHP module ctype
  • PHP module curl
  • PHP module dom (apt install php-xml)
  • PHP module GD
  • PHP module hash (only on FreeBSD)
  • PHP module iconv
  • PHP module JSON
  • PHP module libxml (Linux package libxml2 must be >=2.7.0)
  • PHP module mbstring
  • PHP module openssl
  • PHP module posix
  • PHP module session
  • PHP module SimpleXML
  • PHP module XMLReader
  • PHP module XMLWriter
  • PHP module zip
  • PHP module zlib

On commence par installer PHP7.4

On doit installer un PPA avant toute chose

apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update

Ensuite php7.4 et les modules que l’on souhaite installer et les modules obligatoires.

apt install  php7.4-bz2 php7.4-cli php7.4-curl php7.4-intl php7.4-json php7.4-zip php7.4-mysql php7.4-mbstring php7.4-gd php7.4-gmp php7.4-xml php7.4-opcache php7.4-soap php7.4-imagick php7.4-dev php7.4-imap  php-smbclient php-apcu php-memcached php7.4 php7.4-common php7.4-fpm

On vérifie la version de notre php

php -v

On poursuit avec l’installation d’ apache2 et de MariaDB

apt install apache2 mariadb-10

On sécurise Maria à minima avec la commande magique.

mysql_secure_installation

On configure la Bdd de notre futur Nextcloud en créant la base ainsi que l’utilisateur de celle-ci et on oublie pas de tester les accès.

create user 'ncadmin'@'%' identified by '123456';
create database nextcloud;
grant all privileges on nextcloud.* to 'ncadmin'@'%';

On configure notre serveur apache en créant le fichier  « nextcloud.conf« 

sudo nano /etc/apache2/sites-available/nextcloud.conf

On va insérer les lignes suivantes (attention, cela doit correspondre à votre futur emplacement Nextcloud).

Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>

</Directory>

On active notre nouveau site et on lance  un reload.

sudo a2ensite nextcloud.conf
sudo systemctl reload apache2

Si on s’en tient à la documentation, il est vivement recommandé d’activer le module rewrite d’apache ainsi que headers, env, dir, mime

sudo a2enmod rewrite
sudo systemctl restart apache2
sudo a2enmod headers
sudo a2enmod env (déjà activé, en principe)
sudo a2enmod dir (déjà activé, en principe)
sudo a2enmod mime (déjà activé, en principe)

A partir de maintenant l’installation se fera en cli.

Pour cela, il faudra commencer par télécharger le dossier Nextcloud dans sa dernière itération à savoir la 18.0.3.

https://download.nextcloud.com/server/releases/nextcloud-18.0.3.tar.bz2

On déplace le dossier décompressé soit à vers /var/www/ ou /var/www/html.

Pour ma part il sera directement après « www »

On change le groupe de ce dossier ainsi que son utilisateur, www-data en l’occurrence.

Idem pour les droits d’accès.

sudo chmod -R 755 /var/www/nextcloud/
sudo chown -R www-data: /var/www/nextcloud

Maintenant, on se déplace vers le dossier Nextcloud pour commencer à utiliser le module occ et débuter l’installation des divers éléments nécessaires à son utilisation.

cd /var/www/nextcloud/

On va lancer une commande dans laquelle il faudra rentrer les informations suivantes:

Nom de la Bdd, Nom de l’utilisateur de la Bdd ainsi que son mot de passe

Nom de l’administrateur Nextcloud ainsi que son mot de passe (ça vous servira pour vous connecter à l’interface).

sudo -u www-data php occ  maintenance:install --database "mysql" --database-name "nextcloud"  --database-user "ncadmin" --database-pass "123456" --admin-user "nextcloud" --admin-pass "*******"

Vous devriez obtenir le message suivant en signe de réussite.

On peut dorénavant se connecter à notre Nextcloud

Passons maintenant a let’s enscrypt.

Rien de plus simple, il vous suffira d’un nom de domaine et un mail, rien de plus.

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update

On installe Cerbot

sudo apt-get install certbot python3-certbot-apache

On lance la commande qui configure apache, demande le certificat et active la partie HTTPS.

certbot --apache

Vous ne devriez rentrer que votre mail de contact ainsi que votre domaine.

Et voila, c’est fini pour ce tuto. La partie TIPS est la pour vous aider à régler les différents problèmes qui vont certainement arriver (Murffy inside).

A bientôt

Tips 0 :

Si vous avez une erreur interne suite à l’installation et ceux malgré le successful du serveur, il faudra utiliser le Tips 1 et relancer apache.

Si vous deviez avoir un souci du genre « éditez la variable « trusted_domains » dans le fichier config/config.php » après l’application du TIPS 1 il faudra se rendre dans config/config.php et paramétrer un nom DNS, voir la photo.(nextcloud.techwire.fr étant une résolution dns perso).

TIPS 1 :

Pour maintenir Nextcloud ou régler certains soucis, le mode maintenance avec ses divers commandes, il faudra indiquer l’option après « maintenance: » voir la capture d’écran.

sudo -u www-data php /var/www/nextcloud/occ maintenance:

TIPS 2 :

Si vous souhaitez déplacer le dossier « data » de votre Nextcloud, voici une des deux procédures officielles :

Commencer par arrêter le service apache2.

systemctl stop apache2.service 

Déplacer le dossier à l’endroit ou vous le souhaitez.

La commande « mv » garde les droits complets lors du déplacement.

« /mnt/ncdata » étant situé sur le deuxième disque de ma vm.

mv data/ /mnt/ncdata/

Créer un lien symbolique menant de l’ancien emplacement du dossier data vers le nouvel emplacement.

« data » étant au niveau de « /var/www/emplacement de Nextcloud lors de l’installation.

ln -s data /mnt/ncdata/data/

On vérifie la bonne création du lien avec un ls et on démarre le service apache2.

Et voila, rien de plus.

TIPS 3 :

Si vous souhaitez activer memcache sur un host Nextcloud unique (conseillé sinon vous risquez d’avoir un message d’erreur).

Il faut déjà procéder à l’installation de redis

apt install redis

On vérifie que c est bon avec la commande suivante

cat /var/run/redis/redis-server.pid

On installe ensuite acpu si pas déjà fait lors des prérequis.

apt install php-acpu

Enfin, il faudra insérer à la fin juste avant  » );  » les lignes suivantes dans le fichier config.php situé dans :

/var/www/dossier ou se trouve Nextcloud/config/config.php

'memcache.local' => '\OC\Memcache\APCu',
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' => array(
      'host' => 'localhost',
       'port' => 6379,
  ),

Pour un Cluster

 'memcache.distributed' => '\OC\\Memcache\Redis',
 'memcache.locking' => '\OC\Memcache\Redis',
 'memcache.local' => '\OC\Memcache\APCu',
 'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
  ),

Et pour terminer, redémarrage du service redis

systemctl restart redis-server

TIPS 4 :

Si vous devez passer votre Bdd (Mariadb) en utf8mb4

cd /var/www/dossier ou se trouve Nextcloud
sudo -u www-data php occ maintenance:mode --on
sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
sudo -u www-data php occ maintenance:mode --off

TIPS 5 :

Si vous avez une page blanche avec un message d’erreur lors de l’arrêt d’apache2 ou d’un redémarrage.

Il faut passer les droits de votre dossier Nextcloud en 755.

sudo chown -R www-data: /var/www/dossier ou se trouve Nextcloud
sudo chmod -R 755 /var/www/dossier ou se trouve Nextcloud

TIPS 6 :

Si vous avez des soucis avec les index:

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

TIPS 7 :

Si vous avez le message Bdd non converties en big int:

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

TIPS 8 :

Uniquement si vous souhaitez utiliser le script auto de Nextcloud et voulez remplacer Postgres par MariaDb (Ce n’est qu’un début de script).

#!/bin/bash
# Install Mariadb
sudo apt install mariadb-server mariadb-client mariadb-common -y

# Create DB
cd /tmp || exit
sudo mysql -u root <<END
create user 'ncadmin'@'%' identified by '123456';
create database nextcloud;
GRANT ALL ON databse.* TO 'ncadmin'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
END
sudo systemctl restart mariadb.service

Tips 9 :

SI vous rencontrez ce message lors d’une mise à jour de Nextcloud ou à un ature moment d’ailleurs : »

« An exception occurred while executing ‘ALTER TABLE [TABLE_NAME] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;’:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes« 

Il vous faut modifier vos paramètres moteur innodb de Mysql (ou Mariadb) comme ce qui suit

sudo mysql -u root -p
use nextcloud;
set global innodb_large_prefix=on;
set global innodb_file_format=Barracuda;
sudo -u www-data php occ maintenance:repair

Tips 10 :

Si vous avez ce message dans l’onglet « vue d’ensemble » de Nextcloud

« Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. « 
Si le .htacces est présent, procédez comme suit :

Se rendre dans le fichier de configuration d’apache et aller à la section « /var/www  » et rajouter « AllowOverride All« . Ce qui va permettre la prise en compte du .htacces du dossier « data ».

Il faudra relancer la configuration d’apache après cette modification.

sudo systemctl reload apache2.service

Tips 11 :

Si vous l’erreur suivante après l’installation de Let’s enscypt :

"Strict-Transport-Security..."

Il vous faudra rajouter au niveau de votre virtual host la ligne suivant juste après <VirtualHost *:443> et relancer la conf d'apache.
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"

Lien important

https://scan.nextcloud.com/

https://docs.nextcloud.com/server/13/admin_manual/configuration_server/occ_command.html?highlight=occ#maintenance-commands

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.