Plataformas
Drupal
Cuenta las visitas de un sitio Drupal con Runlight, y descubre cuándo lo leen los agentes de IA.
El módulo de Runlight ejecuta Runlight dentro de un sitio Drupal 10.3 u 11, con el panel en /runlight del sitio y las cifras en su propia base de datos. También puede enviar los datos a un Runlight que ejecutes en otro lugar, ya sea el servidor independiente o una aplicación con Runlight montado, para que un solo panel cubra muchos sitios.
Qué hace
- Añade el script de Runlight a cada página fuera del tema de administración. En una página a la que Drupal responde con un 404, el script registra además un evento llamado 404 con la ruta de la página que falta, así que las propiedades de 404 en el recuadro Eventos listan las direcciones rotas a las que llegó la gente y con qué frecuencia.
- Deja fuera las visitas de quienes pueden administrar Runlight, salvo que lo desactives.
- Informa de agentes de IA como ChatGPT y Claude cuando acceden a tus páginas, incluidas las que responde la caché de páginas de Drupal. El aviso sale después de enviar la respuesta, así que la página nunca se ralentiza.
- Añade un elemento Runlight en Informes que muestra el panel de este sitio en la administración.
Configúralo
Instala el módulo con composer require drupal/runlight y actívalo con drush pm:install runlight, o en Ampliar. Sus ajustes, en Configuración, Sistema, Runlight, se abren en una pantalla de configuración, y no se cuenta nada hasta que eliges dónde se ejecuta Runlight. Pulsa Run Runlight in this Drupal site y empieza a contar el sitio.
Informes, Runlight muestra las cifras, y su botón Open in Runlight abre el panel completo en /runlight de tu sitio. Allí puedes añadir objetivos, embudos, enlaces cortos e informes por email. Cualquiera con el permiso Administer Runlight es propietario de este Runlight. Cualquiera con el permiso View Runlight ve el mismo panel sin cambiar nada, y a los demás se les pide que inicien sesión en Drupal. Los cambios solo se aceptan desde las páginas de tu propio sitio, así que otro sitio no puede hacerlos con la sesión de un propietario.
Ejecutar Runlight dentro de Drupal necesita PHP 8.2 o posterior con las extensiones pdo, mbstring y openssl. La pantalla de configuración avisa cuando falta algo.
Dónde se guardan las cifras
Cuando la base de datos de Drupal es Postgres, MySQL 8.0.20 o posterior, o MariaDB 11.4 o posterior, Runlight guarda ahí sus cifras, así que tus copias de seguridad de la base de datos las incluyen. Sus tablas llevan el prefijo de tablas de Drupal, como rl_events, o d_rl_events con un prefijo d_, y Runlight las marca como de este sitio. Si ya hay tablas con esos nombres y no son del Runlight de este sitio, como las de un Runlight independiente en la misma base de datos, las deja en paz y usa un archivo SQLite. Se conecta con su propia conexión, abierta por el driver de base de datos de Drupal con los mismos ajustes que Drupal, así que las opciones de TLS bajo pdo y cualquier init_commands también se le aplican.
En los demás casos, las cifras van a un archivo SQLite en una carpeta runlight dentro de los archivos privados de Drupal, lo que necesita pdo_sqlite de PHP y una carpeta de archivos privados, definida con $settings['file_private_path'] en settings.php. Runlight nunca guarda nada en los archivos públicos. La elección se hace la primera vez que se ejecuta Runlight y no cambia nunca, así que las cifras nunca quedan repartidas en dos sitios.
Desinstalar el módulo elimina las tablas de Runlight, cada una por su nombre y solo las de este sitio, o su carpeta, junto con lo que guardaba en el estado y en la caché de Drupal.
Ubicaciones y mantenimiento
Los países de los visitantes salen de una cabecera cuando una CDN como Cloudflare la envía. Si no, activa Show which countries visitors come from en los ajustes del módulo, y el cron de Drupal descarga una vez al mes la base de datos gratuita de países de DB-IP en la carpeta de Runlight dentro de los archivos privados, o si no, en la carpeta temporal de Drupal. El cron de Drupal también ejecuta la comprobación programada de Runlight, que crea la sal de cada día, envía los informes por email y borra las visitas que superan la retención que hayas elegido, así que mantén el cron en marcha, como ya hacen la mayoría de sitios Drupal. Cuando la comprobación lleva más de un día sin ejecutarse, la página de ajustes lo indica.
Las direcciones de los visitantes
Runlight cuenta a los visitantes con un hash diario de su dirección, y limita con qué frecuencia puede enviar una misma dirección. Toma la dirección que Drupal determina para cada petición, que es la propia dirección de la conexión salvo que settings.php indique los proxies que hay delante del sitio, así que ningún visitante puede elegirla con una cabecera. Detrás de un balanceador de carga, una CDN o un proxy del hosting, indícaselos a Drupal como para cualquier otro módulo.
php
$settings['reverse_proxy'] = TRUE;
$settings['reverse_proxy_addresses'] = ['10.0.0.2'];Los recuentos por dirección, y la clave diaria con la que se calcula su hash, van a la caché de Drupal, en dos entradas que se reemplazan cada minuto y cada día.
Recuento
En los ajustes del módulo, Count clicks on links to other sites registra cada clic en un enlace a otro sitio como un evento llamado Outbound link, y Count file downloads registra cada clic en un enlace a un archivo, como un PDF o un zip, como un evento llamado File download. Ambos están activados hasta que los desactives.
Conecta con un Runlight que ejecutas en otro lugar
- Instala y activa el módulo como se explica arriba.
- En la pantalla de configuración, en Connect to a Runlight you run elsewhere, introduce la dirección en la que responde tu Runlight, como
https://stats.example.compara el servidor independiente ohttps://example.com/runlightpara una aplicación con Runlight montado. Runlight la muestra en Ajustes, Instalación, como Dirección de Runlight. - Pulsa Connect. Tu Runlight te pide que inicies sesión si no lo has hecho, y luego que permitas la conexión para el sitio que cuenta este dominio. Si ningún sitio lo cuenta todavía, ofrece añadir uno.
- Pulsa Allow. Runlight te devuelve a Drupal con todos los ajustes rellenados, y Informes, Runlight muestra las cifras de este sitio.
Al conectar, el módulo recibe dos claves. La clave de agentes informa de los agentes de IA que leen tus páginas, y solo puede informar de accesos a este sitio, así que no puede leer tus estadísticas ni escribir en otro sitio. La clave del panel muestra el panel de este sitio en la administración, en solo lectura, así que trátala como una contraseña. La clave del panel aparece en Runlight en Ajustes, API e IA, donde borrarla detiene el panel en Drupal.
Conectar necesita la administración en HTTPS, o en localhost mientras haces pruebas, ya que Runlight solo devuelve a la gente a direcciones así. En una aplicación con Runlight montado, el sitio tiene que estar ya en hostnames (consulta Configuración), porque ahí los sitios se definen en el código.
Introduce los ajustes a mano
Cada ajuste del módulo tiene su equivalente en Runlight, en Ajustes, Instalación, en la sección WordPress, Drupal y Craft, con un botón para copiarlo. Copia Dirección de Runlight, Clave de agentes y Clave del panel en los campos Runlight address, Agents key y Dashboard key del módulo y guarda. Runlight muestra la clave del panel una sola vez, así que crea una nueva si la pierdes. Site id (Id del sitio en Runlight) solo hace falta cuando ese Runlight no reconoce este sitio por su dominio. Al guardar, la página comprueba que la dirección responde.
Claves y entornos
Dónde se ejecuta Runlight, su dirección, el id del sitio y ambas claves pertenecen a un solo entorno, así que el módulo los guarda en el estado de Drupal, que drush config:export deja fuera. Nunca llegan a tu repositorio, e importar la configuración nunca apunta un entorno al Runlight de otro. Lo que cuenta, como los enlaces salientes y las descargas, se queda en la configuración y se exporta como siempre. Los valores que una versión anterior del módulo guardó en la configuración siguen valiendo hasta la próxima vez que guardes los ajustes, lo que los mueve al estado.
Para definir cualquiera de ellos en el código, ponlos en settings.php, que tiene prioridad sobre la página de ajustes.
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');Informes por email
Con Runlight ejecutándose dentro de Drupal, sus informes por email y los correos de prueba salen por el propio sistema de correo de Drupal cuando el sitio tiene uno configurado más allá de mail() de PHP, como el módulo SMTP, Symfony Mailer o el sistema de correo del núcleo con una dirección SMTP. Salen desde la dirección de correo del sitio, con el nombre del sitio, y Ajustes, Servicio de correo en el panel indica qué sistema de correo los envía. Sin uno, el panel te pide que configures allí un servicio de correo. También puedes elegir otro servicio mientras el sistema de correo de Drupal está configurado, y volver a él más tarde desde el mismo lugar. Después de actualizar el módulo, reconstruye las cachés de Drupal (drush cr) para que encuentre el hook que construye estos correos.
El panel en la administración
Con Runlight dentro de Drupal, Informes, Runlight muestra el panel completo, el mismo que en /runlight, con sus ajustes, objetivos y enlaces cortos. Solo las páginas de tu propio sitio pueden mostrarlo en un marco.
Con un Runlight en otro lugar y una clave del panel, la página Informes, Runlight muestra el panel de este sitio en la misma vista de solo lectura que muestra un enlace para compartir, con sus informes y rangos de fechas y sin los ajustes, los enlaces cortos, las personas ni los demás sitios de Runlight. El botón Open in Runlight abre el panel completo en tu propio Runlight.
La dirección desde la que se sirve la administración tiene que estar entre los dominios del sitio en Runlight, ya que solo una página de administración en uno de ellos puede mostrar el panel. Conectar se encarga de eso. Un www. inicial no cambia nada.
La clave nunca llega al navegador. Cada vez que un administrador abre la página, el servidor del módulo envía la clave y el origen del administrador a Runlight y recibe un ticket que abre el panel una vez, en un plazo de cinco minutos. La página carga el panel desde tu Runlight en un marco que solo este administrador puede mostrar. El marco mantiene su sesión en la página durante una hora, sin cookies, así que los navegadores que bloquean las cookies en marcos también lo muestran. Pasada la hora, el marco lo indica y recarga la página cuando se le pide. Borrar la clave en Ajustes, API e IA de Runlight la detiene al momento, junto con todas las sesiones abiertas. Solo ven la página quienes tienen el permiso Administer Runlight o View Runlight. Tu Runlight tiene que servirse por HTTPS cuando la administración lo hace, o el navegador rechaza el marco.
Cuando Gin es el tema de administración, el marco sigue su ajuste de modo oscuro. Con Claro se queda en modo claro.