# needrestart: Dienste nach Updates neu starten

# needrestart: Dienste nach Updates neu starten

<table id="bkmrk-stand11.11.2026-%C2%B7-re" style="border-collapse: collapse; width: 100%; margin-bottom: 16px;"><colgroup><col style="width: 28%;"></col><col></col></colgroup><tbody><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px; width: 28%; font-weight: bold;">**Stand**

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">11.11.2026 · Repo

`<span class="editor-theme-code">ansible-infra</span>`

, Commit

`<span class="editor-theme-code">3259b6a</span>`

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px; font-weight: bold;">**Zabbix-Template**

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Template Security needrestart (Gruppe Admin-gerds), auf allen Hosts

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px; font-weight: bold;">**Geltungsbereich**

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Alle Server aus

`<span class="editor-theme-code">inventory/hosts.yml</span>`

</td></tr></tbody></table>

## 1. Zweck

Automatische Updates tauschen Bibliotheken (z. B. OpenSSL) auf der Platte aus. Laufende Dienste wie nginx, MariaDB oder OpenLDAP nutzen aber weiter die alte Fassung im Speicher, bis sie neu starten. Ohne Neustart ist das Sicherheitsupdate installiert, aber nicht wirksam. needrestart startet nach jedem Update genau die betroffenen Dienste neu.

## 2. Regeln

<table id="bkmrk-dienstverhaltennorma" style="border-collapse: collapse; width: 100%;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background-color: rgb(31, 78, 121); color: rgb(255, 255, 255);"><th class="align-left" style="border: 1px solid rgb(191, 191, 191); padding: 6px; text-align: left;">Dienst

</th><th class="align-left" style="border: 1px solid rgb(191, 191, 191); padding: 6px; text-align: left;">Verhalten

</th></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Normale Dienste, Datenbanken, OpenLDAP, Agenten

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Automatischer Neustart nach jedem Update (unattended-upgrades und manuelles apt)

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">`<span class="editor-theme-code">docker</span>`

,

`<span class="editor-theme-code">containerd</span>`

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Nur melden. Neustart würde alle Container stoppen.

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">`<span class="editor-theme-code">wazuh-indexer</span>`

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Nur melden. Start dauert Minuten, Ausfall legt das SIEM lahm.

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">`<span class="editor-theme-code">dbus</span>`

,

`<span class="editor-theme-code">systemd-logind</span>`

,

`<span class="editor-theme-code">unattended-upgrades</span>`

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Nur melden (Vorgabe von needrestart). Erledigt sich mit dem nächsten Neustart des Servers.

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Container-Inhalte

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Nicht betroffen. Aktualisierung über neue Images (siehe Trivy).

</td></tr></tbody></table>

## 3. Zabbix

<table id="bkmrk-itembedeutungalarmdi" style="border-collapse: collapse; width: 100%;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr style="background-color: rgb(31, 78, 121); color: rgb(255, 255, 255);"><th class="align-left" style="border: 1px solid rgb(191, 191, 191); padding: 6px; text-align: left;">Item

</th><th class="align-left" style="border: 1px solid rgb(191, 191, 191); padding: 6px; text-align: left;">Bedeutung

</th><th class="align-left" style="border: 1px solid rgb(191, 191, 191); padding: 6px; text-align: left;">Alarm

</th></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Dienste mit veralteten Bibliotheken

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Anzahl, die noch auf Handarbeit warten

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">keiner (Information)

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">seit 7 Tagen veraltet

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">davon seit mindestens 7 Tagen offen

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">WARNING bei &gt; 0

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">letzter Status

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Zeitpunkt des letzten stündlichen Laufs

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">WARNING nach 3 Stunden ohne Status

</td></tr></tbody></table>

## 4. Was tun bei Alarm

1. Auf dem Host nachsehen: `<span class="editor-theme-code">cat /var/log/needrestart-services.list</span>` (Dienst und „seit“).
2. `<span class="editor-theme-code">dbus</span>`, `<span class="editor-theme-code">systemd-logind</span>`, `<span class="editor-theme-code">systemd-manager</span>`: Server neu starten (Contabo vorher Snapshot).
3. `<span class="editor-theme-code">docker</span>`, `<span class="editor-theme-code">containerd</span>`: im Wartungsfenster `<span class="editor-theme-code">systemctl restart docker</span>`, danach Container prüfen.
4. `<span class="editor-theme-code">wazuh-indexer</span>`: im Wartungsfenster `<span class="editor-theme-code">systemctl restart wazuh-indexer</span>`, danach Dashboard prüfen.

Alarm „kein Status seit 3 Stunden“: `<span class="editor-theme-code">/usr/local/bin/needrestart-status.sh</span>` von Hand starten, Fehlermeldung ansehen, Cronjob prüfen (`<span class="editor-theme-code">crontab -l</span>` als root).

## 5. Technik

<table id="bkmrk-einstellung%2Fetc%2Fneed" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 28%;"></col><col></col></colgroup><tbody><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px; width: 28%; font-weight: bold;">**Einstellung**

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">`<span class="editor-theme-code">/etc/needrestart/conf.d/50-autorestart.conf</span>`

 (Automatik, Ausnahmen)

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px; font-weight: bold;">**Auslöser**

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">apt-Hook

`<span class="editor-theme-code">/etc/apt/apt.conf.d/99needrestart</span>`

 nach jedem Update

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px; font-weight: bold;">**Status für Zabbix**

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">`<span class="editor-theme-code">/usr/local/bin/needrestart-status.sh</span>`

, stündlich Minute 17 per Cron. Schreibt

`<span class="editor-theme-code">/var/log/needrestart-services.txt</span>`

,

`<span class="editor-theme-code">.list</span>`

 und

`<span class="editor-theme-code">/var/log/needrestart-stale.txt</span>`

. Merkt sich das erste Auftreten je Dienst in

`<span class="editor-theme-code">/var/lib/needrestart-status/first-seen.txt</span>`

.

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px; font-weight: bold;">**Ansible**

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">`<span class="editor-theme-code">playbooks/setup_needrestart.yml</span>`

 (nur mit

`<span class="editor-theme-code">--limit</span>`

, startet selbst nichts neu). Teil von

`<span class="editor-theme-code">playbooks/site.yml</span>`

.

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px; font-weight: bold;">**Neuer Server**

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">In

`<span class="editor-theme-code">inventory/hosts.yml</span>`

 eintragen,

`<span class="editor-theme-code">ansible-playbook playbooks/site.yml --limit <server></span>`

, in Zabbix Template verknüpfen.

</td></tr><tr><td style="border: 1px solid rgb(191, 191, 191); padding: 6px; font-weight: bold;">**Ausnahme ändern**

</td><td style="border: 1px solid rgb(191, 191, 191); padding: 6px;">Nur im Repo (

`<span class="editor-theme-code">files/needrestart-autorestart.conf</span>`

), Test auf zwei Servern, dann ausrollen.

</td></tr></tbody></table>