# 🐧 Debian Base ![Debian](https://img.shields.io/badge/Debian-server-A81D33?style=for-the-badge&logo=debian&logoColor=white) ![Bash](https://img.shields.io/badge/Bash-script-4EAA25?style=for-the-badge&logo=gnubash&logoColor=white) ![Network](https://img.shields.io/badge/Network-ifupdown-2563EB?style=for-the-badge) ![License](https://img.shields.io/badge/License-AGPLv3-blue?style=for-the-badge) ✨ 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 : ```bash sudo ./configure-debian-network.sh ``` Le script réseau demande les informations une par une : ```text 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): Gateway (ex: 192.168.1.1): Utiliser la gateway 192.168.1.1 comme serveur DNS ? [Y/n]: ``` 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 : ```bash sudo ./install-docker-ce.sh ``` Installer Docker CE et ajouter un utilisateur au groupe `docker` : ```bash 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 : ```bash 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 : ```text /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 bash -n configure-debian-network.sh bash -n install-docker-ce.sh ``` Vérification manuelle recommandée après exécution : ```bash 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](LICENSE) pour le texte complet.