Comment installer un serveur NextCloud

Il existe des centaines de façons de partager des fichiers via Internet.  Les services les plus populaires comme DropBox ou Google Drive, peuvent faire l’affaire pour des quantités limitées. Par contre, dès que l’on commence à avoir plus de volume ou que l’on veux gérer des équipes de tarvail, les prix de ces plateformes montent de façon exponentielle.  Il existe pourtant des solutions gratuites, libres, et sécuritaires.  La solution la plus intéressante ces dernières années est, à mon avis, NextCloud version communautaire.

NextCloud supporte Windows, Mac, Linux, Android et iOS.  Vous pouvez l’installer sur un ordinateur de votre réseau local, ou encore, l’héberger sur une machine virtuelle (VM) en location dans le cloud. Il y a plusieurs avantages à mettre votre NextCloud en hébergement externe. Entre autres,  Ubuntu 18.04 sera déjà installé et vous n’aurez pas besoin de compromettre la sécurité de votre LAN en ouvrant des ports sur votre routeur.  Mais surtout, en cas de sinistre, vos données sont hors d’atteinte.  

Passons à l’action…

Prérequis pour un serveur local sur votre LAN:

  • Un ordinateur capable de rouler adéquatement GNU/Linux et avoir déjà installé Ubuntu 18.04 (exemple minimal: 2 Gb RAM + iCore 2 Duo)
  • Un disque dur SATA ou SSD de la grosseur qui vous plaira.
  • Un RAID serait apprécié.

Prérequis pour une VM:

  • 1 processeur virtuel pour les bas débits.
    2 processeurs ou plus pour les plus grandes demandes.
  • 1Gb de mémoire RAM au minimum.
    2 Gb ou plus pour les plus grandes demandes.
  • Pour la grosseur de votre disque virtuel, allez-y selon vos besoins et votre budget.

On divise l’installation en 5 étapes

Préparer un serveur Web (Apache2) pour NextCloud
Préparer la base de donnée MariaDB
Installer NextCloud (version 13.02)
Optimiser les performances
Sécuriser la connexion avec OpenSSL


Préparer un serveur Web

Installer le serveur apache

sudo apt install apache2

Pour restreindre l’accès aux répertoires,  dans apache2.conf, retirer « Indexes »  et ne gardez que « FollowSymLinks ».

sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/apache2/apache2.conf

Démarrez le service « apache2 »  et assurez-vous qu’il soit toujours en marche.

sudo systemctl start apache2.service
sudo systemctl enable apache2.service

Avant de passer à l’étape suivante, assurez-vous que tout fonctionne.   Visitez la page Web par défaut de apache2.

apache_is_working

Si vous ne connaissez pas votre adresse IP, voici une commande qui vous donne l’adresse IP de votre serveur.

sudo ip add | grep inet

Ajoutez le dépôt pour les modules PHP 7.

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

Installez PHP 7 et les modules nécessaires.

sudo apt install php7.1
sudo apt install libapache2-mod-php7.1 php7.1-common php7.1-mbstring php7.1-xmlrpc php7.1-soap php7.1-apcu php7.1-smbclient php7.1-ldap php7.1-redis php7.1-gd php7.1-xml php7.1-intl php7.1-json php7.1-imagick php7.1-mysql php7.1-cli php7.1-mcrypt php7.1-ldap php7.1-zip php7.1-curl

Ajustez les paramètres PHP 7.1 en fonction des besoins de Nextcloud

sudo nano /etc/php/7.1/apache2/php.ini

memory_limit = 256M
upload_max_filesize = 500M
date.timezone = America/Montreal

Préparer la base de données MariaDB

Installez le serveur mariadb et le client aussi.

sudo apt install mariadb-server mariadb-client

Ensuite activez les services.

sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

Pour bien sécuriser votre installation, lancez mysql_secure_installation et répondez au questionnaire. Notez que vous allez devoir choisir un mot de passe.

sudo mysql_secure_installation

Set root password? [Y/n]: Y
New password: MonMotDePasseRoot
Re-enter new password: MonMotDePasseRoot
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]:  Y
Reload privilege tables now? [Y/n]:  Y

Redémarrez le serveur MariaDB

sudo systemctl restart mariadb.service

Créez une base de donnée NextCloud.

sudo mysql -u root -p
MariaDB [(none)]> CREATE DATABASE nextcloud;
MariaDB [(none)]> CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'MonMotDePasse';
MariaDB [(none)]> GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'MonMotDePasse' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Installer NextCloud (version 13.02)

Téléchargez et installez Nextcloud dans le répertoire « /var/www/html/nextcloud ».
Ajustez les permissions et attribuez l’utilisateur et le groupe à « www-data ».

cd ~
mkdir temp
cd temp
wget https://download.nextcloud.com/server/releases/nextcloud-13.0.2.zip
sudo apt install unzip
unzip nextcloud-13.0.2.zip
sudo mv nextcloud /var/www/html
sudo chown -R www-data:www-data /var/www/html/nextcloud/
sudo chmod -R 755 /var/www/html/nextcloud/
sudo systemctl restart apache2.service
sudo systemctl status apache2.service

Vous devriez voir un rapport qui ressemble à ceci.

apache2.service - The Apache HTTP Server 
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) 
  Drop-In: /lib/systemd/system/apache2.service.d 
           └─apache2-systemd.conf 
   Active: active (running) since Sat 2018-05-26 18:49:57 UTC; 41s ago 
  Process: 2060 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) 
  Process: 2065 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) 
 Main PID: 2081 (apache2) 
    Tasks: 6 (limit: 1113) 
   CGroup: /system.slice/apache2.service 
           ├─2081 /usr/sbin/apache2 -k start 
           ├─2084 /usr/sbin/apache2 -k start 
           ├─2085 /usr/sbin/apache2 -k start 
           ├─2086 /usr/sbin/apache2 -k start 
           ├─2087 /usr/sbin/apache2 -k start 
           └─2088 /usr/sbin/apache2 -k start 
 
May 26 18:49:57 ncubuntu1804 systemd[1]: Stopped The Apache HTTP Server. 
May 26 18:49:57 ncubuntu1804 systemd[1]: Starting The Apache HTTP Server... 
May 26 18:49:57 ncubuntu1804 systemd[1]: Started The Apache HTTP Server.

Créez un fichier site pour apache2 et enregistez-le.  Vous pouvez l’appeler nextcloud.conf.

sudo nano /etc/apache2/sites-available/nextcloud.conf
 
     ServerAdmin me@myserver.com 
     DocumentRoot /var/www/html/nextcloud/ 
     ServerName xx.xx.xx.xx 
     ServerAlias www.xx.xx.xx.xx 
 
     Alias / "/var/www/html/nextcloud/" 
 
      
        Options +FollowSymlinks 
        AllowOverride All 
        Require all granted 
           
            Dav off 
           
        SetEnv HOME /var/www/html/nextcloud 
        SetEnv HTTP_HOME /var/www/html/nextcloud 
      
 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
 


Pour que cette configuration soit bonne vous devez activer les modules suivants et relancer Apache2

sudo a2ensite nextcloud.conf
sudo a2enmod rewrite
sudo a2enmod headers
sudo systemctl restart apache2

Finalement, ouvrez votre site Nextcloud et entrez les informations pour votre base de données MariaDB

nextcloud_init

Optimisez les porformances

Si ce n’est pas déjà fait, ouvrez « php.ini » et apportez les modifications suivantes.

sudo nano /etc/php/7.1/apache2/php.ini

file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_filesize = 500M
display_errors = Off
date.timezone = America/Montreal

Sécurisez vorte Serveur Nextcloud

Afin d’utiliser les certificats SSL, vous devez installer OpenSSL.  Dans cette configuration le certificat est auto signé.  Il est simplement associé l’adresse IP ou au nom du serveur.

sudo mkdir -p /etc/apache2/ssl
sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/nextcloud.pem -keyout /etc/apache2/ssl/nextcloud.key

Créez votre fichier nextcloud-ssl.conf

sudo nano /etc/apache2/sites-available/nextcloud-ssl.conf
 
         
                ServerAdmin me@opencanopea.com 
                DocumentRoot /var/www/html/nextcloud 
 
                ErrorLog ${APACHE_LOG_DIR}/error.log 
                CustomLog ${APACHE_LOG_DIR}/access.log combined 
  
                #   SSL Engine Switch: 
                #   Enable/Disable SSL for this virtual host. 
                SSLEngine on 
 
                #   A self-signed (snakeoil) certificate can be created by installing 
                #   the ssl-cert package. See 
                #   /usr/share/doc/apache2/README.Debian.gz for more info. 
                #   If both key and certificate are stored in the same file, only the 

                #   SSLCertificateFile directive is needed. 
                SSLCertificateFile      /etc/apache2/ssl/nextcloud.pem 
                SSLCertificateKeyFile   /etc/apache2/ssl/nextcloud.key 

 
                #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire 
                 
                                SSLOptions +StdEnvVars 
                 
                 
                                SSLOptions +StdEnvVars 
                 
 
 
         


Activez le site Nextcloud en mode SSL.

sudo a2ensite nextcloud-ssl.conf
systemctl reload apache2

Éditez votre fichier nextloud.conf et mettez les règles de réécritures décrites en vert.  Ces règles redirigent les visites vers le site sécurisé.

 
     ServerAdmin me@opencanopea.com 
     DocumentRoot /var/www/html/nextcloud/ 
     ServerName 00.00.00.00 
     ServerAlias oc.00.00.00.00 
 
     Alias / "/var/www/html/nextcloud/" 
 
     RewriteEngine on 
     ReWriteCond %{SERVER_PORT} !^443$ 
     RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] 
 
      
        Options +FollowSymlinks 
        AllowOverride All 
        Require all granted 
           
            Dav off 
           
        SetEnv HOME /var/www/html/nextcloud 
        SetEnv HTTP_HOME /var/www/html/nextcloud 
      
 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
 

Redémarrez Apache2

sudo a2enmod ssl
systemctl reload apache2

Activer la sécurisation des dossiers via « .htaccess ».  Pour cela, mettez les lignes en vert dans votre fichier nextcloud-ssl.conf.  Cet ajustement prévient le visionnement des documents Nexcloud par navigation web.

Profitez de l’occasion pour paramètrer « Strict-Transport-Security ».

 
         
                ServerAdmin lcayer@opencanopea.com 
 
                DocumentRoot /var/www/html/nextcloud 
 
                 
                        Options Indexes FollowSymLinks 
                        AllowOverride All 
                        Require all granted 
                 
 
                Header always set Strict-Transport-Security "max-age=15552000; includeSubdomains;"

                ErrorLog ${APACHE_LOG_DIR}/error.log 
                CustomLog ${APACHE_LOG_DIR}/access.log combined 
 
 
                #   SSL Engine Switch: 
                #   Enable/Disable SSL for this virtual host. 
                SSLEngine on 
 
                #   A self-signed (snakeoil) certificate can be created by installing 
                #   the ssl-cert package. See 
                #   /usr/share/doc/apache2/README.Debian.gz for more info. 
                #   If both key and certificate are stored in the same file, only the 
                #   SSLCertificateFile directive is needed. 
                SSLCertificateFile      /etc/apache2/ssl/nextcloud.pem 
                SSLCertificateKeyFile   /etc/apache2/ssl/nextcloud.key 
 
 
                #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire 
                 
                                SSLOptions +StdEnvVars 
                 
                 
                                SSLOptions +StdEnvVars 
                 
         
</IfModul

Voilà!  Votre serveur NextCloud est en route et bien sécurisé.

Prochanement… 
   Coment installer un filtre anti Crypto -Virus sur votre serveur NextCloud. 

À propos de l’auteur:

photoblogLouis Cayer est chargé du développement des affaires chez PointLog Solutions Inc. Il est l’instigateur du projet OpenCanopea.  Consultez www.opencanopea.com pour des détails sur nos hébergements NextCloud et Owncloud.

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.