Comment créer votre propre service cloud avec Nextcloud ?

By | August 15, 2017

Nextcloud est une application d’auto-hébergement qui vous permet de sauvegarder vos contacts, vos images, et tous vos documents personnels dans un endroit centralisé. Avec Nextcloud, vous n’aurez pas besoin des solutions tierces comme Mega, DropBox, Box, Google Drive, etc.

Voici quelques caractéristiques de Nextcloud:

_ la gestion des utilisateurs et groupes avec OpenID ou LDAP,
_ l’accès de vos données existantes sur DropBox, un serveur FTP ou un NAS,
_ le support d’une authentification en deux étapes,
_ la synchronisation des clients Nextcloud (mobiles, ordinateurs) avec le serveur,
_ la possibilité de partager des documents avec les autres utilisateurs,
_ la gestion depuis l’interface d’administration des appareils et applications connectés au serveur.

Dans ce guide, vous apprendrez:
_ l’installation d’un serveur Nextcloud,
_ la mise en place d’un certificat ssl sur votre serveur,
_ la sécurisation d’un serveur Nextcloud.

Bien que ce tutoriel soit réalisé sur un VPS, vous pourrez également le réaliser sur n’importe quel système Ubuntu 16.04.

1-Installation de LAMP

Nextcloud fonctionne avec MariaDB/Mysql, Apache, et PHP. Vous devez donc installer ces programmes sur votre système.

Tout d’abord, mettez à jour votre système:

# apt-get update -y && apt-get upgrade -y

Puis, procédez à l’installation de d’Apache, de PHP et autres programmes requis pour l’installation de Nextcloud.

# apt-get install apache2 libapache2-mod-php7.0 -y
# apt-get install php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring -y
# apt-get install php7.0-intl php7.0-mcrypt php-imagick php7.0-xml php7.0-zip zip -y

Enfin, installez MariaDB:

# apt-get install mariadb-server php-mysql -y

2-Configuration de MariaDB

Par défaut, l’installation de MariaDB n’est pas sécurisée. Vous pouvez la sécuriser grâce à la commande ci-dessous:

# mysql_secure_installation

Répondez aux questions qui vous seront posées comme dans l’image suivante:

sécurisation de mariadb

Entrez dans la base de données :

# mysql -u root -p

NB: Toutes les données que vous verrez en gras peuvent être modifiées pour correspondre à votre environnement.

Création de la base de données Nextcloud:

MariaDB [(none)]> CREATE DATABASE nextclouddb;

Création d’un utilisateur avec son mot de passe pour Nextcloud:

MariaDB [(none)]> CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'Dr0gb42017';

Affectation des privilèges à l’utilisateur créé:

MariaDB [(none)]>GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextcloud'@'localhost';
MariaDB [(none)]>FLUSH PRIVILEGES;

Enfin, quittez la base de données:

MariaDB [(none)]>\q

3-Installation de NextCloud

Pour ce tutoriel, nous installerons NextCloud dans le dossier root d’Apache.
Vous pourrez bien sûr l’installer dans l’emplacement de votre choix.

# cd /var/www/html/
# wget https://download.nextcloud.com/server/releases/nextcloud-12.0.0.zip
# unzip nextcloud-12.0.0.zip
# rm nextcloud-12.0.0.zip

Donnez les bonnes permissions d’Apache au dossier Nextcloud:

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

4-Création d’un hôte virtuel

Passons à présent à la création d’un hôte virtuel sur le serveur. Pour ce faire, il vous faudra créer un fichier nextcloud.conf dans le dossier /etc/apache2/sites-available.

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

Ajoutez les informations ci-dessous au nouveau fichier créé. Notez que vous pouvez remplacer les éléments en gras par vos propres informations.
Au paramètre ServerName, insérez soit l’adresse IP de votre serveur ou votre nom de domaine.

<VirtualHost *:80>

DocumentRoot /var/www/html

ServerName 212.*.*.224

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/html/>

Options +FollowSymlinks

AllowOverride All

<IfModule mod_dav.c>

Dav off

</IfModule>

SetEnv HOME /var/www/html

SetEnv HTTP_HOME /var/www/html

Satisfy Any

</Directory>

</VirtualHost>

Activez à présent Nextcloud

# a2ensite nextcloud

Désactivez le fichier virtuel hôte par défaut:

# a2dissite 000-default

Puis, activez les modules d’Apache:

# a2enmod rewrite headers env dir mime setenvif

Et enfin, redémarrez Apache:

# service apache2 restart

Ouvrez votre navigateur, puis rendez-vous l’adresse: http://adresse-ip-de-votre-serveur/nextcloud

Si tout a bien fonctionné jusque là, vous verrez normalement une page similaire à celle-ci.

interface nextcloud http

5-Installation d’un certificat ssl

Comme vous pouvez le constater, le serveur fonctionne sur le http qui est un protocole non-sécurisé.
Pour rendre vos connexions sécurisées, il vous faudra installer un certificat ssl sur votre serveur.

Lors de son installation, Apache vient avec des certificats auto-signés. Nous utiliserons dans ce guide l’un d’eux.

Vous pouvez installer l’un de ces certificats en lançant les commandes suivantes:

# a2enmod ssl
# a2ensite default-ssl
# service apache2 reload

Ouvrez à présent votre navigateur avec cette adresse: https://adresse-ip-de-votre-serveur/nextcloud

Vous verrez normalement un avertissement sur le certificat utilisé (image ci-dessous).
N’ayez aucune crainte, ce message est normal.
Cliquez sur Avancé, puis confirmez l’exception:

installation du certifcat ssl du serveur
Et voilà, vos connexions vers votre serveur sécurisées.

interface nextcloud https

6-Création d’un compte administrateur pour Nextcloud

Lors de votre première connexion, vous serez amené à créer un compte d’administrateur.
Saisissez un nom, puis un mot de passe  dans la section Create an admin account,
Puis, insérez les informations de votre base de données dans la section Configure the database.

creation d'un utilisateur pour nextcloud

Vous accéderez ensuite à l’interface d’accueil de Nextcloud.

interface d'accueil nextcloud

7-Réglages des problèmes de sécurité

Après une nouvelle installation de Nextcloud, vous verrez probablement sur la page d’administration des avertissements de sécurité.
Pour atteindre cette page, cliquez sur la petite roue qui se trouve à l’extreme droite de la page d’accueil, puis choisissez le menu Admin.

accès à la page d'administration

Vous verrez probablement ces quatre avertissemments.

avertissements de sécurité nextcloud

7.1-Activation du fichier .htaccess

Le premier avertissement concerne le fichier .htaccess.
Pour régler le problème sur le fichier .htaccess, suivez ces étapes:

Ouvrez le fichier /etc/apache2/apache2.conf:

# nano /etc/apache2/apache2.conf

puis remplacez la configuration suivante du répertoire /var/www:

        
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted

par celle-ci:

        
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted

7.2-Activation du HSTS

Cette fonctionnalité permet de rediriger toutes vos connexions non chiffrées (HTTP) vers celles qui sont sécurisées (HTTPS). Pour activer le HSTS, ajoutez les paramètres ci-dessous à la fin du fichier de configuration de votre certificat ssl default-ssl.conf.

# nano /etc/apache2/sites-available/default-ssl.conf

Paramètres à ajouter:

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

Reloadez Apache:

# service apache2 reload

7.3-Activation du caching

En activant le caching, vous aurez un serveur plus performant et plus rapide.

Installez redis-server et quelques modules PHP nécésssaires pour son fonctionnement:

# apt-get install php-apcu redis-server php-redis -y

Ensuite ouvrez le fichier de configuration de redis.

# nano /etc/redis/redis.conf

Tout d’abord, répérez le paramètre Port, puis remplacez le numéro de port 6379 par 0. En changeant le port, Redis ne sera pas à l’écoute sur un port TCP.
Puis, décommentez les paramètres suivants:

unixsocket /var/run/redis/redis.sock
unixsocketperm 700

Ensuite, remplacez les permissions de unixsocketperm par 770:

unixsocketperm 770

Sauvegardez, puis quittez.
Ajoutez l’utilisateur Redis au groupe d’Apache:

# usermod -a -G redis www-data

Redémarrez Apache

# service apache2 restart

Puis, démarrez le serveur Redis:

# service redis-server start

La dernière étape consiste à ajouter les paramètres du serveur caching au fichier de configuration de Nextcloud:

# nano /var/www/html/nextcloud/config/config.php

Ajoutez tout en bas du fichier les paramètres suivants:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'filelocking.enabled' => 'true',
'redis' =>
array (
'host' => '/var/run/redis/redis.sock',
'port' => 0,
'timeout' => 0.0,
),

Un redémarrage du serveur est nécessaire pour que les modifications prennent leur effet.
Assurez-vous que le serveur Redis démarrera avec votre système:

# systemctl enable redis-server

NB: Assurez-vous que le paramètre skeletondirectory est bien présent dans votre fichier config.php. Ce fichier vous permettra de définir un chemin vers les dossiers et fichiers qui seront copiés dans les répertoires de tous les nouveaux utilisateurs. Son absence peut créer des problèmes de login.

7.4-Configuration de PHP Opcache

PHP Opcache permet également de rendre votre serveur plus performant. Pour régler ce quatrième avertissement, il vous faudra ajouter quelques lignes au fichier php.ini.

# nano /etc/php/7.0/apache2/php.ini

A la fin du contenu du fichier, ajoutez les paramètres suivants:

; Nextcloud Opcache settings
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

Après avoir réglé tous ces problèmes, vous verrez normalement ce message sur la page d’administration de Nextcloud:

les vérifications réussies

 

8-Connexion du client Linux au serveur Nextcloud

Il existe des clients Nextcloud mobiles et Desktop. Vous pouvez télécharger le client qui vous intéresse à partir du site de Nextcloud.

clients mobiles

En ce qui concerne le client Ubuntu, vous pourrez l’installer depuis votre terminal avec les commandes suivantes:

$ sudo add-apt-repository ppa:nextcloud-devs/client
$ sudo apt-get update
$ sudo apt-get install nextcloud-client

Ouvrez votre client Linux, puis insérez les configurations exactes de votre serveur Nextcloud:
insertion de l'adresse du serveur nextcloud

Acceptez le certificat de votre serveur Nextcloud:
installation du certifcat ssl du serveur

Insérez les identifiants du compte administrateur créé à partir de l’interface de Nextcloud:

Puis, choisissez le type de synchronisation pour votre client Linux:

Si tout a bien fonctionné, vous retrouverez vos fichiers sur votre système:

Vous serez désormais en mesure de synchroniser vos données entre vos clients mobiles et Desktop et votre serveur Nextcloud.

Ainsi prend fin ce guide d’installation d’un service cloud sécurisé avec Nextcloud 12. J’espère qu’il vous sera utile. N’hésitez pas à me contacter en cas de besoin.

mdestroy

7 thoughts on “Comment créer votre propre service cloud avec Nextcloud ?

  1. Youri

    Bonjour,

    après avoir suivi le tuto pas à pas, j’ai un problème avec mon index .php… donc quand je tape https://adresse-ip-de-mon-serveur/nextcloud, une page blanche s’affiche et rien n’apparaît.
    Je me suis placé dans le dossier var/www/html/nexcloud et fait un ls -l pour voir si les fichiers sont correctement installés mais quand j’édite l’index .php, le dossier est vide. pareille pour l’index .html

    pourriez-vous m’aider ?
    Merci…

    Reply
    1. mdestroy Post author

      J’ai refais le tuto de mon côté, et tout a fonctionné nickel…
      Puis-je voir le contenu des fichiers suivants:
      _ /var/www/html/nextcloud/data/nextcloud.log,
      _ /var/www/html/nextcloud/config/config.php,
      _ /etc/apache2/sites-available/nextcloud.conf,
      _ /etc/apache2/apache2.conf.

      Reply
      1. Youri

        j’ai réussi à me décoincer sur ceci… maintenant j’ai cela

        DocumentRoot /var/www/html ServerName 192.168.0.3 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Options +FollowSymlinks AllowOverride All Dav off SetEnv HOME /var/www/html SetEnv HTTP_HOME /var/www/html Satisfy Any

        Je ne sais pas trop ce que je dois faire… je sais que c’est une erreur de droit mais je vois pas trop sur quoi…

        Reply
    2. FALYDIA

      Retre dans le fichier nextcloud/config tu modifie le chemin d acces, en mettant var/www/nextcloud au lieu de var/www/html/nextcloud. je crois que xa va marcher

      Reply
  2. Youri

    Bonjour,

    quand je lance la page “http://ip-du-serveur/nextcloud”, il ouvre la page index.php mais m’afiche se message :

    DocumentRoot /var/www/html ServerName 192.168.0.3 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Options +FollowSymlinks AllowOverride All Dav off SetEnv HOME /var/www/html SetEnv HTTP_HOME /var/www/html Satisfy Any

    pourriez-vous m’éclaircir un peu ? merci

    Reply
  3. Graing'

    Super tuto que je cherche depuis des mois !
    Je vais le regarder de plus pres, notamment les options pour securiser mon nextcloud (que j’ai deja reussi a installer : je m’etonne moi-meme).
    Site tres riche en infos et tutos pour le newbee que je suis : 1 000 mercis pour ce super partage !

    Reply
  4. neutra

    Salut,
    Merci pour les tutos nextcloud, et les autres bien sûr.
    J’ai un souci après l’install du certificat ssl. Le service apache2 ne démarre plus, voilà ou ce trouve l’erreur :
    SSLCertificateFile: file ‘/etc/ssl/cert/ssl-cert-snakeoil.pem’ does not exist or is empty

    Je comprend que le certificat n’existe pas ou à été supprimer, mais comment faire de nouveau certificats ou restaurer les originaux si possible?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *