Debian 13
Debian 13 « Trixie » est le fondement sur lequel repose tout ce guide. C'est une distribution Linux simple, stable et sans surprise. Et pour un homelab c'est précisément l'intérêt : les versions des paquets restent figées pendant toute la durée de vie de la version, les correctifs de sécurité continuent d'arriver pendant environ cinq ans en comptant la LTS, si bien que la machine tourne des années au lieu d'exiger d'être réinstallée tous les quelques mois.
L'autre raison, c'est qu'il ne vous donnera aucune limite, il ne vous enfermera jamais. Les systèmes clés en main comme Unraid, TrueNAS ou le DSM de Synology posent leur propre couche par-dessus, et le jour où vous avez besoin de quelque chose que leur interface n'expose pas, vous serez coincé ou devrez bricoler autour. Debian n'est qu'un serveur : vous installez ce que vous voulez, où vous voulez, et rien n'est caché derrière l'interface de quelqu'un d'autre. C'est exactement ce que la plupart des projets auto-hébergés visent en premier, leurs docs vous donnent donc des commandes apt qui fonctionnent telles quelles, et n'importe quel message d'erreur collé dans un moteur de recherche a déjà des années de réponses derrière lui. Une installation minimale est assez légère pour laisser la quasi intégralité de la RAM et du CPU à tous les délires que vous installerez dessus.
Installation
cd, lister avec ls, modifier un fichier avec nano, et lire ce qu'une commande vous dit quand elle échoue. Si tout ceci est nouveau pour vous, commencez par les bases de la ligne de commande et revenez ensuite.Réglages du BIOS
Appuyez sur Del ou F2 juste après l'allumage de votre machine afin d'ouvrir le setup du BIOS (l'écran de démarrage indique généralement quelle touche c'est). La plupart des machines ont aussi un menu de démarrage ponctuel, souvent F12, F11 ou F8, qui permet de démarrer sur la clé USB une seule fois sans toucher à l'ordre de démarrage permanent. Debian documente la procédure générale dans son manuel d'installation, et voici ce qui compte avant d'installer :
- Mode de démarrage. Préférez l'UEFI natif. Il est nécessaire que l'installateur démarre dans le même mode que celui dans lequel vous comptez faire tourner le serveur, parce que l'UEFI utilise un partitionnement GPT alors que le BIOS legacy (et l'UEFI en mode CSM) utilise une table de partitions DOS. Une incohérence installe le bootloader au mauvais endroit. Attention sur les machines multiboot : le mode de démarrage par défaut des périphériques amovibles n'est souvent pas celui utilisé pour les disques internes.
- Le Secure Boot peut rester activé. Debian fournit un chargeur shim signé par Microsoft, il démarre donc très bien tel quel.
- Le mode SATA doit être
AHCI, pasRAID/ Intel RST, sinon Linux risque de ne pas voir vos disques du tout. Changer ce réglage après avoir installé un autre OS sur le même disque empêchera cet OS de démarrer, réglez-le donc avant de commencer. - La restauration après coupure de courant, pour que le serveur redémarre tout seul après une coupure au lieu d'attendre que quelqu'un appuie sur le bouton. Le réglage se trouve dans Power Management, APM Configuration ou Advanced selon la carte, sous un nom du genre Restore on AC Power Loss, AC Power Recovery, After Power Failure, AC Back Function ou S0 state. Mettez-le sur Power On, pas sur Last State, qui laisserait la machine éteinte si la coupure l'a surprise pendant un arrêt.
- Le Wake on LAN, si vous voulez pouvoir allumer la machine à distance plutôt que d'appuyer physiquement sur le bouton. Même menu Power Management : mettez Wake on LAN, Power On By PCI-E/PCI ou Resume by PCI-E Device sur Enabled, puis désactivez ErP / EuP Ready et Deep Sleep / Deep Sx, qui coupent l'alimentation de la carte réseau une fois la machine éteinte et la rendraient sourde au magic packet. Debian doit aussi dire à la carte d'écouter, voir Pour aller plus loin.
- La virtualisation (
VT-x/AMD-V, plusVT-dpour le passthrough) ne coûte rien à activer maintenant et évite un aller-retour dans le BIOS le jour où vous voudrez faire tourner une VM. Docker lui-même n'en a pas besoin sous Linux.
Télécharger l'ISO et créer clé USB Bootable
Télécharger l'image netinst
Récupérez l'image netinst amd64 sur debian.org. Elle fait environ 700 Mo et récupère le reste des paquets sur le réseau pendant l'installation, ce qui est exactement ce qu'on veut sur un serveur branché en ethernet : vous obtenez des paquets à jour au lieu d'installer depuis un instantané vieux de plusieurs mois puis de tout mettre à jour derrière. Les images DVD complètes n'ont de sens que si la machine n'a pas de réseau pendant l'installation.
Créer une clée bootable avec Rufus
Sous Windows, utilisez Rufus (portable, aucune installation nécessaire). Branchez une clé USB de 2 Go ou plus, en gardant en tête qu'elle sera entièrement effacée, puis :
- Périphérique : votre clé USB. Vérifiez la capacité deux fois, Sinon Rufus écrira sans rechigner sur le mauvais disque si vous le laissez faire.
- Type de démarrage :
SÉLECTION, puis choisissez l'ISO Debian que vous venez de télécharger. - Schéma de partition : il doit correspondre au mode de démarrage réglé dans le BIOS plus haut.
GPTpour l'UEFI,MBRuniquement si vous restez en legacy/CSM. Le champ système de destination suit automatiquement. - Laissez les options de formatage par défaut, puis cliquez sur
DÉMARRER. Si Rufus demande comment écrire l'image, gardez le mode image ISO recommandé.

Capture issue de DEV Community.
L'écriture prend quelques minutes.
Terminé !
Installer Debian
Démarrez sur la clé USB (menu de démarrage ponctuel vu dans la section BIOS) et choisissez Install, l'installateur en mode texte. L'objectif ici est un serveur minimal et headless : pas de bureau, pas de session graphique, rien d'autre qu'un shell joignable en SSH. L'écran et le clavier que vous utilisez en ce moment ne servent que pour cette installation, après quoi la machine tourne à l'aveugle dans un coin. Le guide d'installation officiel documente chaque écran.

Langue, pays, clavier
Rien de particulier. La disposition du clavier est celle sur laquelle vous tapez physiquement, ce qui est facile à rater si vous avez choisi l'anglais mais tapez en AZERTY, alors soyez vigilant.
Réseau et nom de machine
Une connexion filaire se configure toute seule en DHCP. Quand il demande un nom de machine, donnez-lui un vrai nom (serveex, nas...), vous le verrez dans chaque invite SSH ensuite. Le domaine peut rester vide, ou être réglé sur quelque chose comme lan si vous en utilisez déjà un à la maison.

Mot de passe root et compte utilisateur
Laissez le mot de passe root vide. Debian désactive alors le compte root, installe sudo et y place votre utilisateur, ce qui est le comportement le plus sûr et vous épargne une étape de configuration plus tard.
Créez ensuite votre utilisateur : nom complet, identifiant, mot de passe. C'est le compte avec lequel vous vous connecterez en SSH. Évitez admin comme identifiant, il est réservé sur Debian et l'installateur le refusera.
Horloge
Confirmez le fuseau horaire deviné à partir de votre pays.
Partitionnement
Assisté, utiliser un disque entier sur le disque système, puis Tout dans une seule partition, ce qui vous donne un gros / plus une partition de swap. Des partitions /home ou /var séparées n'apportent pas grand-chose ici et garantissent surtout que l'une se remplit pendant que les autres restent à moitié vides. Ne prenez LVM que si vous savez déjà que vous voulez des snapshots ou agrandir des volumes plus tard. Vos disques de données ne sont pas touchés à ce stade, vous les monterez ensuite.
Terminez avec Terminer le partitionnement et appliquer les changements, puis confirmez avec Oui : c'est le point de non-retour pour ce disque.

/srv/docker est l'endroit où ce guide place chaque stack, est traité dans dossiers et partitions.Miroir et sondages
Répondez Non à Faut-il analyser un autre média d'installation ?, tout le reste vient du réseau. Pour le miroir, prenez-en un dans votre pays, ou deb.debian.org qui route automatiquement vers un miroir proche, et laissez le champ du proxy HTTP vide sauf si vous en avez réellement un. Le concours de popularité (statistiques anonymes sur les paquets) est oui ou non, sans conséquence.
Sélection des logiciels (tasksel)
L'écran qui décide vraiment si votre serveur reste minimal. Décochez tout, en particulier Environnement de bureau Debian et GNOME, cochés par défaut, qui embarqueraient des gigaoctets de paquets plus une session graphique que vous n'afficherez jamais. Gardez exactement deux cases : serveur SSH, votre seule porte d'entrée à partir de maintenant, et utilitaires usuels du système, que la suite de ce guide suppose installés.
Continuer une fois que les deux cases ci-dessus sont les seules cochées.
GRUB
Installez-le sur le disque que vous venez de partitionner (/dev/sda, /dev/nvme0n1...), pas sur une partition.

Terminé !
Captures de l'installateur issues du howtoforge.com.
Se connecter en SSH
Le serveur n'a plus besoin d'écran ni de clavier à partir de maintenant, tout passe par SSH. Ces étapes vous apprennent à vous logger sur votre serveur, puis s'assurent que personne d'autre ne le peut.
Se connecter depuis une autre machine
Retirez la clé USB et redémarrez. L'adresse à utiliser est celle que vous avez fixée dans la box juste avant, 192.168.1.42 dans les exemples ci-dessous.
Tout ce qui suit se passe depuis une autre machine de votre réseau local, pas sur le serveur. Windows et macOS embarquent tous les deux un client SSH, il n'y a donc rien à installer : ouvrez PowerShell sous Windows, ou Terminal sous macOS, et tapez la même commande.
ssh [email protected]
La première connexion vous demande de confirmer l'empreinte du serveur, c'est normal, répondez yes. Elle est stockée dans ~/.ssh/known_hosts et la question ne reviendra plus.
serveur SSH a probablement été laissée décochée à l'écran tasksel. Rebranchez un écran, connectez-vous en local en tapant votre nom d'utilisateur puis votre mot de passe, et lancez sudo apt install openssh-server. N'oubliez pas de vous dé-logger en tapant exit.Se connecter avec une clé SSH plutôt que par mot de passe
Les mots de passe en SSH sont vulnérables aux attaques par brute force, et en taper un à chaque connexion devient vite pénible. Les clés SSH permettent d'autoriser une machine à se logger sans mot de passe à votre serveur.
Toujours sur l'autre machine, générez une clé.
ssh-keygen -t ed25519
Appuyez sur Enter pour accepter le chemin par défaut, et mettez une passphrase (elle protège le fichier de clé lui-même, votre système la retiendra après le premier déverrouillage). Il s'agit ensuite de transmettre la clée publique à votre serveur. A noter que Windows n'a pas de ssh-copy-id, nous pousserons donc la clé manuellement dans ce cas :
ssh-copy-id [email protected]
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh [email protected] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
ssh-copy-id [email protected]
Votre serveur demande votre mot de passe une dernière fois. Reconnectez-vous pour vérifier qu'il ne le demande plus :
ssh [email protected]
Refermer la porte derrière vous
Une fois la clé fonctionnelle, coupez les connexions par mot de passe (et l'accès root direct si root existe). Sur le serveur :
sudo nano /etc/ssh/sshd_config.d/hardening.conf
PasswordAuthentication no
PermitRootLogin no
KbdInteractiveAuthentication no
Un fichier dans sshd_config.d/ est lu par-dessus la configuration principale, vos changements survivent donc à une mise à jour de paquet qui réécrirait /etc/ssh/sshd_config. Appliquez :
sudo systemctl restart ssh
PasswordAuthentication yes dans hardening.conf, redémarrez SSH, refaites les deux étapes de clé ci-dessus depuis cette machine, puis remettez no et redémarrez SSH une dernière fois.Terminé !
Réveiller le serveur à distance
Une machine qui tourne 24h/24 pour deux heures d'utilisation réelle consomme, fait tourner des ventilateurs et use des disques pour rien. Le Wake on LAN permet de l'éteindre proprement quand vous avez fini et de la rallumer en quelques secondes sans vous déplacer : la carte réseau reste alimentée en veille, à l'écoute d'un broadcast bien précis (le magic packet) contenant l'adresse MAC du serveur, et allume la machine dès qu'elle le voit. Pratique pour une cible de sauvegarde dont vous n'avez besoin que la nuit, ou un serveur multimédia que personne ne regarde dans la journée.
Deux conditions avant de commencer : la machine doit être en ethernet filaire, les cartes WiFi ne gèrent presque jamais ça, et le paquet doit être envoyé depuis le même réseau local, à moins d'utiliser une app spécifique et des règles de redirection via le routeur. La partie BIOS a été traitée dans Réglages du BIOS, voici la partie Debian.
Trouver l'interface et son adresse MAC
ip -br link
Vous obtenez quelque chose comme enp1s0 UP aa:bb:cc:dd:ee:ff. Gardez les deux : le nom de l'interface pour les commandes ci-dessous, l'adresse MAC pour la machine qui enverra le paquet.
Vérifier que la carte le gère
sudo apt install ethtool
sudo ethtool enp1s0 | grep -i wake
La réponse ressemble à Supports Wake-on: pumbg puis Wake-on: d. La lettre qui compte est g, pour magic packet. Si la ligne Supports ne la contient pas, la carte ne sait pas le faire et il n'y a rien à configurer. Wake-on: d signifie simplement désactivé, ce que l'étape suivante corrige.
L'activer
sudo ethtool -s enp1s0 wol g
Relancez la vérification, Wake-on devrait maintenant être à g. Ce réglage est réinitialisé à chaque démarrage, il faut donc le réappliquer automatiquement.
Le faire survivre aux redémarrages
sudo nano /etc/systemd/system/wol.service
[Unit]
Description=Enable Wake on LAN
[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -s enp1s0 wol g
[Install]
WantedBy=basic.target
sudo systemctl daemon-reload
sudo systemctl enable --now wol.service
Le réveiller
Éteignez le serveur avec sudo poweroff, puis envoyez le magic packet depuis une autre machine du réseau. Sur macOS et Linux, le paquet wakeonlan le fait en une commande :
wakeonlan aa:bb:cc:dd:ee:ff
Windows n'a pas d'émetteur intégré, la solution la plus simple là-bas est une application mobile : n'importe laquelle des applications Wake on LAN gratuites prend l'adresse MAC et fonctionne de la même façon. Le serveur devrait démarrer en quelques secondes.
Terminé !
UDP 9 depuis l'extérieur vers 192.168.1.42:9 à l'intérieur. La box doit encore savoir associer cette IP à la bonne adresse MAC pendant que la machine est éteinte, et c'est pour ça que certaines exposent une entrée ARP statique, ou un bouton Wake on LAN à elles qui vous épargne complètement la redirection de port. Vérifiez d'abord votre box.Garder le système à jour
Debian ne se met pas à jour tout seul. Tous les mois environ, ou quand vous y pensez, quatre commandes en SSH :
Rafraîchir la liste des paquets
sudo apt update
Rien n'est installé à ce stade, apt demande seulement aux miroirs ce qui est disponible et vous dit combien de paquets sont en retard.
Appliquer les mises à jour
sudo apt full-upgrade
full-upgrade est préféré au simple upgrade parce qu'il accepte de retirer un paquet quand c'est le prix à payer pour en faire avancer un autre, ce qui arrive sur un serveur qui vit des années. Lisez le résumé avant de répondre oui, il liste exactement ce qui est supprimé.
Nettoyer derrière elles
sudo apt autoremove --purge
Chaque mise à jour de noyau laisse le précédent installé, et /boot est une petite partition qui finit par se remplir et casser la mise à jour suivante. Faites-le à chaque fois, pas de temps en temps. --purge supprime aussi les fichiers de configuration des paquets retirés.
Redémarrer si le noyau a bougé
sudo reboot
Une mise à jour du noyau ou de la libc ne prend effet qu'après un redémarrage. Tout le reste s'applique immédiatement, ce n'est donc nécessaire que quand la mise à jour a touché l'un des deux, et ça vaut la peine de le planifier à un moment où rien ne dépend de la machine.
Terminé !
&& interrompant la chaîne dès que l'une d'elles échoue :sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove --purge -y
-y répond oui à toutes les questions, y compris le jour où une mise à jour propose de retirer quelque chose que vous auriez préféré garder, réservez-le donc aux tournées de routine. Ajoutez && sudo reboot pour évacuer aussi le redémarrage.Pour les correctifs de sécurité sans avoir à y penser, sudo apt install unattended-upgrades puis sudo dpkg-reconfigure -plow unattended-upgrades les applique tout seul chaque nuit. À noter que tout ceci ne couvre que le système : vos conteneurs se mettent à jour séparément, depuis Dockge.