Matomo, Como instalar tu propio sistema de analíticas web

Esta claro que Google es el líder absoluto en cuanto a mediciones y analíticas web se refiere, también es evidente que es el poseedor de casi todos los datos de trafico. Con este tutorial, te presento una alternativa para cuando el proyecto es sensible y prefieres que los datos de navegación de tu web queden en tu propia infraestructura. Es posible que quieras que Google indexe tu pagina web para tener un buen posicionamiento, pero quizá no te interese que los datos de analítica web estén en otras manos que no sean las tuyas, tu propio sistema de analítica web. Instala tu propio sistema de analíticas web con:

Como instalar tu propio sistema de analíticas web

Matomo (antes conocido como PiWik, te proporciona esa opción, es una plataforma de analítica web que además esta en castellano y es mucho mas sencilla de entender que Google Analytics.

¿Qué es la analítica web ?tu propio sistema de analíticas web


El software de análisis web es utilizado por los sitios web para saber cuántos visitantes hay en un sitio en un día/semana/mes, qué navegador web están utilizando, etc. Es una pieza crucial de software para ayudar a crecer sus sitios web. Google Analytics es genial, pero los datos de los visitantes del sitio web se almacenan en el servidor de Google. Si no quiere compartir los datos de los visitantes de su sitio web con un tercero, puede utilizar su propio software de análisis web. Hay muchas alternativas autoalojadas a Google Analytics y Matomo es una de las mejores.

Características de Matomo

La edición de Matomo de código abierto (con licencia GPL v3+) puede mostrar los siguientes informes.

  • Principales palabras clave y motores de búsqueda, sitios web, sitios web de medios sociales.
  • URLs de las páginas más visitadas, títulos de las páginas, países de los usuarios, proveedores, sistemas operativos, cuota de mercado de los navegadores, resolución de pantalla, ordenador de sobremesa VS móvil.
  • Compromiso (tiempo en el sitio, páginas por visita, visitas repetidas).
  • Principales campañas, variables personalizadas, principales páginas de entrada/salida, archivos descargados y mucho más.
  • Clasificados en cuatro categorías principales de informes de análisis – Visitantes, Acciones, Referentes, Objetivos/Comercio (más de 30 informes).
  • Informes de estadísticas por correo electrónico.
  • Análisis del registro del servidor web.
  • Seguimiento de los visitantes que han desactivado JavaScript.
  • Herramientas para cumplir con el GDPR (como el consentimiento de cookies).
  • Instalar plugins gratuitos o premium para extender y ampliar la funcionalidad de Matomo.
  • Un actualizador fácil de usar basado en la web. También está disponible un actualizador de línea de comandos.
  • Y mucho más.

Para una lista completa de características, por favor revise la página de características de Matomo. Me gusta especialmente el hecho de que Matomo puede listar todas mis páginas web por páginas vistas y mostrar la tasa de rebote y la tasa de salida para cada página web, y también el mapa de visitantes en tiempo real.

Ventajas de Matomo autoalojado

  • Control total de los datos. Los datos se almacenan únicamente en tu servidor y puedes elegir en qué país se encuentra el servidor.
  • Sin límites de datos. Puede almacenar tantos datos como tu servidor pueda.
  • Totalmente personalizable y ampliable.
  • Firefox comenzó a bloquear las cookies de seguimiento entre sitios, incluyendo Google Analytics. Al alojar el software de análisis bajo tu propio nombre de dominio, tus cookies de seguimiento no serán bloqueadas.

El Matomo alojado en la nube tiene características adicionales, pero puedes instalar el plugin premium en tu instancia auto-alojada para obtener la misma funcionalidad.

Requisitos previos para instalar Matomo Web Analyticsen Ubuntu 20.04

Para seguir este tutorial, necesitarás un nombre de dominio y un servidor. Yo registré mi nombre de dominio en NameCheap porque el precio es bajo y dan protección de privacidad whois gratis de por vida. Un servidor con 1G de RAM es suficiente para ejecutar Matomo y aquí están los proveedores de alojamiento que recomiendo.

Una vez que tengas un servidor, selecciona Ubuntu 20.04 en él y sigue las siguientes instrucciones.

Matomo está escrito en PHP y utiliza la base de datos MySQL/MariaDB. Para seguir este tutorial, se supone que ya has configurado la pila LAMP o LEMP en Ubuntu 20.04. Si no es así, por favor, consulta uno de los siguientes tutoriales:

Si prefieres usar el servidor web Nginx, entonces configure la pila LEMP.

Cuando hayas terminado de configurar la pila LAMP o LEMP, vuelve aquí y sigue leyendo.

Paso 1: Descargar Matomo en Ubuntu 20.04

Inicia sesión en tu servidor a través de SSH. Siempre puedes utilizar el siguiente comando para descargar la última versión de Matomo en tu servidor.

wget https://builds.matomo.org/matomo-latest.zip

Una vez descargado, extrae el archivo con unzip.

sudo apt install unzip

sudo mkdir -p /var/www/html

sudo unzip matomo-latest.zip -d /var/www/html

La opción -d especifica el directorio de destino. Los archivos web de Matomo se extraerán a /var/www/html/matomo/. Entonces necesitamos cambiar el propietario de este directorio a www-data para que el servidor web pueda escribir en este directorio.

sudo chown www-data:www-data /var/www/html/matomo/ -R

Paso 2: Crear una base de datos y un usuario en MariaDB

Inicia sesión en el servidor de bases de datos MariaDB con el siguiente comando.

sudo mysql

También puedes utilizar este comando para iniciar la sesión.

sudo mariadb

A continuación, crea una base de datos para Matomo. Este tutorial nombra la base de datos matomo. Puedes usar el nombre que quieras.

create database matomo;

Crea el usuario de la base de datos. De nuevo, puedes utilizar el nombre que prefieras para este usuario. Reemplaza tu-contraseña con tu contraseña preferida.

create user matomouser@localhost identified by 'tu-contraseña';

Concede a este usuario todos los privilegios en la base de datos de matomo.

grant all privileges on matomo.* to matomouser@localhost;

Limpiar los privilegios y salir.

flush privileges;

exit;

Paso 3: Crear el archivo de configuración de Apache o Nginx

Apache

Si prefieres usar el servidor web Apache, entonces crea un archivo de configuración de host virtual en el directorio /etc/apache2/sites-available/.

sudo nano /etc/apache2/sites-available/matomo.conf

Coloca el siguiente texto en el archivo. Sustituya analitica.tu_dominio.com por su propio nombre de dominio. No olvides establecer un registro A para el nombre de dominio en tu gestor de DNS.

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName analitica..tu_dominio.com
        DocumentRoot /var/www/html/matomo/

        <Directory /var/www/html/matomo>
           DirectoryIndex index.php
           Options FollowSymLinks
           AllowOverride All
           Require all granted
        </Directory>

        <Files "console">
           Options None
           Require all denied
        </Files>

        <Directory /var/www/html/matomo/misc/user>
           Options None
           Require all granted
        </Directory>

        <Directory /var/www/html/matomo/misc>
           Options None
           Require all denied
        </Directory>

        <Directory /var/www/html/matomo/vendor>
           Options None
           Require all denied
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/matomo_error.log
        CustomLog ${APACHE_LOG_DIR}/matomo_access.log combined

</VirtualHost>

Guarda y cierra el archivo. A continuación, habilite este host virtual.

sudo a2ensite matomo.conf

Recarga el servidor web Apache para que el cambio surta efecto.

sudo systemctl reload apache2

Nginx

Si prefieres usar el servidor web Nginx, entonces crea un archivo matomo.conf en el directorio /etc/nginx/conf.d/.

sudo nano /etc/nginx/conf.d/matomo.conf

Coloca el siguiente texto en el archivo. Sustituya analitica.tu_dominio.com por su propio nombre de dominio. No olvides establecer un registro A para el nombre de dominio en tu gestor de DNS.

server {
    listen [::]:80;
    listen 80;
    server_name analitica.tu_dominio.com;

    access_log /var/log/nginx/matomo.access.log;
    error_log /var/log/nginx/matomo.error.log;

    root /var/www/html/matomo/; 
    
    index index.php;
        
    ## only allow accessing the following php files
    location ~ ^/(index|matomo|piwik|js/index).php {
        include snippets/fastcgi-php.conf;
        fastcgi_param HTTP_PROXY ""; # prohibit httpoxy: https://httpoxy.org/
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; 
    }
    
    ## needed for HeatmapSessionRecording plugin
    location = /plugins/HeatmapSessionRecording/configs.php { 
        include snippets/fastcgi-php.conf;
        fastcgi_param HTTP_PROXY "";
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; 
    }
    
    ## deny access to all other .php files
    location ~* ^.+\.php$ {
        deny all;
        return 403;
    }

    ## serve all other files normally 
    location / {
        try_files $uri $uri/ =404;
    }
    
    ## disable all access to the following directories 
    location ~ /(config|tmp|core|lang) {
        deny all;
        return 403; # replace with 404 to not show these directories exist
    }
    location ~ /\.ht {
        deny  all;
        return 403;
    }

    location ~ \.(gif|ico|jpg|png|svg|js|css|htm|html|mp3|mp4|wav|ogg|avi|ttf|eot|woff|woff2|json)$ {
        allow all;
        ## Cache images,CSS,JS and webfonts for an hour
        ## Increasing the duration may improve the load-time, but may cause old files to show after an Matomo upgrade
        expires 1h;
        add_header Pragma public;
        add_header Cache-Control "public";
    }

    location ~ /(libs|vendor|plugins|misc/user) {
        deny all;
        return 403;
    }

    ## properly display textfiles in root directory
    location ~/(.*\.md|LEGALNOTICE|LICENSE) {
        default_type text/plain;
    }
}

Guarda y cierra el archivo. Pruebe la configuración de Nginx y vuelva a cargar Nginx para que los cambios surtan efecto.

sudo nginx -t

sudo systemctl reload nginx

Paso 4: Instalar y habilitar los módulos PHP

Ejecuta los siguientes comandos para instalar los módulos PHP requeridos o recomendados por Matomo.

sudo apt install php-imagick php7.4-mysql php7.4-fpm php7.4-common php7.4-gd php7.4-json php7.4-curl  php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl

Si estás usando el servidor web Apache, necesitas recargarlo para que funcione con estos módulos PHP.

sudo systemctl reload apache2

Los usuarios de Nginx no necesitan recargar.

Ahora deberías poder visitar el asistente de instalación de Matomo basado en la web en http://analitica.tu_dominio.com, pero antes de introducir cualquier información, vamos a habilitar el HTTPS.

Paso 5: Habilitar HTTPS

Para cifrar el tráfico HTTP cuando se visita la interfaz web de Matomo, podemos habilitar HTTPS instalando un certificado TLS gratuito emitido por Let’s Encrypt. Ejecuta los siguientes comandos para instalar el cliente Let’s Encrypt (certbot) en Ubuntu 20.04.

sudo apt update
sudo apt install certbot

Si usas Nginx, también necesitas instalar el plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

A continuación, ejecuta el siguiente comando para obtener e instalar el certificado TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email tu@tu_correo.com -d analitica.tu_dominio.com

If you use Apache, you also need to install the Certbot Apache plugin.

sudo apt install python3-certbot-apache

Then run this command to obtain and install TLS certificate.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email tu@tu_correo.com -d analitica.tu_dominio.com
  • --nginx: Utiliza el plugin nginx.
  • --apache: Utilice el plugin de Apache.
  • --agree-tos: Aceptar las condiciones del servicio.
  • --redirect: Forzar HTTPS mediante redirección 301.
  • --hsts: Añadir la cabecera Strict-Transport-Security a cada respuesta HTTP. Obliga al navegador a utilizar siempre TLS para el dominio. Defiende contra el SSL/TLS Stripping.
  • --staple-ocsp: Activa el grapado OCSP. Una respuesta OCSP válida se grapa al certificado que el servidor ofrece durante TLS.

El certificado debería obtenerse e instalarse automáticamente.

Paso 6: Finalice la instalación en su navegador web

Ve a https://analitica.tu_dominio.com para iniciar el asistente de instalación basado en la web. A continuación, haz clic en el botón Siguiente.

Comprobará si tu sistema cumple con los requisitos como las extensiones de PHP. Si se cumplen todos los requisitos, haz clic en Siguiente.

En el siguiente paso, introduce el nombre de usuario de MariaDB, la contraseña y el nombre de la base de datos que creaste anteriormente. Puedes utilizar el valor por defecto en otros campos.

Después de hacer clic en Siguiente, el asistente de instalación creará automáticamente algunas tablas en la base de datos. Haz clic en Siguiente para continuar.

En la siguiente pantalla, crea un usuario administrador para la interfaz web de Matomo.

Después de crear el usuario administrador, es necesario añadir un sitio web para recoger los datos de análisis.

A continuación, debes añadir el código de seguimiento de JavaScript a tu sitio web.

Una vez hecho esto. Haz clic en el botón Siguiente y tu instalación de Matomo se habrá completado. Ahora puedes entrar en el tablero de Matomo y ver los datos de los visitantes.

Seguimiento de usuarios con JavaScript desactivado

En la interfaz web de Matomo, haz clic en el icono del engranaje en la esquina superior derecha, luego ve a sitios web -> código de seguimiento, y puedes elegir rastrear a los usuarios con JavaScript desactivado.

Habrá un nuevo código de seguimiento. Tienes que sustituir el código de seguimiento existente por el nuevo. En realidad, el nuevo código de seguimiento sólo añade la siguiente línea al código de seguimiento existente.

<noscript><p><img src="//analitica.tu_dominio.com/matomo.php?idsite=1&amp;rec=1" style="border:0;" alt="" /></p></noscript>

Cuando un visitante tiene desactivado JavaScript, o cuando no se puede utilizar JavaScript, el navegador del visitante descargará una imagen.

Configurar Cron Jobs para sitios web de tráfico medio y alto

Si tu sitio web tiene miles de páginas vistas al día, es necesario configurar un trabajo cron para autoarchivar los informes de Matomo. Crea el archivo de trabajo Cron con el siguiente comando.

sudo nano /etc/cron.d/matomo-archive

A continuación, añade las siguientes líneas al archivo.

MAILTO="tu@correo.com"
5 * * * * www-data /usr/bin/php /var/www/matomo/console core:archive --url=https://analitica.tu_dominio.com > /dev/null

La salida estándar se enviará a /dev/null y el error estándar se enviará a tu dirección de correo electrónico. Guarday cierra el archivo. Este trabajo Cron se ejecutará cada hora a los 5 minutos.

Cómo configurar las notificaciones por correo electrónico

Si hay más de un usuario, entonces es una buena idea hacer que Matomo sea capaz de enviar notificaciones por correo electrónico como correos de restablecimiento de contraseña. Para saber cómo configurar un servidor de correo electrónico, por favor revisa el siguiente tutorial. Ten en cuenta que recomiendo ejecutar el servidor de correo de iRedMail en un sistema operativo limpio. Instalar iRedMail en un sistema operativo que tiene otras aplicaciones web puede fallar, y probablemente romper las aplicaciones existentes.

Si no quieres ejecutar tu propio servidor de correo electrónico, puedes configurar un servicio de correo que ya tengas, Gmail o similar.

Cómo configurar una geolocalización precisa con GeoIP

Por defecto, Matomo adivina la ubicación de los visitantes basándose en el idioma que utilizan. Esto no es exacto. Por ejemplo, muchos visitantes no estadounidenses eligen En-US como idioma por defecto para su SO, por lo que habrá más “visitantes estadounidenses” en el informe de Matomo. Para obtener una mejor geolocalización, podemos utilizar la base de datos gratuita MaxMind GeoLite2 IP.

En primer lugar, debes crear una cuenta en MaxMind. Maxmind le enviará un correo electrónico. Haz clic en el enlace del correo electrónico para establecer una contraseña y, a continuación, inicia sesión en tu cuenta de MaxMind.  A continuación, selecciona Mi clave de licencia en la barra de la izquierda.

Haga clic en el botón Generar nueva clave de licencia.

Dele un nombre a toda su clave de licencia, y elige “No” para “¿Se utilizará esta clave para la actualización de GeoIP?” A continuación, haz clic en el botón Confirmar. Se mostrará tu clave de licencia. Nota que la clave de licencia se mostrará sólo una vez, así que cópiala en tu portapapeles.

A continuación, haz clic en el icono de engranaje (Administración) en la interfaz web de Matomo, ve a Sistema -> Geolocalización. A continuación, descarga la última base de datos GeoIP de Maxmind en tu servidor. Reemplaza tu_clave_de_licencia con tu clave de licencia real.

wget -O GeoLite2-City.tar.gz 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&suffix=tar.gz&license_key=tu_clave_licencia'

Extrae el tarball.

tar xvf GeoLite2-City.tar.gz

El tarball se extraerá a un directorio llamado así GeoLite2-City_20200814. A continuación, mueve el archivo GeoLite2-City.mmdb al directorio /var/www/html/matomo/misc/.

sudo mv GeoLite2-City_20200814/GeoLite2-City.mmdb /var/www/html/matomo/misc/

Ahora vuelve a cargar la página de configuración de Geolocalización de Matomo. Elige el segundo proveedor de localización: GeoIP 2 (Php).

Haz clic en el botón “Guardar” para guardar tu configuración. En la parte inferior de esta página, también puedes introducir la URL de descarga para que Matomo pueda actualizar automáticamente la base de datos GeoIP.

  • La URL de descarga de MaxMind es: https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&suffix=tar.gz&license_key=tu_clave_de_licencia
  • Actualice la base de datos cada semana.

Así tendrás precisión a la hora de tener información geográfica de tus visitas. Personaliza el interface de Matomo, en el icono del engranaje, sistema, ajustes generales, sube un logotipo y un favicon y así tendrás un sistema de analíticas con tu marca.

¡Que tengas un ingenioso día!

¡que tengas un ingenioso día!

Contrata tu plan Ingenios@ de Sistemas por 5€ al mes y responderé a todas tus preguntas sobre tecnología en el menor tiempo posible. Pasa a formar parte de la comunidad Ingenios@s de Sistemas y disfruta de contenido exclusivo y aprende sobre sistemas Open Source, Blockchain, SmarContract, Web3, Inteligencia Artificial y Reaidad Virtual, súbete al tren de la Revolución 4.0

Si quieres estar al día y no perderte nada Suscribete al Podcast Ingenios@s de Sistemas, un episodio diario que te mantendrá informado y formado en esta vertiginosa carrera.

Deja un comentario

Share to...