NextCloud – Cloud Personnel

NextCloud – Cloud Personnel

Vous avez envie de reprendre le contrôle de vos données mais vous ne savez pas comment faire ? Dans cet article, je vais vous montrer comment installer votre propre cloud qui vous permettra d’accéder à vos données depuis n’importe quel PC/téléphone.

Imaginez un « Google Drive » rien qu’à vous, avec des données protégées sur votre propre serveur qui ne soit pas partagées et bien NextCloud est la solution.

Avec NextCloud, vous pourrez en plus du stockage de vos données profiter d’autres fonctionnalités comme la gestion d’un calendrier, de vos contacts, d’un système pour recevoir vos mails, partager avec qui vous voulez, mettre en place un chat … En prime vous aurez une forte communauté derrière cet outil et de l’aide si nécessaire !

Pour pouvoir installer notre serveur NextCloud, nous aurons besoin d’un serveur Debian à jour et d’un nom de domaine. Vous pouvez aller voir mon tutoriel sur comment installer Debian en cliquant ici. N’hésitez pas à prendre la dernière version de Debian, pour ce tutoriel j’ai utilisé la version 10.3.0.

Ensuite pensez à mettre à jour votre serveur, voici les dépôts que j’ai utilisés dans mon fichier « sources.list » :

deb http://deb.debian.org/debian buster main contrib non-free
deb-src http://deb.debian.org/debian buster main contrib non-free

deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb-src http://deb.debian.org/debian-security/ buster/updates main contrib non-free

deb http://deb.debian.org/debian buster-updates main contrib non-free
deb-src http://deb.debian.org/debian buster-updates main contrib non-free

 

Il va falloir installer toutes les dépendances nécessaires pour que NextCloud fonctionne.

 

1- Installation de MariaDB

NextCloud a besoin d’une base de données pour fonctionner, voici les différentes étapes à réaliser pour en installer une :

On commence par installer MariaDB :

Une fois MariaDB installé, il faut le configurer. Pour ce faire, utilisons la commande mysql_secure_installation pour configurer les paramètres de bases avec le compte root de notre base de données. Il ne devrait pas y avoir de mot de passe donc appuyez une fois sur « Entrée » :

Ensuite nous pouvons changer le mot de passe de root, appuyez sur « Y » puis validez :

 

Entrez deux fois le mot de passe souhaité et validez. Choisissez un mot de passe complexe pour sécuriser au maximum votre système de base de données.

 

Il nous est demandé si l’on souhaite supprimer l’utilisateur anonyme. Celui-ci est un utilisateur qui a le droit de se connecter à votre base de données sans mot de passe. Par mesure de sécurité, il vaut mieux le supprimer donc écrivez « Y » et validez :

 

Mettez « Y » puis validez pour supprimez l’accès du compte root à distance afin d’éviter de vous faire intercepter votre mot de passe à travers le réseau.

 

Ensuite, supprimons une base de données qui a été créée par défaut lors de l’installation de MariaDB et qui ne sert à rien. « Y » puis validez :

 

Validons la configuration que nous avons effectué en pressant « Y » puis validez :

 

Et voilà, notre système de base de données est installé et pré-configuré, il ne nous reste plus qu’à créer la base de données pour NextCloud.

 

Pour créer notre base de données pour NextCloud, nous devons nous connecter à MariaDB en utilisant la commande suivante qui utilise le compte root avec le mot de passe précédemment créé :

mysql -u root -p

Vous devriez voir ceci :

 

Une fois connecté, nous commençons par créer notre base de données où « mycloud » est le nom que vous souhaitez lui donner :

CREATE DATABASE mycloud;

 

On donne les droits sur cette base de données à un nouvel utilisateur protégé par un mot de passe. N’oubliez pas de remplacer dans la commande ci-dessous « utilisateur » par le nom d’utilisateur de votre choix et « mdp » par un mot de passe fort :

GRANT ALL PRIVILEGES ON mycloud.* TO 'utilisateur'@'localhost' IDENTIFIED BY 'mdp';

 

On applique les changements via la commande :

FLUSH PRIVILEGES;

 

On quitte MariaDB :

exit;

 

Nous avons fini de configurer notre base de données, conservez bien son nom ainsi que le nom de l’utilisateur et son mot de passe. Passons maintenant à l’installation de PHP.

 

2- Installation de PHP

Nous allons récupérer la dernière version de PHP qui est à l’heure de ce tutoriel la version 7.4. Pour ce faire, nous devons récupérer les « sources list » de sury. Tout d’abord téléchargeons les clés GPG via les deux commandes suivantes :

apt-get -y install lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

 

Ensuite, nous pouvons ajouter les « sources list » contenant php7.4 avec la commande :

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list

 

On met à jour la liste des dépôts disponibles via la commande :

apt-get update

 

On installe php7.4 et toutes les dépendances nécessaires au bon fonctionnement de NextCloud :

apt-get -y install php7.4 php7.4-fpm php7.4-xml php7.4-cli php7.4-cgi php7.4-mysql php7.4-mbstring php7.4-gd php7.4-curl php7.4-zip php7.4-intl php7.4-imagick

 

 

L’installation de php a été réalisé, il nous faut le configurer. On commence en modifiant le fichier php.ini :

nano /etc/php/7.4/fpm/php.ini

 

Trouvez les lignes ci-dessous et les modifier avec les mêmes valeurs que moi :

 

Ensuite, on crée un fichier de configuration pour NextCloud à partir d’un fichier de configuration par défaut et on renomme le fichier par défaut :

cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/nextcloud.conf
mv /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/www.old

 

On modifie le fichier créé :

nano /etc/php/7.4/fpm/pool.d/nextcloud.conf

 

Remplacez simplement la ligne « listen » comme ci-dessous :

 

Notre PHP 7.4 est installé et configuré, passons maintenant à l’installation de notre serveur web en HTTPS.

 

3- Installation de nginx / certificat

Pour commencer, nous installons nginx ainsi que letsencrypt :

apt-get install nginx letsencrypt

 

Nous arrêtons le service de nginx pour pouvoir installer notre certificat :

/etc/init.d/nginx stop

 

Nous devons créer le certificat avec « letsencrypt » afin de sécuriser notre NextCloud en HTTPS :

certbot certonly --standalone -d moncloud.mondomaine.com --rsa-key-size 4096

 

Vous devriez voir ceci, il faudra rentrer votre adresse mail puis accepter les conditions et enfin refuser ou accepter de recevoir des mails pour suivre les nouveautés de letsencrypt :

 

Une fois validé, vous devriez avoir un message vous indiquant que votre certificat a bien été créé :

 

Vous pouvez retrouver tous les fichiers de votre certificat dans le dossier suivant :

ls /etc/letsencrypt/live/moncloud.mondomaine.com/

 

Pour finaliser la configuration de notre serveur web, nous devons modifier le fichier de configuration de nginx :

nano /etc/nginx/sites-available/default

 

Voici ce que j’ai configuré dans mon fichier, en reprenant les conseils donnés sur le site de NextCloud :

upstream php-handler {
server 127.0.0.1:9000;
}
server {
listen 80;
server_name moncloud.mondomaine.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name moncloud.mondomaine.com;

ssl_certificate /etc/letsencrypt/live/moncloud.mondomaine.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/moncloud.mondomaine.com/privkey.pem;

add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Referrer-Policy no-referrer;
add_header Strict-Transport-security "max-age=31536000; includeSubDomains" always;

root /var/www/nextcloud;

index index.php index.html index.htm index.nginx-debian.html;

location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

location = /.well-known/carddav {
      return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}

    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    gzip off;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
        rewrite ^ /index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        deny all;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_param modHeadersAvailable true;
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri/ =404;
        index index.php;
    }

    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        add_header X-Content-Type-Options nosniff;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        access_log off;
    }

    location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }
}

 

Le fichier de configuration terminé, nous pouvons redémarrer nginx :

/etc/init.d/nginx start

 

4- Installation de NextCloud

On arrive au bout de ce tutoriel et de l’installation de notre serveur NextCloud. Placez-vous dans le dossier « /var/www » :

cd /var/www

 

On récupère la dernière version de NextCloud depuis le site de ce dernier ici, pour récupérer le lien pour le téléchargement faites un clic droit sur « Download NextCloud » puis « Copier l’adresse du lien » :

 

Une fois le lien récupéré, faites la commande suivante en remplaçant le lien http par celui que vous venez de récupérer :

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.3.zip

 

Le fichier téléchargé est un zip, nous devons donc extraire son contenu via la commande ci-dessous (attention le nom du fichier peut changer en fonction de la version que vous avez téléchargé) :

unzip nextcloud-18.0.3.zip

 

NextCloud est installé mais nous devons encore le configurer. Commençons par gérer les droits des différents fichiers et dossiers. Pour ce faire allez dans le dossier « tmp » :

cd /tmp

 

Créez un fichier nexcloudperms.sh comme ceci :

nano /tmp/nextcloudperms.sh

 

Ajoutez les lignes suivantes dans votre fichier pour pouvoir appliquer directement les bons droits dans le dossier de votre serveur NextCloud :

#!/bin/bash
ocpath='/var/www/nextcloud'
htuser='www-data'
htgroup='www-data'
rootuser='root'

printf "Creating possible missing Directories\n"
mkdir -p $ocpath/data
mkdir -p $ocpath/assets
mkdir -p $ocpath/updater

printf "chmod Files and Directories\n"
find ${ocpath} -type f -print0 | xargs -0 chmod 0640
find ${ocpath} -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/

chmod +x ${ocpath}/occ

printf "chmod/chown .htaccess\n"
if [ -f ${ocpath}/.htaccess ]
 then
  chmod 0644 ${ocpath}/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
 then
  chmod 0644 ${ocpath}/data/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi


Pour finir, lancez ce script via la commande suivante :

chmod +x nextcloudperms.sh && ./nextcloudperms.sh

 

Et voilà, nous pouvons finaliser l’installation de notre serveur NextCloud en allant visiter la page web via l’url complet de notre domaine comme par exemple « moncloud.mondomaine.com ». Vous devriez arriver sur la fenêtre ci-dessous où il vous est demandé de renseigner les informations pour la création d’un nouvel utilisateur ainsi que les données pour vous connecter à votre base de données :

 

L’installation est en cours, vous n’avez plus qu’à attendre quelques minutes pour que votre serveur NextCloud soit opérationnel.

 

Félicitation, vous avez fini d’installer NextCloud et vous pouvez désormais installer/supprimer les différents outils via votre interface web pour en faire ce que vous voulez.

À propos de l’auteur

Vincent Krahenbuhl administrator

Passionné d’informatique, ma motivation et ma curiosité m’ont permis de réaliser des études en alternance. J’ai dans un premier temps exercé le poste de technicien informatique au sein du groupe Edscha. J’ai ensuite occupé un poste d’administrateur réseau puis je suis devenu ingénieur réseau et sécurité au sein de l’entreprise FM Logistic. Fort de ces expériences dans deux entreprises internationales, j’ai décidé de devenir Formateur Indépendant en Informatique.

2 commentaires pour l’instant

Bertrand NDEBIPublié le10:30 - Juil 27, 2020

Bonjour j’apprécie bien votre travail que je trouve exceptionnel je suis jeune entrepreneur informaticien et justement dans le cadre de certains projet je souhaiterai échanger avec vous. J’espère vous lire aussitôt.

Cordialement

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.