Files
debian-base/README.md
T

4.8 KiB

🐧 Debian Base

Debian Bash Network License

Scripts utiles pour préparer rapidement une base serveur Debian sans environnement graphique.

🎯 Objectif

Ce dépôt regroupe des scripts Bash pour automatiser les tâches courantes de préparation, configuration et maintenance d'une base serveur Debian minimaliste.

L'objectif est de garder une collection de scripts :

  • 🧱 simples à lire et à auditer ;
  • 🔐 exécutables explicitement avec les privilèges nécessaires ;
  • 🧭 adaptés à des serveurs sans environnement graphique ;
  • 📚 documentés dans ce README au fur et à mesure des ajouts.

🧰 Scripts disponibles

Script Rôle
configure-debian-network.sh Configurer le hostname, l'IP statique, la gateway et les DNS
install-docker-ce.sh Installer Docker CE depuis le dépôt officiel Docker

Le script réseau cible une installation serveur Debian classique utilisant :

  • 📄 /etc/network/interfaces
  • ⚙️ le service networking
  • 🔐 une exécution en root via sudo

Il ne vise pas les postes avec NetworkManager, interface graphique ou gestion réseau desktop. Si dhcpcd est présent ou si /etc/resolv.conf est généré par dhcpcd, le script ajoute aussi un bloc statique dédié dans /etc/dhcpcd.conf et un hook /etc/dhcpcd.exit-hook afin que les DNS soient conservés après régénération. Si systemd-resolved est détecté, le script écrit également une configuration persistante dans /etc/systemd/resolved.conf.d/99-configure-debian-network.conf.

🚀 Utilisation réseau

Configurer la base réseau :

sudo ./configure-debian-network.sh

Le script réseau demande les informations une par une :

Nom de la machine (laisser vide pour ne pas modifier):
Adresse IP avec préfixe CIDR (ex: 192.168.1.50/24, laisser vide pour ne pas modifier le réseau):

Exemples de cas d'usage :

Besoin Action
🏷️ Modifier uniquement le hostname Renseigner le hostname, laisser l'IP vide
🌐 Modifier uniquement le réseau Laisser le hostname vide, renseigner l'IP
🛠️ Modifier hostname et réseau Renseigner toutes les informations
💤 Ne rien changer Laisser hostname et IP vides

Si le hostname est modifié, le script propose un redémarrage complet de la machine afin que le nouveau nom soit pris en compte par tous les services.

🐳 Installation Docker CE

Installer Docker CE depuis le dépôt officiel Docker :

sudo ./install-docker-ce.sh

Installer Docker CE et ajouter un utilisateur au groupe docker :

sudo ./install-docker-ce.sh olivier

Le script Docker effectue les actions suivantes :

  • 🧹 suppression des anciens paquets Docker conflictuels si présents ;
  • 🔑 ajout de la clé GPG officielle Docker dans /etc/apt/keyrings/docker.asc ;
  • 📦 ajout du dépôt APT officiel via /etc/apt/sources.list.d/docker.sources ;
  • 🐳 installation de docker-ce, docker-ce-cli et containerd.io ;
  • 🧩 installation des plugins docker-buildx-plugin et docker-compose-plugin ;
  • ⚙️ activation et démarrage du service docker.

Vérification après installation :

docker --version
docker compose version
systemctl status docker

Si un utilisateur est ajouté au groupe docker, il doit ouvrir une nouvelle session avant de pouvoir utiliser Docker sans sudo.

🛟 Sauvegardes

Avant modification, le script sauvegarde les fichiers concernés avec un suffixe date :

/etc/hostname.bak.YYYYMMDD-HHMMSS
/etc/hosts.bak.YYYYMMDD-HHMMSS
/etc/network/interfaces.bak.YYYYMMDD-HHMMSS
/etc/dhcpcd.conf.bak.YYYYMMDD-HHMMSS
/etc/dhcpcd.exit-hook.bak.YYYYMMDD-HHMMSS
/etc/systemd/resolved.conf.d/99-configure-debian-network.conf.bak.YYYYMMDD-HHMMSS
/etc/resolv.conf.bak.YYYYMMDD-HHMMSS

Seuls les fichiers nécessaires sont sauvegardés selon les options choisies.

Validation

Vérification syntaxique :

bash -n configure-debian-network.sh
bash -n install-docker-ce.sh

Vérification manuelle recommandée après exécution :

hostnamectl
ip addr
ip route
cat /etc/resolv.conf

📝 Notes Debian

Le script est adapté aux serveurs Debian minimalistes. Sur une machine utilisant NetworkManager ou systemd-networkd, il faut utiliser le backend réseau correspondant plutôt que modifier directement /etc/network/interfaces.

⚖️ Licence

Ce projet est distribué sous licence GNU Affero General Public License v3.0.

Voir LICENSE pour le texte complet.