Как установить и настроить Matomo на VPS
Google Analytics передаёт данные о посетителях вашего сайта на серверы Google, требует баннер согласия на обработку cookie и всё чаще становится юридической головной болью для сайтов, работающих с европейской или российской аудиторией. Matomo (бывший Piwik) решает эту проблему radikально: все данные о трафике остаются на вашем собственном сервере, вы полностью контролируете, что собирается и как долго хранится. Разворачивается это на обычном VPS за час, и дальше не требует внимания — разберём установку с нуля, от чистой Ubuntu до первого отчёта в браузере.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что нужно для установки и почему VPS, а не хостинг
Matomo — это PHP-приложение с базой MySQL/MariaDB, которое можно поставить на shared-хостинг, но на практике это плохая идея по трём причинам. Во-первых, Matomo активно пишет в базу при каждом визите — на bucket-тарифах с общей БД это упирается в лимиты. Во-вторых, для точной аналитики желателен archiving через cron (фоновая агрегация отчётов), а на shared-хостинге cron обычно недоступен или сильно ограничен. В-третьих, вы теряете контроль над PHP-версией и расширениями — Matomo требователен к ним и обновляется чаще, чем консервативные хостинги обновляют PHP.
Минимальные требования на конец 2026 года:
- PHP 8.1–8.3 с расширениями
mysqli,gd,curl,mbstring,xml,zip - MySQL 8.0+ или MariaDB 10.6+
- Nginx или Apache как веб-сервер
- 1 vCPU / 2 ГБ RAM хватает для сайта с посещаемостью до 50–100 тысяч визитов в месяц; для крупных проектов закладывайте 4 ГБ и больше, так как archiving процессы прожорливы по памяти
Дальше пример на Ubuntu 24.04 LTS с Nginx — самое частое и предсказуемое сочетание для такой задачи.
Подготовка сервера: PHP, MySQL, Nginx
Обновите систему и поставьте PHP-FPM нужной версии с расширениями:
apt update && apt upgrade -y
apt install -y nginx mariadb-server \
php8.3-fpm php8.3-mysql php8.3-gd php8.3-curl \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-cli \
unzip curl
Если в вашем репозитории Ubuntu 24.04 идёт другая версия PHP по умолчанию, подключите PPA ppa:ondrej/php — это стандартный источник свежего PHP для Debian/Ubuntu, проверенный годами.
Создайте базу данных и отдельного пользователя (не используйте root для приложения):
mysql_secure_installation
mysql -u root -p
CREATE DATABASE matomo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'matomo'@'localhost' IDENTIFIED BY 'сложный-пароль-сюда';
GRANT ALL PRIVILEGES ON matomo.* TO 'matomo'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Если вы ещё не разбирались с MariaDB отдельно, есть подробный разбор установки MariaDB на Ubuntu 24.04 — там же типичные ошибки конфигурации, которые аукаются позже.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка Matomo
Скачайте актуальный релиз прямо с официального сайта — не через apt-репозитории третьих лиц, версии там часто отстают:
cd /var/www
curl -O https://builds.matomo.org/matomo.zip
unzip matomo.zip
rm matomo.zip
chown -R www-data:www-data /var/www/matomo
Создайте директорию для загрузки временных файлов archiving и проверьте права:
mkdir -p /var/www/matomo/tmp
chown -R www-data:www-data /var/www/matomo/tmp
chmod -R 755 /var/www/matomo
Матомо не требует Composer или npm-сборки для конечного пользователя — в архиве уже всё скомпилировано, это большой плюс для быстрого деплоя.
Конфигурация PHP-FPM и Nginx
Matomo архивирует отчёты в фоне, и эти процессы могут выполняться долго на сайтах с большим трафиком. Увеличьте лимиты в пуле PHP-FPM — отредактируйте /etc/php/8.3/fpm/pool.d/www.conf или создайте отдельный пул под Matomo:
pm.max_children = 10
request_terminate_timeout = 300
И в /etc/php/8.3/fpm/php.ini:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M
Конфиг Nginx (/etc/nginx/sites-available/matomo):
server {
listen 80;
server_name analytics.example.com;
root /var/www/matomo;
index index.php;
access_log /var/log/nginx/matomo-access.log;
error_log /var/log/nginx/matomo-error.log;
client_max_body_size 64M;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_read_timeout 300;
}
# Закрываем доступ к служебным файлам
location ~ ^/(config|tmp|core|lang)/.*\.(php|json)$ {
deny all;
}
location ~ /\.(?!well-known) {
deny all;
}
}
Активируйте сайт и перезапустите сервисы:
ln -s /etc/nginx/sites-available/matomo /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
systemctl restart php8.3-fpm
Если раньше не приходилось настраивать Nginx как reverse proxy или фронт для PHP-приложений, вот пошаговая настройка Nginx на Ubuntu 24.04 с разбором похожих директив.
SSL-сертификат и завершение веб-установщика
Аналитический трекер собирает данные посетителей — HTTPS здесь не опция, а обязательное требование, иначе браузеры будут блокировать cookie-трекинг как небезопасный. Проще всего через certbot:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d analytics.example.com
Certbot сам пропишет редирект с 80 на 443 и настроит автопродление. Если сомневаетесь между certbot и acme.sh, у нас есть сравнение certbot или acme.sh — что выбрать для сервера.
После этого откройте https://analytics.example.com в браузере — запустится веб-установщик Matomo. Он проверит расширения PHP, попросит данные для подключения к БД (хост localhost, логин/пароль, которые вы создали выше), создаст таблицы автоматически и предложит завести первый сайт и администратора. На этом шаге сразу включите двухфакторную аутентификацию для аккаунта администратора — Matomo хранит чувствительные данные о посетителях, и это не тот сервис, куда стоит пускать по одному паролю.
Настройка archiving через cron
По умолчанию Matomo пересчитывает отчёты «на лету», когда кто-то открывает дашборд — это медленно и создаёт нагрузку в моменты просмотра. Правильный подход — вынести пересчёт в фоновую задачу по расписанию (archiving), а браузерные запросы отдавать из готового кэша. Отключите browser-triggered archiving в config/config.ini.php:
[General]
enable_browser_archiving_triggering = 0
И добавьте задачу в cron от имени www-data:
crontab -u www-data -e
5 * * * * /usr/bin/php8.3 /var/www/matomo/console core:archive --url=https://analytics.example.com > /var/log/matomo-archive.log 2>&1
Раз в час достаточно для большинства сайтов; для проектов, где нужны отчёты в реальном времени, можно поставить каждые 5–15 минут, но тогда следите за нагрузкой на CPU. Если тема cron на сервере для вас в новинку, у нас есть отдельный разбор настройки cron-задач на VPS с примерами и типичными граблями вроде неправильного PATH в cron-окружении.
Резервное копирование и обслуживание
База MySQL с данными о визитах — единственное, что действительно жалко потерять, файлы приложения всегда можно перекачать заново с сайта Matomo. Простой дамп по cron:
0 3 * * * mysqldump -u matomo -p'пароль' matomo | gzip > /root/backups/matomo-$(date +\%F).sql.gz
Храните бэкапы минимум неделю и желательно копируйте их за пределы того же сервера — через rsync на другую машину или в объектное хранилище. Обновляйте Matomo регулярно: у проекта активная разработка, и в changelog периодически встречаются исправления безопасности, особенно для веб-установщика и API. Обновление делается через встроенный автообновлятор в админке или вручную — скачиванием нового архива с заменой файлов (конфиг и база не трогаются).
Отдельно стоит настроить лимит хранения сырых логов посетителей (Administration → Privacy → Data Anonymization) — Matomo умеет автоматически анонимизировать или удалять записи старше заданного срока, что заметно упрощает соответствие требованиям о персональных данных, будь то GDPR или 152-ФЗ, если вы работаете с российской аудиторией.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Matomo работает медленнее Google Analytics?
Загрузка трекинг-скрипта сопоставима, а вот дашборд может ощущаться медленнее на слабом VPS без правильно настроенного archiving через cron — если оставить браузерный пересчёт отчётов, тормозить будет заметно.
Можно ли перенести историю из Google Analytics?
Прямого импорта исторических данных GA в Matomo нет — есть сторонние коннекторы и плагины, но точность переноса не гарантирована. Практичнее начать сбор данных в Matomo параллельно с GA и постепенно переходить.
Сколько сайтов можно подключить к одной установке Matomo?
Ограничений в самом приложении нет — один инстанс спокойно обслуживает десятки сайтов, у каждого свой idSite и отдельные отчёты. Упирается это только в ресурсы VPS.
Нужен ли баннер согласия на cookie при self-hosted Matomo?
Зависит от юрисдикции и настроек: Matomo можно настроить в режиме без cookie (doNotTrack, отключение cookie для трекинга), что во многих странах снимает требование о баннере — но финальное решение зависит от локального законодательства, это не юридическая консультация.
Что делать, если archiving зависает или занимает часы?
Обычно причина — либо слишком частый запуск cron поверх ещё не завершившегося предыдущего архивирования, либо нехватка памяти в PHP-FPM. Проверьте /var/log/matomo-archive.log и увеличьте memory_limit.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →