Установка Matomo — Piwik на Ubuntu 20.04 с Nginx и Let's Encrypt

Кратко — TL;DR
Matomo (ранее Piwik) — это свободная и открытая система веб‑аналитики, которую можно разместить на своём сервере и полностью контролировать данные. В этой инструкции показано, как установить Matomo на Ubuntu 20.04 с Nginx и получить бесплатный SSL от Let’s Encrypt. Следуйте шагам: обновление системы, установка LEMP, создание базы данных, развертывание Matomo, настройка Nginx и выпуск сертификата Certbot.
Что такое Matomo
Matomo — система веб‑аналитики с открытым исходным кодом. Она собирает посещения, цели, загрузки, ключевые слова и другие KPI. Главная особенность — вы храните и контролируете все данные сами, без сторонних сервисов.
Краткое определение: Matomo — self‑hosted веб‑аналитика для компаний, стремящихся к приватности и контролю данных.
Требования
- Сервер с Ubuntu 20.04.
- Домен, указывающий на IP сервера (пример в примерах: matomo.linuxbuz.com). Замените на ваш домен.
- root‑доступ или пользователь с правами sudo.
- Рекомендации по ресурсам: для небольшого сайта хватит 1 vCPU и 1–2 ГБ RAM; для средних сайтов — 2+ vCPU и 2–4 ГБ RAM.
Важно: используйте надёжные пароли для базы данных и аккаунтов.
Подготовка системы
Обновите списки пакетов и установите базовые утилиты:
apt-get update -yУстановите вспомогательные утилиты:
apt-get install curl wget vim git unzip socat gnupg2 -yПосле установки зависимостей переходите к следующему разделу.
Установка LEMP (Nginx + MariaDB + PHP)
Matomo написан на PHP и использует MySQL/MariaDB. Установим Nginx, MariaDB и PHP 7.4 с необходимыми расширениями:
apt-get install nginx mariadb-server php7.4 php7.4-cli php7.4-fpm php7.4-common php7.4-curl php7.4-gd php7.4-xml php7.4-mbstring php7.4-mysql -yПосле установки проверьте статус служб и включите их в автозагрузку при необходимости:
systemctl enable --now nginx
systemctl enable --now php7.4-fpm
systemctl enable --now mariadbЕсли вы используете UFW, откройте порты для HTTP/HTTPS:
ufw allow 'Nginx Full'Создание базы данных Matomo
Выполните вход в MariaDB и создайте базу данных и пользователя для Matomo. Замените ‘password’ на сложный пароль.
mysqlПосле входа выполните:
MariaDB [(none)]> CREATE DATABASE matomodb;
MariaDB [(none)]> GRANT ALL ON matomodb.* TO 'matomo' IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;Совет: храните учетные данные в менеджере паролей или в зашифрованном хранилище.
Загрузка Matomo
Скачайте последнюю версию Matomo в корень веб‑сервера:
cd /var/www/html/
wget https://builds.matomo.org/matomo.zipРаспакуйте и установите владельца файлов на www‑data:
unzip matomo.zip
chown -R www-data:www-data /var/www/html/matomoКонфигурация Nginx для Matomo
Создайте конфигурацию виртуального хоста для Matomo:
nano /etc/nginx/sites-available/matomo.confДобавьте следующие строки (замените server_name на ваш домен):
server {
listen 80;
server_name matomo.linuxbuz.com;
root /var/www/html/matomo/;
index index.php;
location ~ ^/(index|matomo|piwik|js/index).php {
include snippets/fastcgi-php.conf;
fastcgi_param HTTP_PROXY "";
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location = /plugins/HeatmapSessionRecording/configs.php {
include snippets/fastcgi-php.conf;
fastcgi_param HTTP_PROXY "";
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~* ^.+\.php$ {
deny all;
return 403;
}
location / {
try_files $uri $uri/ =404;
}
location ~ /(config|tmp|core|lang) {
deny all;
return 403;
}
location ~ \.(gif|ico|jpg|png|svg|js|css|htm|html|mp3|mp4|wav|ogg|avi|ttf|eot|woff|woff2|json)$ {
allow all;
}
location ~ /(libs|vendor|plugins|misc/user) {
deny all;
return 403;
}
}Сохраните файл и активируйте сайт:
ln -s /etc/nginx/sites-available/matomo.conf /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginxЕсли тест nginx -t показывает ошибки, исправьте конфигурацию до перезапуска.
Защита Matomo с помощью Let’s Encrypt SSL
Установите Certbot с плагином для Nginx и выпустите сертификат:
apt-get install python3-certbot-nginx -y
certbot --nginx -d matomo.linuxbuz.comСледуйте интерактивным подсказкам: укажите email и согласитесь с условиями. Certbot спросит, нужно ли принудительно перенаправлять HTTP на HTTPS. Для новых сайтов безопаснее выбрать перенаправление на HTTPS.
После успешного выпуска сертификата вы увидите сообщения о сохранении сертификатов и пути к ним в /etc/letsencrypt/live/<ваш_домен>/.
Совет: certbot автоматически создаёт cron/системный таймер для автоматического обновления сертификатов. Проверьте автоповтор:
certbot renew --dry-runДоступ к Matomo и установка через веб‑мастер
Откройте в браузере https://matomo.linuxbuz.com и пройдите через шаги установщика.

Нажмите кнопку NEXT. Проверка системы покажет, какие компоненты доступны.

Далее настройте подключение к базе данных, используя созданные ранее данные.

Инсталлятор создаст таблицы в базе данных.

Создайте суперпользователя — логин, пароль и email.

Добавьте сайт и получите код отслеживания.



После завершения вы увидите экран успешной установки.

Нажмите CONTINUE TO MATOMO и войдите в систему.

После входа вы попадёте в дашборд.

Чеклист для ролей
- Операторы/DevOps:
- Убедиться, что домен указывает на сервер.
- Настроить бэкапы /etc/letsencrypt и баз данных.
- Настроить автоматическое обновление пакетов и сертификатов.
- Администратор Matomo:
- Создать суперпользователя и настроить права.
- Настроить цели и KPI для отслеживания.
- Настроить ротацию логов и мониторинг нагрузки.
- Разработчики:
- Вставить код отслеживания на страницы.
- Проверить корректность событий и целей.
Альтернативные способы установки
- Docker: используйте официальный образ matomo в связке с базой в контейнере MariaDB. Это упрощает изоляцию и обновления.
- Snap/Packaged: некоторые дистрибутивы имеют пакеты, но они могут быть устаревшими.
- Использовать управляемый хостинг Matomo Cloud, если не хотите поддерживать инфраструктуру.
Когда Docker эффективен: если вы хотите быстро запускать и обновлять Matomo, а также изолировать зависимости. Когда не подходит: если нужна тонкая настройка производительности и интеграция с локальными сервисами.
Отладка и часто встречаемые проблемы
- Проблема: 502 Bad Gateway после настройки Nginx.
- Проверьте, что php7.4-fpm запущен и сокет указан правильно (unix:/var/run/php/php7.4-fpm.sock).
- Проблема: Ошибки прав доступа к файлам.
- Убедитесь, что владелец папки /var/www/html/matomo — www-data и права корректны.
- Проблема: Certbot не может проверить домен.
- Проверьте DNS и доступ по HTTP (порт 80) внешне.
Краткий чек для отладки:
- nginx -t
- systemctl status php7.4-fpm
- tail -n 100 /var/log/nginx/error.log
- tail -n 100 /var/log/php7.4-fpm.log
Безопасность и рекомендации
- Используйте сложные пароли и двухфакторную аутентификацию (если доступно).
- Ограничьте доступ к админ‑панели по IP при возможности.
- Регулярно обновляйте ОС и PHP.
- Делайте регулярные резервные копии базы данных и каталога /etc/letsencrypt.
- Отключите ненужные плагины и сервисы.
Критерии приёмки
- Matomo доступен по HTTPS на вашем домене.
- Установщик завершил все проверки без ошибок.
- Таблицы созданы в базе данных matomodb.
- Вы можете войти под суперпользователем и видеть дашборд.
- Код отслеживания корректно передаёт данные (проверить реальное посещение).
Факто‑бокс
- Поддерживаемые версии ОС: Ubuntu 20.04 (инструкция ориентирована на неё).
- Минимальные ресурсы: для тестовой установки — 1 vCPU и ~1–2 ГБ RAM.
- Компоненты: Nginx, MariaDB, PHP 7.4, Certbot (Let’s Encrypt).
Итоги
Вы успешно установили Matomo на Ubuntu 20.04 с Nginx и сертификатом Let’s Encrypt. Система теперь готова собирать данные о посетителях и сохранять их на вашем сервере. Настройте цели, отчёты и резервное копирование, чтобы поддерживать надежность и безопасность.
Важно: замените примеры доменов и паролей на реальные значения и храните секреты в безопасном месте.
Если нужны примеры Docker‑конфигурации, шаблоны бэкапов или помощь с миграцией с Google Analytics — напишите, и я подготовлю инструкции.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента