Nuit Blanche
· 4 min de lecture

Installer un serveur Raspberry Pi 5 headless

Installer un serveur Raspberry Pi 5 headless

En bref

Notes de terrain pour provisionner un Raspberry Pi 5 en serveur headless de homelab, du flash de l'OS à la première connexion SSH.

Notes de terrain sur flatline - mon nouveau nœud de homelab sur Pi 5.


Pourquoi ce guide existe

La plupart des tutos Raspberry Pi partent encore du principe que vous tournez sur une carte microSD, écran branché, à bidouiller pour le plaisir. Pas celui-ci.

Ce guide s’adresse à ceux qui veulent faire tourner un vrai serveur headless (sans écran, sans clavier, SSH uniquement) sur un Raspberry Pi 5 avec un SSD NVMe, Docker et une configuration SSH durcie. Le genre de machine qu’on installe une fois et qu’on oublie, à ronronner dans un coin du homelab.

Mon nœud s’appelle flatline. Construisons le vôtre.


Ce qu’il vous faut

  • Un Raspberry Pi 5 (4 Go ou 8 Go, le mien tourne en 16 Go)
  • Un SSD NVMe M.2 et un HAT/adaptateur compatible Pi 5
  • Un Mac ou un PC pour flasher l’OS
  • Un câble ethernet (le Wi-Fi convient pour bidouiller, pas pour un serveur)
  • Raspberry Pi Imager installé sur votre machine

Flasher directement sur le NVMe avec Raspberry Pi Imager

Le Pi 5 peut booter directement depuis le NVMe, et Raspberry Pi Imager peut flasher dessus si le disque est accessible depuis votre machine.

Ouvrez Raspberry Pi Imager et déroulez les étapes :

Choose device → Raspberry Pi 5

Choose OS → Raspberry Pi OS Lite (64-bit). C’est la version headless : pas d’environnement de bureau, pas de superflu.

Choose storage → Sélectionnez votre disque NVMe. Vérifiez bien la taille pour être sûr de viser le bon périphérique.

Avant de cliquer sur Write, ouvrez Edit Settings (ou l’icône d’engrenage dans les anciennes versions). C’est là qu’Imager vous laisse tout préconfigurer avant le premier boot : hostname, utilisateur, SSH, Wi-Fi. Remplissez :

  • Hostname
  • Nom d’utilisateur et mot de passe
  • Activer SSH → Allow public-key authentication only, et collez votre clé publique

Cliquez sur Save, puis Write. Imager va flasher et vérifier l’image.

Une fois terminé, branchez le NVMe sur votre Pi, mettez-le sous tension, sans microSD, sans écran. Le Pi 5 va booter directement depuis le NVMe sans aucune configuration supplémentaire.

Laissez-lui 30 secondes, puis depuis votre machine :

Terminal window
ssh youruser@flatline

Si vous atterrissez dans un shell, vous êtes connecté.


Activer le PCIe Gen 3

Par défaut, l’interface PCIe du Pi 5 tourne à la vitesse Gen 2. Le Pi 5 supporte officiellement le Gen 3 (ce n’est pas certifié, mais ça marche de façon fiable en pratique), ce qui vous donne un débit NVMe nettement meilleur.

Activez-le via raspi-config :

Terminal window
sudo raspi-config

Naviguez vers Advanced Options → PCIe Speed → Yes (enable PCIe Gen 3).

Confirmez et redémarrez :

Terminal window
sudo reboot

La différence sur les vitesses de lecture/écriture séquentielles est nette, surtout pertinente si vous faites tourner des bases de données ou des charges I/O intenses.


Mettre à jour le système et le firmware

Commençons par l’essentiel :

Terminal window
sudo apt update && sudo apt full-upgrade -y

Vérifiez ensuite si le firmware du bootloader EEPROM est à jour :

Terminal window
sudo rpi-eeprom-update -a

S’il signale une mise à jour, redémarrez pour l’appliquer. S’il indique up to date, vous êtes déjà sur le dernier firmware.


Installer Docker

Utilisez le script d’installation officiel :

Terminal window
curl -fsSL https://get.docker.com | sh

Ajoutez votre utilisateur au groupe Docker pour ne pas avoir à mettre sudo devant chaque commande :

Terminal window
sudo usermod -aG docker $USER

Déconnectez-vous puis reconnectez-vous pour que le changement de groupe prenne effet, puis vérifiez :

Terminal window
docker run hello-world

Activez le démarrage automatique de Docker au boot :

Terminal window
sudo systemctl enable docker

Durcir SSH

Si vous avez préconfiguré les clés SSH dans Imager, votre clé est déjà dans ~/.ssh/authorized_keys. Assurons-nous que l’authentification par mot de passe est bien désactivée côté serveur aussi :

Terminal window
sudo nano /etc/ssh/sshd_config

Vérifiez que ces lignes sont bien définies :

PasswordAuthentication no
PermitRootLogin no

Redémarrez SSH :

Terminal window
sudo systemctl restart ssh

Sur votre Mac, ajoutez une entrée dans ~/.ssh/config pour ne plus jamais avoir à préciser la clé ou le nom d’utilisateur manuellement :

Host flatline
User youruser
HostName flatline
IdentityFile ~/.ssh/id_ed25519_homelab

Désormais, ssh flatline suffit.


Où en est-on

flatline est maintenant un serveur Pi 5 headless propre, qui boote depuis le NVMe à la vitesse Gen 3, fait tourner Docker et n’est accessible que par clé SSH. Le firmware est à jour, les services inutiles sont coupés et la surface SSH est minimale.

Une base solide. Prochaine étape : y déployer vraiment quelque chose.


La suite : ajouter un GitHub Runner et y déployer des choses.

Articles liés