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é
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
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
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
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
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.
- Welcome: Haga clic en "Next".
- 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.
- Database Setup: Ingrese los datos que creó anteriormente:
- Database Server:
127.0.0.1olocalhost - Login:
matomo_user - Password:
your_strong_password - Database Name:
matomo_db - Table prefix:
matomo_(puede dejarlo por defecto) - Adapter:
PDO\MYSQL
- Database Server:
- 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.
- Website Setup: Ingrese la información de su primer sitio web para rastrear (URL, zona horaria, etc.).
- 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.comen 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.logysudo 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
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,rcloneoawscli, integrándolas en su script de copia de seguridad. - VPS separado: Puede configurar un segundo VPS más pequeño y utilizar
rsyncoscppara 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:
- Siempre haga una copia de seguridad de la base de datos y los archivos de Matomo antes de actualizar.
- Descargue la nueva versión de Matomo desde el sitio web oficial.
- Descomprima los archivos sobre la instalación existente (excepto
config/config.ini.phpytmp/). - 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.