Setup Unattended Updates for Debian
20 Oct 2024Introduction
Keeping your Linux servers up to date with the latest security patches is critical. Fortunately, if you’re running a Debian-based distribution (like Debian or Ubuntu), you can easily automate this process using unattended-upgrades. In this guide, we’ll walk through setting up automatic patching with unattended-upgrades, configuring a schedule for automatic reboots after updates, and setting up msmtp to send email notifications from your local Unix mail account.
Installation
The first step is to install unattended-upgrades, which will automatically install security (and optionally other) updates on your server. Here’s how to do it:
sudo apt-get update
sudo apt-get install unattended-upgrades apt-listchangesAfter installation, you’ll want to enable unattended-upgrades:
sudo dpkg-reconfigure --priority=low unattended-upgradesThis will configure your server to automatically install security updates. However, you can customize the configuration to also include regular updates if you prefer.
Configuration
By default, unattended-upgrades runs daily, but you can configure it further by adjusting the automatic reboot settings to ensure that your server reboots after installing updates when necessary.
Automatic Updates
Edit the unattended-upgrades configuration file:
sudo vim /etc/apt/apt.conf.d/50unattended-upgradesMake sure the file has the following settings to apply both security and regular updates:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
};Automatic Reboots
You can also configure the server to automatically reboot after installing updates (useful when kernel updates require a reboot). To do this, add or modify the following lines in the same file:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";Testing and Dry Runs
To give this a quick test, you can use the following:
# dry run the process
sudo unattended-upgrade --dry-run --verbose
# run the unattended upgrade immediately
sudo unattended-upgrade --verboseEmail Notification
In the same file, you can simply add the email address that you’d like to notify:
Unattended-Upgrade::Mail "your-local-username@localhost";You may need to configure your Debian machine to be able to send email. For this, we’ll use msmtp, which can relay emails. I use gmail, but you can use any provider.
Configuration
Open up the /etc/msmtprc file. For the password here, I needed to use an “App Password” from Google (specifically).
defaults
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
account gmail
host smtp.gmail.com
port 587
auth on
user your-email@gmail.com
password your-password
from your-email@gmail.com
account default : gmailDefault
You can set msmtp as your default by linking it as sendmail.
sudo ln -sf /usr/bin/msmtp /usr/sbin/sendmailTesting
Make sure your setup for email is working now by sending yourself a test message:
echo "Test email from msmtp" | msmtp your-local-username@localhostConclusion
With unattended-upgrades and msmtp configured, your Debian-based servers will automatically stay up to date with security and software patches, and you’ll receive email notifications whenever updates are applied. Automating patch management is crucial for maintaining the security and stability of your servers, and these simple tools make it easy to manage updates with minimal effort.
Happy patching!