Outils pour utilisateurs

Outils du site


serveurnumero1

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
serveurnumero1 [2026/09/02 16:11] – créée reneserveurnumero1 [2026/09/02 16:53] (Version actuelle) – [Installation du serveur des Abeilles numéro 1 de clonage iPXE/Clonezilla sur Debian 13] rene
Ligne 1: Ligne 1:
 ====== Installation du serveur des Abeilles numéro 1 de clonage iPXE/Clonezilla sur Debian 13 ====== ====== Installation du serveur des Abeilles numéro 1 de clonage iPXE/Clonezilla sur Debian 13 ======
  
 +  Cette documentation a été élaborée avec l'aide de Lumo, l'assistant d'intelligence artificielle 
 +  développé par Proton (https://lumo.proton.me). L'analyse du serveur, la rédaction des procédures  
 +  et les corrections ont été réalisées conjointement : les commandes de diagnostic ont été exécutées  
 +  et vérifiées sur le serveur réel, et les configurations proposées validées avant publication 
 +  mais sans pour autant être certain que tout fonctionne. A vous de vérifier :) 
 +  ReunigKozh
 ===== ## 1. Vue d'ensemble de l'architecture ===== ===== ## 1. Vue d'ensemble de l'architecture =====
  
Ligne 7: Ligne 12:
 Le serveur permet de démarrer des machines en réseau (PXE) et de leur proposer soit la **restauration automatique d'une image système** (Debian, Ubuntu, Mint, PrimTux, MX Linux...), soit l'**effacement sécurisé** d'un disque (HDD, SSD, NVMe). Le serveur permet de démarrer des machines en réseau (PXE) et de leur proposer soit la **restauration automatique d'une image système** (Debian, Ubuntu, Mint, PrimTux, MX Linux...), soit l'**effacement sécurisé** d'un disque (HDD, SSD, NVMe).
  
-``` +  PC client (PXE) 
-PC client (PXE) +     │ 
-   │ +     ├─1─ DHCP (isc-dhcp-server, UDP 67)  → donne une IP + le nom du bootloader 
-   ├─1─ DHCP (isc-dhcp-server, UDP 67)  → donne une IP + le nom du bootloader +     │ 
-   │ +     ├─2─ TFTP (tftpd-hpa, UDP 69)        → sert ipxe.efi (UEFI) ou undionly.kpxe (BIOS) 
-   ├─2─ TFTP (tftpd-hpa, UDP 69)        → sert ipxe.efi (UEFI) ou undionly.kpxe (BIOS) +     │ 
-   │ +     ├─3─ HTTP (nginx, TCP 80)            → sert boot.ipxe, vmlinuz, initrd.img, squashfs 
-   ├─3─ HTTP (nginx, TCP 80)            → sert boot.ipxe, vmlinuz, initrd.img, squashfs +     │ 
-   │ +     └─4─ NFS (TCP 2049)                  → monte /home/partimag (images + scripts)
-   └─4─ NFS (TCP 2049)                  → monte /home/partimag (images + scripts) +
-```+
  
 Hypothèses : le serveur a **deux cartes réseau** — une reliée à Internet, l'autre (`<CARTE-LAN>`) au LAN de déploiement isolé. Le serveur garde l'adresse **192.168.100.1**, codée dans la configuration : ne la changez pas sans tout relire. Hypothèses : le serveur a **deux cartes réseau** — une reliée à Internet, l'autre (`<CARTE-LAN>`) au LAN de déploiement isolé. Le serveur garde l'adresse **192.168.100.1**, codée dans la configuration : ne la changez pas sans tout relire.
Ligne 25: Ligne 28:
  
  
-```bash + 
-sudo apt update +  sudo apt update 
-sudo apt install isc-dhcp-server tftpd-hpa nginx nfs-kernel-server nfs-common rsync +  sudo apt install isc-dhcp-server tftpd-hpa nginx nfs-kernel-server nfs-common rsync
-```+
  
 > Pendant l'installation d'`isc-dhcp-server`, il peut demander une interface : renseignez `<CARTE-LAN>` (vous pourrez la corriger ensuite dans `/etc/default/isc-dhcp-server`). > Pendant l'installation d'`isc-dhcp-server`, il peut demander une interface : renseignez `<CARTE-LAN>` (vous pourrez la corriger ensuite dans `/etc/default/isc-dhcp-server`).
Ligne 37: Ligne 39:
 Identifier le nom de la carte (débrancher la carte Internet pour lever le doute, ou regarder `nmcli device status`) : Identifier le nom de la carte (débrancher la carte Internet pour lever le doute, ou regarder `nmcli device status`) :
  
-```bash + 
-ip link +  ip link
-```+
  
 Créer la connexion statique (remplacer `<CARTE-LAN>` par le nom réel, ex. `enp3s0`) : Créer la connexion statique (remplacer `<CARTE-LAN>` par le nom réel, ex. `enp3s0`) :
  
-```bash + 
-sudo nmcli connection add type ethernet con-name "pxe-lan" ifname <CARTE-LAN> \+  sudo nmcli connection add type ethernet con-name "pxe-lan" ifname <CARTE-LAN> \
   ipv4.method manual ipv4.addresses 192.168.100.1/24 ipv6.method disabled   ipv4.method manual ipv4.addresses 192.168.100.1/24 ipv6.method disabled
-sudo nmcli connection up pxe-lan +  sudo nmcli connection up pxe-lan
-```+
  
 ⚠️ **Ne jamais brancher la carte LAN PXE sur un réseau existant** tant que le DHCP tourne : le serveur attribuerait des IP 192.168.100.x à votre réseau habituel. ⚠️ **Ne jamais brancher la carte LAN PXE sur un réseau existant** tant que le DHCP tourne : le serveur attribuerait des IP 192.168.100.x à votre réseau habituel.
Ligne 54: Ligne 54:
  
  
-Créer `/etc/dhcp/dhcpd.conf` : +Créer  
- +  sudo nao /etc/dhcp/dhcpd.conf
-```ini +
-option domain-name "pxe.local"; +
-option domain-name-servers 8.8.8.8; +
-option space PXE; +
-option PXE.arch code 93 = unsigned integer 16; +
-default-lease-time 600; +
-max-lease-time 7200; +
-authoritative; +
- +
-subnet 192.168.100.0 netmask 255.255.255.0 { +
-  range 192.168.100.10 192.168.100.120; +
-  option routers 192.168.100.1; +
-  option broadcast-address 192.168.100.255; +
-  next-server 192.168.100.1;+
  
-  if exists user-class and option user-class = "iPXE" { +  option domain-name "pxe.local"; 
-    # iPXE sait parler HTTP : on lui passe directement le menu +  option domain-name-servers 8.8.8.8; 
-    filename "http://192.168.100.1/boot.ipxe"; +  option space PXE; 
-  } elsif option PXE.arch = 00:07 or option PXE.arch = 00:09 { +  option PXE.arch code 93 = unsigned integer 16; 
-    # UEFI x64 → iPXE EFI +  default-lease-time 600; 
-    filename "ipxe.efi"; +  max-lease-time 7200; 
-  } else { +  authoritative; 
-    # BIOS legacy → iPXE en mode chainloader +   
-    filename "undionly.kpxe";+  subnet 192.168.100.0 netmask 255.255.255.0 { 
 +    range 192.168.100.10 192.168.100.120; 
 +    option routers 192.168.100.1; 
 +    option broadcast-address 192.168.100.255; 
 +    next-server 192.168.100.1; 
 +   
 +    if exists user-class and option user-class = "iPXE" { 
 +      # iPXE sait parler HTTP : on lui passe directement le menu 
 +      filename "http://192.168.100.1/boot.ipxe"; 
 +    } elsif option PXE.arch = 00:07 or option PXE.arch = 00:09 { 
 +      # UEFI x64 → iPXE EFI 
 +      filename "ipxe.efi"; 
 +    } else { 
 +      # BIOS legacy → iPXE en mode chainloader 
 +      filename "undionly.kpxe"; 
 +    }
   }   }
-} 
-``` 
  
-Déclarer l'interface d'écoute dans `/etc/default/isc-dhcp-server` :+Déclarer l'interface d'écoute dans  
 +  sudo nano /etc/default/isc-dhcp-server
  
-```ini +  INTERFACESv4="<CARTE-LAN>" 
-INTERFACESv4="<CARTE-LAN>" +  INTERFACESv6=""
-INTERFACESv6="" +
-```+
  
 ===== ## 5. Configuration TFTP ===== ===== ## 5. Configuration TFTP =====
  
  
-`/etc/default/tftpd-hpa` :+  sudo nano /etc/default/tftpd-hpa
  
-```ini +  TFTP_USERNAME="tftp" 
-TFTP_USERNAME="tftp" +  TFTP_DIRECTORY="/srv/tftp" 
-TFTP_DIRECTORY="/srv/tftp" +  TFTP_ADDRESS="0.0.0.0:69" 
-TFTP_ADDRESS="0.0.0.0:69" +  TFTP_OPTIONS="--secure"
-TFTP_OPTIONS="--secure" +
-```+
  
 Créer la racine TFTP **minimaliste** (seuls les bootloaders sont servis par TFTP — tout le reste passe en HTTP) : Créer la racine TFTP **minimaliste** (seuls les bootloaders sont servis par TFTP — tout le reste passe en HTTP) :
  
-```bash + 
-sudo mkdir -p /srv/tftp +  sudo mkdir -p /srv/tftp 
-# Copier depuis l'ancien serveur ou récupérer depuis une compilation iPXE : +  # Copier depuis l'ancien serveur ou récupérer depuis une compilation iPXE : 
-sudo rsync -av ancien:/srv/tftp/ipxe.efi ancien:/srv/tftp/undionly.kpxe /srv/tftp/ +  sudo rsync -av ancien:/srv/tftp/ipxe.efi ancien:/srv/tftp/undionly.kpxe /srv/tftp/ 
-sudo chown -R root:tftp /srv/tftp +  sudo chown -R root:tftp /srv/tftp 
-chmod 644 /srv/tftp/* +  chmod 644 /srv/tftp/*
-```+
  
 > **Pourquoi ne pas recopier tout l'ancien `/srv/tftp/` ?** Il contient ~1 Go de vestiges (ISO dupliquées, modules GRUB/syslinux, installateur Debian) issus d'essais précédents et non utilisés par la chaîne actuelle. Archivez l'ancien serveur tel quel sur un support externe, puis ne migrez que ces deux fichiers (+ `efi32/` si vous voulez le fallback UEFI 32 bits). > **Pourquoi ne pas recopier tout l'ancien `/srv/tftp/` ?** Il contient ~1 Go de vestiges (ISO dupliquées, modules GRUB/syslinux, installateur Debian) issus d'essais précédents et non utilisés par la chaîne actuelle. Archivez l'ancien serveur tel quel sur un support externe, puis ne migrez que ces deux fichiers (+ `efi32/` si vous voulez le fallback UEFI 32 bits).
Ligne 120: Ligne 115:
 La config nginx par défaut de Debian sert `/var/www/html` sur le port 80 : elle convient telle quelle. Y copier : La config nginx par défaut de Debian sert `/var/www/html` sur le port 80 : elle convient telle quelle. Y copier :
  
-```bash + 
-sudo rsync -av ancien:/var/www/html/boot.ipxe /var/www/html/ +  sudo rsync -av ancien:/var/www/html/boot.ipxe /var/www/html/ 
-sudo rsync -av ancien:/var/www/html/clonezilla/ /var/www/html/clonezilla/ +  sudo rsync -av ancien:/var/www/html/clonezilla/ /var/www/html/clonezilla/
-```+
  
 Contenu attendu dans `/var/www/html/clonezilla/live/` (Clonezilla Live **personnalisé** — voir §9) : Contenu attendu dans `/var/www/html/clonezilla/live/` (Clonezilla Live **personnalisé** — voir §9) :
  
-``` +  filesystem.squashfs   (352 Mo) 
-filesystem.squashfs   (352 Mo) +  initrd.img            (37 Mo) 
-initrd.img            (37 Mo) +  vmlinuz               (8,9 Mo)
-vmlinuz               (8,9 Mo) +
-```+
  
 ===== ## 7. NFS (images et scripts) ===== ===== ## 7. NFS (images et scripts) =====
Ligne 138: Ligne 130:
 Créer le répertoire des images et y copier le contenu de l'ancien serveur : Créer le répertoire des images et y copier le contenu de l'ancien serveur :
  
-```bash + 
-sudo rsync -av ancien:/home/partimag/ /home/partimag/ +  sudo rsync -av ancien:/home/partimag/ /home/partimag/
-```+
  
 Arborescence attendue : Arborescence attendue :
  
-``` +  /home/partimag/ 
-/home/partimag/ +  ├── sda/          ← images pour cibles SATA (disques détectés en /dev/sda) 
-├── sda/          ← images pour cibles SATA (disques détectés en /dev/sda) +  ├── nvme/         ← images pour cibles NVMe 
-├── nvme/         ← images pour cibles NVMe +  └── scripts/ 
-└── scripts/ +      ├── restore-by-disk.sh 
-    ├── restore-by-disk.sh +      └── effacement.sh
-    └── effacement.sh +
-```+
  
-Déclarer l'export dans `/etc/exports` :+Déclarer l'export dans  
 +  sudo nano /etc/exports
  
-``` +  /home/partimag 192.168.100.0/24(rw,sync,no_subtree_check,no_root_squash)
-/home/partimag 192.168.100.0/24(rw,sync,no_subtree_check,no_root_squash) +
-```+
  
 Puis : Puis :
  
-```bash + 
-sudo exportfs -ra +  sudo exportfs -ra
-```+
  
 ===== ## 8. Démarrage et activation des services ===== ===== ## 8. Démarrage et activation des services =====
  
  
-```bash + 
-sudo systemctl enable --now isc-dhcp-server tftpd-hpa nginx nfs-server +  sudo systemctl enable --now isc-dhcp-server tftpd-hpa nginx nfs-server
-```+
  
 Vérifications : Vérifications :
  
-```bash + 
-sudo systemctl status isc-dhcp-server tftpd-hpa nginx nfs-server +  sudo systemctl status isc-dhcp-server tftpd-hpa nginx nfs-server 
-ss -tulpn | grep -E ':(67|69|80|2049)'          # les 4 ports doivent répondre +  ss -tulpn | grep -E ':(67|69|80|2049)'          # les 4 ports doivent répondre 
-curl http://localhost/boot.ipxe                 # doit afficher le menu iPXE +  curl http://localhost/boot.ipxe                 # doit afficher le menu iPXE 
-curl -sI http://localhost/clonezilla/live/filesystem.squashfs | head -3   # 200 OK +  curl -sI http://localhost/clonezilla/live/filesystem.squashfs | head -3   # 200 OK 
-showmount -e localhost                          # l'export doit être listé +  showmount -e localhost                          # l'export doit être listé
-```+
  
 Si un pare-feu est actif, autoriser sur l'interface LAN : 67/udp, 69/udp, 80/tcp, 2049/tcp + rpcbind. Si un pare-feu est actif, autoriser sur l'interface LAN : 67/udp, 69/udp, 80/tcp, 2049/tcp + rpcbind.
Ligne 236: Ligne 221:
  
 === **Méthode B === === **Méthode B ===
- — ajouter une entrée au menu** : éditer `/var/www/html/boot.ipxe` sur le serveur :+ — ajouter une entrée au menu** : éditer sur le serveur : 
 +  sudo nano /var/www/html/boot.ipxe
  
-``` +  item Ma-Distrib-UEFI-img        Ma distribution UEFI
-item Ma-Distrib-UEFI-img        Ma distribution UEFI +
-```+
  
 et s'assurer que le fichier image existe dans `/home/partimag/sda/` (ou `nvme/`). Le nom d'item (`Ma-Distrib-UEFI-img`) devient l'argument `${IMAGE}` passé au script. **Aucun service à redémarrer** : le fichier est relu à chaque boot client. et s'assurer que le fichier image existe dans `/home/partimag/sda/` (ou `nvme/`). Le nom d'item (`Ma-Distrib-UEFI-img`) devient l'argument `${IMAGE}` passé au script. **Aucun service à redémarrer** : le fichier est relu à chaque boot client.
Ligne 248: Ligne 232:
  
 **Voir les logs des clients** : **Voir les logs des clients** :
-```bash + 
-sudo journalctl -u isc-dhcp-server -f     # demandes DHCP en temps réel +  sudo journalctl -u isc-dhcp-server -f     # demandes DHCP en temps réel 
-sudo tail -f /var/log/nginx/access.log    # chargements kernel/squashfs +  sudo tail -f /var/log/nginx/access.log    # chargements kernel/squashfs
-```+
  
 **Espace disque des images** : **Espace disque des images** :
-```bash + 
-df -h /home/partimag +  df -h /home/partimag 
-du -sh /home/partimag/sda/* /home/partimag/nvme/* +  du -sh /home/partimag/sda/* /home/partimag/nvme/*
-```+
  
 **Redémarrer un service après modification** : **Redémarrer un service après modification** :
-```bash + 
-sudo systemctl restart isc-dhcp-server    # après modification de dhcpd.conf +  sudo systemctl restart isc-dhcp-server    # après modification de dhcpd.conf 
-sudo exportfs -ra                          # après modification de /etc/exports +  sudo exportfs -ra                          # après modification de /etc/exports 
-sudo systemctl reload nginx                # après modification de boot.ipxe (optionnel) +  sudo systemctl reload nginx                # après modification de boot.ipxe (optionnel)
-```+
  
 **Sauvegarder la configuration du serveur** : **Sauvegarder la configuration du serveur** :
-```bash + 
-sudo tar czf config-ipxe-$(date +%F).tgz \+  sudo tar czf config-ipxe-$(date +%F).tgz \
   /etc/dhcp/dhcpd.conf /etc/default/isc-dhcp-server \   /etc/dhcp/dhcpd.conf /etc/default/isc-dhcp-server \
   /etc/default/tftpd-hpa /etc/exports \   /etc/default/tftpd-hpa /etc/exports \
   /var/www/html/boot.ipxe /home/partimag/scripts/   /var/www/html/boot.ipxe /home/partimag/scripts/
-``` 
  
 ==== ## 5. Dépannage rapide ==== ==== ## 5. Dépannage rapide ====
Ligne 295: Ligne 275:
 - Conserver l'archive tar de configuration (§4.5) à jour après chaque changement - Conserver l'archive tar de configuration (§4.5) à jour après chaque changement
  
----+
  
 Quelques pistes d'amélioration possibles pour la suite, si vous le souhaitez : ajouter un inventaire simple des restaurations effectuées (log côté serveur via les scripts), sécuriser l'accès SSH du serveur (ce qu'il a déjà activé), ou mettre en place une sauvegarde automatique de `/home/partimag` — les images représentent le vrai patrimoine de ce serveur, bien plus que sa configuration. Voulez-vous aussi une version imprimable (schéma + une page recto) pour l'atelier ? Quelques pistes d'amélioration possibles pour la suite, si vous le souhaitez : ajouter un inventaire simple des restaurations effectuées (log côté serveur via les scripts), sécuriser l'accès SSH du serveur (ce qu'il a déjà activé), ou mettre en place une sauvegarde automatique de `/home/partimag` — les images représentent le vrai patrimoine de ce serveur, bien plus que sa configuration. Voulez-vous aussi une version imprimable (schéma + une page recto) pour l'atelier ?
 +
 +
 +
 +
serveurnumero1.1788365518.txt.gz · Dernière modification : de rene