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

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

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

calendar_month Jun 02, 2026 schedule 21 мин. чтения visibility 2403 просмотров
Установка 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, изображения).

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

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

Отправьте гайд тому, кому он может пригодиться.

Telegram VKVK WhatsApp Facebook LinkedIn XX

установка 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.