bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Установка Matomo (Piwik) на VPS: Высокопроизводительная аналитика с Nginx, PHP и MySQL

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

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Установка 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-конфиг нужен под эту задачу
Схема: Какой 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.

  1. Welcome: Нажмите "Next".
  2. System Check: Matomo проверит все системные требования. Убедитесь, что все пункты отмечены зеленым. Если есть предупреждения, вернитесь к настройкам PHP или прав доступа.
  3. 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
    Нажмите "Next". Matomo создаст все необходимые таблицы.
  4. Super User: Создайте учетную запись суперпользователя Matomo. Это основной администраторский аккаунт. Запомните логин и пароль.
  5. Website Setup: Введите информацию о вашем первом сайте для отслеживания (URL, часовой пояс и т.д.).
  6. 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:
    1. Всегда делайте бэкап базы данных и файлов Matomo перед обновлением.
    2. Загрузите новую версию Matomo с официального сайта.
    3. Распакуйте файлы поверх существующей установки (кроме config/config.ini.php и tmp/).
    4. Запустите обновление через веб-интерфейс или через CLI: sudo -u www-data php /var/www/matomo/console core:update.
    Matomo обычно предлагает "обновление в один клик" через веб-интерфейс, но для продакшн-серверов CLI-обновление безопаснее и контролируемее.

Troubleshooting + FAQ

В этом разделе мы рассмотрим типичные проблемы, с которыми можно столкнуться при установке и эксплуатации Matomo, а также дадим ответы на часто задаваемые вопросы.

Matomo не загружается или выдает ошибку 500/502

Что проверить: Это частая проблема, указывающая на неполадки в работе PHP-FPM или Nginx.

  1. Логи Nginx: Проверьте /var/log/nginx/error.log на наличие ошибок, связанных с fastcgi_pass или правами доступа.
  2. Логи PHP-FPM: Проверьте /var/log/php8.3-fpm.log (или аналогичный путь) на наличие ошибок PHP.
  3. Статус PHP-FPM: Убедитесь, что PHP-FPM запущен: sudo systemctl status php8.3-fpm.
  4. Статус Nginx: Убедитесь, что Nginx запущен: sudo systemctl status nginx.
  5. Права доступа: Убедитесь, что пользователь 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 или отчетов

Что проверить: Медленная работа может быть вызвана несколькими факторами.

  1. Cron-задания: Убедитесь, что cron-задания для архивации Matomo настроены и работают. Если архивация не происходит, Matomo будет генерировать отчеты в реальном времени, что очень ресурсоемко. Проверьте sudo -u www-data crontab -l и логи архивации.
  2. Opcache: Проверьте, что PHP Opcache включен и правильно сконфигурирован. Увеличьте opcache.memory_consumption в php.ini при необходимости.
  3. Ресурсы сервера: Используйте htop или top для мониторинга использования CPU и RAM во время загрузки отчетов. Если CPU или RAM постоянно на 100%, возможно, ваш VPS недостаточно мощный.
  4. Настройки MySQL: Для очень больших баз данных может потребоваться оптимизация MySQL (например, индексирование, настройка innodb_buffer_pool_size).

Как фиксить: Настройте cron-задания. Увеличьте memory_limit PHP и параметры Opcache. Если ресурсы сервера недостаточны, рассмотрите переход на более мощный VPS. Для MySQL проконсультируйтесь с DBA или используйте инструменты оптимизации.

Не собираются данные, хотя код отслеживания установлен

Что проверить: Это означает, что Matomo не получает информацию от вашего сайта.

  1. Код отслеживания: Убедитесь, что JavaScript-код Matomo правильно вставлен на всех страницах вашего сайта, и что домен в коде соответствует домену Matomo.
  2. Сетевые запросы: Откройте консоль разработчика в браузере (F12) и перейдите на вкладку "Network". Проверьте, отправляет ли ваш сайт запросы к Matomo (обычно к matomo.php). Должен быть запрос с кодом 200 OK.
  3. Логи Nginx: Проверьте access.log Nginx на предмет получения запросов к matomo.php.
  4. Firewall: Убедитесь, что ваш брандмауэр (UFW) не блокирует входящие соединения на порт 80/443.
  5. 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, изображения).

Поделиться этой записью:

установка matomo (piwik) на vps: высокопроизводительная аналитика с nginx, php и mysql
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.