bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Instalación de Matomo (Pi

calendar_month Jun 02, 2026 schedule 21 min de lectura visibility 63 vistas
Установка Matomo (Piwik) на VPS: Высокопроизводительная аналитика с Nginx, PHP и MySQL
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Instalación de Matomo (Piwik) en un VPS: Análisis de alto rendimiento con Nginx, PHP y MySQL

TL;DR

En esta guía detallada, configuraremos paso a paso Matomo (anteriormente Piwik), una potente plataforma de análisis web de código abierto, en su servidor privado virtual (VPS). Aprenderá a instalar y configurar Nginx como servidor web, PHP-FPM para procesar contenido dinámico y una base de datos MySQL/MariaDB para almacenar datos analíticos. El resultado será un sistema de análisis de alto rendimiento y totalmente controlado, que garantiza la total privacidad de los datos y la independencia de los servicios de terceros.

  • Instalación completa de Matomo 5.x en Ubuntu 24.04 LTS.
  • Configuración de Nginx 1.28+ como servidor web.
  • Configuración de PHP 8.3/8.4 con FPM para un rendimiento óptimo.
  • Uso de MySQL 8.x o MariaDB 11.x para el almacenamiento de datos.
  • Activación de HTTPS con Certbot para una conexión segura.
  • Recomendaciones para copias de seguridad, mantenimiento y resolución de problemas.

Qué configuramos y por qué

Esquema: Qué configuramos y por qué
Esquema: Qué configuramos y por qué

En esta guía, nos centraremos en la implementación de Matomo (anteriormente conocido como Piwik), una potente y flexible plataforma de análisis web de código abierto. Matomo le permite recopilar, analizar y visualizar datos sobre los visitantes de su sitio web o aplicación, proporcionando una comprensión profunda de su comportamiento. A diferencia de muchas soluciones en la nube, Matomo le otorga un control total sobre sus datos, su privacidad y su almacenamiento, lo cual es especialmente importante en el contexto de las crecientes demandas de GDPR, CCPA y otras normativas de protección de datos.

Al final, obtendrá un sistema de análisis totalmente funcional y de alto rendimiento, ejecutándose en su propio VPS. Esto significa que todos los datos de sus usuarios se almacenarán en su servidor, bajo su control total, sin ser transferidos a terceros. Es la solución ideal para quienes valoran la privacidad, la seguridad de los datos y desean evitar las tarifas de suscripción de los servicios en la nube, especialmente si tienen varios proyectos o grandes volúmenes de tráfico.

Existen varias alternativas a Matomo en el mercado. La más conocida es Google Analytics, que ofrece una amplia funcionalidad pero requiere la transferencia de datos a la nube de Google. También existen versiones gestionadas en la nube de Matomo (Matomo Cloud), que le liberan de las preocupaciones de infraestructura, pero suelen ser más caras y aún implican el almacenamiento de datos con un proveedor. La elección de Matomo autoalojado en un VPS se debe a varias ventajas clave: propiedad total de los datos, capacidad de personalización e integración, escalabilidad según sus necesidades y, a menudo, un menor costo total de propiedad a largo plazo, especialmente para proyectos con alto tráfico o requisitos estrictos de privacidad.

Qué configuración de VPS se necesita para esta tarea

Esquema: Qué configuración de VPS se necesita para esta tarea
Esquema: Qué configuración de VPS se necesita para esta tarea

La elección de un VPS adecuado para Matomo es crucial para garantizar un funcionamiento estable y una carga rápida de los informes. Matomo, especialmente con grandes volúmenes de datos y consultas frecuentes, puede ser intensivo en recursos. A continuación se presentan los requisitos mínimos y recomendados para escenarios de uso típicos de Matomo en 2026.

Requisitos mínimos (para sitios pequeños, hasta 10.000 visitas al día):

  • CPU: 2 núcleos (por ejemplo, Intel Xeon E5 o AMD EPYC).
  • RAM: 4 GB DDR4.
  • Disco: 100 GB NVMe SSD. NVMe acelera significativamente el trabajo con la base de datos y los archivos de Matomo.
  • Red: 200 Mbps, tráfico ilimitado o con un gran margen (al menos 1 TB/mes).
  • SO: Ubuntu 24.04 LTS (o una distribución de Linux similar).

Plan de VPS recomendado (para sitios medianos, hasta 100.000 visitas al día, o varios sitios):

  • CPU: 4 núcleos (Intel/AMD modernos).
  • RAM: 8-16 GB DDR4. Más RAM permitirá al sistema almacenar más datos en caché, acelerando los informes.
  • Disco: 250-500 GB NVMe SSD. Es importante tener un margen para el crecimiento de la base de datos.
  • Red: 500 Mbps – 1 Gbps, tráfico ilimitado.

Para implementar Matomo con las características mencionadas, se puede considerar un VPS con las características indicadas. Es importante asegurarse de que el proveedor elegido ofrezca un rendimiento estable y un soporte fiable.

Cuándo se necesita un dedicado, no un VPS

Un servidor dedicado (dedicated server) se vuelve necesario si su proyecto tiene un tráfico muy alto (cientos de miles o millones de visitas al día), requiere el máximo rendimiento, control total sobre el hardware o configuraciones de hardware específicas (por ejemplo, arreglos RAID para la base de datos). Matomo puede generar volúmenes de datos muy grandes, y en cierta etapa, el cuello de botella puede no ser solo la CPU o la RAM, sino también el subsistema de disco, que en un servidor dedicado se puede configurar de manera más flexible. Para tales escenarios, se debe considerar un dedicado adecuado.

Ubicación: qué afecta

La elección de la ubicación geográfica del VPS influye en varios aspectos:

  • Latencia: Cuanto más cerca esté el servidor de su audiencia principal, más rápido se cargará Matomo para sus usuarios y más rápido se recopilarán los datos.
  • Legislación: La ubicación del servidor determina las leyes de protección de datos aplicables. Si su audiencia se encuentra en la UE, alojar el servidor en la UE puede simplificar el cumplimiento del GDPR.
  • Disponibilidad: Elija ubicaciones con centros de datos fiables y buena conectividad.

Lo óptimo es elegir una ubicación geográficamente cercana a la mayoría de sus visitantes para minimizar los retrasos en la recopilación y visualización de los datos analíticos.

Preparación del servidor

Esquema: Preparación del servidor
Esquema: Preparación del servidor

Antes de proceder con la instalación de Matomo y el software asociado, es necesario realizar una configuración básica de su VPS. Utilizaremos Ubuntu 24.04 LTS como sistema operativo, ya que ofrece una excelente estabilidad y software actualizado. Se asume que ya se ha conectado al servidor por SSH con la cuenta root.

1. Actualización del sistema

Siempre comience actualizando la lista de paquetes y el propio sistema para asegurarse de que tiene las versiones de software y los parches de seguridad más recientes instalados.


sudo apt update && sudo apt upgrade -y

Este comando actualiza los índices de los paquetes y luego instala todas las actualizaciones disponibles sin solicitar confirmación.

2. Creación de un nuevo usuario con permisos sudo

Trabajar con la cuenta root no es seguro. Crearemos un nuevo usuario y le otorgaremos permisos sudo.


# Reemplace 'youruser' con el nombre de usuario deseado
sudo adduser youruser
sudo usermod -aG sudo youruser

adduser creará un nuevo usuario y le pedirá una contraseña e información adicional. usermod -aG sudo añadirá al usuario al grupo sudo, permitiéndole ejecutar comandos con privilegios elevados.

3. Configuración de la autenticación por claves SSH

El uso de claves SSH es mucho más seguro que las contraseñas. Si aún no lo ha configurado, hágalo ahora. Genere una clave en su máquina local (si no tiene una):


# En su máquina local
ssh-keygen -t ed25519 -C "[email protected]"

Luego, copie la clave pública al servidor para su nuevo usuario. Reemplace youruser y your_vps_ip con sus datos:


# En su máquina local
ssh-copy-id youruser@your_vps_ip

Ahora puede desconectarse de root y conectarse como youruser. Después de una conexión exitosa, desactive la autenticación por contraseña para root y, posiblemente, para todos los usuarios, para aumentar la seguridad. Edite el archivo /etc/ssh/sshd_config:


sudo nano /etc/ssh/sshd_config

Encuentre y modifique las siguientes líneas (o añádalas si no existen):


PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes

Guarde los cambios (Ctrl+O, Enter) y salga (Ctrl+X). Reinicie el servicio SSH:


sudo systemctl restart sshd

Importante: Asegúrese de poder iniciar sesión con una clave SSH antes de deshabilitar PermitRootLogin y PasswordAuthentication. De lo contrario, corre el riesgo de perder el acceso al servidor.

4. Instalación y configuración del firewall (UFW)

UFW (Uncomplicated Firewall) es una utilidad conveniente para administrar iptables. Lo configuraremos para permitir SSH, HTTP y HTTPS.


sudo apt install ufw -y              # Instalación de UFW
sudo ufw default deny incoming       # Denegar todo el tráfico entrante por defecto
sudo ufw default allow outgoing      # Permitir todo el tráfico saliente por defecto
sudo ufw allow ssh                   # Permitir SSH (puerto 22)
sudo ufw allow http                  # Permitir HTTP (puerto 80)
sudo ufw allow https                 # Permitir HTTPS (puerto 443)
sudo ufw enable                      # Habilitar UFW
sudo ufw status verbose              # Verificar el estado

Después de habilitar UFW, asegúrese de que aún puede conectarse por SSH. Si SSH se ejecuta en un puerto no estándar, reemplace sudo ufw allow ssh por sudo ufw allow 1234/tcp (donde 1234 es su puerto).

5. Instalación de Fail2Ban

Fail2Ban escanea los registros del servidor (por ejemplo, SSH, servidor web) en busca de actividad sospechosa (múltiples intentos fallidos de inicio de sesión) y bloquea temporal o permanentemente las direcciones IP de los atacantes.


sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Para una configuración básica de Fail2Ban, puede copiar el archivo de configuración predeterminado:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

En el archivo jail.local, puede configurar parámetros como bantime (tiempo de bloqueo), findtime (período durante el cual se consideran los intentos fallidos) y maxretry (número máximo de intentos). Asegúrese de que las secciones para sshd y nginx-http-auth (necesarias más adelante) estén habilitadas (enabled = true). Reinicie Fail2Ban después de los cambios:


sudo systemctl restart fail2ban

6. Instalación de utilidades básicas

Instalaremos algunas utilidades útiles que pueden ser de ayuda durante el proceso de instalación y para la monitorización.


sudo apt install git curl wget htop unzip -y

Ahora su servidor está listo para la instalación del software principal de Matomo.

Instalación de software — paso a paso

Diagrama: Instalación de software — paso a paso
Diagrama: Instalación de software — paso a paso

Ahora que el servidor está preparado, procederemos a instalar el software necesario: Nginx (servidor web), PHP-FPM (procesador PHP), MySQL/MariaDB (base de datos) y, finalmente, Matomo. Nos centraremos en las versiones actuales de software para 2026.

1. Instalación de Nginx

Nginx actuará como un servidor web de alto rendimiento. Ubuntu 24.04 LTS suele venir con una versión bastante reciente de Nginx.


sudo apt install nginx -y              # Instalación de Nginx
sudo systemctl enable nginx            # Habilitar el inicio automático de Nginx
sudo systemctl start nginx             # Iniciar Nginx
sudo ufw allow 'Nginx Full'            # Permitir HTTP/HTTPS en UFW para Nginx
sudo ufw delete allow 'Nginx HTTP'     # Eliminar reglas HTTP antiguas, si existían
sudo ufw delete allow 'Nginx HTTPS'    # Eliminar reglas HTTPS antiguas, si existían
sudo ufw delete allow http             # Eliminar regla HTTP, si existía
sudo ufw delete allow https            # Eliminar regla HTTPS, si existía
sudo ufw reload                        # Recargar reglas de UFW

Verifique el estado de Nginx:


sudo systemctl status nginx

Debería ver el estado active (running).

2. Instalación de PHP-FPM y extensiones necesarias

Matomo está escrito en PHP. Necesitaremos PHP 8.3 o 8.4 (versiones actuales para 2026) con PHP-FPM (FastCGI Process Manager) para un procesamiento eficiente de las solicitudes de Nginx. Instalaremos las extensiones necesarias.


sudo apt install php8.3-fpm php8.3-mysql php8.3-cli php8.3-gd php8.3-curl php8.3-xml php8.3-mbstring php8.3-intl php8.3-zip php8.3-opcache php8.3-dom -y

Este comando instalará PHP 8.3 FPM, el controlador MySQL, la versión CLI de PHP, así como extensiones importantes para el funcionamiento de Matomo: GD (para gráficos), cURL (para solicitudes HTTP), XML/DOM (para procesamiento XML), Mbstring (para cadenas multibyte), Intl (para internacionalización), Zip (para archivos) y Opcache (para acelerar scripts PHP).

Habilite e inicie PHP-FPM:


sudo systemctl enable php8.3-fpm
sudo systemctl start php8.3-fpm

Verifique el estado de PHP-FPM:


sudo systemctl status php8.3-fpm

Debería ver el estado active (running).

3. Instalación de MySQL/MariaDB

Matomo requiere una base de datos para almacenar toda la información analítica. Instalaremos MariaDB Server 11.x (una alternativa moderna a MySQL).


sudo apt install mariadb-server -y     # Instalación de MariaDB Server
sudo systemctl enable mariadb          # Habilitar el inicio automático de MariaDB
sudo systemctl start mariadb           # Iniciar MariaDB

Ejecute el script de instalación segura de MariaDB para mejorar la seguridad:


sudo mysql_secure_installation

Siga las instrucciones: establezca una contraseña para el usuario root de la base de datos, elimine usuarios anónimos, prohíba el inicio de sesión remoto de root y elimine la base de datos de prueba. Responda Y a todas las preguntas.

Cree una base de datos y un usuario para Matomo:


sudo mysql -u root -p

Ingrese la contraseña que estableció para el usuario root de MySQL. Luego, ejecute los siguientes comandos SQL. Reemplace matomo_user y your_strong_password con sus propios valores.


CREATE DATABASE matomo_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'matomo_user'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON matomo_db. TO 'matomo_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Estos comandos crean la base de datos matomo_db, el usuario matomo_user con la contraseña especificada y le otorgan todos los derechos de acceso necesarios a esta base de datos.

4. Descarga e instalación de Matomo

Descargaremos la última versión estable de Matomo (se asume Matomo 5.x en 2026) del sitio web oficial y la colocaremos en un directorio adecuado.


cd /tmp
wget https://builds.matomo.org/matomo.zip # Descarga de la última versión de Matomo
sudo mkdir -p /var/www/matomo            # Creación del directorio para Matomo
sudo unzip matomo.zip -d /var/www/matomo # Descompresión en el directorio de destino
sudo chown -R www-data:www-data /var/www/matomo # Establecer permisos correctos
sudo find /var/www/matomo -type d -exec chmod 755 {} \; # Permisos para directorios
sudo find /var/www/matomo -type f -exec chmod 644 {} \; # Permisos para archivos
rm matomo.zip                            # Eliminación del archivo

Establecer los permisos www-data:www-data es críticamente importante, ya que el servidor web (Nginx) y PHP-FPM se ejecutarán bajo este usuario. Esto permite a Matomo crear y modificar los archivos necesarios (por ejemplo, caché, registros).

Configuración

Diagrama: Configuración
Diagrama: Configuración

Después de instalar todos los componentes, es necesario configurarlos correctamente para que Matomo funcione de manera correcta y segura.

1. Configuración de Nginx para Matomo

Crearemos un nuevo archivo de configuración de Nginx para su dominio. Reemplace your_domain.com con su dominio real.


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

Inserte el siguiente bloque de configuración. Esta configuración prepara Nginx para servir Matomo, utilizando PHP-FPM y proporcionando seguridad básica. Preste atención a fastcgi_pass unix:/run/php/php8.3-fpm.sock; – esta es la ruta al socket de PHP-FPM.


server {
    listen 80;
    server_name your_domain.com www.your_domain.com;
    root /var/www/matomo;
    index index.php index.html index.htm;

    # Asegúrese de que Matomo pueda ser accesible por HTTPS
    # Este bloque será actualizado por Certbot para HTTPS
    location / {
        try_files $uri /index.php$is_args$args;
    }

    # Bloqueo de acceso a archivos confidenciales de Matomo
    location ~ /(config|tmp|core|vendor)/ {
        deny all;
        return 404;
    }
    location ~ /\. {
        deny all;
        return 404;
    }
    location ~ \.ini$ {
        deny all;
        return 404;
    }

    # Configuración de PHP-FPM
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }

    # Configuración de caché para archivos estáticos
    location ~ \.(js|css|png|jpg|jpeg|gif|ico|svg|webp)$ {
        expires 365d;
        add_header Cache-Control "public, no-transform";
    }

    # Encabezados de seguridad adicionales
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";
    add_header Referrer-Policy "no-referrer-when-downgrade";
}

Guarde el archivo, cree un enlace simbólico y pruebe la configuración de Nginx:


sudo ln -s /etc/nginx/sites-available/matomo.conf /etc/nginx/sites-enabled/
sudo nginx -t                          # Comprobación de la sintaxis de la configuración
sudo systemctl reload nginx            # Recargar Nginx

Si la prueba fue exitosa, Nginx debería estar listo.

2. Configuración de PHP-FPM

Para Matomo, se recomienda aumentar algunos límites de PHP. Abra el archivo php.ini para PHP-FPM:


sudo nano /etc/php/8.3/fpm/php.ini

Encuentre y modifique los siguientes parámetros:


memory_limit = 512M               ; Mínimo 256M, mejor 512M para instalaciones grandes
max_execution_time = 300          ; Aumentar para operaciones de archivo largas
post_max_size = 64M
upload_max_filesize = 64M
date.timezone = Europe/Berlin     ; Establezca su zona horaria, por ejemplo, "Europe/Madrid"

Guarde los cambios y reinicie PHP-FPM:


sudo systemctl restart php8.3-fpm

3. Instalación de SSL/TLS con Certbot

El uso de HTTPS es absolutamente necesario para cualquier análisis web. Instalaremos Certbot para la emisión y renovación automática de certificados SSL de Let's Encrypt.


sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Siga las instrucciones de Certbot. Le pedirá su correo electrónico para notificaciones y su consentimiento a los términos de uso. Después de una emisión exitosa del certificado, Certbot actualizará automáticamente su configuración de Nginx para redirigir HTTP a HTTPS y usar el nuevo certificado. También configurará la renovación automática de certificados.

Verifique que la renovación automática funcione:

sudo certbot renew --dry-run

Si ve el mensaje The dry run was successful, significa que todo está configurado correctamente.

4. Finalización de la instalación de Matomo a través de la interfaz web

Ahora que todo el stack está configurado, abra su dominio (https://your_domain.com) en un navegador web. Verá la página de bienvenida de Matomo.

  1. Welcome: Haga clic en "Next".
  2. System Check: Matomo verificará todos los requisitos del sistema. Asegúrese de que todos los elementos estén marcados en verde. Si hay advertencias, regrese a la configuración de PHP o a los permisos de acceso.
  3. Database Setup: Ingrese los datos que creó anteriormente:
    • Database Server: 127.0.0.1 o localhost
    • Login: matomo_user
    • Password: your_strong_password
    • Database Name: matomo_db
    • Table prefix: matomo_ (puede dejarlo por defecto)
    • Adapter: PDO\MYSQL
    Haga clic en "Next". Matomo creará todas las tablas necesarias.
  4. Super User: Cree una cuenta de superusuario de Matomo. Esta es la cuenta de administrador principal. Recuerde el nombre de usuario y la contraseña.
  5. Website Setup: Ingrese la información de su primer sitio web para rastrear (URL, zona horaria, etc.).
  6. JavaScript Tracking Code: Matomo le proporcionará un código JavaScript para insertar en su sitio web. Cópielo e insértelo antes de la etiqueta de cierre </body> en todas las páginas que desee rastrear.

Después de esto, será redirigido al panel de control de Matomo.

5. Configuración de tareas Cron para Matomo

Matomo utiliza tareas cron para archivar informes. Esto es críticamente importante para el rendimiento, ya que sin esto, Matomo procesará los informes en tiempo real, lo que ralentizará la interfaz. Abra crontab para el usuario www-data:


sudo -u www-data crontab -e

Si es la primera vez, elija un editor (por ejemplo, nano). Agregue las siguientes líneas al final del archivo:


# Procesamiento de archivo de Matomo
5     /usr/bin/php8.3 /var/www/matomo/console core:archive --url=https://your_domain.com/ > /var/www/matomo/tmp/logs/matomo-archive.log 2>&1

Este comando ejecutará el archivado de Matomo cada hora a los 5 minutos, guardando la salida en un archivo de registro. Reemplace your_domain.com con su dominio. Asegúrese de que la ruta a php8.3 sea correcta (puede encontrarla usando which php8.3).

6. Verificación de la funcionalidad

Asegúrese de que Matomo sea accesible y funcione:

  • Abra https://your_domain.com en el navegador. Debería ver la página de inicio de sesión de Matomo.
  • Intente iniciar sesión con la cuenta de superusuario.
  • Verifique los registros de Nginx: sudo tail -f /var/log/nginx/access.log y sudo tail -f /var/log/nginx/error.log.
  • Verifique los registros de PHP-FPM: sudo tail -f /var/log/php8.3-fpm.log (la ruta puede variar).
  • Verifique los registros de archivo de Matomo: sudo tail -f /var/www/matomo/tmp/logs/matomo-archive.log.

Si ve tráfico en su sitio web, después de un tiempo los datos comenzarán a aparecer en Matomo.

Copias de seguridad y mantenimiento

Esquema: Copias de seguridad y mantenimiento
Esquema: Copias de seguridad y mantenimiento

Las copias de seguridad regulares y el mantenimiento oportuno son clave para el funcionamiento estable y fiable de Matomo. La pérdida de datos analíticos puede ser crítica, por lo que es importante tener una estrategia de recuperación.

1. Qué respaldar

Para Matomo, es necesario respaldar dos categorías principales de datos:

  • Base de datos de Matomo: Contiene todos los datos analíticos recopilados, informes, información sobre sitios web y usuarios. Esta es la parte más importante.
  • Archivos de Matomo:
    • /var/www/matomo/config/config.ini.php: El archivo de configuración principal de Matomo, que contiene los datos de conexión a la base de datos y otras configuraciones.
    • /var/www/matomo/plugins/: Si ha instalado plugins adicionales, deben ser respaldados.
    • /var/www/matomo/misc/: Puede haber archivos de usuario, por ejemplo, favicon.
    • /var/www/matomo/js/: Si ha personalizado los archivos JavaScript de seguimiento.

2. Script simple de copia de seguridad automática

Crearemos un script simple que archivará la base de datos y los archivos clave de Matomo, y luego los moverá a un directorio separado. Para mayor fiabilidad, se recomienda utilizar un almacenamiento remoto.


sudo mkdir -p /opt/backups/matomo
sudo nano /opt/backups/matomo/backup_matomo.sh

Inserte el siguiente script, reemplazando los datos de la base de datos, el dominio y la ruta al directorio de Matomo:


#!/bin/bash

# Настройки
DB_USER="matomo_user"
DB_PASS="your_strong_password"
DB_NAME="matomo_db"
MATOMO_DIR="/var/www/matomo"
BACKUP_DIR="/opt/backups/matomo"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE_DB="${BACKUP_DIR}/matomo_db_${TIMESTAMP}.sql.gz"
BACKUP_FILE_FILES="${BACKUP_DIR}/matomo_files_${TIMESTAMP}.tar.gz"
LOG_FILE="${BACKUP_DIR}/backup_matomo.log"
RETENTION_DAYS=7 # Сколько дней хранить бэкапы

echo "--- Начинаем бэкап Matomo в ${TIMESTAMP} ---" >> "${LOG_FILE}"

# Бэкап базы данных
echo "Бэкап базы данных..." >> "${LOG_FILE}"
if mysqldump --user="${DB_USER}" --password="${DB_PASS}" "${DB_NAME}" | gzip > "${BACKUP_FILE_DB}"; then
    echo "Бэкап базы данных успешно создан: ${BACKUP_FILE_DB}" >> "${LOG_FILE}"
else
    echo "Ошибка при создании бэкапа базы данных!" >> "${LOG_FILE}"
    exit 1
fi

# Бэкап файлов Matomo (только конфиг и плагины)
echo "Бэкап файлов Matomo..." >> "${LOG_FILE}"
if tar -czf "${BACKUP_FILE_FILES}" \
    "${MATOMO_DIR}/config/config.ini.php" \
    "${MATOMO_DIR}/plugins" \
    "${MATOMO_DIR}/misc" \
    "${MATOMO_DIR}/js"; then
    echo "Бэкап файлов успешно создан: ${BACKUP_FILE_FILES}" >> "${LOG_FILE}"
else
    echo "Ошибка при создании бэкапа файлов Matomo!" >> "${LOG_FILE}"
    exit 1
fi

# Удаление старых бэкапов
echo "Удаление старых бэкапов (старше ${RETENTION_DAYS} дней)..." >> "${LOG_FILE}"
find "${BACKUP_DIR}" -type f -name "matomo_*.gz" -mtime +"${RETENTION_DAYS}" -delete
echo "Завершено удаление старых бэкапов." >> "${LOG_FILE}"

echo "--- Бэкап Matomo завершен ---" >> "${LOG_FILE}"

Haga el script ejecutable:


sudo chmod +x /opt/backups/matomo/backup_matomo.sh

3. Configuración de Cron para la copia de seguridad automática

Añadiremos este script a crontab para que se ejecute automáticamente, por ejemplo, diariamente a las 2 de la madrugada.


sudo crontab -e

Añada la siguiente línea al final del archivo:


0 2 * * * /opt/backups/matomo/backup_matomo.sh >> /opt/backups/matomo/backup_cron.log 2>&1

Este comando ejecutará el script de copia de seguridad todos los días a las 02:00. La salida de la tarea cron se redirigirá a /opt/backups/matomo/backup_cron.log.

4. Dónde almacenar las copias de seguridad

Almacenar las copias de seguridad en el mismo servidor que el servicio principal es extremadamente arriesgado. En caso de fallo del servidor, perderá tanto el servicio como las copias de seguridad. Se recomienda utilizar:

  • Almacenamiento externo compatible con S3: Servicios como Amazon S3, DigitalOcean Spaces, Backblaze B2 ofrecen almacenamiento fiable y económico. Para la carga, puede utilizar las utilidades s3cmd, rclone o awscli, integrándolas en su script de copia de seguridad.
  • VPS separado: Puede configurar un segundo VPS más pequeño y utilizar rsync o scp para transferir las copias de seguridad a él.
  • NAS/servidor local: Si tiene su propia infraestructura.

La integración de rclone en el script permitirá enviar las copias de seguridad a múltiples almacenamientos en la nube. Ejemplo de adición al script (después de crear el archivo):


# Добавьте в скрипт backup_matomo.sh после создания архивов
# rclone copy "${BACKUP_FILE_DB}" "my-s3-remote:matomo-backups/" >> "${LOG_FILE}"
# rclone copy "${BACKUP_FILE_FILES}" "my-s3-remote:matomo-backups/" >> "${LOG_FILE}"

Deberá configurar rclone previamente y crear un repositorio remoto (por ejemplo, my-s3-remote).

5. Actualizaciones: rolling vs ventana de mantenimiento

Mantenga Matomo y todos los componentes (Nginx, PHP, MySQL, OS) actualizados para la seguridad y nuevas funcionalidades.

  • Actualización de OS y software: Ejecute regularmente sudo apt update && sudo apt upgrade -y. Para versiones menores (por ejemplo, PHP 8.3.x a 8.3.y), esto se puede hacer durante el horario laboral. Para actualizaciones mayores (por ejemplo, PHP 8.3 a 8.4), planifique una ventana de mantenimiento, ya que pueden ser necesarios cambios en la configuración o el código de Matomo.
  • Actualización de Matomo:
    1. Siempre haga una copia de seguridad de la base de datos y los archivos de Matomo antes de actualizar.
    2. Descargue la nueva versión de Matomo desde el sitio web oficial.
    3. Descomprima los archivos sobre la instalación existente (excepto config/config.ini.php y tmp/).
    4. Ejecute la actualización a través de la interfaz web o mediante CLI: sudo -u www-data php /var/www/matomo/console core:update.
    Matomo suele ofrecer una "actualización con un solo clic" a través de la interfaz web, pero para servidores de producción, la actualización por CLI es más segura y controlada.

Troubleshooting + FAQ

En esta sección, examinaremos los problemas típicos que pueden surgir durante la instalación y operación de Matomo, y también proporcionaremos respuestas a las preguntas frecuentes.

Matomo no carga o devuelve un error 500/502

Qué verificar: Este es un problema frecuente que indica fallos en el funcionamiento de PHP-FPM o Nginx.

  1. Logs de Nginx: Revise /var/log/nginx/error.log en busca de errores relacionados con fastcgi_pass o permisos de acceso.
  2. Logs de PHP-FPM: Revise /var/log/php8.3-fpm.log (o una ruta similar) en busca de errores de PHP.
  3. Estado de PHP-FPM: Asegúrese de que PHP-FPM esté en ejecución: sudo systemctl status php8.3-fpm.
  4. Estado de Nginx: Asegúrese de que Nginx esté en ejecución: sudo systemctl status nginx.
  5. Permisos de acceso: Asegúrese de que el usuario www-data tenga permisos completos sobre el directorio de Matomo: sudo ls -la /var/www/matomo.

Cómo solucionar: Reinicie Nginx y PHP-FPM. Si el error es 502, a menudo ayuda aumentar fastcgi_buffers en la configuración de Nginx o memory_limit en php.ini. Verifique que la ruta al socket de PHP-FPM en la configuración de Nginx (fastcgi_pass unix:/run/php/php8.3-fpm.sock;) coincida con la real.

Carga lenta de páginas o informes de Matomo

Qué verificar: El funcionamiento lento puede ser causado por varios factores.

  1. Tareas Cron: Asegúrese de que las tareas cron para el archivado de Matomo estén configuradas y funcionando. Si el archivado no se realiza, Matomo generará informes en tiempo real, lo cual consume muchos recursos. Verifique sudo -u www-data crontab -l y los logs de archivado.
  2. Opcache: Verifique que PHP Opcache esté habilitado y configurado correctamente. Aumente opcache.memory_consumption en php.ini si es necesario.
  3. Recursos del servidor: Utilice htop o top para monitorear el uso de CPU y RAM durante la carga de informes. Si la CPU o la RAM están constantemente al 100%, es posible que su VPS no sea lo suficientemente potente.
  4. Configuración de MySQL: Para bases de datos muy grandes, puede ser necesaria la optimización de MySQL (por ejemplo, indexación, configuración de innodb_buffer_pool_size).

Cómo solucionar: Configure las tareas cron. Aumente memory_limit de PHP y los parámetros de Opcache. Si los recursos del servidor son insuficientes, considere cambiar a un VPS más potente. Para MySQL, consulte con un DBA o utilice herramientas de optimización.

No se recopilan datos, aunque el código de seguimiento esté instalado

Qué verificar: Esto significa que Matomo no recibe información de su sitio web.

  1. Código de seguimiento: Asegúrese de que el código JavaScript de Matomo esté correctamente insertado en todas las páginas de su sitio web y que el dominio en el código coincida con el dominio de Matomo.
  2. Solicitudes de red: Abra la consola del desarrollador en el navegador (F12) y vaya a la pestaña "Network". Verifique si su sitio web envía solicitudes a Matomo (normalmente a matomo.php). Debe haber una solicitud con código 200 OK.
  3. Logs de Nginx: Revise access.log de Nginx para ver si se reciben solicitudes a matomo.php.
  4. Firewall: Asegúrese de que su firewall (UFW) no esté bloqueando las conexiones entrantes en el puerto 80/443.
  5. Trusted Hosts: En config/config.ini.php de Matomo, verifique la sección [General] y el parámetro trusted_hosts[]. Asegúrese de que su dominio de Matomo esté especificado allí.

Cómo solucionar: Corrija el código de seguimiento. Verifique la configuración del firewall. Añada su dominio a trusted_hosts[] en Matomo. Reinicie Nginx.

¿Cómo actualizar Matomo de forma segura?

Respuesta: Una actualización segura de Matomo siempre comienza con una copia de seguridad completa de la base de datos y los archivos. Luego, puede utilizar el mecanismo de actualización incorporado a través de la interfaz web (si está disponible) o la línea de comandos. Para la actualización por CLI, vaya al directorio de Matomo y ejecute el comando sudo -u www-data php console core:update. Este método es preferible para servidores de producción, ya que es más controlado y evita los tiempos de espera del navegador. Después de la actualización, siempre revise los logs en busca de errores.

¿Qué configuración mínima de VPS es adecuada para Matomo?

Respuesta: Para sitios web pequeños (hasta 10.000 visitas al día), se requerirá un VPS mínimo con 2 núcleos de CPU, 4 GB de RAM y 100 GB de NVMe SSD. El disco NVMe es crítico para el rendimiento de la base de datos de Matomo. La red debe ser de al menos 200 Mbit/s. Esto será suficiente para un funcionamiento estable de Matomo y una carga cómoda de informes.

¿Qué elegir: VPS o dedicado para Matomo?

Respuesta: La elección entre un VPS y un servidor dedicado depende de la escala de su proyecto. Para la mayoría de los sitios web pequeños y medianos (hasta 100.000 - 200.000 visitas al día), un VPS potente será la solución óptima, ofreciendo un buen equilibrio entre rendimiento y coste. Un servidor dedicado se vuelve necesario para cargas muy altas (cientos de miles o millones de visitas), cuando se requiere el máximo rendimiento, control total sobre el hardware (por ejemplo, para arreglos RAID específicos) o requisitos estrictos de aislamiento de recursos. Si recién está comenzando, siempre elija un VPS y escale a medida que crezcan sus necesidades.

¿Cómo proteger Matomo del spam y los datos incorrectos?

Respuesta: Matomo tiene funciones integradas para la protección contra el spam. En la configuración del sitio web, puede habilitar el filtrado por direcciones IP o rangos, así como excluir ciertas URL o parámetros del seguimiento. También se recomienda utilizar la funcionalidad "Bots & Spiders" para la exclusión automática de bots de búsqueda conocidos. Para una protección más avanzada, puede utilizar plugins adicionales de Matomo o configurar reglas en Nginx para bloquear solicitudes sospechosas a matomo.php.

Conclusiones y próximos pasos

Diagrama: Conclusiones y próximos pasos
Diagrama: Conclusiones y próximos pasos

¡Felicidades! Ha instalado y configurado Matomo con éxito en su VPS utilizando Nginx, PHP-FPM y MySQL/MariaDB. Ahora tiene un sistema de análisis web potente, privado y totalmente controlado que le proporciona un control total sobre sus datos y su seguridad. Ha establecido una base sólida para recopilar y analizar información sobre los visitantes de su sitio web, garantizando al mismo tiempo un alto rendimiento y escalabilidad.

Aquí hay algunos próximos pasos que puede seguir para desarrollar aún más su sistema de análisis:

  • Configuración de sitios web y usuarios adicionales: Si tiene varios proyectos, agréguelos a Matomo y cree usuarios separados con derechos de acceso limitados para cada equipo o cliente.
  • Exploración de las funciones avanzadas de Matomo: Explore funciones como el seguimiento de objetivos, embudos de conversión, variables personalizadas, mapas de calor (a través de complementos), pruebas A/B y segmentación de audiencia para obtener una comprensión más profunda del comportamiento del usuario.
  • Monitoreo del rendimiento y los recursos: Supervise regularmente el uso de CPU, RAM y disco en su VPS, especialmente después de un aumento en el tráfico. Esto le ayudará a determinar a tiempo la necesidad de escalado u optimización.
  • Implementación de CDN para archivos estáticos de Matomo: Para mejorar la velocidad de carga de la interfaz de Matomo, puede considerar el uso de una CDN para archivos estáticos (CSS, JS, imágenes).

¿Te fue útil esta guía?

instalación matomo (piwik) en vps: analítica de alto rendimiento con nginx, php y mysql
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.