Files
debian-base/README.md
T

137 lines
4.5 KiB
Markdown

# 🐧 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` afin que les DNS soient conservés après redémarrage.
## 🚀 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):
```
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/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.