Installation de nextcloud 21 (avec apache, php et MariaDB)

Bonjour à toutes et tous (même si cet article est dédicacé à Richard J ! 😉 )

À noter que si vous avez lu mon précédent article Installation de NextCloud sur Debian 10.7, celui-ci est la version améliorée avec prise en charge de la partie nom de domaine et certificat. A cela s’ajoute le fait que je travaille sur serveur distant et non sur VM.

Dans le cadre de ma reprise d’études (et oui, reconversion tardive), pour un de mes projets de fin d’année, j’ai voulu jouer la simplicité … et … faire quelque chose que je n’avais encore jamais réalisé de manière complète et totale ; encore moins à distance.

Il faut savoir être joueur 🙂

Voilà pourquoi, je me suis monté un serveur NextCloud sur Debian 10.8 … en louant un VPS chez OnetSolutions. (je précise que je paye ce VPS de ma poche ; je cite et mets le lien mais ceci n’est pas de la publicité ni un lien sponsorisé).
Du coup, j’ai pris un nom de domaine et installé un certificat Lets’Encrypt dessus.

Tout fonctionne depuis le 23/02/2021 à 00h40 avec un NextCloud 21 (serveur Debian 10) sur VPS avec certificat SSL Let’sEncrypt forcé (http impossible) et redirection dans le dossier idoine pour que le nom de domaine pointe directement sur l’accueil de NextCloud.

Cependant,, il est plus drôle/formateur/didactique de tout recommencer. Je prends donc le risque de TOUT refaire en formatant le VPS et en repartant de zéro …

Sommaire :

Installation du VPS

Connexion à mon espace client sur OnetSolutions.net et, dans le SoPanel, je clique sur “Réinstaller” puis je choisis “Debian 10” et “50 Go SSD” et je clique sur “Réinstaller”.

Demande de réinstallation du VPS avec Debian 10 sur un SSD de 50 Go

A ce stade, il convient de patienter un peu le temps de la réinstallation.

Contrairement à une VM, nous n’avons rien à faire ; c’est une injection de leur image spécifique.

Une fois que cette opération d’installation est terminée, OnetSolutions nous adresse un courriel avec les informations utiles à la prise en main.

Serveur Debian 10 prêt en 10 minutes à peine
Le courriel de confirmation avec les info utiles (effacées pour la capture)

Maintenant, il ne reste qu’à sortir son beau Terminal (oui, je bosse nativement sous Linux) pour dégainer son SSH !

A partir de maintenant, nous sommes devant un Terminal comme tous les jours (pour moi, oui, c’est comme manger, c’est quotidien (et même pluri-quotidien) le Terminal).

Paramétrage du VPS

Pour le fun, on se fait un nano /etc/hostname et on se personnalise le nom affiché dans le Terminal (et pas seulement puisque c’est le HostName). Un sudo reboot et hop :

Effectivement, cela n’est d’aucune utilité pratique (donc, c’est indispensable)

Personnellement, je n’aime pas travailler en root ni que le root bénéficie d’une connectivité ssh. Donc je crée un utilisateur alban

Création d’un nouvel utilisateur standard

Puis je lui assigne le droit de passer des commandes au nom de root, c’est à dire de passer en privilèges élevés grâce à la commande sudo.

Ce nouvel utilisateur héritera des privilèges root par invocation de la commande sudo

Maintenant, il suffit de quitter avec exit puis de se connecter avec ssh alban@... pour reprendre la main.

Comme nous sommes bien partis, nous retirons les droits de connexion à root en modifiant le fichier /etc/ssh/sshd_config.
Pour vous aider, la commande est simplement sudo nano /etc/ssh/sshd_config

Dans le fichier, cherchez la ligne PermitRootLogin yes et transformez la en PermitRootLogin no (sur une Debian physique ou une VM installée depuis la NetInstall 10.8 ceci n’est pas nécessaire puisque l’accès root via ssh est désactivé de base).

Pour enregistrer : “Ctrl” + “x” puis “o” puis “Entrée”

Après quoi, vous penserez à faire un sudo reboot pour ce ce fichier de configuration soit pris en compte.

Dorénavant, seul l’utilisateur alban (ou pablo ou pascal pour la Private Joke) pourra se connecter pour piloter l’engin 🙂

Bon, maintenant, on y va !

Installation de Apache

La ligne magique est simple :
sudo apt install apache2 libapache2-mod-php -y

Après quelques secondes d’attentes, on lance un navigateur et on tape son IP

Bravo, Apache2 tourne sur votre VPS !

Et si vous aimez coder en xhtml strict, vous pouvez tester de faire une page en php.

Installation de php

Bien évidemment, il est nécessaire d’installer php et un certains nombres de modules complémentaires dont des modules recommandés pour améliorer les performances et la compatibilité.

Une fois n’est pas coutume, nous pouvons le faire en une seule ligne avec :
sudo apt install php php-gd php-curl php-zip php-dom php-xml php-simplexml php-mbstring php-intl php-bcmath php-gmp php-imagick php-mysql -y

Installation de la Base de Données

J’ai opté pour l’installation de Mariadb comme base de données ; c’est un choix (car c’est un logiciel Libre) ; il en existe d’autres (les Bases de Données plus connues sont MySQL ; MariaDB ; PostgreSQL ; SQLite ; …).

sudo apt-get install mariadb-server -y

Après l’installation, la base de données se doit d’être sécurisée :
sudo mysql_secure_installation

Ce qui donne :

alban@Mon-VPS-a-moi-que-j-ai:~$ sudo mysql_secure_installation
sudo: impossible de déterminer le nom de l'hôte Mon-VPS-a-moi-que-j-ai: Nom ou service inconnu NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here. Enter current password for root (enter for none):

Donc, il suffit de taper sur Entrer pour ne pas mettre de mot de passe et passer à l’invitation suivante :
set root password ? [Y/n]

Là, vous tapez “y” puis vous mettez un mot de passe (on doit le saisir 2 fois) puis vous répondez à toutes les questions par “y” (ce qui n’est pas toujours vrai dans la vraie vie 😉 )

Après cette étape, on entre dans le vif du sujet avec la création de notre base de données en lançant :
sudo mysql -u root -p ou sudo mysql --user root --password

(Phase de création de comptes avec l’octroi de privilèges)

Dans cette phase de configuration, il faudra taper les réponses après MariaDB [(none)]> Mais sans oublier de taper un “;” en fin de ligne !!! (faites des “copier/coller”)

CREATE DATABASE nextcloud;

(Vous pouvez évidemment appeler votre base de données autrement que nextcloud)

CREATE USER "nextcloud"@"localhost";

(Vous pouvez évidemment appeler votre utilisateur autrement que nextcloud)

SET password FOR "nextcloud"@"localhost" = password("MotPasse");

(évidemment, changez MotPasse par ce que vous voulez)

GRANT ALL PRIVILEGES ON nextcloud.* TO "nextcloud"@"localhost" IDENTIFIED BY "MotPasse";

(évidemment, changez MotPasse par ce que vous avez noté avant)

FLUSH PRIVILEGES;

EXIT;

Ce qui donne, en image :

Configuration de notre base de données pour NextCloud

Installation de NextCloud

Pour travailler proprement, je me place directement dans le dossier cible, c’est à dire dans /var/www/html en faisant :
cd /var/www/html/

Maintenant, on télécharge la dernière version de NextCloud avec :
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2

Puis, on récupère le sha256 de cette version avec :
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2.sha256

Et on vérifie que tout concorde avec :
sudo sha256sum -c *.sha256

Ça doit répondre
latest.tar.bz2: Réussi

Comme nous sommes rassurés, nous pouvons décompresser l’archive avec :
sudo tar -xvf latest.tar.bz2
(laissez tourner quelques secondes jusqu’à reprendre la main)

Une fois que le Terminal vous rend la main, vous pouvez vérifier le contenu du dossier en faisant :
ls

Personnellement, j’ai un fichier index.php, mais vous, vous devez juste visualiser :
index.html latest.tar.bz2 latest.tar.bz2.sha256 nextcloud

Le “nextcloud” est un dossier créé suite à la commande de décompression précédente.

Listage du dossier /var/www/html ; on visualise bien le dossier nextcloud

Nous pouvons donc supprimer le fichier “latest.tar.bz2” ainsi que son sha256 avec :
sudo rm latest*

On effectue un changement de propriétaire pour le dossier nextcloud (/var/www/html/nextcloud) de façon récursive (avec -R) :
sudo chown -R www-data:www-data nextcloud

Puis on modifie les droits :
sudo chmod -R 755 nextcloud

(Explications : 7 = tous les droits au propriétaire, 5 = droits de lecture et d’accès aux membres du groupe et aux autres).

Activation du module SSL/TLS

Comme on veut faire un accès https, on active le module SSL/TLS :
sudo a2enmod ssl

et aussitot :
sudo systemctl reload apache2

puis :
sudo a2ensite default-ssl

et aussitot :
sudo systemctl reload apache2

Nom de domaine

Pour la finalisation du tutoriel, il convient de prendre un nom de domaine ou d’utiliser un sous-domaine.

Par exemple, j’ai déjà le domaine trevilly.com (si, si, le site que vous lisez actuellement) et je souhaite utiliser le sous domaine cloud.trevilly.com pour mon NextCloud (ce n’est pas vrai, mais c’est pour l’exemple car je garde cette installation secrète).

Dans un cas comme dans l’autre, il suffit de demander à son registar (depuis son espace client) de faire pointer le domaine ou le sous-domaine vers l’IP désirée (chez vous ou, dans le cas présent, l’IP du VPS).

Création du certificat avec Let’s Encrypt

Pour commencer, il faut installer CertBot avec :
sudo apt install certbot

Aussitôt après, il faut installer le PlugIn Apache pour CertBot avec :
sudo apt install python-certbot-apache

Puis demander à générer un certificat avec :
sudo certbot –apache

Ensuite, c’est simple : il faut répondre aux questions posées :

No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated) (Enter 'c' to cancel): cloud.trevilly.com www.cloud.trevilly.com

Enabling available site: /etc/apache2/sites-available/000-default-le-ssl.conf

We were unable to find a vhost with a ServerName or Address of www.cloud.trevilly.com

Which virtual host would you like to choose?

1: 000-default.conf | | | Enabled

2: default-ssl.conf | | HTTPS | Enabled 3: 000-default-le-ssl.conf | cloud.trevilly.com | HTTPS | Enabled

Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 3

Deploying Certificate to VirtualHost /etc/apache2/sites-available/000-default-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.

1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration.

Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Comme on me donne gentiment le chemin du fichier : /etc/apache2/sites-available/000-default-le-ssl.conf, je tape

sudo nano /etc/apache2/sites-available/000-default-le-ssl.conf

Et je modifie la ligne DocumentRoot /var/www/html en DocumentRoot /var/www/html/nextcloud afin que l’adresse cloud.trevilly.com ne renvoie plus vers la page d’index mais bien vers NextCloud directement.

Le secret ? Se taper un sudo systemctl reload apache2 pour recherger la configuration.

Et c’est maintenant le moment du test.

  • Vous tapez http://cloud.trevilly.com et pouf, vous arrivez bien sur https://cloud.trevilly.com
  • Vous tapez http://www.cloud.trevilly.com et pouf, vous arrivez bien sur https://cloud.trevilly.com
  • Et https://cloud.trevilly.com redirige bien vers NextCloud par défaut.

Effectivement, ces tests doivent être réalisés avec votre nom de domaine car mon exemple n’est pas réel 😉

Votre Nextcloud est affiché ? Bravo.

Il vous reste à entrer un nom d’administrateur et un mot de passe :

Obligation de créer un compte administrateur pour débuter la “post-installation”.

Puis à renseigner les informations requises :

Nortez ici vos informations précédemment utilisées dans le tuto
Et voilà, nous pouvons lancer la “post-installation”.

Félicitations, votre NextCloud est fonctionnel et en accès sécurisé 🙂

Et, en plus, vous pouvez tout personnaliser :

Un fond d’écran venant de LinuxMint et un logo personnalisé par moi avec Gimp (vive Le Libre)

A propos de Alban

Papa de 4 enfants étant lui-même resté un enfant. Diététicien-Nutritionniste tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide. Lassé de l'évolution du Monde de la Santé dans lequel les patients sont de plus en plus à traiter comme des clients (je suis un soignant !!!), j'ai opté pour une reconversion en repartant en Alternance dans le cadre d'un BTS SIO option SISR (Solutions d’Infrastructure, Systèmes et Réseaux) en Septembre 2019.

2 commentaires à propos de “Installation de nextcloud 21 (avec apache, php et MariaDB)”

  1. Beau boulot encore que tu nous proposes ici ! Maintenant que mon Nextcloud est opérationnel via YunoHost et une IP qui semble fixée, je ne recommence pas l’installation, mais chapeau bas Alban 🙂

    • Merci 🙂
      Après, tu peux louer un VPS (pour un mois) et installer Debian puis installer YunoHost dessus (Chez OnetSolutions, l’image de YunoHost n’est pas proposée) et tout refaire.
      Certes, ça te coûte 3 euros, mais te permet de tester la chose sans avoir à ouvrir des ports sur ta box 😉
      @+

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

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