unattended-upgrades: automatische Sicherheitsupdates für Debian
Debian installiert Sicherheitsupdates automatisch: unattended-upgrades einrichten, den Neustart steuern und prüfen, dass es wirklich läuft.
Inhaltsverzeichnis
„Denk dran, wöchentlich Updates einzuspielen" – dieser Satz aus den Wartungsabschnitten der anderen Tutorials ist der erste, den man vergisst. Genau deshalb übernimmt das ab jetzt der Server selbst: unattended-upgrades installiert Sicherheitsupdates automatisch. Das schließt die gefährlichste Lücke im Selfhosting – den Server, der monatelang ungepatcht läuft.
Was bauen wir?
Am Ende zieht dein Debian 13 täglich automatisch Sicherheitsupdates und installiert sie ohne dein Zutun. Du entscheidest, ob und wann der Server für nötige Kernel-Updates neu startet, und weißt, wie du überprüfst, dass der Automatismus wirklich greift. Automatisiert werden Sicherheitsupdates und die konservativen Stable-Punktreleases; größere Upgrades deiner übrigen Software bleiben bewusst in deiner Hand.
Voraussetzungen
- Ein abgesicherter Server mit aktiver Firewall
Schritt für Schritt
Schritt 1: Paket installieren
sudo apt update
sudo apt install -y unattended-upgrades apt-listchangesapt-listchanges zeigt bei Updates die Changelogs – nützlich, wenn du später doch
manuell nachsiehst, was sich geändert hat.
Schritt 2: Automatik aktivieren
Der einfachste Weg, die tägliche Ausführung einzuschalten:
sudo dpkg-reconfigure -plow unattended-upgradesWähle im Dialog Ja. Das legt die Datei /etc/apt/apt.conf.d/20auto-upgrades mit
diesem Inhalt an:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";Die 1 bedeutet „täglich": Paketlisten aktualisieren und unbeaufsichtigte
Upgrades ausführen. Ausgelöst wird das über die systemd-Timer apt-daily.timer
(Paketlisten) und apt-daily-upgrade.timer (Upgrade-Lauf) – kein eigener
Cronjob nötig.
Schritt 3: Festlegen, was aktualisiert wird
Wirf einen Blick in /etc/apt/apt.conf.d/50unattended-upgrades:
sudo nano /etc/apt/apt.conf.d/50unattended-upgradesAuf Debian 13 sind im Block Origins-Pattern standardmäßig drei Quellen aktiv:
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${distro_codename},label=Debian";
"origin=Debian,codename=${distro_codename},label=Debian-Security";
"origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
};Die beiden Debian-Security-Zeilen sorgen für zeitnahe Sicherheitsupdates – der
eigentliche Zweck. Die erste Zeile (label=Debian) deckt die konservativen
Stable-Updates ab, die nur bei Debian-Punktreleases nachrücken; sie ist also kein
Risiko-Rolling-Update, sondern gut abgehangen. Wer wirklich ausschließlich
Security-Updates will, kommentiert die erste Zeile mit // aus.
Zwei Optionen lohnt es, hier explizit zu setzen. Alte Kernel/Pakete automatisch
aufräumen, sonst läuft irgendwann /boot voll (Remove-Unused-Kernel-Packages
ist code-seitig zwar schon der Default, steht in der Datei aber nur auskommentiert –
explizit gesetzt ist die Entscheidung dokumentiert):
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";Und der wichtigste Punkt – der automatische Neustart:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";Automatischer Neustart – bewusst entscheiden
Automatic-Reboot "true" startet der Server dann selbstständig – setze dabei immer
eine Automatic-Reboot-Time: Ohne sie startet der Server sofort nach dem
Upgrade-Lauf neu (der Code-Default ist "now"; die 02:00 in der Beispieldatei sind
nur ein auskommentierter Vorschlag). Wähle eine Zeit mit geringer Nutzung. Willst du
keine automatischen Neustarts, lass die Option auf "false" und starte selbst neu,
wenn /var/run/reboot-required existiert. Beides ist vertretbar – nur eine bewusste
Entscheidung muss es sein.Damit der automatische Neustart auf Debian überhaupt auslösen kann, fehlt noch ein
Baustein: unattended-upgrades startet nur dann neu, wenn die Markierungsdatei
/var/run/reboot-required existiert – und die legt Debian 13 bei Kernel-Updates von
Haus aus nicht an (den zuständigen Hook liefert ein Ubuntu-Hilfspaket, das es in
Debian nicht gibt; nur einzelne Pakete wie dbus setzen die Datei selbst). Ein
Zweizeiler schließt die Lücke:
sudo tee /etc/kernel/postinst.d/zz-reboot-required > /dev/null <<'EOF'
#!/bin/sh
touch /var/run/reboot-required
EOF
sudo chmod +x /etc/kernel/postinst.d/zz-reboot-requiredDer Hook läuft nach jeder Kernel-Installation und setzt die Markierungsdatei. Ab jetzt
funktionieren sowohl Automatic-Reboot als auch der manuelle Blick auf
/var/run/reboot-required zuverlässig – ohne den Hook würde der automatische Neustart
bei Kernel-Updates schlicht nie ausgelöst.
Schritt 4: Einen Probelauf machen
Ohne echte Installation testen, was unattended-upgrades tun würde:
sudo unattended-upgrade --dry-run --debugIn der Debug-Ausgabe ist diese Zeile entscheidend (auf einem frischen Debian 13, gekürzt):
Allowed origins are: origin=Debian,codename=trixie,label=Debian, origin=Debian,codename=trixie,label=Debian-Security, origin=Debian,codename=trixie-security,label=Debian-Security
[...]
No packages found that can be upgraded unattended and no pending auto-removalsDort müssen die Debian-Security-Quellen auftauchen. Steht dort etwas, greift die Konfiguration; findet der Lauf nichts zu tun (wie oben), ist schlicht gerade kein Sicherheitsupdate offen.
Wenn es nicht funktioniert
Symptom: Der Probelauf meldet No packages found that can be upgraded unattended.
Ursache & Lösung: Meist völlig normal – aktuell steht kein Sicherheitsupdate an.
Prüfe die Konfiguration trotzdem über die Allowed origins are:-Zeile im
--debug-Lauf. Erscheinen dort keine Security-Origins, stimmt das Origins-Pattern
aus Schritt 3 nicht.
Symptom: Updates kommen, aber der Server startet trotz Kernel-Update nie neu.
Ursache & Lösung: Entweder steht Automatic-Reboot auf "false" (Standard) –
dann auf "true" setzen (Schritt 3) – oder die Markierungsdatei wird nie gesetzt,
weil der Kernel-Hook /etc/kernel/postinst.d/zz-reboot-required aus Schritt 3 fehlt.
Ohne ihn legt Debian /var/run/reboot-required bei Kernel-Updates nicht an, und der
automatische Neustart löst nie aus.
Symptom: /boot läuft voll, Updates schlagen fehl.
Ursache & Lösung: Alte Kernel häufen sich an. Remove-Unused-Kernel-Packages "true"
setzen (Schritt 3); einmalig aufräumen mit sudo apt autoremove --purge.
Symptom: Ein Paket wird hartnäckig zurückgehalten (kept back).
Ursache & Lösung: unattended-upgrades installiert keine Updates, die andere
Pakete entfernen würden. Solche Fälle löst du bewusst von Hand mit
sudo apt upgrade und prüfst, was passiert.
Wartung & Backups
- Trotzdem draufschauen: Automatik ersetzt nicht die Aufmerksamkeit. Wirf
monatlich einen Blick ins Log
/var/log/unattended-upgrades/unattended-upgrades.logund lauf ab und zusudo apt update && sudo apt upgradefür die nicht sicherheitskritischen Updates. - Reboots einplanen: Wenn du automatische Neustarts nutzt, sorge dafür, dass
deine Dienste einen Reboot sauber überstehen (
restart: unless-stoppedin Docker Compose, falls du Container betreibst). - Kein eigenes Backup nötig, aber halte fest, ob du automatische Reboots aktiviert hast – das erklärt später, warum der Server nachts kurz weg war.
Zuletzt aktualisiert: 19.07.2026
Feedback per E-Mail: feedback@serverkueche.de
Das könnte dir auch schmecken

SSH-Zugang absichern
Schlüssel-Login statt Passwort und root-Login sperren: die wichtigsten Handgriffe, um die Eingangstür zu deinem Server …

Docker auf Debian installieren
Docker Engine und Docker Compose sauber aus dem offiziellen Repository installieren – die Basis für die meisten …

Erste Schritte mit einem netcup VPS
Vom bestellten Server zum einsatzbereiten System: SSH-Login, Updates, ein sudo-Benutzer und die wichtigsten Handgriffe …