Ça fait maintenant de nombreuses années que j’utilise les serveurs dédiés en tant que CloudLabs (p’tite distinction avec le “homelab”). C’est un moyen d’héberger des applications et des services sans se soucier de la consommation électrique, de la bande passante etc.

Depuis 2016, j’ai un serveur dédié chez OVH sur lequel j’y ai installé un Proxmox comme hyperviseur.

Je me rends à peine compte que ça fait déjà 9 ans, le temps passe vite !

OVH est vraiment l’hébergeur parfait pour ce besoin et les offres sont vraiment intéressantes (rappelez vous que c’est du lab, on demande pas un SLA à 99.999%). Je suis globalement satisfait de mon expérience avec eux et je n’ai pas eu de soucis majeurs (jamais eu des problèmes de disque, je n’ai eu que très peu de coupures réseau, etc). Si je compare avec les tarifs des concurrents, OVH est vraiment bien placé.

Mais si je me concentre sur la partie technique, il y a un petit hic ! L’installation de base d’OVH manque cruellement d’une certaine fonctionnalité qui m’intéresse : le chiffrement des données. Comme je ne tiens pas forcément à ce qu’Octave puisse récupérer les replays des lives ratés sur CuistOps, on va s’assurer que les données soient illisibles en cas d’un accès non autorisé.

C’est un cas fictif, évidemment qu’on a jamais raté le moindre live !

Dans cet article, je vais vous montrer l’astuce que j’utilise pour pouvoir installer ce que je veux sur mon serveur dédié OVH sans être limité par les images proposées par OVH.

Vous pouvez aussi être dans le cas où vous voulez installer un OS spécifique non-proposé par OVH (Comme NixOS, ArchLinux, TrueNAS…)

Il existe plusieurs méthodes pour réaliser une installation customisée, par exemple:

C’est avec cette dernière méthode que l’on va procéder. Il y a plusieurs raisons à ça :

  • Exposer un PXE sur internet n’est pas forcément la meilleure idée, surtout quand celui ci doit contenir la clé de chiffrement LUKS.
  • BYOI et BOYL sont de supers services, mais l’un n’est pas compatible avec le Soft RAID, l’autre avec le chiffrement LUKS.
  • Si je change d’hébergeur, il n’est pas dit que je puisse bénéficier d’autres services que le mode rescue.

Pour vous donner mon besoin précis, je souhaite installer un dédié avec un chiffrement LUKS et du RAID1, le tout sur Debian (pour installer un Proxmox par la suite).

Let’s go !

Comme dit précédemment, on va utiliser le mode Rescue, c’est un paramètre activable de manière temporaire sur l’interface d’OVH qui permet de démarrer le serveur sur un système éphémère pour effectuer des opérations de maintenance (comme réparer un serveur qui ne démarre plus, extraire des données, etc).

Si la majorité du temps, on y accède avec une larme à l’œil pour dépanner la prod qui a crashé un vendredi à 16h, dans notre cas, on va profiter du fait que le démarrage du système rescue ne touche pas aux disques du serveur pour faire ce que l’on souhaite sur nos disques.

Activer le mode Rescue

Sur la page de gestion de votre serveur dédié, vous avez un boot intitulé “Change the netboot”, cliquez dessus pour accéder à un formulaire vous demandant :

  • Le mode de boot (Normal ou Rescue)
  • Le rescue utilisé (iPXE Shell ou Debian 10)
  • Une clé SSH publique qui sera ajoutée à l’utilisateur root du système rescue

Oui, oui … Debian 10, ça pique un peu mais on va pas chipoter pour un rescue.

alt text

Une fois le formulaire validé, il faudra redémarrer le serveur en s’y connectant ou bien passer par l’interface d’OVH.

alt text

~3min plus tard, le serveur est redémarré en mode rescue, on le voit dans le prompt :

root@rescue-customer-ca (reverse-dns-de-votre-serveur) ~ #

Maintenant, on va pouvoir commencer à travailler sur nos disques.


Pour installer notre système, on va passer par une machine virtuelle qui aura un accès direct à nos disques. Nous pouvons très bien générer une ISO suivi d’un script d’installation (preseed pour Debian, ou kickstart pour les RedHat) mais ça devient de suite plus complexe (puis honnêtement, je n’ai pas réussi à faire fonctionner proprement partman pour obtenir le résultat souhaité).

Un dernier point à prendre en compte est qu’il est obligatoire de pouvoir démarrer en UEFI chez OVH. Si vous installez un système en Legacy, il ne démarrera pas.

Remarque

Si vous voulez en apprendre un peu plus sur le fonctionnement d’OVH, je vous laisse des petits liens :

drawing

Pour créer une VM dans cet environnement, rien de mieux que de passer par qemu. Nous allons également récupérer le paquet ovmf pour que l’installation soit en UEFI.

On télécharge les dépendances :

apt update && \
    apt install qemu qemu-system-x86 ovmf netcat

Dans mon cas, je souhaite installer une machine Debian, je récupère alors l’ISO sur le site officiel (mais vous pourriez très bien utiliser n’importe quelle ISO):

wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.8.0-amd64-netinst.iso

Et maintenant, on va pouvoir démarrer notre VM :

qemu-system-x86_64 -enable-kvm -m 32768 -hda /dev/sda -hdb /dev/sdb -cdrom debian-12.8.0-amd64-netinst.iso \
    -bios /usr/share/ovmf/OVMF.fd \
    -boot d -vnc :0,password=on \
    -monitor stdio

Après la commande, vous devriez obtenir un prompt (qemu) depuis lequel nous allons pouvoir agir sur la VM et qemu. Première chose à faire, modifier le mot de passe de VNC :

(qemu) change vnc password
Password: **********

On peut maintenant se connecter à la VM avec un client VNC (comme Remmina) sur l’adresse de notre dédié, le port 5900 et en utilisant le mot de passe que l’on vient de définir.

alt text

:party: Avec un accès graphique à la VM, on peut maintenant installer notre système comme si la machine était devant nous.

Je vais continuer l’installation de Debian en mode graphique et faire mon RAID1 + chiffrement LUKS de la sorte :

alt text

Si vous suivez le même setup que le mien, n’oubliez pas de configurer correctement les interfaces réseaux (e.g. eno1 et eno2 chez OVH) pour que la machine puisse accéder à internet et soit joignable (les IPs publiques sont attribuées à la VM par le biais du DHCP).

Je vous conseille fortement de configurer DropBear+LUKS pour pouvoir déchiffrer le disque à distance sans devoir par passer par l’IPMI (qui est un peu pénible à utiliser).

Pour nous aider à la configuration (post-installation), on peut redémarrer la VM en activant le port-forwarding du port 22 de la VM vers le port 2222 de notre dédié :

qemu-system-x86_64 -enable-kvm -m 32768 -hda /dev/sda -hdb /dev/sdb \
    -bios /usr/share/ovmf/OVMF.fd \
    -boot d -vnc :0,password=on \
    -monitor stdio \
    -net user,hostfwd=tcp::2222-:22 -net nic

Bravo, vous avez maintenant un serveur dédié avec un chiffrement LUKS et du RAID1 alors qu’OVH ne le permet pas !