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 qui propose de petits VPS à bas prix. (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
- Paramétrage du VPS
- Installation de Apache
- Installation de php
- Installation de la base de données
- Installation de NextCloud
- Activation du module SSL/TLS
- Nom de domaine
- Création du certificat avec Let’s Encrypt
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 ».

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

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


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 :

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

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.

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).

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

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 :

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épondrelatest.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.

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.comWhich virtual host would you like to choose?
1: 000-default.conf | | | Enabled2: 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 :

Puis à renseigner les informations requises :


Félicitations, votre NextCloud est fonctionnel et en accès sécurisé 🙂
Et, en plus, vous pouvez tout personnaliser :

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 😉
@+