Servery a DevOps

Automatické aktualizace na Ubuntu: unattended-upgrades bez obav

Nastavte unattended-upgrades jen pro bezpečnostní záplaty, automatický restart v noci, výjimky pro kritické balíčky a kontrolu, že aktualizace opravdu běží.

12. 10. 2026 · 4 min čtení

Většina napadených serverů nepadne kvůli sofistikovanému útoku, ale kvůli známé zranitelnosti, na kterou dávno existuje záplata. Ubuntu má pro automatickou instalaci bezpečnostních aktualizací nástroj unattended-upgrades. Správně nastavený vám ušetří práci a riziko je minimální.

Instalace a zapnutí

Na Ubuntu Server je balíček obvykle už nainstalovaný. Pro jistotu:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Druhý příkaz vytvoří (nebo upraví) soubor /etc/apt/apt.conf.d/20auto-upgrades:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

1 znamená „každý den“.

Hlavní konfigurace

Nastavení je v /etc/apt/apt.conf.d/50unattended-upgrades. Nejdůležitější je sekce povolených zdrojů:

Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}";
        "${distro_id}:${distro_codename}-security";
        "${distro_id}ESMApps:${distro_codename}-apps-security";
        "${distro_id}ESM:${distro_codename}-infra-security";
//      "${distro_id}:${distro_codename}-updates";
};

Výchozí nastavení instaluje jen bezpečnostní aktualizace (-security). Řádek -updates (běžné opravy chyb) je zakomentovaný. Pro produkční server je to rozumné – bezpečnostní záplaty jsou malé a cílené.

Konfigurační soubor patří balíčku. Abyste se vyhnuli konfliktům při jeho aktualizaci, můžete vlastní nastavení dát do samostatného souboru s vyšším číslem, např. /etc/apt/apt.conf.d/52unattended-upgrades-local. Pozor ale: seznamy jako Allowed-Origins nebo Package-Blacklist se ze všech souborů slučují, takže položku z výchozího souboru takto neodeberete. Jednoduché volby ("true", čas) z pozdějšího souboru výchozí hodnotu přepíšou.

Užitečné volby

// Nikdy automaticky neaktualizovat tyto balíčky (regulární výrazy)
Unattended-Upgrade::Package-Blacklist {
    "mariadb-server";
    "docker-ce";
};

// Odstranit nepotřebné závislosti a stará jádra
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Automatický restart, pokud je potřeba (nové jádro, libc)
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-WithUsers "false";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

// Upozornění e-mailem (vyžaduje funkční odesílání pošty)
Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::MailReport "only-on-error";

Restartovat automaticky, nebo ne?

Aktualizace jádra se projeví až po restartu. Bez něj server běží se zranitelným jádrem dál.

Přístup Kdy se hodí
Automatic-Reboot "true" v noci samostatný VPS s webem, krátký výpadek ve 4:00 nevadí
Ruční restart databázový server, služby, které po startu vyžadují zásah
Livepatch (Ubuntu Pro) záplaty jádra bez restartu u podporovaných jader

Pokud restartujete ručně, kontrolujte, jestli je restart potřeba:

cat /var/run/reboot-required 2>/dev/null
cat /var/run/reboot-required.pkgs 2>/dev/null

Když necháte automatický restart zapnutý, ujistěte se, že všechny služby mají systemctl enable a po startu naběhnou samy. Otestujte si to jedním ručním restartem.

Restart služeb po aktualizaci knihoven

Když se aktualizuje třeba OpenSSL, běžící procesy dál používají starou verzi v paměti. Ubuntu na to má needrestart, který po aktualizaci zjistí, které služby restartovat. V Ubuntu 24.04 je ve výchozím stavu nastavený tak, aby služby restartoval automaticky. Ručně:

sudo needrestart -r l    # jen vypsat

Test nanečisto

sudo unattended-upgrade --dry-run --debug

Výstup ukáže, které zdroje jsou povolené a které balíčky by se instalovaly. Hledejte řádky Allowed origins are: a Packages that will be upgraded:.

Ověření, že aktualizace běží

Spouštění řídí systemd timery:

systemctl list-timers apt-daily.timer apt-daily-upgrade.timer

Logy:

less /var/log/unattended-upgrades/unattended-upgrades.log
grep -h "upgrade " /var/log/dpkg.log | tail

Časté problémy

Zamčený dpkg – po startu serveru můžete narazit na Could not get lock /var/lib/dpkg/lock-frontend. Právě běží automatická aktualizace. Počkejte pár minut; zámek ručně nemažte.

Balíčky z cizích repozitářů se neaktualizují – PPA nebo repozitář Dockeru nejsou v Allowed-Origins. Můžete je přidat (zdroj zjistíte přes apt-cache policy <balíček>), ale zvažte riziko neotestovaných aktualizací.

Přerušené aktualizace – pokud server restartujete během aktualizace, zkontrolujte stav:

sudo dpkg --configure -a
sudo apt -f install

Doporučené minimum

  1. Zapnuté unattended-upgrades jen pro -security.
  2. Automatický restart v noci, nebo pravidelná ruční kontrola reboot-required.
  3. Jednou za čas sudo apt update && sudo apt upgrade ručně pro ostatní opravy.
  4. Pravidelné zálohy – kdyby aktualizace přece jen něco rozbila.