Cela faisait un petit moment que j’avais envie de monter un peu en compétences et d’apprendre à « gérer » un serveur par moi-même. Comme je n’avais pas envie de me lancer tête baissée dans l’inconnu, j’ai profité de conseils de l’un de mes collègues pour le suivre dans ses tests.
Mon but n’était pas non plus de gérer toute une machine chez moi, mais de laisser la partie hardware chez OVH, dans le petit data-center pas loin de chez moi (Strasbourg).
En discutant avec Matthieu, mon collègue de tous les jours, il m’a fait découvrir des merveilles pour faire tout cela sans trop se prendre la tête, grâce à un VPS SSD (offre au choix chez OVH) et le fabuleux outil EasyEngine (alias EE).
Étant moi-même une grosse quiche dans la ligne de commande, la connaissance des distributions Linux, j’en passe et des meilleures, je vous retrace mon expérience dans la commande, l’installation et la création d’un site web en quelques lignes de commande.
Choisir son équipement
Ayant historiquement (presque tous) mes domaines chez OVH, et étant satisfait de leurs services, j’ai fait le choix du VPS SSD 1, l’offre d’entrée, afin de me faire la main avant d’accueillir peut-être d’autres contenus plus conséquents.
Dès le début, après avoir cliqué le bouton Commander, vous allez pouvoir faire des choix pour l’installation initiale. N’ayez crainte, vous pouvez les changer ultérieurement en cas d’erreur ou d’envie soudaine de changement. Voici ma configuration initiale.
- VPS 2016 SSD 1
- Localisation : Europe > Strasbourg
- Système d’exploitation : Linux
- Distribution : Debian 8 (Jessie) 64 bits
- Langue : Français
Une fois votre commande passée et le paiement effectué, vous devrez vous connecter à votre manager OVH pour recueillir quelques informations concernant votre machine (VPS), comme son adresse IP, principalement. Allez donc sur votre Manager section VPS. D’entrée de jeu, passez l’interface en mode expert.
Un e-mail vous parvient également de la part d’OVH afin de vous fournir des informations plutôt utiles comme le mot de passe pour vous connecter en root à votre serveur.
Se connecter en SSH à votre serveur
Vous pouvez tout à fait utiliser votre logiciel FTP habituel, mais pour les quelques premières étapes, je vous conseille d’utiliser le terminal et la ligne de commande, vous verrez que ce n’est pas très compliqué. Ceux qui n’ont ni l’un ni l’autre, vous pouvez utiliser le KVM proposé dans votre manager OVH.
Pour vous connecter, entrer la ligne de commande suivante (sauf avec le KVM qui vous demande directement login et mot de passe) :
ssh root@000.000.000.000
où vous remplacerez bien sûr les 0 par l’adresse IP de votre serveur. Normalement on va vous demander à cette étape d’accepter la clé de cryptage, dites oui, puis à l’étape suivante entrez votre mot de passe. (celui reçu par e-mail)
C’est tout, vous êtes dans la bête !
Quelques conseils pour démarrer sur Debian 8
Alors non, je n’ai pas la science infuse, j’ai lu un peu de doc et des articles (proposés par Matthieu entre autres), et voici quelques conseils qui s’appliquent dans bien d’autres domaines.
N’utilisez pas (ou moins) root
L’idée c’est qu’avec l’utilisateur root
, vous avez tous les pouvoirs, même de détruire complètement de précieuses heures de travail. Le fait d’être tout le temps connecté en root
peut à n’importe quel moment vous desservir, notamment si vous faites une erreur…
Créer un nouvel utilisateur
Commencez donc par créer un nouvel utilisateur qui aura un peu moins de droits, mais que l’on va doter de quelques super pouvoirs par la suite.
adduser draven
Ici j’appelle mon utilisateur draven
, vous faites comme bon vous semble. En appuyant sur entrée, il va vous être demandé de préciser un mot de passe, deux fois pour le contrôle, puis des informations optionnelles que vous pouvez remplir, ou passer en appuyant sur Entrée tout en laissant vide.
Installer sudo
Pour donner des droits complémentaires à notre utilisateur nous allons installer sudo
à la mano. Pour cela, commencez par mettre à jour le package apt :
apt-get update
Ensuite, installez sudo :
apt-get install sudo
Vous pouvez maintenant utiliser les commandes sudo
et visudo
.
Ajouter l’utilisateur au groupe sudo
La dernière étape consiste à ajouter votre utilisateur (toujours en étant connecté en tant que root
) au groupe sudo
avec la ligne de commande qui suit.
usermod -a -G sudo draven
Ajouter une Clé Public d’Authentification
Cette étape permet de se connecter à votre serveur uniquement grâce à une clé SSH. C’est une étape qui vous permet de renforcer la sécurité lors de la phase de connexion.
Générer une paire de clés
Toujours dans le terminal, revenez en local (sur votre machine personnelle, et plus sur le VPS) en tapant exit
. Puis entrez :
ssh-keygen
Votre interface vous retourne alors :
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/USERNAME/.ssh/id_rsa):
Si l’emplacement et le nom de la clé vous conviennent, appuyez sur entrée. Personnellement je vous conseille de renommer le fichier en quelque chose de plus explicite comme UTILISATEUR_vps_rsa
par exemple.
Dans tous les cas, après avoir appuyé sur entrée, vous avez la possibilité d’entrer une passphrase, une sorte de mot de passe complémentaire à la clé. C’est optionnel, mais le faire augmente votre protection, bien sûr.
Un fichier UTILISATEUR_vps_rsa
et UTILISATEUR_vps_rsa.pub
sont créés dans le dossier caché .ssh
sur votre machine. Le .pub
est la clé publique, l’autre fichier contient la clé privée qui ne doit jamais être partagée 😉
Copier la clé publique
Si votre machine peut faire tourner le script ssh-copy-id
, ça va être rapide, tapez simplement (en remplaçant le nom d’utilisateur et l’IP par vos infos… hein ;p) :
ssh-copy-id draven@000.000.000.000
Autrement, le prompt va vous retourner une erreur, vous devrez alors le faire à la main, comme moi, en suivant ces étapes.
- Affichez la clé grâce à la commande suivante :
cat ~/.ssh/geoffrey_vps_rsa.pub
- La console vous retourne une chaîne commençant par
ssh-rsa
et terminant souvent par un truc qui ressemble à une adresse mail (iciutilisateur@nom-de-la-machine.home
). Sélectionnez et copiez cette chaîne. - Connectez-vous à votre serveur en tant que root, puis entrez la ligne de commande suivante :
su - draven
Vous vous retrouverez dans le dossier de votre utilisateur.
- Créez le dossier .ssh, changez ses droits, puis modifiez le fichier authorized_keys avec ces commandes successives :
mkdir .ssh chmod 700 .ssh nano .ssh/authorized_keys
Le fichier s’ouvre grâce à l’éditeur nano. Copiez votre clé à l’intérieur, puis faites successivement CTRL+X, puis Y et touche entrée pour enregistrer le fichier.
- Re-modifiez les droits du fichier puis retournez sur
root
avec ces commandes :chmod 600 .ssh/authorized_keys exit
Désormais, vous devriez avoir besoin de la clé RSA et de votre éventuelle passphrase pour vous connecter en SSH sur votre serveur avec l’utilisateur que vous avez nouvellement créé.
Configurer SSH
Le plus gros est fait, maintenant nous allons simplement nous interdire d’utiliser root
à distance. Oui ça peut paraître bizarre, mais en bloquant cette possibilité on augmente considérablement la sécurité de son serveur puisque root
est l’utilisateur « absolu » le plus recherché par les potentiels pirates.
Normalement vous êtes toujours connecté avec votre compte possédant les bons privilèges (root
ou draven
utilisant sudo
), faites donc la commande suivante :
nano /etc/ssh/sshd_config
Là vous rentrez en édition du fichier, trouver la ligne commençant par :
PermitRootLogin
et passez la valeur à no
comme ceci.
PermitRootLogin no
Fermez le fichier comme nous l’avons vu précédemment (ctrl+X, Y, Entrée), puis redémarrez le service SSH pour que les modifications soient prises en compte.
systemctl restart ssh
Avant de nous déconnecter définitivement, nous allons contrôler que tout fonctionne encore : ouvrez un nouvel onglet sur le terminal, puis cette fois connectez-vous avec l’utilisateur draven
.
Une fois que c’est fait, lancez n’importe quelle commande avec sudo
devant, comme par exemple la commande ls
qui ne fait que lister le contenu d’un dossier. Si le mot de passe utilisateur est demandé et que la commande fonctionne, c’est que ça marche.
La magie d’Easy Engine
Rentrons maintenant au cœur de la magie.
Easy Engine est là pour vous faciliter la vie en vous procurant un package de commandes qui va vous permettre de créer des sites pré-paramétrés en moins de 10s. Non non je ne blague pas.
Installer Easy Engine
Mais avant cela, il faut l’installer. Je vous rassure, c’est simple.
Connectez-vous à votre serveur (en root ou avec un utilisateur qui possède des droits suffisants) comme nous l’avons vu précédemment, puis entrez la ligne de commande suivante :
wget -qO ee rt.cx/ee && sudo bash ee
C’est tout, laissez juste faire l’installation, complétez les renseignements demandées et passez à la suite quand c’est ok.
Créer un site web
Partons du principe que vous avez enregistré un nom de domaine chez OVH qui est example.com. Je veux créer un site web sur ce domaine avec PHP7 et MySQL, je vais utiliser la commande site create
.
ee site create example.com --php7 --mysql
C’est tout !
Ah non ! Il vous faudra quand même « relier » votre domaine à votre serveur en modifiant les informations DNS de ce premier. Chez OVH ça se trouve sur votre manager, vous cliquez sur le nom de domaine concerné, puis sur l’onglet Gestion DNS. Vous aurez probablement ceux par défaut que OVH. C’est très bien. Si ce n’est pas le cas cliquez sur le bouton qui permet de les rétablir.
Ensuite :
- Allez sur l’onglet Zone DNS,
- Trouvez la ligne de Type A et éditez la,
- Renseignez l’adresse IP de votre serveur en cible puis validez.
Une fois que le changement n’est plus « en cours », et pour vérifier que les DNS se sont bien propagés, utilisez le service suivant: What’s My DNS.
Oui mais en fait…
… je voulais un site sous WordPress et je ne l’ai pas précisé au moment de l’installation de mon site avec Easy Engine.
Pas de souci, utilisez simplement site update
pour cela.
ee site update example.com --wp
L’outil vous installe alors un WordPress avec les informations que vous allez renseigner dans les étapes qui suivent le processus (en ligne de commande oui, mais c’est simple).
Passer en SSL
Oui, EE permet aussi de faire ça très simplement en une seule commande grâce à Let’s Encrypt.
En fait c’est une option de site create ou site update, vous pouvez donc le faire dès le début de la création de votre site web, ou alors durant une mise à jour.
ee site update example.com --letsencrypt
Confirmez avec un Y lorsque le prompt vous le demande… et c’est tout.
L’auto-renouvellement du certificat se fait normalement tous les 89 jours. Si celui-ci échoue, un e-mail vous sera envoyé à l’adresse e-mail renseignée pour les informations propres à git.
Level up son certificat SSL
Par défaut mon certificat SSL avait une note de B sur SSLlabs.com juste après la mise en place du certificat via Lets Encrypt. Je vous rassure, c’est déjà très très bien, mais si vous êtes des obsédés de la note, vous pouvez augmenter un poil cette note en suivant ces quelques étapes, tirées du site web weakdh.org.
- rejoignez le dossier opt
cd opt
- créez un dossier ssl s’il n’existe pas déjà
sudo mkdir ssl
puis naviguez dedans
cd ssl
- créez le fichier dhparams.pem ainsi
sudo openssl dhparam -out dhparams.pem 2048
- naviguez vers vos fichiers de conf pour votre domaine
cd /var/www/example.com/conf/nginx
- si vous faites un
ls
, vous devriez voir le fichierssl.conf
listé, éditez-lesudo nano ssl.conf
- entrez le contenu suivant à la fin du fichier
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_prefer_server_ciphers on; ssl_dhparam /opt/ssl/dhparams.pem;
- relancez nginx pour qu’il prenne en compte cette nouvelle configuration
sudo service nginx restart
En testant à nouveau, j’avais une note de A. Certains me diront que la note n’est pas importante ici, et vous avez raison. Comme je le disais, la différence est maigre, même un D reste sécurisant 🙂
À vous de jouer maintenant
Voilà, c’est fini pour ces premiers pas et cette retranscription presque en direct de ma propre expérience sur le sujet. Encore un grand merci à Matthieu qui a été de très bon conseils à différents étapes du processus et qui a su me simplifier la compréhension de certains concepts.
Maintenant je vais me prendre la tête sur le paramétrage des mails 🙂
Merci, je ne connaissais pas du tout. Ayant aussi pris un petit VPS chez OVH pour pouvoir améliorer mes connaissances en administration système, j’ai hâte de pouvoir tester cet outil !
Merci pour les trucs et astuces en plus sur le ssh et SSL.
Cool ça !
J’ai eu pas mal de cas particuliers à traiter récemment. Si tu as des questions n’hésite pas 🙂
Salut merci pour ce tuto très propre.
Une question , easy engine permet de faire des backup mais je trouve que des doc avec des backup sur amazon .
Idée pour backup sur un pc ou un NAS syno
Hello Jean,
Navré pour le délai de réponse.
Perso je pensais trouver un moyen de backup sur un autre VPS avec des potes pour se faire une sorte de triangle de sauvegardes, mais je n’ai jamais mis la chose en place.
Aucun retour d’expérience à t’offrir hélas 🙂
Hésite pas à partager ton retour si tu as eu l’occasion de le faire.
Bonjour ,
Une fois le compte root désactiver , comment le réactiver ?
Je ne peux pas utiliser filezilla Acces refusé avec le compte droit sudo :/
Hello Jack,
C’est étrange car je joue avec mon compte sudo depuis des années maintenant et je n’ai jamais eu le souci.
La connexion à distance en root est de toutes manières une assez mauvaise idée. Mais si tu en as besoin il faut te connecter en SSH avec un utilisateur sudo.
Puis aller vers :
nano /etc/ssh/sshd_config
et placer la valeur de
PermitRootLogin no
àPermitRootLogin yes
et enregistrer puis redémarrer le service SSH.
systemctl restart ssh
Cela devrait faire l’affaire. 🙂
merci pour ce petit tuto.
mais pourquoi as tu choisi debian et pas un cpanel ?
Bonjour Serge,
Je ne saisis pas trop le sens de la question.
J’ai l’impression de lire « Pourquoi tu as choisi un moteur 4 temps au lieu d’un tableau de bord numérique ? »
Bonjour ,
j’ai aimé votre tuto qui m’est trés utile. nous avons deux vps chez ovh sous windows , je voudrais installer une distribution linux sur l’un des serveurs et créer un site web worpress pour besoin entreprise. je voudrais que si possible que tu m’assiste. possibilité de m’ecrire en off.
Merci
Bonjour. Je tiens à vous remercier pour cet article très informatif, qui retrace l’expérience enrichissante d’apprendre à gérer un serveur via un vps proposé par OVH, ce qui est une excellente initiative pour quiconque souhaite développer ses compétences en administration système. L’auteur met en avant l’importance d’avoir un data center proche, en l’occurrence celui de Strasbourg, qui permet d’héberger les ressources tout en bénéficiant d’une bonne latence et d’une connexion rapide. De plus, le fait de pouvoir configurer initialement son serveur selon ses besoins tout en ayant la possibilité de changer les options par la suite, offre une flexibilité appréciable, en particulier pour ceux qui découvrent l’univers de l’hebergement web univirtual. Dans l’ensemble, cet article est une excellente ressource pour ceux qui souhaitent se lancer dans la gestion de serveur vps univirtual tout en développant leurs compétences techniques.