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.

Un grand merci à Matthieu, qui en plus d’être excellent designer est un très bon pédagogue doué de patience et d’empathie.

Pour ceux qui possèdent déjà leur matos et sont ok niveau paramétrages et sécurisation, vous pouvez sauter directement à la section Easy Engine.

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
L'étape de commande
L’étape de commande

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.

Le tableau de bord du VPS
Le tableau de bord du VPS

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.

Lorsque vous faites le choix d’une offre en fonction de son espace disponible, retirez d’office 2,3 Go à 3,1 Go qui seront occupés par les différentes choses que nous allons installer de base sur le serveur (EE, Sudo, MySQL, PHP, etc.). Sur du 10 Go il vous reste 7 Go pour vos sites et données. (sans optimisation)

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.

  1. Affichez la clé grâce à la commande suivante :
    cat ~/.ssh/geoffrey_vps_rsa.pub
  2. La console vous retourne une chaîne commençant par ssh-rsa et terminant souvent par un truc qui ressemble à une adresse mail (ici utilisateur@nom-de-la-machine.home). Sélectionnez et copiez cette chaîne.
  3. 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.

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

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

Fonctionnalités de Easy Engine
Fonctionnalités de Easy Engine

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.
Réglages des DNS
Réglages des DNS (voir ligne type A)

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.

  1. rejoignez le dossier opt
    cd opt
  2. créez un dossier ssl s’il n’existe pas déjà
    sudo mkdir ssl

    puis naviguez dedans

    cd ssl
  3. créez le fichier dhparams.pem ainsi
    sudo openssl dhparam -out dhparams.pem 2048
  4. naviguez vers vos fichiers de conf pour votre domaine
    cd /var/www/example.com/conf/nginx
  5. si vous faites un ls, vous devriez voir le fichier ssl.conf listé, éditez-le
    sudo nano ssl.conf
  6. 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;
  7. 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 🙂