Debian : configuration des mises à jour automatiques
- Mise à jour le 06 juil. 2025
Lorsqu’on doit gérer plusieurs serveurs Debian (comme moi 💪), il peut être difficile de les maintenir tous à jour. Cela implique de se connecter sur chaque serveur individuellement, d’exécuter quelques commandes, et parfois de redémarrer le système selon les mises à jour appliquées. Pour automatiser ce processus, on peut utiliser l’outil unattended-upgrades. Dans cet article, je vais vous montrer comment utiliser cet outil pour garder un système Debian à jour, et comment le configurer pour envoyer une notification par e-mail à la fin d’une mise à jour.
Prérequis
- Commencez par vérifier que le paquet
unattended-upgrades
est installé :
root@host:~# apt update && apt install unattended-upgrades
Configuration
Selon la sensibilité de nos serveurs, on peut les configurer pour qu’ils redémarrent automatiquement, n’installent que les mises à jour de sécurité, etc. Personnellement, je choisis d’installer toutes les mises à jour et de redémarrer le système si nécessaire.
- Éditez le fichier
/etc/apt/apt.conf.d/50unattended-upgrades
:
Unattended-Upgrade::Origins-Pattern {
// Les mises à jour recommandées sont des modifications de logiciels, mais pas des mises à jour qui affecteront la sécurité de votre système. Elles tendent à corriger des bogues et des problèmes gênants.
"origin=Debian,codename=${distro_codename}-updates";
// Les mises à jour "proposed" sont des mises à jour qui attendent d'être placées dans la file d'attente des mises à jour recommandées après avoir été testées. Il se peut qu'elles ne soient jamais recommandées ou qu'elles soient remplacées par une mise à jour plus récente.
// Elles sont déconseillées dans un environnement de production
//"origin=Debian,codename=${distro_codename}-proposed-updates";
"origin=Debian,codename=${distro_codename},label=Debian";
"origin=Debian,codename=${distro_codename},label=Debian-Security";
"origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
};
[…]
// Permettre au système de redémarrer automatiquement si nécessaire
Unattended-Upgrade::Automatic-Reboot "true";
[…]
// Si le redémarrage automatique est activé et nécessaire, le redémarrage s'effectue à l'heure
// spécifiée au lieu de redémarrer immédiatement.
// Paramètre par défaut : "now"
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
- Créez ou modifiez le fichier
/etc/apt/apt.conf.d/20auto-upgrades
pour activer les mises à jour automatiques :
// Exécuter "apt-get update" automatiquement tous les n-jours (0=désactivé)
APT::Periodic::Update-Package-Lists "1";
// Exécuter le script "unattended-upgrade"
// tous les n-jours (0=désactivé)
// Nécessite le paquet "unattended-upgrades", écrira
// log dans /var/log/unattended-upgrades
APT::Periodic::Unattended-Upgrade "1";
- Exécutez une vérification en mode debug pour vous assurer que tout fonctionne correctement :
root@host:~# unattended-upgrade -d --dry-run
Modifier les horaires de téléchargement et de mise à jour
Par défaut, les mises à jour sont programmées deux fois par jour, à 6 h et à 18 h, et les installations ont lieu à 6 h. Il est possible de modifier ces réglages en éditant deux fichiers de minuterie systemd.
Modifier la planification des téléchargements
- Éditez le fichier
/etc/systemd/system/timers.target.wants/apt-daily.timer
et remplacez l’heure existante par celle de votre choix :
[Unit]
Description=Daily apt download activities
[Timer]
OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h
Persistent=true
[Install]
WantedBy=timers.target
Modifier la planification des mises à jour
- Éditez le fichier
/etc/systemd/system/timers.target.wants/apt-daily-upgrade.timer
et remplacez l’heure existante par celle souhaitée :
[Unit]
Description=Daily apt upgrade and clean activities
After=apt-daily.timer
[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=60m
Persistent=true
[Install]
WantedBy=timers.target
Appliquer les modifications
- Exécutez les commandes suivantes pour prendre les changements en compte :
root@host:~# systemctl daemon-reload && systemctl restart apt-daily-upgrade.timer && systemctl restart apt-daily.timer
Configurer les alertes par e-mail
Il peut être utile de recevoir des rapports par e-mail pour s’assurer que les mises à jour ont bien été appliquées, et pour savoir quand un serveur a redémarré après l’installation des derniers correctifs. Pour cela, il faut au minimum configurer un client SMTP. Dans cet article, je vais montrer comment configurer msmtp.
- Installez le paquet
msmtp
et appliquez des droits d’accès restreints au fichier/etc/msmtprc
:
root@host:~# apt update && apt install msmtp
root@host:~# chmod 600 /etc/msmtprc
- Modifiez le fichier
/etc/msmtprc
et adaptez-le à votre serveur de messagerie. Par exemple, voici ma configuration :- Serveur mail : mail.std.rocks
- Protocole : smtps / TCP 465
- Identifiant : srv1@std.rocks
- Mot de passe : MyWeakPassword
account STD
#Mail Server :
host mail.std.rocks
port 465
from srv1@std.rocks
#LOGIN / PASSWORD
user srv1@std.rocks
password MyWeakPassword
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
tls_certcheck off
logfile /var/log/msmtp
account default : STD
- Définissez
msmtp
comme programme par défaut poursendmail
:
root@host:~# ln -fs /usr/bin/msmtp /usr/sbin/sendmail
- Modifiez le fichier
/etc/apt/apt.conf.d/50unattended-upgrades
pour configurer les notifications par e-mail :
// Envoyer un courriel à cette adresse pour signaler des problèmes ou des paquets qui ont été mis à jour
Unattended-Upgrade::Mail "srv1-unattended@std.rocks";
[…]
// Remplacer la valeur "on-change" par "always" et lancer unattended-upgrade -d pour tester que le rapport par courriel fonctionne
Unattended-Upgrade::MailReport "on-change";
// Optionnel : Paramétrer le champ From dans le courriel qui sera envoyé
Unattended-Upgrade::Sender "srv1@std.rocks";