Was Pulse prüft, was es Ihnen meldet — und was es bewusst nicht tut
Das Problem mit einer Website, die funktioniert
Eine Craft-Website im Unterhalt ist eine seltsame Sache. Sie läuft. Sie liefert Seiten aus. Niemand beschwert sich. Und im Hintergrund verschiebt sich der Boden trotzdem: Craft veröffentlicht ein Security-Release, ein Plugin wird stillschweigend aufgegeben, PHPs max_input_vars drosselt ein Formular, das seit März niemand mehr abgeschickt hat, ein Zertifikat nähert sich seinem Ablaufdatum.
Nichts davon meldet sich von selbst. Man erfährt es, wenn ein Kunde anruft — oder wenn etwas lange genug kaputt war, dass es endlich jemand erwähnt.
Wir betreuen eine Handvoll Craft-Websites und haben Dinge immer wieder zu spät entdeckt. Nicht katastrophal spät — aber später, als uns lieb war, und immer zufällig. Jede einzeln von Hand zu prüfen hiess: ins Control Panel einloggen, dann auf den Server, dann zum Zertifikatsprüfer, dann zu Composer. Für jede Website, jeden Monat. Genau die Art von Aufgabe, die in einer vollen Woche ausfällt — und danach gleich nochmal.
Also haben wir gebaut, was wir uns gewünscht haben: ein Dashboard, ein Score, und eine Meldung, wenn der Score fällt.
58 Checks in sieben Kategorien
Pulse prüft die Website, auf der es installiert ist, und zeigt die Ergebnisse direkt in Crafts eigenem Control Panel — kein externer Dienst, keine Daten, die den Server verlassen, kein Konto, das man anlegen muss.
Craft CMS — Version und verfügbare Updates, Dev Mode, Security Key, Queue-Status, Deprecation-Warnungen, PHP-Version und -Limits, post_max_size, upload_max_filesize, max_input_vars, benötigte Extensions, Schreibrechte, Datenbankgrösse und Wachstum der Session-Tabelle.
Plugins — was installiert ist, wofür Updates ausstehen, was vom Autor aufgegeben wurde, und der Lizenzstatus von allem.
Server — Webserver, Betriebssystem, PHP-SAPI, OPcache, Bildtreiber, Composer, Node, Zeitzone, GZIP.
Security — HTTPS-Weiterleitung, HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, verräterische Server- und X-Powered-By-Header, doppelte Header, öffentlich erreichbare .env- und Backup-Dateien, und ob das Control Panel noch unter seiner Standard-URL liegt.
SSL / HTTPS — Gültigkeit und Ablauf des Zertifikats, Vollständigkeit der Kette, Domain-Übereinstimmung, Vertrauenswürdigkeit, TLS-Version.
Content — Ballast aus Entwürfen, Revisionen und Papierkorb, deaktivierte Einträge, leere Sections.
Integrity — die Kategorie, die uns am wichtigsten ist. Pulse nimmt den in Ihrer composer.lock fixierten Commit, holt das dazugehörige offizielle Release und vergleicht Craft-Core und jedes Composer-Plugin Datei für Datei. Es durchsucht Webroot und Upload-Volumes nach eingeschleustem PHP und führt eine Hash-Baseline Ihrer eigenen Templates, Module und Konfiguration, damit Sie sehen, was sich seit dem letzten Scan verändert hat.
Eine Versionsnummer sagt Ihnen, welches Release eine Website zu betreiben behauptet. Eine Integritätsprüfung sagt Ihnen, ob sie es tatsächlich tut. Das sind zwei verschiedene Fragen — und nur eine davon übersteht einen Angreifer mit Schreibrechten.
Ein Score, und was dahintersteckt
Jeder Scan ergibt einen gewichteten Score und eine Note von A bis F. Ein Blick aufs Dashboard genügt also, um zu wissen, ob etwas Aufmerksamkeit braucht.
Die Bewertung hat eine Haltung. Rein informative Zeilen — Betriebssystem, PHP-Version, Datenbankgrösse — sind Bestandsaufnahme, nicht bestandene Prüfungen, und fliessen deshalb nicht in den Score ein; sie mitzuzählen würde eine ungesunde Website schönrechnen. Und ein einzelner kritischer Befund deckelt die Note, egal wie viele Checks bestanden wurden — denn «57-mal grün und eine kompromittierte Datei» ist kein B.
Jeder Befund, der nicht einfach grün ist, kommt mit zwei Absätzen in Klartext: was er bedeutet, und wie man ihn behebt. Kein Link auf eine Dokumentationsseite — die tatsächliche Erklärung, geschrieben für jemanden, der eine Website zu betreiben hat und nicht einen Server zu administrieren.
Es meldet sich, ohne gefragt zu werden
Ein Cron-Eintrag genügt; jede Kategorie läuft nach ihrem eigenen Zeitplan. Zertifikate müssen nicht alle zehn Minuten geprüft werden; eine Integritätsprüfung lohnt sich öfter als monatlich. Wird ein Check kritisch, meldet sich Pulse per E-Mail, Slack oder Webhook — einmal pro Zustand, nicht einmal pro Cron-Lauf — und meldet sich wieder, wenn das Problem behoben ist.
Berichte lassen sich als formatiertes PDF für Kunden exportieren oder als JSON für die eigene Weiterverarbeitung. Für Uptime-Boards oder CI-Jobs gibt es einen schreibgeschützten, per Schlüssel authentifizierten API-Endpunkt — und das Ganze lässt sich über die Kommandozeile steuern, wenn Ihnen SSH lieber ist als der Browser.
Zwei Editionen
Standard ist kostenlos. Craft-, Plugin-, Server- und SSL-Checks, der Health Score, manuelle Scans aus dem Dashboard oder von der Kommandozeile — und die vollständige Erklärung in Klartext zu allem, was angezeigt wird.
Pro ergänzt die Security-, Integritäts- und Content-Checks, geplante Scans, Benachrichtigungen, Verlauf, Ignorier-Regeln, PDF- und JSON-Export sowie die API.
Mit einer bewussten Ausnahme: Stellt Pulse fest, dass Ihre Core- oder Plugin-Dateien verändert wurden, zeigt es das vollständig an — auch in der kostenlosen Edition, samt Handlungsempfehlungen. Der Nachweis, dass an einer Website manipuliert wurde, gehört nicht hinter eine Bezahlschranke.
Was es nicht tut
Pulse ist ein Monitoring-Werkzeug. Es berichtet über den Zustand einer Installation. Es härtet keine Website ab, es blockiert keinen Angriff, und es kann nicht garantieren, dass ein Problem, das es nicht meldet, auch nicht existiert. Es beobachtet, es bewertet, und es meldet sich früh — genau das, was uns gefehlt hat, und genau der Teil, auf den es am Ende ankommt.
So bekommen Sie es
Pulse gibt es im Craft Plugin Store — oder direkt zur Installation:
composer require livingtech/pulse
php craft plugin/install pulse
Voraussetzung ist Craft CMS 5.0 oder neuer und PHP 8.2 oder neuer. Öffnen Sie Pulse im Control Panel und starten Sie einen Scan — der erste dauert etwa eine Minute, und danach wissen Sie mehr über Ihre Website als heute Morgen.