Zum Inhalt

Ubuntu-Server automatisch mit Sicherheitsupdates versorgen: unattended-upgrades sicher einrichten

Veröffentlicht am 17. Oktober 2026 · Geschätzte Lesezeit: 7 Minuten

Ubuntu kann verfügbare Sicherheitsaktualisierungen täglich automatisch herunterladen und installieren – ohne dass du dich per SSH einloggen oder manuell apt upgrade ausführen musst. Ein Trockenlauf, aussagekräftige Protokolle und eine bewusst gewählte Neustartregel reduzieren das Ausfallrisiko. Die Einrichtung dauert etwa 20 bis 30 Minuten; am Folgetag solltest du den ersten regulären Durchlauf kurz kontrollieren.[1][3]

Die Anleitung wurde am 17. Oktober 2026 mit der offiziellen Ubuntu-Dokumentation zu Automatic updates abgeglichen.[1] Die Ubuntu-Manpage zu unattended-upgrade und der Bericht von linuxhosted.com ergänzen die praktischen Details.[2][3] Das Video Ubuntu 24.04: How to Automate Updates with Unattended Upgrades zeigt die Einrichtung zusätzlich.[4]

Voraussetzungen

  • Ein Linux-Server mit einer unterstützten Ubuntu-Version (22.04, 24.04 oder 26.04 LTS)
  • Terminal-Zugriff mit einem Benutzer, der sudo-Rechte besitzt
  • Funktionierende APT-Paketquellen (sudo apt update läuft ohne Fehler)
  • Ein aktuelles Backup des Systems oder der wichtigsten Anwendungsdaten, bevor du die Konfiguration änderst

1. Systemversion und vorhandene Konfiguration erfassen

Verschaffe dir zuerst einen Überblick über die installierte Ubuntu-Version und ob unattended-upgrades bereits vorhanden ist:

lsb_release -ds
apt-cache policy unattended-upgrades

Die erste Zeile zeigt die genaue Ubuntu-Version (zum Beispiel Ubuntu 24.04.2 LTS). Die zweite Zeile sagt dir, ob das Paket installiert ist – fehlt es, erscheint (keine).[1]

Sichere die bestehende Konfiguration, falls sie bereits existiert. Der Befehl || true verhindert einen Fehler, wenn die Datei noch nicht existiert oder noch nie angelegt wurde:

sudo cp -a /etc/apt/apt.conf.d/20auto-upgrades \
  /etc/apt/apt.conf.d/20auto-upgrades.backup-$(date +%F-%H%M%S) 2>/dev/null || true
sudo cp -a /etc/apt/apt.conf.d/50unattended-upgrades \
  /etc/apt/apt.conf.d/50unattended-upgrades.backup-$(date +%F-%H%M%S) 2>/dev/null || true

Ersetze die Platzhalter nicht – der Befehl erzeugt automatisch einen datierten Dateinamen wie 20auto-upgrades.backup-2026-10-17-063000.

2. Paket installieren oder aktualisieren

Falls unattended-upgrades noch fehlt, installiere es jetzt. Auch bei bereits vorhandener Installation stellst du mit diesem Befehl sicher, dass die aktuellste Version und die vom Paket ausgelieferten Standard-Konfigurationsdateien vorliegen:

sudo apt update
sudo apt install unattended-upgrades

Das Paket installiert keine klassische Server-Daemon – die regelmäßige Ausführung übernimmt der systemd-Timer apt-daily-upgrade.timer, der täglich automatisch startet.[1][2]

3. Tägliche Verarbeitung aktivieren

Der einfachste Weg für Einsteiger ist das integrierte Konfigurationswerkzeug. Es erstellt oder aktualisiert die Datei /etc/apt/apt.conf.d/20auto-upgrades für dich:

sudo dpkg-reconfigure --priority=low unattended-upgrades

Wähle im Dialog \<Ja> aus. Alternativ erstellst oder bearbeitest du die Datei direkt. Sie muss mindestens diese beiden Zeilen enthalten:[1][3]

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

Zahlenwerte, keine Schalter

Die Werte sind laut Ubuntu-Dokumentation Tagesintervalle, keine booleschen Ja/Nein-Schalter: "1" bedeutet täglich, "0" deaktiviert die jeweilige Aktion.[1]

4. Gültige Quellen und gewünschte Pakete festlegen

Die wichtigste Konfigurationsdatei steuert, welche Paketquellen aktualisiert werden dürfen. Öffne sie mit einem Texteditor:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Suche den Abschnitt Unattended-Upgrade::Allowed-Origins. Die mitgelieferte Standard-Konfiguration aktiviert in der Regel:[3]

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";
};

Nicht alle Updates automatisch einspielen

Die erste Zeile (ohne -security) erlaubt alle verfügbaren Updates, nicht nur Sicherheitsupdates. Auf einem Produktionsserver solltest du diese Zeile auskommentieren, damit nur geprüfte Sicherheitsupdates automatisch eingespielt werden.[3] Ersetze die Zeile durch // "${distro_id}:${distro_codename}"; mit vorangestellten //.

Falls ein bestimmtes Paket bei automatischen Updates in der Vergangenheit Probleme verursacht hat, nimm es in die Ausschlussliste auf. Der reguläre Ausdruck $ am Ende stellt sicher, dass nur der exakte Paketname gemeint ist:

Unattended-Upgrade::Package-Blacklist {
    "libc-bin$";
};

Ersetze libc-bin durch den tatsächlichen Paketnamen, der nicht automatisch aktualisiert werden soll.

5. Neustartregel bewusst festlegen

Kernel- und Bibliotheksaktualisierungen (libc, OpenSSL) werden erst nach einem Neustart wirksam. Für einen Einsteiger-Artikel empfehlen wir: Standardmäßig keinen unbeaufsichtigten Neustart aktivieren.[1]

Die Datei /etc/apt/apt.conf.d/50unattended-upgrades enthält dazu diese Voreinstellung:

//Unattended-Upgrade::Automatic-Reboot "false";

Der Doppel-Schrägstrich // zeigt an, dass die Zeile auskommentiert ist und der Standardwert "false" gilt.

Wenn du den Server nicht regelmäßig manuell neustartest und Sicherheitsupdates für Kernel trotzdem wirksam werden sollen, aktiviere den automatischen Neustart in einem definierten Zeitfenster. Erstelle dafür eine separate Konfigurationsdatei, damit Änderungen an der Hauptkonfiguration durch Paket-Updates nicht überschrieben werden:

sudo tee /etc/apt/apt.conf.d/52unattended-upgrades-local << 'EOF'
// Lokale Neustartregel – aktiviert nur, wenn gewünscht
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
EOF

Zum Aktivieren ersetze "false" durch "true". Die Uhrzeit "04:00" ist die Zeitzone des Servers; prüfe sie vorher mit timedatectl.

Vor dem Aktivieren prüfen

Ein automatischer Neustart mitten im Arbeitstag kann Datenverlust oder Ausfallzeiten verursachen. Aktiviere diese Option nur, wenn der Server zuverlässig alle notwendigen Dienste automatisch startet und keine Benutzer zu unerwarteten Zeiten angemeldet sind.[1]

6. Konfiguration prüfen und Trockenlauf durchführen

Lass dir die aktuellen Werte anzeigen, um zu bestätigen, dass die Konfiguration korrekt eingelesen wird:

apt-config dump | grep -E 'APT::Periodic|Unattended-Upgrade'

Die Ausgabe sollte beide Werte aus 20auto-upgrades sowie die Neustartregel aus 50unattended-upgrades anzeigen.[3]

Prüfe die systemd-Timer, die die tägliche Ausführung steuern:

systemctl list-timers apt-daily.timer apt-daily-upgrade.timer
systemctl status apt-daily.timer apt-daily-upgrade.timer --no-pager

Beide Timer sollten als active (waiting) oder active (running) angezeigt werden und einen nächsten Ausführungszeitpunkt besitzen.[1]

Führe jetzt einen Trockenlauf durch. Dabei simuliert unattended-upgrade den gesamten Vorgang, ohne tatsächlich Pakete zu installieren:

sudo unattended-upgrade --dry-run --verbose

Paketname versus Programmname

Das Paket heißt unattended-upgrades (mit -s am Ende), das Programm dagegen unattended-upgrade (ohne -s). Eine leichte Verwechslungsquelle, auf die du bei der Eingabe achten solltest.[3]

Der Trockenlauf zeigt alle Pakete an, die beim nächsten echten Lauf aktualisiert würden, inklusive ihrer Herkunft (zum Beispiel Ubuntu:24.04-noble-security).[2]

7. Echten Lauf abwarten und Protokolle kontrollieren

Der Trockenlauf installiert nichts. Der erste echte Durchlauf erfolgt automatisch durch den systemd-Timer, üblicherweise in den frühen Morgenstunden. Kontrolliere am nächsten Tag die Protokolle:

sudo tail -n 100 /var/log/unattended-upgrades/unattended-upgrades.log
sudo tail -n 100 /var/log/unattended-upgrades/unattended-upgrades-dpkg.log

Ein gesundes Log enthält Einträge über den Paketindex-Refresh, installierte Sicherheitspakete und – wenn aktiviert – die Entscheidung über einen Neustart. Bei einem leeren Log solltest du die Timer und Konfiguration erneut prüfen.[2][3]

Ergänzend zeigt auch das Journal des systemd-Dienstes die letzten Ausführungen:

journalctl -u apt-daily-upgrade.service --since "2 days ago" --no-pager

Backup und Rückweg

So deaktivierst du die automatischen Updates bei Bedarf – ohne das Paket zu entfernen:

Setze die beiden Werte in 20auto-upgrades auf "0":

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

Alternativ stellst du die gesicherten Konfigurationsdateien zurück:

sudo cp /etc/apt/apt.conf.d/20auto-upgrades.backup-* /etc/apt/apt.conf.d/20auto-upgrades
sudo cp /etc/apt/apt.conf.d/50unattended-upgrades.backup-* /etc/apt/apt.conf.d/50unattended-upgrades

Prüfe anschließend, ob die Änderungen wirksam sind:

apt-config dump | grep -E 'APT::Periodic|Unattended-Upgrade::Automatic-Reboot'

Bereits installierte Pakete zurücksetzen

Das Deaktivieren macht eine bereits erfolgte Aktualisierung nicht rückgängig. Wenn ein automatisch installiertes Paket ein Problem verursacht, ermittle anhand von /var/log/apt/history.log die genaue Paketversion und prüfe einen versierten Downgrade – veröffentliche keinen generischen, ungetesteten Downgrade-Befehl.

Risiken und typische Fehler

  • Paket-Programm-Verwechslung: Das Paket unattended-upgrades (Plural) mit dem Befehl unattended-upgrade (Singular) verwechseln – achte auf das fehlende -s im Befehl.[3]
  • Intervallwerte missverstehen: "1" und "0" sind Tagesintervalle, keine booleschen Schalter und erst recht keine Uhrzeiten.[1]
  • Syntaxfehler: Fehlende Semikolons oder typografische Anführungszeichen (" statt ") in den Konfigurationsdateien führen zu stillen Fehlern.
  • Automatischen Reboot unterschätzen: Nicht geprüft, ob Zeitzone, angemeldete Benutzer und Dienste-Autostart zum gewählten Zeitpunkt passen.
  • Trockenlauf missverstehen: Ein erfolgreicher Trockenlauf simuliert nur – er installiert kein einziges Paket.
  • Nur den Dienststatus prüfen: Die regelmäßige Ausführung wird nicht von einem Dienst, sondern von den systemd-Timern apt-daily.timer und apt-daily-upgrade.timer angestoßen.[1]
  • Verpasste Timer nicht erkennen: Ein unmittelbar nach dem Einschalten gestarteter APT-Lauf ist kein Fehler – systemd-Timer können verpasste Ausführungen nachholen und verwenden zufällige Verzögerungen, um die Server-Last zu verteilen.

Fertig

Nach erfolgreicher Einrichtung läuft die automatische Sicherheitsupdate-Versorgung im Hintergrund. Fasse kurz zusammen, was du eingerichtet hast:

  1. Täglicher Paketindex-Refresh und Sicherheitsupdate-Installation – aktiviert über 20auto-upgrades.
  2. Gültige Quellen begrenzt – idealerweise nur -security aktiviert in 50unattended-upgrades.
  3. Kein oder bewusst gewählter automatischer Neustart – festgelegt in 50unattended-upgrades oder der lokalen Ergänzungsdatei.
  4. Trockenlauf und Log-Prüfung – bestätigt, dass die Konfiguration funktioniert.

Führe zur abschließenden Funktionsprüfung folgende Befehle aus:

apt-config dump | grep -E 'APT::Periodic|Unattended-Upgrade'
systemctl list-timers apt-daily.timer apt-daily-upgrade.timer
sudo unattended-upgrade --dry-run --verbose
if [ -e /var/run/reboot-required ]; then
  echo "Neustart erforderlich"
  cat /var/run/reboot-required.pkgs 2>/dev/null || true
else
  echo "Derzeit kein Neustart angefordert"
fi

Erfolgskriterien:

  • Beide APT-Periodic-Werte sind auf "1" gesetzt.
  • Beide systemd-Timer sind geladen und besitzen einen nächsten Ausführungszeitpunkt.
  • Der Trockenlauf endet ohne Konfigurations- oder Paketmanagerfehler.
  • Nach dem ersten echten Lauf existiert ein plausibler Logeintrag in /var/log/unattended-upgrades/unattended-upgrades.log.
  • Ein eventuell notwendiger Neustart wird erkannt und von dir eingeplant.