====== Unattended-Upgrades : Mises à jour automatiques ======
Cette documentation explique comment installer, configurer et administrer **unattended-upgrades** sous Debian (Trixie) pour automatiser les mises à jour de sécurité et de dépôts tiers (Docker, Tailscale, Zabbix).
===== 1. Installation et activation =====
Installez le paquet principal ainsi que le gestionnaire de notifications locales :
sudo apt update && sudo apt install unattended-upgrades bsd-mailx
Activez le déclenchement automatique via l'interface système :
sudo dpkg-reconfigure -plow unattended-upgrades
> Choisissez **Oui** (Yes) à l'invite pour activer la tâche planifiée.
===== 2. Identification des métadonnées des dépôts =====
Pour autoriser des dépôts tiers (hors Debian Security), il faut impérativement extraire leurs paramètres exacts (''o='', ''a='', ''c='') à l'aide de la commande suivante :
apt-cache policy
==== Exemple de sortie analysée ====
* **Docker :** release o=Docker,a=trixie,l=Docker CE,c=stable -> S'écrira : ''origin=Docker,archive=trixie,component=stable''
* **Tailscale :** release o=Tailscale,n=trixie,l=Tailscale,c=main -> S'écrira : ''origin=Tailscale,codename=trixie''
* **Zabbix :** Attention aux casses (''o=Zabbix'' et ''o=zabbix'') -> Nécessite deux entrées distinctes.
===== 3. Configuration principale =====
Modifiez le fichier de configuration : **//etc/apt/apt.conf.d/50unattended-upgrades//**
=== Bloc Allowed-Origins (Exemple complet) ===
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"origin=Debian,archive=stable-updates";
"origin=Tailscale,codename=${distro_codename}";
"origin=Docker,archive=${distro_codename},component=stable";
"origin=Zabbix,codename=${distro_codename},component=main";
"origin=zabbix,codename=${distro_codename},component=main";
};
NB : Respectez strictement la syntaxe ''clé=valeur'' séparée par des virgules. Une mauvaise syntaxe lèvera une erreur Python ''ValueError: not enough values to unpack''.
=== Options de maintenance recommandées ===
// Nettoyage des dépendances inutiles (équivalent apt autoremove)
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// Gestion du redémarrage automatique en cas de mise à jour de Kernel
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
===== 4. Planification et exécution (Systemd Timers) =====
Le script est piloté par Systemd et s'exécute généralement deux fois par jour (le matin pour les installations, le soir pour le nettoyage) avec un délai aléatoire pour préserver les dépôts.
Pour connaître l'heure exacte du prochain passage sur la machine :
systemctl list-timers apt-daily.timer apt-daily-upgrade.timer
Vérifiez également que le fichier **//etc/apt/apt.conf.d/20auto-upgrades//** contient l'activation des tâches périodiques :
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
===== 5. Débogage et Validation =====
Pour tester la configuration et simuler une mise à jour sans affecter le système, utilisez le mode **dry-run** avec le verbeux de debug :
sudo unattended-upgrades --dry-run -d
==== Points de contrôle dans les logs ====
* **Paquet autorisé :** Checking: tailscale [...] pkgs that look like they should be upgraded: tailscale
* **Paquet bloqué volontairement :** Marking not allowed [...] with -32768 pin
===== 6. Bonnes pratiques =====
^ Pratique ^ Description ^
| **Dépôts tiers** | N'ajoutez que des dépôts de confiance (Docker, Tailscale). Évitez les dépôts PPA ou de test instables. |
| **Reboot planifié** | Activez l'''Automatic-Reboot'' la nuit si le serveur n'a pas de contrainte de haute disponibilité stricte (indispensable pour appliquer les correctifs de Kernel). |
| **Service de Mail** | L'installation de ''bsd-mailx'' installe par défaut ''exim4''. Si vous n'utilisez pas de relais SMTP extérieur, désactivez le service ou commentez la ligne ''Unattended-Upgrade::Mail'' pour éviter les processus inutiles en tâche de fond. |
| **Surveillance** | Consultez régulièrement le fichier de log principal en cas de doute : ''/var/log/unattended-upgrades/unattended-upgrades.log''. |