Ü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.
- Website-Backups aktivieren – einmal pro Web-Node (Server-Schlüssel, dann die Capability), dann
native_web.website_backup_enabledper Rekonfiguration. Sichere den Server-Schlüssel offline: Ohne ihn lässt sich kein Website-Backup wiederherstellen. - Aufbewahrung läuft stündlich auf dem Control-Host (
nova-application-backup-retention.timer) und löscht nie die letzte bekannte gute Kopie. - 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}). - 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), einenmariadb-dumpder 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.
- 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.
- Erstelle einen Plan (nur lesend): was jeder Mandant verliert und was die Entfernung noch blockieren würde (Befehl unten).
- Informiere die betroffenen Kunden (der Plan listet sie pro Mandant).
- Gib den Node auf – per Kommandozeile oder im Panel (
POST /fleet-node-abandonments, Step-up-Capabilityplatform.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. - Wiederhole
plan, bisawaiting_settlement0 ist undremainingleer. - Entferne den Node mit einem normalen Topologiewechsel (siehe Anleitungen).
- 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.
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=3600Zertifikate, Widerruf und Node-Zulassung
Bestand, Erneuerungsbefehle und die manuelle CA-Rotation: Zertifikate.
| Aufgabe | Befehl |
|---|---|
| Ablauf prüfen | nova-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 erneuern | coordinator-renew, coordinator-renew-install |
| Panel-Zertifikat ersetzen | nova-panel-certificate.sh check CERT KEY, dann replace CERT KEY (rollback tauscht zurück) |
| Agent-CA rotieren | manuell, nur als Ablauf beschrieben |
| Node widerrufen | OPERATIONS_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
activeist; - 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-registerum. 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_DENIEDbei Leases,NODE_IDENTITY_REQUIREDbei Exporten), auditiert alsinternal.node-admission.refusedmit dem Grund (NATIVE_NODE_ADMISSION_UNKNOWN,_REVOKED,_ABANDONED,_INACTIVE,_CERTIFICATE_MISMATCH,_IDENTITY_INVALID). Kann die Registry nicht antworten, erhält die Anfrage ein wiederholbares503.
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:
- Frag nach der Referenz in der Fehlermeldung (Technische Referenz,
req_plus 32 Hex-Zeichen; zu einerbrw_...-Referenz gibt es keinen Server-Trace). - 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
3bedeutet unbekannt oder älter als 30 Tage. Administratoren können dasselbe im Panel tun (Support-Referenzen). - 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. LiesSUMMARY.txt, bevor du es weitergibst.
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.
- Pro Website aktivieren: Panel Website → Bearbeiten → „Nova-Statistik (Beta) zusätzlich erfassen“ oder
PATCH /api/next/v1/web/sites/{id}mitconfig.statistics.nova_beta: true. - 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 inNOVA_AGENT_WRITE_CAPABILITIESist nicht nötig. - Nach der ersten Nacht prüfen: auf dem Web-Node
systemctl status nova-controlpanel-web-statistics.service(Quittung mit einemnova_beta-Objekt:processed,failed,forgotten); auf dem Control-Hostsystemctl status nova-application-web-statistics.service(submitted,days_recorded,unavailable). - 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.mjsalstext/javascriptaus. Zeigt eine VorschauWORKSPACE_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.
| Pfad | Für | Angelegt / 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 Website | ebenso |
/var/www/clients/clientN/webN | nur Websites, die von der Legacy-Basis umgezogen sind | angelegt beim Cutover des Imports, entfernt durch dessen Fallback und mit der Website (Umzug) |
<customer>ist die Kundennummer des Mandanten in pfadsicherer Form (Zeichen außerA-Z a-z 0-9 . _ -werden zu-, höchstens 64 Zeichen). Ein Mandant ohne Kundennummer oder mit einem Wert, der wie einclientN-Verzeichnis aussieht, erhält eine stabile generierte Nummernplus 10 Ziffern, abgeleitet aus seiner Mandanten-ID; sie wird einmal vergeben und ändert sich nie. Eine Kundennummer sieht deshalb nie wieclientNaus, und lesbare Pfade kollidieren unter/var/www/clientsnie 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/clientsmit0755,/var/www/clients/<customer>und.../clientNmit0711. 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 untercollisionsin/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
| Intervall | Prü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öchentlich | nova-update license status; das Banner im Dashboard; journalctl -u nova-application-backup-retention.service |
| monatlich | Betriebssystem-Updates (Updates) und die Prüfliste „Nach einem Neustart“ unten |
| vierteljährlich | Wiederherstellungstest 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:
journal(){ python3 -c "import json;j=json.load(open('$J'));print(j['state'],j.get('operation'),j['completed'],j['accepted'])"; }Host-Vorbereitung
| Prüfung | Erwartet |
|---|---|
. /etc/os-release; echo $ID $VERSION_ID $VERSION_CODENAME | ubuntu 24.04 noble oder debian 13 trixie |
cat /etc/nova-controlpanel/host-platform | nova-controlpanel-host-platform:<platform>:apache |
php $SRC/src/api/bin/nova-installer-inputs.php verify $IN | Exit 0 |
python3 nova-fleet-network.py detect | "address": "<private address>", "source": "interface" (Einzelhost: "127.0.0.1", "source": "loopback") |
pgrep -a unattended | keine Ausgabe |
Web-Nodes: lsblk -f <device> | kein Dateisystem auf dem Quota-Gerät vor dem Setup |
Neuinstallation
| Prüfung | Erwartet |
|---|---|
| Installer-Ausgabe | PASS: combined Nova runtime installed and verified; ..., dann ... verified, dann ... accepted; ... |
journal | accepted 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@nova | enabled |
APACHE_CONFDIR=/etc/apache2-nova apache2ctl configtest | Syntax 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*.conf | keine solche Datei (die Control Plane läuft nicht mehr im Kunden-Webserver) |
runuser -u www-data -- test -w /run/php/nova-controlpanel.sock && echo WRITABLE | keine Ausgabe (Socket isoliert) |
curl -sk -o /dev/null -w '%{http_code}\n' https://$PANEL:$PORT/api/next/v1/me | 401 (erreichbar, Anmeldung erforderlich) |
| Panel-Anmeldung als Owner | gelingt (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üfung | Erwartet |
|---|---|
ls -l /etc/nova-controlpanel/installation.json | -rw-r----- root nova-controlpanel |
nova-update license show-id | ncpi_ plus 26 Zeichen |
nova-update license status vor der Lizenz | LICENSE COMMUNITY: edition community, nodes 1 of 1 |
nova-update license install FILE, dann status | INSTALLED: 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üfung | Erwartet |
|---|---|
Ausgabe von coordinator-configure | enthält "activation":"activated" (oder "present", wenn unverändert) |
grep ^OPERATIONS_AGENT_COORDINATOR_BIND= /etc/nova-controlpanel/operations/agent-coordinator.env | OPERATIONS_AGENT_COORDINATOR_BIND=<FLEET>:19443 |
systemctl is-enabled nova-controlpanel-operations-agent-coordinator | enabled |
ss -ltn | grep ':19443 ' | ein Listener auf <FLEET>:19443 |
grep -E '_URL=|^NOVA_SECRET_LEASE_PEER_NAME=' /etc/nova-controlpanel-node-agent/runtime.env | Lease-URLs auf https://<FLEET>:<port>, Peer-Name = Panel-Name |
node-request, node-sign, node-install | JSON-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 5 | eine 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 status | meldet dynamische Zonen und den Nova-Keyring als aktiv |
systemctl is-active nova-controlpanel-node-agent.timer | active auf jedem Host |
Ausführungskette und Ebenen
| Prüfung | Erwartet |
|---|---|
grep ^OPERATIONS_EXECUTOR_PROFILE= /etc/nova-controlpanel/operations/runtime.env | OPERATIONS_EXECUTOR_PROFILE=next-native (vom Installer geschrieben) |
systemctl is-active nova-controlpanel-operations-worker.timer nova-controlpanel-operations-dispatcher.timer | active active |
grep -c 'OPERATIONS_NATIVE_COMMANDS_ENABLED "1"' /etc/apache2-nova/sites-available/nova-controlpanel-operations-native.conf | 1 |
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 Rekonfiguration | PASS: combined Nova reconfiguration installed and verified; ..., danach gelingt accept |
| vor den schreibenden Funktionen | der 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-register | nova-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-Port | nur an <FLEET>:<port> gebunden |
| im Panel angelegter Plattform-Server | Zustand 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üfung | Erwartet |
|---|---|
nova-web-node-quota.sh setup DEVICE | SETUP_OK device=... uuid=... mount=/var/www/nova-controlpanel |
nova-web-node-quota.sh verify | VERIFY_OK enforcement active mount=/var/www/nova-controlpanel ..., Exit 0 |
findmnt -no SOURCE,FSTYPE,OPTIONS /var/www/nova-controlpanel | das Quota-Gerät, ext4, Optionen enthalten usrquota |
nach einem Neustart: systemctl --failed | keine fehlgeschlagene quotaon-Unit |
DNS mit Secondaries
| Prüfung | Erwartet |
|---|---|
GET /api/next/v1/dns-node-endpoints (Owner) | jeder DNS-Node active |
| von einem Kunden angelegte Primärzone | Zustand active; dig @<secondary> <zone> SOA liefert dieselbe Serial wie der Primary |
| eine Record-Änderung | erreicht jeden Secondary innerhalb etwa einer Minute |
named-checkconf auf jedem DNS-Node; /etc/bind/nova-controlpanel/keys.conf vorhanden und root-eigen | Exit 0; der Keyring enthält die Paarschlüssel des Nodes (nie ausgeben) |
Upgrade
| Prüfung | Erwartet |
|---|---|
preflight-upgrade | PASS: combined Nova update preflight; no update or activation was performed |
upgrade | PASS: combined Nova update installed and verified; rollback window remains open |
journal | installed upgrade [...] [] |
| Panel-Anmeldung, eine Kunden-Website, eine Postfach-Anmeldung | funktionieren |
accept | PASS: combined Nova runtime accepted; component rollback checkpoints retired |
journal | accepted upgrade ... |
readlink -f /opt/nova-controlpanel/application/current | die neue Release-ID |
ls -d /var/lib/ncp-fresh-os/package-update | kein solches Verzeichnis (Checkpoint aufgelöst) |
accept-Ausgabe der Operations-Stufe | ein Abgleichsbericht nova.agent-node-enrollment.v1; kein aktiver Node mit no_recorded_roles übersprungen |
neue local-explicit-Schreib-Capabilities aus den Release Notes | in NOVA_AGENT_WRITE_CAPABILITIES auf den Nodes eingetragen, die sie brauchen |
| jeder andere Host nach dem Node-Agent-Update | install 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üfung | Erwartet |
|---|---|
| automatischer oder manueller Rollback | ... automatically rolled back, journal state rolled-back oder PASS: combined Nova runtime rolled back; ... |
journal | rolled-back upgrade ... |
| Panel-Anmeldung und Release-Link | das Vorgänger-Release, Anmeldung funktioniert |
apache2@nova (v26) | active |
rearm-upgrade | PASS: combined rolled-back upgrade rearmed; verified rejected payloads removed: operations, node |
preflight-upgrade danach | gelingt |
Nach einem Neustart
| Prüfung | Erwartet |
|---|---|
systemctl is-system-running | running |
journalctl -b -u nova-application-recover.service -o cat | tail -1 | PASS: Nova-owned application has no pending recovery transaction. |
| Coordinator | aktiviert, aktiv, lauscht auf <FLEET>:19443 |
| Nodes | Polls der Node Agents gelingen |
| Web-Nodes | Quota-Mount mit usrquota vorhanden |
| Panel-Anmeldung | funktioniert |
Betriebssystem-Paketupdate
| Prüfung | Erwartet |
|---|---|
bootstrap-nova-operations-runtime.sh verify-packages ... (aus dem vertrauenswürdigen Quellbaum des Releases) | Exit 0 |
kombiniertes verify | PASS: combined Nova runtime verified |
Zertifikate und fail2ban
| Prüfung | Erwartet |
|---|---|
nova-agent-fabric.sh status "$PKI" /etc/nova-controlpanel/operations/agent-coordinator /etc/nova-controlpanel-node-agent --warn-days=60 | jedes Zertifikat ok |
nova-panel-certificate.sh status --warn-days=30 | ok |
sh /opt/nova-controlpanel-node-agent/deploy/nova-fail2ban.sh verify | Exit 0 auf jedem Host mit fail2ban |
sh /opt/nova-controlpanel-node-agent/deploy/nova-fail2ban.sh status | JSON mit den Nova-Jails der Rollen des Hosts |
Topologiewechsel
| Prüfung | Erwartet |
|---|---|
native-topology-change.php plan ... | eine Deklaration mit genau den beabsichtigten Ergänzungen/Entfernungen |
reconfigure ... --topology-change ... | gelingt; journal zeigt installed topology-change |
accept | gelingt; /etc/nova-controlpanel/operations-client/agent-fleet.json entspricht der neuen Datei |
Backups
| Prüfung | Erwartet |
|---|---|
systemctl is-active nova-application-backup-retention.timer | active |
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 Range | 200/206; der SHA-256 der Datei entspricht X-Content-SHA256 |
Support-Werkzeuge
| Prüfung | Erwartet |
|---|---|
ls -l /usr/local/sbin/nova-support-bundle | -rwxr-x--- root root |
nova-support-bundle --since 1h | gibt Archivpfad und SHA-256 aus, Exit 0 |
tar -xzOf /root/nova-support-*.tar.gz | grep -E -- '-----BEGIN|PRIVATE KEY' || echo CLEAN | CLEAN |
Prüfungen für den Workspace stehen im Kapitel Workspace, Prüfungen nach dem Umzug von der Legacy-Basis im Kapitel Umzug.