Tagesbetrieb

Die wiederkehrenden und seltenen Aufgaben nach der Installation sowie Prüflisten mit erwarteten Ergebnissen für jeden Arbeitsschritt.

Überblick

Dieses Kapitel fasst die Aufgaben nach der Installation in der Reihenfolge zusammen, in der sie dir begegnen. Jeder Abschnitt nennt das kurze Vorgehen und verweist auf das Kapitel mit allen Regeln. Befehle laufen als root; Platzhalter wie in Installation.

Backups und Wiederherstellung

Nova hält Kunden-Backups auf dem Node, der die Ressource betreibt: Website-Backups (auf Anforderung), Datenbank-Backups (auf Anforderung und per Richtlinie) und Postfach-Backups (auf Anforderung und über den täglichen Timer). Wiederherstellungen werden bereitgestellt, geprüft und dann ausgetauscht. Alle Details: Backups.

  1. Website-Backups aktivieren – einmal pro Web-Node (Server-Schlüssel, dann die Capability), dann native_web.website_backup_enabled per Rekonfiguration. Sichere den Server-Schlüssel offline: Ohne ihn lässt sich kein Website-Backup wiederherstellen.
  2. Aufbewahrung läuft stündlich auf dem Control-Host (nova-application-backup-retention.timer) und löscht nie die letzte bekannte gute Kopie.
  3. Wiederherstellen im Panel (Backup-Liste der Ressource) oder per API (POST /web/sites/{nws}/restores, POST /mail/mailboxes/{nmb}/restores, POST /databases/{id}/restores); danach die Operation prüfen (GET /operations/{op}).
  4. Downloads (Profil v28, native_backup_download; bei Neuinstallationen standardmäßig an, durch Upgrades unverändert) erlauben Benutzern, eine Kopie vom Node mitzunehmen.

Wichtig: Off-Site-Backups gehören nicht zum Umfang von Version 1.0. Nova kopiert Backups nicht vom Node weg; ein verlorener Node nimmt seine Backups mit. Sichere selbst, verschlüsselt und außerhalb des Hosts: Installer-Eingaben und Profile, die PKI der Agent-Fabric und des Workspace, /etc/nova-controlpanel/ und /etc/nova-controlpanel-node-agent/ (mit dem Website-Backup-Schlüssel und dem DNS-Verschlüsselungsschlüssel), einen mariadb-dump der Application-Datenbank, den Operations-Speicher, Installations-ID und Lizenz sowie die Kundendaten und Backup-Verzeichnisse der Nodes. Teste mindestens einmal pro Quartal eine Wiederherstellung deiner eigenen Backups auf einem separaten Host.

Einen verlorenen Node aufgeben

Ein endgültig verlorener Node (Hardwareverlust, gelöschter Server, Host unter anderer ID neu registriert) lässt sich nie leeren, deshalb verweigert der normale Topologiewechsel seine Entfernung. Gib ihn zuerst ausdrücklich auf. Vollständiges Verfahren und Codes: Wiederherstellung.

  1. Stelle sicher, dass er wirklich verloren ist. Das Aufgeben wird verweigert, solange der Node innerhalb der Mindeststille Kontakt hatte (Standard 3600 s, mindestens 900 s), und für den Control-Plane-Node.
  2. Erstelle einen Plan (nur lesend): was jeder Mandant verliert und was die Entfernung noch blockieren würde (Befehl unten).
  3. Informiere die betroffenen Kunden (der Plan listet sie pro Mandant).
  4. Gib den Node auf – per Kommandozeile oder im Panel (POST /fleet-node-abandonments, Step-up-Capability platform.node.abandon). Der Node wird in Operations widerrufen, seine offenen Operationen werden abgebrochen, jede an ihn gebundene Ressource wird als verloren abgerechnet (Tombstones), und der Verlust wird pro Mandant auditiert.
  5. Wiederhole plan, bis awaiting_settlement 0 ist und remaining leer.
  6. Entferne den Node mit einem normalen Topologiewechsel (siehe Anleitungen).
  7. Lege verlorene Ressourcen bei Bedarf aus deinen eigenen Backups auf einem lebenden Node neu an. Ein Ersatz-Host ist ein neuer Node mit neuer ID (Node hinzufügen, dann Topologiewechsel); solange beide existieren, muss die Lizenz die Node-Anzahl abdecken.
sh
cd /opt/nova-controlpanel/application/current
php src/api/bin/native-node-abandon.php plan  "$NODE" /etc/nova-controlpanel/application-runtime.json /etc/nova-controlpanel/secrets/database-password
php src/api/bin/native-node-abandon.php apply "$NODE" /etc/nova-controlpanel/application-runtime.json \
    /etc/nova-controlpanel/secrets/database-password --confirm="$NODE" --minimum-silence-seconds=3600

Zertifikate, Widerruf und Node-Zulassung

Bestand, Erneuerungsbefehle und die manuelle CA-Rotation: Zertifikate.

AufgabeBefehl
Ablauf prüfennova-agent-fabric.sh status "$PKI" /etc/nova-controlpanel/operations/agent-coordinator /etc/nova-controlpanel-node-agent --warn-days=60; nova-panel-certificate.sh status --warn-days=30; Panel Betrieb & Diagnose → Fleet & Agenten
Fabric-Zertifikate eines Nodes erneuern (ohne Ausfall)node-renew-request (Node), node-renew-sign (Control), node-renew-install (Node), node-renew-register (Control), node-renew-finish (Node)
Coordinator-Zertifikat erneuerncoordinator-renew, coordinator-renew-install
Panel-Zertifikat ersetzennova-panel-certificate.sh check CERT KEY, dann replace CERT KEY (rollback tauscht zurück)
Agent-CA rotierenmanuell, nur als Ablauf beschrieben
Node widerrufenOPERATIONS_DATABASE=/var/lib/nova-controlpanel/operations/operations.sqlite php /opt/nova-controlpanel/operations/bin/agent-node.php revoke NODE_ID

Was Node-Zulassung für dich bedeutet. Der Coordinator und die internen mTLS-Listener der Application (Secret-Leases auf der Fleet-Adresse, Backup-Exporte) lassen einen Node nur zu, wenn:

  • er in der Operations-Registry bekannt und active ist;
  • es keinen Aufgabe-Eintrag für ihn gibt;
  • nur am Agent-Coordinator: der SHA-256-Fingerprint des vorgelegten Agent-Zertifikats genau der aktuell für ihn registrierte ist.

Die Secret-Lease-Listener sehen zweckgebundene Lease-Client-Zertifikate (eine CA pro Zweck), nie das Agent-Zertifikat; sie entscheiden deshalb allein anhand des Nodes. Ein Zertifikat, das noch zu einer Fleet-CA führt, genügt also nicht mehr, sobald sein Node widerrufen oder aufgegeben ist. Nichts wird zwischengespeichert; die Wirkung tritt mit der nächsten Anfrage ein.

  • Widerruf wirkt sofort und dauerhaft für diese Node-ID: Ein widerrufener Node wird nie wieder registriert (AGENT_ENROLLMENT_NODE_REVOKED). Widerrufe einen kompromittierten Node sofort, gib ihn dann auf oder entferne ihn aus der Topologie; den Host bringst du nur unter einer neuen Node-ID zurück.
  • Erneuerung stellt den Pin bei node-renew-register um. Bis dahin nutzt der Node sein altes Zertifikat und probiert bei Ablehnung das bereitgestellte – kein Poll geht verloren. Ein ausrotiertes Agent-Zertifikat lehnt der Coordinator ab; ein ausrotiertes Lease-Zertifikat eines aktiven Nodes bleibt bis zu seinem Ablauf oder dem Widerruf des Nodes nutzbar.
  • Eine Ablehnung ist ein 403 (AUTHORIZATION_DENIED bei Leases, NODE_IDENTITY_REQUIRED bei Exporten), auditiert als internal.node-admission.refused mit dem Grund (NATIVE_NODE_ADMISSION_UNKNOWN, _REVOKED, _ABANDONED, _INACTIVE, _CERTIFICATE_MISMATCH, _IDENTITY_INVALID). Kann die Registry nicht antworten, erhält die Anfrage ein wiederholbares 503.

Die Lease-Client-CAs lassen sich noch nicht rotieren, weil der Application-Installer die CA jedes Listeners über ihren SHA-256 pinnt (client_ca_sha256). Auf neuen Installationen gelten sie 3650 Tage.

Support-Bundle und Fehlerreferenz

Wenn ein Benutzer einen Fehler meldet:

  1. Frag nach der Referenz in der Fehlermeldung (Technische Referenz, req_ plus 32 Hex-Zeichen; zu einer brw_...-Referenz gibt es keinen Server-Trace).
  2. Schlag sie auf dem Control-Host nach (Befehl unten). Ausgegeben werden die Anfrage (Route, Status, öffentlicher und interner Fehlercode), die erzeugten Operationen mit den Ergebnissen der Node Agents und Workspace-Jobs. Exit 3 bedeutet unbekannt oder älter als 30 Tage. Administratoren können dasselbe im Panel tun (Support-Referenzen).
  3. Sammle auf jedem beteiligten Host ein bereinigtes Bundle. Das Archiv (nova-support-<host>-<UTC time>.tar.gz, 0600, standardmäßig in /root) enthält nie Secrets, Schlüssel, das Profil, Sitzungen, Mails, Website-Dateien oder Datenbankzeilen; ein abschließender Scanner verweigert das ganze Bundle (Exit 3), wenn etwas wie ein Secret aussieht. Lies SUMMARY.txt, bevor du es weitergibst.
sh
php /opt/nova-controlpanel/application/current/src/api/bin/nova-support-reference.php req_<32 hex>
nova-support-bundle --since 2h [--reference req_<32 hex>] [--output DIR]

Details: Fehlersuche.

Web-Statistik (Beta) neben AWStats

AWStats (oder Webalizer) bleibt die Standardstatistik von Version 1.0. Die Nova-Beta zählt zusätzlich pro Website und Tag, datenschutzfreundlich (gekürzte Adressen, täglich gesalzene Besucherskizze, keine gespeicherten Rohlogzeilen). Ausführlich: Anleitungen.

  1. Pro Website aktivieren: Panel Website → Bearbeiten → „Nova-Statistik (Beta) zusätzlich erfassen“ oder PATCH /api/next/v1/web/sites/{id} mit config.statistics.nova_beta: true.
  2. Der Node braucht die lesende Capability web.statistics.collect. Neue Registrierungen erhalten sie; ältere Nodes bekommen sie, wenn das Upgrade auf dieses Release akzeptiert wird. Ein Eintrag in NOVA_AGENT_WRITE_CAPABILITIES ist nicht nötig.
  3. Nach der ersten Nacht prüfen: auf dem Web-Node systemctl status nova-controlpanel-web-statistics.service (Quittung mit einem nova_beta-Objekt: processed, failed, forgotten); auf dem Control-Host systemctl status nova-application-web-statistics.service (submitted, days_recorded, unavailable).
  4. Mindestens eine Woche mit AWStats vergleichen: Seitenaufrufe und Bytes sollten wenige Prozent vom „viewed“-Traffic in AWStats abweichen; eindeutige Besucher liegen bewusst niedriger. Halte den Vergleich fest – er ist die Grundlage, AWStats in Version 1.1 abzulösen.

PDF-Vorschau im Workspace

PDF-Vorschauen werden im Browser mit dem mitgelieferten Mozilla pdf.js gerendert; der Server rendert keine PDFs mehr, und kein Host braucht Ghostscript (Workspace).

  • Das Panel liefert /nova/assets/vendor/pdfjs-6.3.289/pdf.min.mjs als text/javascript aus. Zeigt eine Vorschau WORKSPACE_PREVIEW_PDF_ENGINE_UNAVAILABLE, prüfe nach einem Upgrade den Typ und den Browser-Cache.
  • Dateien über 8 MB (WORKSPACE_PREVIEW_PDF_TOO_LARGE), passwortgeschützte PDFs und Nicht-PDF-Dateien erhalten einen Hinweis „nur Download“; der Download selbst funktioniert.
  • Nach akzeptiertem Upgrade kannst du Ghostscript von Hosts entfernen, die es hatten (Updates).

Lesbare Website-Pfade

Die Dateien einer Website bleiben in ihrem internen Speicher /var/www/nova-controlpanel/wst_<ref>/ (web/, private/, tmp/). Ihr Web-Node hält zusätzlich lesbare Pfade vor: root-eigene Symlinks auf dieses Verzeichnis, die die Web-Engine des Node Agents mit der Website pflegt.

PfadFürAngelegt / geändert / entfernt
/var/www/clients/<customer>/<domain>jede Website (der Pfad, den das Panel unter Website → Lesbarer Pfad mit Kopierschaltfläche zeigt; die Lese-API liefert ihn als readable_path)mit der Website; verschoben bei Domain-Umbenennung und bei Wechsel des Mandanten (Kundennummer); bleibt erhalten, solange die Website deaktiviert ist; entfernt mit der Website
/var/www/<domain>jede Websiteebenso
/var/www/clients/clientN/webNnur Websites, die von der Legacy-Basis umgezogen sindangelegt beim Cutover des Imports, entfernt durch dessen Fallback und mit der Website (Umzug)
  • <customer> ist die Kundennummer des Mandanten in pfadsicherer Form (Zeichen außer A-Z a-z 0-9 . _ - werden zu -, höchstens 64 Zeichen). Ein Mandant ohne Kundennummer oder mit einem Wert, der wie ein clientN-Verzeichnis aussieht, erhält eine stabile generierte Nummer n plus 10 Ziffern, abgeleitet aus seiner Mandanten-ID; sie wird einmal vergeben und ändert sich nie. Eine Kundennummer sieht deshalb nie wie clientN aus, und lesbare Pfade kollidieren unter /var/www/clients nie mit den Pfaden umgezogener Websites.
  • <domain> ist die primäre Domain der Website. Bei einer Umbenennung entsteht der neue Pfad, bevor der alte entfernt wird.
  • Die Elternverzeichnisse gehören root: /var/www/clients mit 0755, /var/www/clients/<customer> und .../clientN mit 0711. So kann jeder Site-Benutzer zu seinen eigenen Pfaden navigieren, aber niemand die Websites eines anderen Mandanten auflisten.
  • PHP braucht keinen zusätzlichen open_basedir-Eintrag: PHP prüft den aufgelösten echten Pfad, und jeder Alias zeigt in die eigenen Verzeichnisse der Website (Sicherheit). In einem PHP-FPM-Chroot oder einer Jailkit-Shell gibt es die Aliase nicht; dort gilt die Jail-Sicht /web, /private, /tmp.
  • Kollisionen werden abgelehnt, nie überschrieben. Existiert ein gewünschter Pfad bereits als etwas anderes als der eigene Symlink dieser Website (Verzeichnis, Datei, fremder Symlink, Alias einer anderen Website), oder ist ein Elternverzeichnis kein root-eigenes, nur für root beschreibbares Verzeichnis, verweigert der Node Agent die Operation der Website vor jeder Wirkung mit NOVA_WEB_PATH_ALIAS_COLLISION. Andere Websites desselben Nodes arbeiten weiter; der übersprungene Pfad steht unter collisions in /var/lib/nova-controlpanel-agent/web-state/path-aliases.json. Behebung: den vorhandenen Pfad auf dem Node wegverschieben (ls -la /var/www/<domain>), dann die Website mit Mit Node abgleichen abgleichen.
  • Zustand des Nodes: /var/lib/nova-controlpanel-agent/web-state/path-aliases.json (0600) listet pro Website ihr Segment, den Legacy-Pfad einer umgezogenen Website, die angelegten Links und die Kollisionen.

Bestehende Installationen. Nach dem Update legt jeder Apply der Web-Engine auf einem Node /var/www/<domain> für alle Websites dieses Nodes an. Der Web-Settlement-Worker (nova-principal-web-settlement-worker, bei jedem Tick) schickt jeder abgerechneten Website, deren letzte Operation noch nicht ihr aktuelles Kundensegment trug, einen Abgleich über den normalen Web-Pfad (höchstens 25 pro Tick; die Quittung nennt path_backfill: submitted, current, deferred, refused). Eine Website mit laufender Operation wartet. Ein abgelehnter Abgleich (etwa wegen einer Kollision) wird erst wiederholt, wenn sich Website oder Segment ändern – behebe also die Kollision und gleiche die Website ab. Derselbe Mechanismus verschiebt die Pfade aller Websites eines Mandanten, dessen Kundennummer geändert wurde.

Die Unit der Web-Engine schreibt nach /var/www (ReadWritePaths); der interne Speicher bleibt /var/www/nova-controlpanel.

Ein später hinzugekommener Node

Ein Node, der nach der Installation zur Fleet kommt (neuer Web-, Mail-, Datenbank- oder DNS-Node), blockiert keine globalen Konfigurations- oder Direktiven-Schreibvorgänge mehr: Der nächste Schreibvorgang bezieht ihn als initialen Apply ein, auch nach einem fehlgeschlagenen ersten Apply.

Wichtig: Speichere nach dem Hinzufügen eines Servers jeden Abschnitt der globalen Konfiguration und jede Direktive einmal, damit der neue Node die aktuellen Werte erhält. Bis dahin läuft er mit Standardwerten. Eine automatische Übernahme beim Beitritt ist in Version 1.0 noch nicht enthalten.

Routineprüfungen

IntervallPrüfung
täglich (Monitoring)nova-agent-fabric.sh status ... --fail-on-warning, nova-panel-certificate.sh status --fail-on-warning, systemctl --failed, nova-update status
wöchentlichnova-update license status; das Banner im Dashboard; journalctl -u nova-application-backup-retention.service
monatlichBetriebssystem-Updates (Updates) und die Prüfliste „Nach einem Neustart“ unten
vierteljährlichWiederherstellungstest deiner eigenen Backups auf einem separaten Host

Prüflisten

Arbeite nach jedem Verfahren die passende Prüfliste ab. Jede Zeile ist ein Befehl mit dem erwarteten Ergebnis. Es gelten J=/var/lib/nova-controlpanel/installer/combined/transaction.json sowie PANEL/FLEET/PORT wie in Installation. Ein kleiner Helfer für das Journal:

sh
journal(){ python3 -c "import json;j=json.load(open('$J'));print(j['state'],j.get('operation'),j['completed'],j['accepted'])"; }

Host-Vorbereitung

PrüfungErwartet
. /etc/os-release; echo $ID $VERSION_ID $VERSION_CODENAMEubuntu 24.04 noble oder debian 13 trixie
cat /etc/nova-controlpanel/host-platformnova-controlpanel-host-platform:<platform>:apache
php $SRC/src/api/bin/nova-installer-inputs.php verify $INExit 0
python3 nova-fleet-network.py detect"address": "<private address>", "source": "interface" (Einzelhost: "127.0.0.1", "source": "loopback")
pgrep -a unattendedkeine Ausgabe
Web-Nodes: lsblk -f <device>kein Dateisystem auf dem Quota-Gerät vor dem Setup

Neuinstallation

PrüfungErwartet
Installer-AusgabePASS: combined Nova runtime installed and verified; ..., dann ... verified, dann ... accepted; ...
journalaccepted None ['operations', 'host', 'bridge', 'node', 'database', 'owner', 'application'] ['application', 'node', 'bridge', 'operations']
systemctl is-active apache2@nova apache2 mariadb php8.3-fpm (8.4 unter Debian)alle active
systemctl is-enabled apache2@novaenabled
APACHE_CONFDIR=/etc/apache2-nova apache2ctl configtestSyntax OK
ls /etc/apache2-nova/sites-enabled/nova-controlpanel.conf, nova-controlpanel-operations-native.conf (und die internen Listener-Sites, sobald vorbereitet)
ls /etc/apache2/sites-enabled/nova-controlpanel*.confkeine solche Datei (die Control Plane läuft nicht mehr im Kunden-Webserver)
runuser -u www-data -- test -w /run/php/nova-controlpanel.sock && echo WRITABLEkeine Ausgabe (Socket isoliert)
curl -sk -o /dev/null -w '%{http_code}\n' https://$PANEL:$PORT/api/next/v1/me401 (erreichbar, Anmeldung erforderlich)
Panel-Anmeldung als Ownergelingt (POST /api/next/v1/native-identity/browser-session antwortet 204)
readlink -f /opt/nova-controlpanel/application/current/opt/nova-controlpanel/application/releases/<commit16>-<archive16>

Lizenz (vor dem zweiten Node)

PrüfungErwartet
ls -l /etc/nova-controlpanel/installation.json-rw-r----- root nova-controlpanel
nova-update license show-idncpi_ plus 26 Zeichen
nova-update license status vor der LizenzLICENSE COMMUNITY: edition community, nodes 1 of 1
nova-update license install FILE, dann statusINSTALLED: license <id> (subscription, <n> node(s)), dann LICENSE ACTIVE: ... nodes <used> of <n>
Panel Einstellungen › Lizenz (Owner)dieselbe Lizenz; kein Banner im Dashboard

Agent-Fabric und Nodes

PrüfungErwartet
Ausgabe von coordinator-configureenthält "activation":"activated" (oder "present", wenn unverändert)
grep ^OPERATIONS_AGENT_COORDINATOR_BIND= /etc/nova-controlpanel/operations/agent-coordinator.envOPERATIONS_AGENT_COORDINATOR_BIND=<FLEET>:19443
systemctl is-enabled nova-controlpanel-operations-agent-coordinatorenabled
ss -ltn | grep ':19443 'ein Listener auf <FLEET>:19443
grep -E '_URL=|^NOVA_SECRET_LEASE_PEER_NAME=' /etc/nova-controlpanel-node-agent/runtime.envLease-URLs auf https://<FLEET>:<port>, Peer-Name = Panel-Name
node-request, node-sign, node-installJSON-Zeilen mit "status":"requested", "signed", "installed" und demselben agent_fingerprint
node-register"status":"active", "action":"registered", die Rollen und Server-ID des Nodes und seine Contract-Capabilities
nova-node-bootstrap.php bootstrap{"node":{...,"lifecycle_state":"active"},"schema":"nova.native-node-bootstrap.v1","status":"active"}
systemctl start nova-controlpanel-node-agent.service; journalctl -u nova-controlpanel-node-agent.service -n 5eine Zeile wie {"status":"connected","node_id":"...","mutual_tls":true} (oder eine Drain-Zusammenfassung), kein AGENT_MTLS_CONNECT_FAILED
DNS-Nodes: activate-nova-bind-dynamic-zones.sh statusmeldet dynamische Zonen und den Nova-Keyring als aktiv
systemctl is-active nova-controlpanel-node-agent.timeractive auf jedem Host

Ausführungskette und Ebenen

PrüfungErwartet
grep ^OPERATIONS_EXECUTOR_PROFILE= /etc/nova-controlpanel/operations/runtime.envOPERATIONS_EXECUTOR_PROFILE=next-native (vom Installer geschrieben)
systemctl is-active nova-controlpanel-operations-worker.timer nova-controlpanel-operations-dispatcher.timeractive active
grep -c 'OPERATIONS_NATIVE_COMMANDS_ENABLED "1"' /etc/apache2-nova/sites-available/nova-controlpanel-operations-native.conf1
fresh-installation-enable.php ...Exit 0 für jede aktivierte Capability
stat -c '%a %U:%G' /etc/nova-controlpanel/native-database-engines.json (Datenbank-Rolle)640 root:nova-controlpanel, jede Minute aktualisiert
jede RekonfigurationPASS: combined Nova reconfiguration installed and verified; ..., danach gelingt accept
vor den schreibenden Funktionender Owner hat einen bestätigten TOTP-Faktor und eine verifizierte Wiederherstellungsadresse; eine Step-up-Aktion im Panel fragt Passwort und Code ab und gelingt
stat -c '%U' /var/lib/nova-controlpanel/operations/operations.sqlite nach node-registernova-controlpanel-operations
interne Listener nach prepared: python3 nova-fleet-network.py check-exposure <FLEET> 8092 8093 8094 8095 8096 19443; echo $?0
ss -ltn für jeden vorbereiteten Lease-Portnur an <FLEET>:<port> gebunden
im Panel angelegter Plattform-ServerZustand active innerhalb weniger Minuten
eine Test-Website (Kundensitzung)Zustand active; HTTP 200 vom Web-Node für ihr Document-Root

Quota auf Web-Nodes

PrüfungErwartet
nova-web-node-quota.sh setup DEVICESETUP_OK device=... uuid=... mount=/var/www/nova-controlpanel
nova-web-node-quota.sh verifyVERIFY_OK enforcement active mount=/var/www/nova-controlpanel ..., Exit 0
findmnt -no SOURCE,FSTYPE,OPTIONS /var/www/nova-controlpaneldas Quota-Gerät, ext4, Optionen enthalten usrquota
nach einem Neustart: systemctl --failedkeine fehlgeschlagene quotaon-Unit

DNS mit Secondaries

PrüfungErwartet
GET /api/next/v1/dns-node-endpoints (Owner)jeder DNS-Node active
von einem Kunden angelegte PrimärzoneZustand active; dig @<secondary> <zone> SOA liefert dieselbe Serial wie der Primary
eine Record-Änderungerreicht jeden Secondary innerhalb etwa einer Minute
named-checkconf auf jedem DNS-Node; /etc/bind/nova-controlpanel/keys.conf vorhanden und root-eigenExit 0; der Keyring enthält die Paarschlüssel des Nodes (nie ausgeben)

Upgrade

PrüfungErwartet
preflight-upgradePASS: combined Nova update preflight; no update or activation was performed
upgradePASS: combined Nova update installed and verified; rollback window remains open
journalinstalled upgrade [...] []
Panel-Anmeldung, eine Kunden-Website, eine Postfach-Anmeldungfunktionieren
acceptPASS: combined Nova runtime accepted; component rollback checkpoints retired
journalaccepted upgrade ...
readlink -f /opt/nova-controlpanel/application/currentdie neue Release-ID
ls -d /var/lib/ncp-fresh-os/package-updatekein solches Verzeichnis (Checkpoint aufgelöst)
accept-Ausgabe der Operations-Stufeein Abgleichsbericht nova.agent-node-enrollment.v1; kein aktiver Node mit no_recorded_roles übersprungen
neue local-explicit-Schreib-Capabilities aus den Release Notesin NOVA_AGENT_WRITE_CAPABILITIES auf den Nodes eingetragen, die sie brauchen
jeder andere Host nach dem Node-Agent-Updateinstall Exit 0, erfolgreicher Poll, finalize Exit 0
nova-update status (Update-Kanal)neue Version installiert, Kanalzustand up_to_date (oder update_available für ein neueres berechtigtes Release)

Rollback und Rearm

PrüfungErwartet
automatischer oder manueller Rollback... automatically rolled back, journal state rolled-back oder PASS: combined Nova runtime rolled back; ...
journalrolled-back upgrade ...
Panel-Anmeldung und Release-Linkdas Vorgänger-Release, Anmeldung funktioniert
apache2@nova (v26)active
rearm-upgradePASS: combined rolled-back upgrade rearmed; verified rejected payloads removed: operations, node
preflight-upgrade danachgelingt

Nach einem Neustart

PrüfungErwartet
systemctl is-system-runningrunning
journalctl -b -u nova-application-recover.service -o cat | tail -1PASS: Nova-owned application has no pending recovery transaction.
Coordinatoraktiviert, aktiv, lauscht auf <FLEET>:19443
NodesPolls der Node Agents gelingen
Web-NodesQuota-Mount mit usrquota vorhanden
Panel-Anmeldungfunktioniert

Betriebssystem-Paketupdate

PrüfungErwartet
bootstrap-nova-operations-runtime.sh verify-packages ... (aus dem vertrauenswürdigen Quellbaum des Releases)Exit 0
kombiniertes verifyPASS: combined Nova runtime verified

Zertifikate und fail2ban

PrüfungErwartet
nova-agent-fabric.sh status "$PKI" /etc/nova-controlpanel/operations/agent-coordinator /etc/nova-controlpanel-node-agent --warn-days=60jedes Zertifikat ok
nova-panel-certificate.sh status --warn-days=30ok
sh /opt/nova-controlpanel-node-agent/deploy/nova-fail2ban.sh verifyExit 0 auf jedem Host mit fail2ban
sh /opt/nova-controlpanel-node-agent/deploy/nova-fail2ban.sh statusJSON mit den Nova-Jails der Rollen des Hosts

Topologiewechsel

PrüfungErwartet
native-topology-change.php plan ...eine Deklaration mit genau den beabsichtigten Ergänzungen/Entfernungen
reconfigure ... --topology-change ...gelingt; journal zeigt installed topology-change
acceptgelingt; /etc/nova-controlpanel/operations-client/agent-fleet.json entspricht der neuen Datei

Backups

PrüfungErwartet
systemctl is-active nova-application-backup-retention.timeractive
stat -c '%a %U' /var/lib/nova-controlpanel/backup-exports (Profil v28)700 nova-controlpanel
ein Test-Download: Export, Link, GET .../content mit und ohne Range200/206; der SHA-256 der Datei entspricht X-Content-SHA256

Support-Werkzeuge

PrüfungErwartet
ls -l /usr/local/sbin/nova-support-bundle-rwxr-x--- root root
nova-support-bundle --since 1hgibt Archivpfad und SHA-256 aus, Exit 0
tar -xzOf /root/nova-support-*.tar.gz | grep -E -- '-----BEGIN|PRIVATE KEY' || echo CLEANCLEAN

Prüfungen für den Workspace stehen im Kapitel Workspace, Prüfungen nach dem Umzug von der Legacy-Basis im Kapitel Umzug.