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

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення Matomo (Pi

calendar_month Jun 02, 2026 schedule 21 хв. читання visibility 641 переглядів
Установка 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/Kyiv     ; Встановіть ваш часовий пояс, наприклад, "Europe/Kyiv"

Збережіть зміни та перезапустіть 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. Він запитає вашу електронну пошту для сповіщень та згоду з умовами використання. Після успішної видачі сертифіката, 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
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-оновлення безпечніше та контрольованіше.

Вирішення проблем + 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.