⌕
AnmeldenDabei sein ↗

Tippe mindestens zwei Buchstaben. Pfeiltasten wählen, Enter öffnet.

ANLEITUNG</> Software & Code

Automatische Sicherheitsupdates unter Debian und Ubuntu mit unattended-upgrades

Sicherheitslücken werden schnell ausgenutzt. Mit unattended-upgrades spielt dein Server wichtige Updates selbst ein, räumt alte Kernel auf und startet bei Bedarf nachts neu. So richtest du es ein.

Server mit Aktualisierungs-Symbol, davor Pakete, die in den Server wandern, oben rechts ein Mond für die nächtlichen Updates
Illustration: Spawnpunkt

Ein Server, der monatelang keine Updates bekommt, ist das häufigste Einfallstor bei Homeservern und gemieteten Maschinen. Niemand denkt jeden Tag daran, apt upgrade aufzurufen. Das Paket unattended-upgrades erledigt das selbst: Es installiert täglich Sicherheitsupdates, entfernt alte Pakete und startet den Server auf Wunsch zu einer festen Uhrzeit neu, wenn ein neuer Kernel das verlangt.

Du brauchst: einen Server oder Raspberry Pi mit Debian, Ubuntu oder Raspberry Pi OS und SSH-Zugang mit sudo-Rechten. Zeitaufwand: etwa 10 Minuten.

Schritt 1: Installieren und einschalten

Auf Ubuntu ist das Paket meist schon installiert, auf Debian und Raspberry Pi OS nicht immer. Dieser Befehl schadet in keinem Fall:

bash
sudo apt update
sudo apt install unattended-upgrades apt-listchanges -y

Schalte die automatischen Updates ein. Bestätige die Frage mit Ja:

bash
sudo dpkg-reconfigure -plow unattended-upgrades

Das legt die Datei /etc/apt/apt.conf.d/20auto-upgrades an. Prüfe, ob sie diese zwei Zeilen enthält:

bash
cat /etc/apt/apt.conf.d/20auto-upgrades
text
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Die 1 bedeutet: einmal täglich Paketlisten aktualisieren und Updates installieren.

Schritt 2: Eigene Einstellungen

Die Hauptkonfiguration steht in /etc/apt/apt.conf.d/50unattended-upgrades. Statt diese lange Datei zu bearbeiten, legst du eine kleine eigene Datei an. Sie wird danach gelesen und überschreibt die Standardwerte. Bei Paket-Updates bleibt sie unberührt:

bash
sudo nano /etc/apt/apt.conf.d/52unattended-upgrades-lokal
text
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
EinstellungWirkung
Remove-Unused-Kernel-Packagesalte Kernel löschen, damit /boot nicht vollläuft
Remove-…-Dependenciesnicht mehr benötigte Pakete aufräumen
Automatic-Rebootneu starten, wenn ein Update das verlangt
Automatic-Reboot-TimeUhrzeit für den Neustart

Den automatischen Neustart solltest du nur einschalten, wenn alle Dienste nach einem Neustart von selbst wieder hochkommen. Docker-Container brauchen dafür restart: unless-stopped in der Compose-Datei.

Vier Stationen hintereinander: Paketliste, Update-Paket, Besen zum Aufräumen und ein Mond mit der Uhrzeit 04:00 für den Neustart
Jede Nacht: Paketlisten laden, Sicherheitsupdates installieren, aufräumen und nur wenn nötig um 4 Uhr neu starten.

Schritt 3: Testlauf

Ein Probelauf zeigt, welche Paketquellen berücksichtigt werden und was installiert würde, ohne etwas zu verändern:

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

Achte in der Ausgabe auf die Zeile mit Allowed origins. Dort stehen die Quellen, aus denen Updates automatisch kommen dürfen. Unter Debian sind das standardmäßig die Sicherheitsupdates, unter Ubuntu die Sicherheitsupdates und die Quelle -security der jeweiligen Version.

Schritt 4: Kontrollieren, ob es läuft

Was unattended-upgrades getan hat, steht im Protokoll:

bash
sudo tail -n 30 /var/log/unattended-upgrades/unattended-upgrades.log

Wann der nächste Lauf geplant ist, zeigen die zuständigen Timer:

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

Ob ein Neustart aussteht, verrät diese Datei. Existiert sie, wartet ein Kernel- oder Bibliotheksupdate auf den Neustart:

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

Was nicht automatisch aktualisiert wird

unattended-upgrades kümmert sich nur um Pakete aus apt. Docker-Container aktualisierst du selbst, zum Beispiel einmal pro Woche in jedem Compose-Ordner:

bash
docker compose pull
docker compose up -d
docker image prune -f

Auch Programme, die du per Skript, Snap, Flatpak oder aus dem Quellcode installiert hast, haben eigene Update-Wege. Plane dafür einen festen Termin im Kalender ein.

✓ Fazit
  • unattended-upgrades installieren und mit dpkg-reconfigure einschalten
  • Eigene Einstellungen in einer separaten Datei, nicht in 50unattended-upgrades
  • Alte Kernel automatisch entfernen, Neustart nachts nur bei Bedarf
  • Mit --dry-run --debug testen und im Protokoll kontrollieren
  • Docker-Container und andere Installationen separat aktualisieren

Wie hältst du deine Server aktuell? Tausch dich in der Community über deine Update-Routine aus.

Quellen

Kommentare

Noch keine Kommentare. Was meinst du dazu?

Mitreden? Melde dich an, um zu kommentieren.

Frage stellen

Spawnpunkt bindet keine Dienste von Drittanbietern ein. Alles, was du hier erlaubst, bleibt auf meinem eigenen Server.