Image OS et premier boot#

Pourquoi#

Le choix de l’image et la configuration du tout premier boot déterminent des contraintes qui seront difficiles à corriger après coup, en particulier l’accès SSH (si mal configuré, c’est l’accès à une machine sans écran qui se perd) et la résolution DNS du nom public du serveur.

Comment#

Flasher l’image#

Avec rpi-imager, choisir Raspberry Pi OS Lite (64-bit), pas la version desktop, inutile pour un serveur, et qui consomme des ressources sans bénéfice. Dans les options avancées de l’imager :

  • Hostname : le nom qui sera publié au DNS (ex. time.example.org)
  • SSH : activé, par clé publique uniquement, jamais par mot de passe pour un serveur exposé sur Internet
  • Wi-Fi : désactivé (Ethernet uniquement, plus stable, moins de surface d’attaque radio)
  • Locale et fuseau : UTC pour le fuseau, quelle que soit la locale choisie, un serveur de temps ne doit jamais raisonner en heure locale

Premier boot#

ssh utilisateur@time.example.org
sudo -i

cat /etc/os-release
uname -a

Hostname et FQDN#

hostnamectl set-hostname time.example.org

# Hostname COURT uniquement, pas le FQDN complet
# 127.0.1.1 (pas 127.0.0.1) : convention Debian qui réserve une adresse de
# loopback distincte au nom de la machine elle-même, pour ne jamais entrer
# en conflit avec la véritable entrée "localhost"
grep -qE '^127\.0\.1\.1\s+time\b' /etc/hosts || echo "127.0.1.1 time" >> /etc/hosts

# Le FQDN complet doit résoudre via le DNS PUBLIC, pas via /etc/hosts
host time.example.org

Erreurs à éviter#

Le FQDN public ne doit jamais être placé dans /etc/hosts pointé sur loopback. C’est une erreur courante (“pour que ça marche tout de suite”) qui casse silencieusement plusieurs choses en aval : la validation ACME de Let’s Encrypt (qui vérifie la résolution DNS publique), tout test de connectivité externe, et surtout ça masque un vrai problème de configuration DNS derrière un faux “ça marche en local”. Seul le hostname court (sans le domaine) va dans /etc/hosts.

  • Activer SSH par mot de passe “pour faire vite”. Un serveur NTP public reçoit du trafic de scan en continu dès sa mise en ligne (observé : plusieurs milliers d’IPs bannies en quelques semaines sur ce projet). L’authentification par clé n’est pas une option, c’est un prérequis.
  • Garder le Wi-Fi actif “au cas où”. Chaque interface réseau active est une surface d’attaque et une source de latence variable. Un service de temps de référence doit avoir le chemin réseau le plus simple et le plus prévisible possible.

Vérifier#

uname -a
# Confirme l'architecture (aarch64) et le noyau de base

cat /etc/os-release
# Confirme la version de Debian sous-jacente

host time.example.org
# Doit retourner l'IP publique du serveur, pas 127.0.1.1

Si host ne résout pas encore vers la bonne IP, ce n’est pas bloquant à ce stade (le DNS peut être configuré en parallèle), mais il faudra que ce soit résolu avant le chapitre NGINX/Let’s Encrypt, qui dépend de cette résolution publique pour la validation du certificat.