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 :
ssh youruser@flatlineSi 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 :
sudo raspi-configNaviguez vers Advanced Options → PCIe Speed → Yes (enable PCIe Gen 3).
Confirmez et redémarrez :
sudo rebootLa 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 :
sudo apt update && sudo apt full-upgrade -yVérifiez ensuite si le firmware du bootloader EEPROM est à jour :
sudo rpi-eeprom-update -aS’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 :
curl -fsSL https://get.docker.com | shAjoutez votre utilisateur au groupe Docker pour ne pas avoir à mettre sudo devant chaque commande :
sudo usermod -aG docker $USERDéconnectez-vous puis reconnectez-vous pour que le changement de groupe prenne effet, puis vérifiez :
docker run hello-worldActivez le démarrage automatique de Docker au boot :
sudo systemctl enable dockerDurcir 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 :
sudo nano /etc/ssh/sshd_configVérifiez que ces lignes sont bien définies :
PasswordAuthentication noPermitRootLogin noRedémarrez SSH :
sudo systemctl restart sshSur 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_homelabDé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.