Установка Matomo (Piwik) на VPS: Высокопроизводительная аналитика с Nginx, PHP и MySQL
TL;DR
В этом подробном руководстве мы шаг за шагом настроим Matomo (ранее Piwik) — мощную, открытую платформу веб-аналитики, на вашем виртуальном приватном сервере (VPS). Вы узнаете, как установить и сконфигурировать Nginx в качестве веб-сервера, PHP-FPM для обработки динамического контента и базу данных MySQL/MariaDB для хранения аналитических данных. Результатом станет высокопроизводительная и полностью контролируемая система аналитики, обеспечивающая полную конфиденциальность данных и независимость от сторонних сервисов.
- Полная установка Matomo 5.x на Ubuntu 24.04 LTS.
- Конфигурация Nginx 1.28+ как веб-сервера.
- Настройка PHP 8.3/8.4 с FPM для оптимальной производительности.
- Использование MySQL 8.x или MariaDB 11.x для хранения данных.
- Включение HTTPS с помощью Certbot для безопасного соединения.
- Рекомендации по бэкапам, обслуживанию и устранению неполадок.
Что мы настраиваем и зачем
В этом руководстве мы займемся развертыванием Matomo (ранее известной как Piwik) – мощной и гибкой платформы веб-аналитики с открытым исходным кодом. Matomo позволяет вам собирать, анализировать и визуализировать данные о посетителях вашего веб-сайта или приложения, предоставляя глубокое понимание их поведения. В отличие от многих облачных решений, Matomo дает вам полный контроль над вашими данными, их конфиденциальностью и хранением, что особенно важно в условиях растущих требований к GDPR, CCPA и другим нормативным актам о защите данных.
В итоге вы получите полностью функциональную, высокопроизводительную систему аналитики, работающую на вашем собственном VPS. Это означает, что все данные о ваших пользователях будут храниться на вашем сервере, под вашим полным контролем, без передачи третьим сторонам. Это идеальное решение для тех, кто ценит конфиденциальность, безопасность данных и хочет избежать абонентской платы за облачные сервисы, особенно при наличии нескольких проектов или высоких объемах трафика.
На рынке существует несколько альтернатив Matomo. Наиболее известная — Google Analytics, которая предлагает широкий функционал, но требует передачи данных в облако Google. Существуют также облачные управляемые версии Matomo (Matomo Cloud), которые снимают с вас заботы об инфраструктуре, но обычно обходятся дороже и все равно подразумевают хранение данных у провайдера. Выбор self-hosted Matomo на VPS обусловлен несколькими ключевыми преимуществами: полная собственность на данные, возможность кастомизации и интеграции, масштабируемость под ваши нужды и, зачастую, более низкая общая стоимость владения в долгосрочной перспективе, особенно для проектов с высоким трафиком или строгими требованиями к конфиденциальности.
Какой VPS-конфиг нужен под эту задачу
Выбор подходящего VPS для Matomo критически важен для обеспечения стабильной работы и быстрой загрузки отчетов. Matomo, особенно при больших объемах данных и частых запросах, может быть ресурсоемкой. Ниже приведены минимальные и рекомендуемые требования для типичных сценариев использования Matomo в 2026 году.
Минимальные требования (для небольших сайтов, до 10 000 посещений в день):
- CPU: 2 ядра (например, Intel Xeon E5 или AMD EPYC).
- RAM: 4 ГБ DDR4.
- Диск: 100 ГБ NVMe SSD. NVMe значительно ускоряет работу с базой данных и файлами Matomo.
- Сеть: 200 Мбит/с, безлимитный трафик или с большим запасом (не менее 1 ТБ/мес).
- ОС: Ubuntu 24.04 LTS (или аналогичный дистрибутив Linux).
Рекомендуемый VPS-план (для средних сайтов, до 100 000 посещений в день, или нескольких сайтов):
- CPU: 4 ядра (современные Intel/AMD).
- RAM: 8-16 ГБ DDR4. Больше RAM позволит системе кэшировать больше данных, ускоряя отчеты.
- Диск: 250-500 ГБ NVMe SSD. Важно иметь запас для роста базы данных.
- Сеть: 500 Мбит/с – 1 Гбит/с, безлимитный трафик.
Для развертывания Matomo с указанными характеристиками можно рассмотреть VPS с указанными характеристиками. Важно убедиться, что выбранный провайдер предлагает стабильную производительность и надежную поддержку.
Когда нужен dedicated, а не VPS
Выделенный сервер (dedicated server) становится необходимым, если ваш проект имеет очень высокий трафик (сотни тысяч или миллионы посещений в день), требует максимальной производительности, полного контроля над аппаратным обеспечением или специфических аппаратных конфигураций (например, RAID-массивы для базы данных). Matomo может генерировать очень большие объемы данных, и на определенном этапе узким местом может стать не только CPU или RAM, но и дисковая подсистема, которую на dedicated-сервере можно настроить более гибко. Для таких сценариев следует рассмотреть подходящий dedicated.
Локация: на что влияет
Выбор географической локации VPS влияет на несколько аспектов:
- Задержка (Latency): Чем ближе сервер к вашей основной аудитории, тем быстрее будет загружаться Matomo для ваших пользователей и тем быстрее будут собираться данные.
- Законодательство: Расположение сервера определяет применимые законы о защите данных. Если ваша аудитория находится в ЕС, размещение сервера в ЕС может упростить соблюдение GDPR.
- Доступность: Выбирайте локации с надежными дата-центрами и хорошей связностью.
Оптимально выбирать локацию, которая находится географически близко к большинству ваших посетителей, чтобы минимизировать задержки при сборе и отображении аналитических данных.
Подготовка сервера
Прежде чем приступить к установке Matomo и сопутствующего ПО, необходимо выполнить базовую настройку вашего VPS. Мы будем использовать Ubuntu 24.04 LTS как операционную систему, так как она предлагает отличную стабильность и актуальное ПО. Предполагается, что вы уже подключились к серверу по SSH под учетной записью root.
1. Обновление системы
Всегда начинайте с обновления списка пакетов и самой системы, чтобы убедиться, что у вас установлены самые свежие версии ПО и патчи безопасности.
sudo apt update && sudo apt upgrade -y
Эта команда обновляет индексы пакетов и затем устанавливает все доступные обновления без запроса подтверждения.
2. Создание нового пользователя с правами sudo
Работа под учетной записью root небезопасна. Создадим нового пользователя и предоставим ему права sudo.
# Замените 'youruser' на желаемое имя пользователя
sudo adduser youruser
sudo usermod -aG sudo youruser
adduser создаст нового пользователя и запросит пароль и дополнительную информацию. usermod -aG sudo добавит пользователя в группу sudo, позволяя ему выполнять команды с повышенными привилегиями.
3. Настройка аутентификации по SSH-ключам
Использование SSH-ключей намного безопаснее, чем паролей. Если вы еще не настроили, сделайте это сейчас. Сгенерируйте ключ на вашей локальной машине (если у вас его нет):
# На вашей локальной машине
ssh-keygen -t ed25519 -C "[email protected]"
Затем скопируйте публичный ключ на сервер для вашего нового пользователя. Замените youruser и your_vps_ip на свои данные:
# На вашей локальной машине
ssh-copy-id youruser@your_vps_ip
Теперь вы можете отключиться от root и подключиться как youruser. После успешного подключения, отключите аутентификацию по паролю для root и, возможно, для всех пользователей, чтобы повысить безопасность. Отредактируйте файл /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Найдите и измените следующие строки (или добавьте, если отсутствуют):
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
Сохраните изменения (Ctrl+O, Enter) и выйдите (Ctrl+X). Перезапустите службу SSH:
sudo systemctl restart sshd
Важно: Убедитесь, что вы можете войти с помощью SSH-ключа, прежде чем отключать PermitRootLogin и PasswordAuthentication. Иначе вы рискуете потерять доступ к серверу.
4. Установка и настройка межсетевого экрана (UFW)
UFW (Uncomplicated Firewall) — это удобная утилита для управления iptables. Настроим его для разрешения SSH, HTTP и HTTPS.
sudo apt install ufw -y # Установка UFW
sudo ufw default deny incoming # Запретить все входящие по умолчанию
sudo ufw default allow outgoing # Разрешить все исходящие по умолчанию
sudo ufw allow ssh # Разрешить SSH (порт 22)
sudo ufw allow http # Разрешить HTTP (порт 80)
sudo ufw allow https # Разрешить HTTPS (порт 443)
sudo ufw enable # Включить UFW
sudo ufw status verbose # Проверить статус
После включения UFW, убедитесь, что вы все еще можете подключиться по SSH. Если SSH работает на нестандартном порту, замените sudo ufw allow ssh на sudo ufw allow 1234/tcp (где 1234 — ваш порт).
5. Установка Fail2Ban
Fail2Ban сканирует логи сервера (например, SSH, веб-сервера) на предмет подозрительной активности (многократные неудачные попытки входа) и временно или навсегда блокирует IP-адреса злоумышленников.
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Для базовой настройки Fail2Ban можно скопировать конфигурационный файл по умолчанию:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
В файле jail.local вы можете настроить параметры, такие как bantime (время блокировки), findtime (период, в течение которого учитываются неудачные попытки) и maxretry (максимальное количество попыток). Убедитесь, что секции для sshd и nginx-http-auth (понадобится позже) включены (enabled = true). Перезапустите Fail2Ban после изменений:
sudo systemctl restart fail2ban
6. Установка базовых утилит
Установим несколько полезных утилит, которые могут пригодиться в процессе установки и для мониторинга.
sudo apt install git curl wget htop unzip -y
Теперь ваш сервер готов к установке основного программного обеспечения для Matomo.
Установка ПО — пошагово
Теперь, когда сервер подготовлен, приступим к установке необходимого программного обеспечения: Nginx (веб-сервер), PHP-FPM (обработчик PHP), MySQL/MariaDB (база данных) и, наконец, сама Matomo. Мы будем ориентироваться на актуальные версии ПО на 2026 год.
1. Установка Nginx
Nginx будет выступать в качестве высокопроизводительного веб-сервера. Ubuntu 24.04 LTS обычно поставляется с достаточно свежей версией Nginx.
sudo apt install nginx -y # Установка Nginx
sudo systemctl enable nginx # Включение автозапуска Nginx
sudo systemctl start nginx # Запуск Nginx
sudo ufw allow 'Nginx Full' # Разрешение HTTP/HTTPS в UFW для Nginx
sudo ufw delete allow 'Nginx HTTP' # Удаление старых правил HTTP, если были
sudo ufw delete allow 'Nginx HTTPS' # Удаление старых правил HTTPS, если были
sudo ufw delete allow http # Удаление правила HTTP, если было
sudo ufw delete allow https # Удаление правила HTTPS, если было
sudo ufw reload # Перезагрузка правил UFW
Проверьте статус Nginx:
sudo systemctl status nginx
Вы должны увидеть статус active (running).
2. Установка PHP-FPM и необходимых расширений
Matomo написана на PHP. Нам понадобится PHP 8.3 или 8.4 (актуальные версии на 2026 год) с PHP-FPM (FastCGI Process Manager) для эффективной обработки запросов Nginx. Установим необходимые расширения.
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
Эта команда установит PHP 8.3 FPM, драйвер MySQL, CLI-версию PHP, а также важные расширения для работы Matomo: GD (для графиков), cURL (для HTTP-запросов), XML/DOM (для обработки XML), Mbstring (для многобайтовых строк), Intl (для интернационализации), Zip (для архивов) и Opcache (для ускорения PHP-скриптов).
Включите и запустите PHP-FPM:
sudo systemctl enable php8.3-fpm
sudo systemctl start php8.3-fpm
Проверьте статус PHP-FPM:
sudo systemctl status php8.3-fpm
Вы должны увидеть статус active (running).
3. Установка MySQL/MariaDB
Matomo требует базу данных для хранения всей аналитической информации. Мы установим MariaDB Server 11.x (современная альтернатива MySQL).
sudo apt install mariadb-server -y # Установка MariaDB Server
sudo systemctl enable mariadb # Включение автозапуска MariaDB
sudo systemctl start mariadb # Запуск MariaDB
Запустите скрипт безопасной установки MariaDB для повышения безопасности:
sudo mysql_secure_installation
Следуйте инструкциям: установите пароль для пользователя root базы данных, удалите анонимных пользователей, запретите удаленный вход root и удалите тестовую базу данных. Отвечайте Y на все вопросы.
Создайте базу данных и пользователя для Matomo:
sudo mysql -u root -p
Введите пароль, который вы установили для root пользователя MySQL. Затем выполните следующие SQL-команды. Замените matomo_user и your_strong_password на свои значения.
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;
Эти команды создают базу данных matomo_db, пользователя matomo_user с указанным паролем и предоставляют ему все необходимые права доступа к этой базе данных.
4. Скачивание и установка Matomo
Загрузим последнюю стабильную версию Matomo (предполагается Matomo 5.x в 2026 году) с официального сайта и разместим ее в подходящей директории.
cd /tmp
wget https://builds.matomo.org/matomo.zip # Скачивание последней версии Matomo
sudo mkdir -p /var/www/matomo # Создание директории для Matomo
sudo unzip matomo.zip -d /var/www/matomo # Распаковка в целевую директорию
sudo chown -R www-data:www-data /var/www/matomo # Установка правильных прав
sudo find /var/www/matomo -type d -exec chmod 755 {} \; # Права для директорий
sudo find /var/www/matomo -type f -exec chmod 644 {} \; # Права для файлов
rm matomo.zip # Удаление архива
Установка прав доступа www-data:www-data критически важна, так как веб-сервер (Nginx) и PHP-FPM будут работать под этим пользователем. Это позволяет Matomo создавать и изменять необходимые файлы (например, кэш, логи).
Конфигурация
После установки всех компонентов, необходимо их правильно сконфигурировать, чтобы Matomo работала корректно и безопасно.
1. Конфигурация Nginx для Matomo
Создадим новый конфигурационный файл Nginx для вашего домена. Замените your_domain.com на ваш реальный домен.
sudo nano /etc/nginx/sites-available/matomo.conf
Вставьте следующий конфигурационный блок. Этот конфиг настраивает Nginx для обслуживания Matomo, используя PHP-FPM и обеспечивая базовую безопасность. Обратите внимание на fastcgi_pass unix:/run/php/php8.3-fpm.sock; – это путь к сокету 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;
# Убедитесь, что Matomo может быть доступна по HTTPS
# Этот блок будет обновлен Certbot для HTTPS
location / {
try_files $uri /index.php$is_args$args;
}
# Блокировка доступа к конфиденциальным файлам Matomo
location ~ /(config|tmp|core|vendor)/ {
deny all;
return 404;
}
location ~ /\. {
deny all;
return 404;
}
location ~ \.ini$ {
deny all;
return 404;
}
# Настройка 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;
}
# Настройка кэширования статических файлов
location ~ \.(js|css|png|jpg|jpeg|gif|ico|svg|webp)$ {
expires 365d;
add_header Cache-Control "public, no-transform";
}
# Дополнительные заголовки безопасности
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";
}
Сохраните файл, создайте символическую ссылку и протестируйте конфигурацию Nginx:
sudo ln -s /etc/nginx/sites-available/matomo.conf /etc/nginx/sites-enabled/
sudo nginx -t # Проверка синтаксиса конфига
sudo systemctl reload nginx # Перезагрузка Nginx
Если тест прошел успешно, Nginx должен быть готов.
2. Настройка PHP-FPM
Для Matomo рекомендуется увеличить некоторые лимиты PHP. Откройте файл php.ini для PHP-FPM:
sudo nano /etc/php/8.3/fpm/php.ini
Найдите и измените следующие параметры:
memory_limit = 512M ; Минимум 256M, лучше 512M для больших установок
max_execution_time = 300 ; Увеличьте для длительных операций архивирования
post_max_size = 64M
upload_max_filesize = 64M
date.timezone = Europe/Berlin ; Установите ваш часовой пояс, например, "Europe/Moscow"
Сохраните изменения и перезапустите PHP-FPM:
sudo systemctl restart php8.3-fpm
3. Установка SSL/TLS с помощью Certbot
Использование HTTPS абсолютно необходимо для любой веб-аналитики. Установим Certbot для автоматической выдачи и обновления SSL-сертификатов Let's Encrypt.
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com -d www.your_domain.com
Следуйте инструкциям Certbot. Он запросит ваш email для уведомлений и согласие с условиями использования. После успешной выдачи сертификата, Certbot автоматически обновит ваш Nginx-конфиг для перенаправления HTTP на HTTPS и использования нового сертификата. Он также настроит автоматическое обновление сертификатов.
Проверьте, что автоматическое обновление работает:
sudo certbot renew --dry-run
Если вы видите сообщение The dry run was successful, значит, все настроено правильно.
4. Завершение установки Matomo через веб-интерфейс
Теперь, когда весь стек настроен, откройте ваш домен (https://your_domain.com) в веб-браузере. Вы увидите страницу приветствия Matomo.
- Welcome: Нажмите "Next".
- System Check: Matomo проверит все системные требования. Убедитесь, что все пункты отмечены зеленым. Если есть предупреждения, вернитесь к настройкам PHP или прав доступа.
- Database Setup: Введите данные, которые вы создали ранее:
- Database Server:
127.0.0.1илиlocalhost - Login:
matomo_user - Password:
your_strong_password - Database Name:
matomo_db - Table prefix:
matomo_(можно оставить по умолчанию) - Adapter:
PDO\MYSQL
- Database Server:
- Super User: Создайте учетную запись суперпользователя Matomo. Это основной администраторский аккаунт. Запомните логин и пароль.
- Website Setup: Введите информацию о вашем первом сайте для отслеживания (URL, часовой пояс и т.д.).
- JavaScript Tracking Code: Matomo предоставит вам JavaScript-код для вставки на ваш сайт. Скопируйте его и вставьте перед закрывающим тегом
</body>на всех страницах, которые вы хотите отслеживать.
После этого вы будете перенаправлены на панель управления Matomo.
5. Настройка Cron-заданий для Matomo
Matomo использует cron-задания для архивирования отчетов. Это критически важно для производительности, так как без этого Matomo будет обрабатывать отчеты в реальном времени, что замедлит работу интерфейса. Откройте crontab для пользователя www-data:
sudo -u www-data crontab -e
Если это первый раз, выберите редактор (например, nano). Добавьте следующие строки в конец файла:
# Matomo archive processing
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
Эта команда будет запускать архивацию Matomo каждый час в 5 минут, сохраняя вывод в лог-файл. Замените your_domain.com на ваш домен. Убедитесь, что путь к php8.3 корректен (можно найти с помощью which php8.3).
6. Проверка работоспособности
Убедитесь, что Matomo доступна и работает:
- Откройте
https://your_domain.comв браузере. Вы должны увидеть панель логина Matomo. - Попробуйте войти под учетной записью суперпользователя.
- Проверьте логи Nginx:
sudo tail -f /var/log/nginx/access.logиsudo tail -f /var/log/nginx/error.log. - Проверьте логи PHP-FPM:
sudo tail -f /var/log/php8.3-fpm.log(путь может отличаться). - Проверьте логи архивации Matomo:
sudo tail -f /var/www/matomo/tmp/logs/matomo-archive.log.
Если вы видите трафик на вашем сайте, то через некоторое время данные начнут появляться в Matomo.
Бэкапы и обслуживание
Регулярные бэкапы и своевременное обслуживание — ключ к стабильной и надежной работе Matomo. Потеря данных аналитики может быть критичной, поэтому важно иметь стратегию восстановления.
1. Что бэкапить
Для Matomo необходимо бэкапить две основные категории данных:
- База данных Matomo: Содержит все собранные аналитические данные, отчеты, информацию о сайтах и пользователях. Это самая важная часть.
- Файлы Matomo:
/var/www/matomo/config/config.ini.php: Основной конфигурационный файл Matomo, содержащий данные для подключения к БД и другие настройки./var/www/matomo/plugins/: Если вы устанавливали дополнительные плагины, их нужно бэкапить./var/www/matomo/misc/: Могут быть пользовательские файлы, например, favicon./var/www/matomo/js/: Если вы кастомизировали JavaScript-файлы отслеживания.
2. Простой скрипт автобэкапа
Создадим простой скрипт, который будет архивировать базу данных и ключевые файлы Matomo, а затем перемещать их в отдельную директорию. Для большей надежности рекомендуется использовать удаленное хранилище.
sudo mkdir -p /opt/backups/matomo
sudo nano /opt/backups/matomo/backup_matomo.sh
Вставьте следующий скрипт, заменив данные базы данных, домен и путь к каталогу 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}"
Сделайте скрипт исполняемым:
sudo chmod +x /opt/backups/matomo/backup_matomo.sh
3. Настройка Cron для автобэкапа
Добавим этот скрипт в crontab, чтобы он запускался автоматически, например, ежедневно в 2 часа ночи.
sudo crontab -e
Добавьте следующую строку в конец файла:
0 2 /opt/backups/matomo/backup_matomo.sh >> /opt/backups/matomo/backup_cron.log 2>&1
Эта команда будет запускать скрипт бэкапа каждый день в 02:00. Вывод cron-задания будет перенаправлен в /opt/backups/matomo/backup_cron.log.
4. Куда складывать бэкапы
Хранение бэкапов на том же сервере, что и основной сервис, крайне рискованно. В случае выхода из строя сервера, вы потеряете и сервис, и бэкапы. Рекомендуется использовать:
- Внешнее S3-совместимое хранилище: Такие сервисы, как Amazon S3, DigitalOcean Spaces, Backblaze B2, предлагают надежное и недорогое хранение. Для загрузки можно использовать утилиты
s3cmd,rcloneилиawscli, интегрировав их в ваш скрипт бэкапа. - Отдельный VPS: Вы можете настроить второй, меньший VPS и использовать
rsyncилиscpдля передачи бэкапов на него. - Локальный NAS/сервер: Если у вас есть собственная инфраструктура.
Интеграция rclone в скрипт позволит отправлять бэкапы на множество облачных хранилищ. Пример добавления в скрипт (после создания архива):
# Добавьте в скрипт 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}"
Вам потребуется предварительно настроить rclone и создать удаленный репозиторий (например, my-s3-remote).
5. Обновления: rolling vs maintenance window
Поддерживайте Matomo и все компоненты (Nginx, PHP, MySQL, OS) в актуальном состоянии для безопасности и новых функций.
- Обновление ОС и ПО: Регулярно запускайте
sudo apt update && sudo apt upgrade -y. Для минорных версий (например, PHP 8.3.x до 8.3.y) это можно делать в рабочее время. Для мажорных обновлений (например, PHP 8.3 до 8.4) планируйте окно обслуживания, так как могут потребоваться изменения в конфигурации или коде Matomo. - Обновление Matomo:
- Всегда делайте бэкап базы данных и файлов Matomo перед обновлением.
- Загрузите новую версию Matomo с официального сайта.
- Распакуйте файлы поверх существующей установки (кроме
config/config.ini.phpиtmp/). - Запустите обновление через веб-интерфейс или через CLI:
sudo -u www-data php /var/www/matomo/console core:update.
Troubleshooting + FAQ
В этом разделе мы рассмотрим типичные проблемы, с которыми можно столкнуться при установке и эксплуатации Matomo, а также дадим ответы на часто задаваемые вопросы.
Matomo не загружается или выдает ошибку 500/502
Что проверить: Это частая проблема, указывающая на неполадки в работе PHP-FPM или Nginx.
- Логи Nginx: Проверьте
/var/log/nginx/error.logна наличие ошибок, связанных сfastcgi_passили правами доступа. - Логи PHP-FPM: Проверьте
/var/log/php8.3-fpm.log(или аналогичный путь) на наличие ошибок PHP. - Статус PHP-FPM: Убедитесь, что PHP-FPM запущен:
sudo systemctl status php8.3-fpm. - Статус Nginx: Убедитесь, что Nginx запущен:
sudo systemctl status nginx. - Права доступа: Убедитесь, что пользователь
www-dataимеет полные права на директорию Matomo:sudo ls -la /var/www/matomo.
Как фиксить: Перезапустите Nginx и PHP-FPM. Если ошибка 502, часто помогает увеличение fastcgi_buffers в конфиге Nginx или memory_limit в php.ini. Проверьте, что путь к сокету PHP-FPM в конфиге Nginx (fastcgi_pass unix:/run/php/php8.3-fpm.sock;) совпадает с реальным.
Медленная загрузка страниц Matomo или отчетов
Что проверить: Медленная работа может быть вызвана несколькими факторами.
- Cron-задания: Убедитесь, что cron-задания для архивации Matomo настроены и работают. Если архивация не происходит, Matomo будет генерировать отчеты в реальном времени, что очень ресурсоемко. Проверьте
sudo -u www-data crontab -lи логи архивации. - Opcache: Проверьте, что PHP Opcache включен и правильно сконфигурирован. Увеличьте
opcache.memory_consumptionвphp.iniпри необходимости. - Ресурсы сервера: Используйте
htopилиtopдля мониторинга использования CPU и RAM во время загрузки отчетов. Если CPU или RAM постоянно на 100%, возможно, ваш VPS недостаточно мощный. - Настройки MySQL: Для очень больших баз данных может потребоваться оптимизация MySQL (например, индексирование, настройка
innodb_buffer_pool_size).
Как фиксить: Настройте cron-задания. Увеличьте memory_limit PHP и параметры Opcache. Если ресурсы сервера недостаточны, рассмотрите переход на более мощный VPS. Для MySQL проконсультируйтесь с DBA или используйте инструменты оптимизации.
Не собираются данные, хотя код отслеживания установлен
Что проверить: Это означает, что Matomo не получает информацию от вашего сайта.
- Код отслеживания: Убедитесь, что JavaScript-код Matomo правильно вставлен на всех страницах вашего сайта, и что домен в коде соответствует домену Matomo.
- Сетевые запросы: Откройте консоль разработчика в браузере (F12) и перейдите на вкладку "Network". Проверьте, отправляет ли ваш сайт запросы к Matomo (обычно к
matomo.php). Должен быть запрос с кодом 200 OK. - Логи Nginx: Проверьте
access.logNginx на предмет получения запросов кmatomo.php. - Firewall: Убедитесь, что ваш брандмауэр (UFW) не блокирует входящие соединения на порт 80/443.
- Trusted Hosts: В Matomo
config/config.ini.phpпроверьте секцию[General]и параметрtrusted_hosts[]. Убедитесь, что в нем указан ваш домен Matomo.
Как фиксить: Исправьте код отслеживания. Проверьте настройки брандмауэра. Добавьте ваш домен в trusted_hosts[] в Matomo. Перезапустите Nginx.
Как обновить Matomo безопасно?
Ответ: Безопасное обновление Matomo всегда начинается с полного бэкапа базы данных и файлов. Затем вы можете использовать встроенный механизм обновления через веб-интерфейс (если он доступен) или командную строку. Для CLI-обновления перейдите в директорию Matomo и выполните команду sudo -u www-data php console core:update. Этот метод предпочтительнее для продакшн-серверов, так как он более контролируемый и позволяет избежать таймаутов браузера. После обновления всегда проверяйте логи на наличие ошибок.
Какой VPS-конфиг минимально подойдёт для Matomo?
Ответ: Для небольших сайтов (до 10 000 посещений в день) минимально потребуется VPS с 2 ядрами CPU, 4 ГБ оперативной памяти и 100 ГБ NVMe SSD. NVMe-диск критичен для производительности базы данных Matomo. Сеть должна быть не менее 200 Мбит/с. Этого будет достаточно для стабильной работы Matomo и комфортной загрузки отчетов.
Что выбрать — VPS или dedicated для Matomo?
Ответ: Выбор между VPS и выделенным сервером зависит от масштаба вашего проекта. Для большинства малых и средних сайтов (до 100 000 - 200 000 посещений в день) мощный VPS будет оптимальным решением, предлагая хороший баланс между производительностью и стоимостью. Выделенный сервер становится необходим при очень высоких нагрузках (сотни тысяч или миллионы посещений), когда требуется максимальная производительность, полный контроль над аппаратным обеспечением (например, для специфических RAID-массивов) или строгие требования к изоляции ресурсов. Если вы только начинаете, всегда выбирайте VPS и масштабируйтесь по мере роста потребностей.
Как защитить Matomo от спама и некорректных данных?
Ответ: Matomo имеет встроенные функции для защиты от спама. В настройках веб-сайта вы можете включить фильтрацию по IP-адресам или диапазонам, а также исключить определенные URL или параметры из отслеживания. Также рекомендуется использовать функционал "Bots & Spiders" для автоматического исключения известных поисковых ботов. Для более продвинутой защиты можно использовать дополнительные плагины Matomo или настроить правила в Nginx для блокировки подозрительных запросов к matomo.php.
Выводы и следующие шаги
Поздравляем! Вы успешно установили и настроили Matomo на своем VPS с использованием Nginx, PHP-FPM и MySQL/MariaDB. Теперь у вас есть мощная, конфиденциальная и полностью контролируемая система веб-аналитики, которая предоставляет вам полный контроль над вашими данными и их безопасностью. Вы создали надежную основу для сбора и анализа информации о посетителях вашего сайта, обеспечив при этом высокую производительность и готовность к масштабированию.
Вот несколько следующих шагов, которые можно предпринять для дальнейшего развития вашей аналитической системы:
- Настройка дополнительных сайтов и пользователей: Если у вас несколько проектов, добавьте их в Matomo и создайте отдельных пользователей с ограниченными правами доступа для каждой команды или клиента.
- Исследование расширенных функций Matomo: Изучите такие возможности, как отслеживание целей, воронки конверсий, пользовательские переменные, тепловые карты (через плагины), A/B-тестирование и сегментация аудитории, чтобы получить более глубокое понимание поведения пользователей.
- Мониторинг производительности и ресурсов: Регулярно отслеживайте использование CPU, RAM и диска на вашем VPS, особенно после увеличения трафика. Это поможет вам своевременно определить необходимость в масштабировании или оптимизации.
- Внедрение CDN для статики Matomo: Для улучшения скорости загрузки интерфейса Matomo вы можете рассмотреть возможность использования CDN для статических файлов (CSS, JS, изображения).