Gesamte Doku

Start

  1. 01Erste Schritte
  2. 02Installation
  3. 03Tracking

Funktionen

  1. 04Das Dashboard
  2. 05Ziele
  3. 06Kurzlinks
  4. 07KI-Quellen und Agenten
  5. 08E-Mail-Berichte
  6. 09Stündlicher Check
  7. 10Frag deine KI

Referenz

  1. 11Konfiguration
  2. 12HTTP-API

Plattformen

  1. 13Eigenständiger Server
  2. 14PHP
  3. 15WordPress
  4. 16Drupal
  5. 17Craft CMS
  6. 18Python
  7. 19Rails
  8. 20Ruby
  9. 21Go
  10. 22Java
  11. 23.NET
  12. 24Elixir
  13. 25Rust

Vertrauen

  1. 26Datenschutz

Plattformen

Drupal

Zähle eine Drupal-Website mit Runlight und sieh, wann KI-Agenten sie lesen.

Das Runlight-Modul betreibt Runlight innerhalb einer Website mit Drupal 10.3 oder 11, mit dem Dashboard unter /runlight auf der Website und den Zahlen in ihrer eigenen Datenbank. Es kann auch an ein Runlight senden, das du anderswo betreibst, entweder den eigenständigen Server oder eine App, in die Runlight eingebunden ist, sodass ein Dashboard viele Websites abdeckt.

Was es tut

  • Es fügt Runlights Skript in jede Seite außerhalb des Admin-Themes ein. Auf einer Seite, die Drupal mit einem 404 beantwortet, zeichnet das Skript außerdem ein Ereignis namens 404 mit dem Pfad der fehlenden Seite auf, sodass die Eigenschaften von 404 in der Box Ereignisse die kaputten Adressen auflisten, auf die Leute gestoßen sind, und wie oft.
  • Es lässt die Besuche von Leuten weg, die Runlight verwalten dürfen, außer du schaltest das aus.
  • Es meldet KI-Agenten wie ChatGPT und Claude, wenn sie deine Seiten abrufen, auch Seiten, die der Seiten-Cache von Drupal beantwortet. Die Meldung geht erst raus, nachdem die Antwort gesendet wurde, die Seite wird also nie langsamer.
  • Es fügt unter Berichte einen Eintrag Runlight hinzu, der das Dashboard dieser Website in der Verwaltung zeigt.

Einrichten

Installiere das Modul mit composer require drupal/runlight und aktiviere es mit drush pm:install runlight oder unter Erweitern. Seine Einstellungen unter Konfiguration, System, Runlight öffnen sich mit einem Einrichtungsbildschirm, und nichts wird gezählt, bis du wählst, wo Runlight läuft. Klicke auf Run Runlight in this Drupal site, und es beginnt, die Website zu zählen.

Berichte, Runlight zeigt die Zahlen, und der Button Open in Runlight dort öffnet das vollständige Dashboard unter /runlight auf deiner Website. Dort kannst du Ziele, Trichter, Kurzlinks und E-Mail-Berichte hinzufügen. Wer die Berechtigung Administer Runlight hat, ist Eigentümer dieses Runlight. Wer die Berechtigung View Runlight hat, sieht dasselbe Dashboard, ohne etwas ändern zu können, und alle anderen werden gebeten, sich bei Drupal anzumelden. Änderungen werden nur von den eigenen Seiten deiner Website angenommen, damit keine andere Website sie mit der Sitzung eines Eigentümers vornehmen kann.

Um Runlight innerhalb von Drupal zu betreiben, brauchst du PHP 8.2 oder neuer mit den Erweiterungen pdo, mbstring und openssl. Der Einrichtungsbildschirm sagt dir, wenn etwas fehlt.

Wo die Zahlen liegen

Ist die Datenbank von Drupal Postgres, MySQL 8.0.20 oder neuer oder MariaDB 11.4 oder neuer, speichert Runlight seine Zahlen dort, sodass deine Datenbank-Backups sie enthalten. Seine Tabellen sind nach dem Tabellenpräfix von Drupal benannt, etwa rl_events oder, mit dem Präfix d_, d_rl_events, und Runlight markiert sie als die dieser Website. Gibt es Tabellen mit diesen Namen schon und gehören sie nicht zum Runlight dieser Website, etwa zu einem eigenständigen Runlight in derselben Datenbank, lässt es sie in Ruhe und nutzt eine SQLite-Datei. Es verbindet sich über eine eigene Verbindung, die der Datenbanktreiber von Drupal mit denselben Einstellungen wie für Drupal öffnet, deshalb gelten TLS-Optionen unter pdo und alle init_commands auch für sie.

Andernfalls kommen die Zahlen in eine SQLite-Datei in einem Ordner runlight unter den privaten Dateien von Drupal, was PHPs pdo_sqlite und einen Ordner für private Dateien voraussetzt, festgelegt mit $settings['file_private_path'] in settings.php. Runlight legt nie etwas unter den öffentlichen Dateien ab. Die Wahl fällt beim ersten Start von Runlight und ändert sich nie, damit sich die Zahlen nie auf zwei Orte aufteilen.

Wenn du das Modul deinstallierst, werden Runlights Tabellen entfernt, jede einzeln beim Namen und nur die dieser Website, oder sein Ordner, zusammen mit dem, was es im State und im Cache von Drupal abgelegt hat.

Orte und Pflege

Die Länder der Besucher kommen aus einem Header, wenn ein CDN wie Cloudflare einen mitschickt. Andernfalls schalte in den Einstellungen des Moduls Show which countries visitors come from ein, und der Cron von Drupal lädt einmal im Monat die kostenlose Länder-Datenbank von DB-IP in Runlights Ordner unter den privaten Dateien herunter, sonst in den temporären Ordner von Drupal. Der Cron von Drupal führt auch Runlights stündlichen Check aus, der den Salt für jeden Tag erzeugt, E-Mail-Berichte verschickt und Besuche löscht, die älter sind als die eingestellte Aufbewahrungsdauer. Lass Cron also laufen, wie es die meisten Drupal-Websites ohnehin tun. Ist der Check seit über einem Tag nicht gelaufen, sagt die Einstellungsseite das.

Adressen der Besucher

Runlight zählt Besucher mit einem täglichen Hash ihrer Adresse und begrenzt, wie oft eine Adresse senden kann. Es nimmt die Adresse, die Drupal für jede Anfrage ermittelt. Das ist die eigene Adresse der Verbindung, außer settings.php nennt die Proxys vor der Website, sodass kein Besucher mit einem Header eine Adresse wählen kann. Hinter einem Load Balancer, einem CDN oder dem Proxy eines Hosts teilst du Drupal das mit wie für jedes andere Modul.

php

$settings['reverse_proxy'] = TRUE;
$settings['reverse_proxy_addresses'] = ['10.0.0.2'];

Die Zähler pro Adresse und der tägliche Schlüssel, mit dem sie gehasht werden, liegen im Cache von Drupal, in zwei Einträgen, die jede Minute beziehungsweise jeden Tag ersetzt werden.

Zählen

In den Einstellungen des Moduls zeichnet Count clicks on links to other sites jeden Klick auf einen Link zu einer anderen Website als Ereignis namens Outbound link auf, und Count file downloads zeichnet jeden Klick auf einen Link zu einer Datei, etwa einem PDF oder einem ZIP, als Ereignis namens File download auf. Beides ist eingeschaltet, bis du es ausschaltest.

Mit einem Runlight verbinden, das du anderswo betreibst

  1. Installiere und aktiviere das Modul wie oben.
  2. Gib auf dem Einrichtungsbildschirm unter Connect to a Runlight you run elsewhere die Adresse ein, unter der dein Runlight antwortet, etwa https://stats.example.com für den eigenständigen Server oder https://example.com/runlight für eine App, in die Runlight eingebunden ist. Runlight zeigt sie unter Einstellungen, Einbinden als Runlight-Adresse an.
  3. Klicke auf Connect. Dein Runlight bittet dich, dich anzumelden, falls du es noch nicht bist, und dann, die Verbindung für die Website zu erlauben, die diese Domain zählt. Zählt noch keine Website sie, bietet es an, eine hinzuzufügen.
  4. Klicke auf Allow. Runlight schickt dich mit allen ausgefüllten Einstellungen zurück zu Drupal, und Berichte, Runlight zeigt die Zahlen dieser Website.

Beim Verbinden bekommt das Modul zwei Schlüssel. Der Agenten-Schlüssel meldet KI-Agenten, die deine Seiten lesen, und er kann nur Abrufe für diese eine Website melden, also weder deine Statistiken lesen noch in eine andere Website schreiben. Der Dashboard-Schlüssel zeigt das Dashboard dieser Website in der Verwaltung an, nur lesend, behandle ihn also wie ein Passwort. Der Dashboard-Schlüssel erscheint in Runlight unter Einstellungen, API und KI, und wenn du ihn dort löschst, hört das Dashboard in Drupal auf zu funktionieren.

Zum Verbinden muss die Verwaltung über HTTPS laufen oder, solange du etwas ausprobierst, auf localhost, weil Runlight Leute nur an solche Adressen zurückschickt. In einer App, in die Runlight eingebunden ist, muss die Website schon in hostnames stehen (siehe Konfiguration), weil die Websites dort im Code festgelegt werden.

Die Einstellungen von Hand eintragen

Jede Einstellung im Modul hat ihr Gegenstück in Runlight, unter Einstellungen, Einbinden im Abschnitt WordPress, Drupal und Craft, jeweils mit einem Button zum Kopieren. Kopiere Runlight-Adresse, Agenten-Schlüssel und Dashboard-Schlüssel in die Felder Runlight address, Agents key und Dashboard key und speichere. Runlight zeigt den Dashboard-Schlüssel nur einmal an, erstelle also einen neuen, wenn du ihn verlierst. Die Website-ID (im Modul Site id) brauchst du nur, wenn dieses Runlight die Website nicht an ihrer Domain erkennen kann. Beim Speichern prüft die Seite, ob die Adresse antwortet.

Schlüssel und Umgebungen

Wo Runlight läuft, seine Adresse, die Website-ID und beide Schlüssel gehören zu einer Umgebung, deshalb legt das Modul sie im State von Drupal ab, den drush config:export auslässt. Sie landen nie in deinem Repository, und ein Konfigurationsimport lässt nie eine Umgebung auf das Runlight einer anderen zeigen. Was es zählt, etwa ausgehende Links und Downloads, bleibt in der Konfiguration und wird wie gewohnt exportiert. Werte, die eine frühere Version des Moduls in der Konfiguration gespeichert hat, gelten weiter, bis du die Einstellungen das nächste Mal speicherst, was sie in den State verschiebt.

Um einen davon im Code festzulegen, trag ihn in settings.php ein. Das hat Vorrang vor der Einstellungsseite.

php

$config['runlight.settings']['address'] = 'https://stats.example.com';
$config['runlight.settings']['observe_key'] = getenv('RUNLIGHT_AGENTS_KEY');
$config['runlight.settings']['dashboard_key'] = getenv('RUNLIGHT_DASHBOARD_KEY');

E-Mail-Berichte

Läuft Runlight innerhalb von Drupal, gehen seine E-Mail-Berichte und Test-E-Mails über den eigenen Mailer von Drupal, wenn die Website einen eingerichtet hat, der über PHPs mail() hinausgeht, etwa das SMTP-Modul, Symfony Mailer oder den Mailer des Cores mit einer SMTP-Adresse. Sie kommen von der E-Mail-Adresse der Website, im Namen der Website, und Einstellungen, E-Mail-Dienst im Dashboard sagt, welcher Mailer sie verschickt. Ohne einen solchen bittet dich das Dashboard, dort stattdessen einen Mail-Dienst einzurichten. Du kannst auch einen anderen Dienst wählen, während der Mailer von Drupal eingerichtet ist, und später an derselben Stelle zum Mailer von Drupal zurückkehren. Leere nach einem Update des Moduls die Caches von Drupal (drush cr), damit es den Hook findet, der diese E-Mails baut.

Das Dashboard in der Verwaltung

Mit Runlight innerhalb von Drupal zeigt Berichte, Runlight das ganze Dashboard, dasselbe wie unter /runlight, mit seinen Einstellungen, Zielen und Kurzlinks. Nur Seiten auf deiner eigenen Website dürfen es in einem Frame anzeigen.

Mit einem Runlight anderswo und einem Dashboard-Schlüssel zeigt die Seite Berichte, Runlight das Dashboard dieser Website in derselben Nur-Lese-Ansicht, die ein Freigabelink zeigt, mit ihren Berichten und Zeiträumen und ohne Runlights Einstellungen, Kurzlinks, Personen oder andere Websites. Der Button Open in Runlight öffnet das vollständige Dashboard in deinem eigenen Runlight.

Die Adresse, unter der die Verwaltung ausgeliefert wird, muss zu den Domains der Website in Runlight gehören, weil nur eine Admin-Seite auf einer davon das Dashboard anzeigen darf. Das Verbinden kümmert sich darum. Ein vorangestelltes www. macht keinen Unterschied.

Der Schlüssel erreicht nie den Browser. Jedes Mal, wenn ein Admin die Seite öffnet, schickt der Server des Moduls den Schlüssel und den Origin des Admins an Runlight und bekommt ein Ticket zurück, das das Dashboard einmal öffnet, innerhalb von fünf Minuten. Die Seite lädt das Dashboard von deinem Runlight in einem Frame, den nur dieser Admin anzeigen darf. Der Frame hält seine Sitzung eine Stunde lang in der Seite, ohne Cookies, deshalb zeigen auch Browser, die Cookies in Frames blockieren, ihn an. Ist die Stunde um, sagt der Frame das und lädt die Seite auf Wunsch neu. Wenn du den Schlüssel in Runlights Einstellungen, API und KI löschst, ist er sofort gestoppt, zusammen mit jeder offenen Sitzung. Nur Leute mit der Berechtigung Administer Runlight oder View Runlight sehen die Seite. Dein Runlight muss über HTTPS ausgeliefert werden, wenn die Verwaltung es wird, sonst verweigert der Browser den Frame.

Ist Gin das Admin-Theme, folgt der Frame dessen Einstellung für den dunklen Modus. Mit Claro bleibt er hell.