Гид по технологиям

Установка Matomo на FreeBSD 12 с Nginx и Let's Encrypt

• 6 min read • DevOps • Обновлено 27 Nov 2025
Matomo на FreeBSD 12 — установка с Nginx и Let's Encrypt
Matomo на FreeBSD 12 — установка с Nginx и Let's Encrypt

Что такое Matomo

Matomo — свободное и с открытым исходным кодом приложение для веб-аналитики, работающее на PHP / MySQL. Оно собирает посещения сайтов и предоставляет отчёты для анализа. Подходит как альтернатива Google Analytics для тех, кто ценит контроль над данными и приватность.

Ключевые особенности:

  • Поддержка A/B тестирования, тепловых карт, воронок, API для трекинга и отчётов.
  • Интеграции: Google AdWords, Facebook Ads, Bing Ads и учёт CPC.
  • Полный контроль над данными — все данные хранятся на вашем сервере.

Важно: код Matomo открыт и доступен на GitHub. Перед развёртыванием проверьте требования по версиям PHP и базы данных.

Требования

  • Веб-сервер: Apache, Nginx или IIS (в этой инструкции — Nginx).
  • PHP 5.5.9+ (рекомендуется PHP 7+) с расширениями pdo, pdo_mysql или mysqli, gd, xml, curl, mbstring.
  • MySQL 5.5+ или эквивалент MariaDB (рекомендуется MySQL 5.7+).
  • Доменное имя и возможность выпустить публичный TLS-сертификат (Let’s Encrypt) — опционально, но настоятельно рекомендуется.

Предварительные требования

  • FreeBSD 12.0
  • Некорневой пользователь с sudo-привилегиями

Быстрые начальные шаги

Проверка версии FreeBSD:

uname -ro  
# FreeBSD 12.0-RELEASE

Настройка часового пояса:

tzsetup

Обновление системы и пакетов:

freebsd-update fetch install  
pkg update && pkg upgrade -y

Установка набора полезных инструментов:

pkg install -y sudo vim unzip wget bash

Шаг 1 — Установка MySQL и создание базы данных для Matomo

Matomo может работать с MySQL или MariaDB. В этой инструкции используем MySQL.

Установка сервера MySQL:

sudo pkg install -y mysql57-server

Проверка версии MySQL:

mysql --version  
# mysql  Ver 14.14 Distrib 5.7.26, for FreeBSD12.0 (amd64) using EditLine wrapper

Включение и запуск сервиса:

sudo sysrc mysql_enable="yes"  
sudo service mysql-server start

Запустите сценарий для базовой защиты и установки пароля root:

sudo mysql_secure_installation

Пример ответов в интерактивной сессии:

Would you like to setup VALIDATE PASSWORD plugin? N  
New password: your_secure_password  
Re-enter new password: your_secure_password  
Remove anonymous users? [Y/n] Y  
Disallow root login remotely? [Y/n] Y  
Remove test database and access to it? [Y/n] Y  
Reload privilege tables now? [Y/n] Y

Подключитесь к MySQL как root:

sudo mysql -u root -p
# Enter password

Создайте базу данных и пользователя для Matomo (замените dbname/username/password на свои значения):

CREATE DATABASE dbname;  
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';  
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';  
FLUSH PRIVILEGES;

Выйдите:

exit

Важно: храните учётные данные в безопасном месте. Для production можно ограничить доступ по IPv4 и использовать SSL для подключения к базе.

Шаг 2 — Установка PHP и необходимых расширений

Установите PHP и расширения, которые требуются Matomo:

sudo pkg install -y php73 php73-ctype php73-curl php73-dom php73-hash php73-iconv php73-gd php73-json php73-mbstring php73-openssl php73-session php73-simplexml php73-xml php73-zip php73-zlib php73-pdo php73-pdo_mysql php73-mysqli php73-filter php73-ftp php73-tokenizer php73-calendar php73-pecl-APCu php73-opcache

Проверьте версию PHP:

php --version

# PHP 7.3.7 (cli) (built: Jul 25 2019 01:28:53) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.3.7, Copyright (c) 1999-2018, by Zend Technologies

Включите и запустите PHP-FPM:

sudo sysrc php_fpm_enable=yes  
sudo service php-fpm start

Проверьте, что PHP-FPM слушает на 127.0.0.1:9000 (или на другом порту/сокете, который вы укажете в конфиге Nginx).

Шаг 3 — Получение сертификата Let’s Encrypt с помощью acme.sh (опционально)

HTTPS не является строго обязательным, но обязательно рекомендуется для защиты трафика и сохранности учётных данных администратора.

Установите acme.sh:

sudo pkg install -y acme.sh

Проверка версии:

acme.sh --version  
# v2.8.2

Получение сертификатов RSA и ECDSA для домена example.com (замените example.com на ваш домен):

# RSA
sudo acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength 2048
# ECDSA
sudo acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength ec-256

После успешного выпуска сертификаты будут в:

  • RSA: /etc/letsencrypt/example.com
  • ECDSA: /etc/letsencrypt/example.com_ecc

Совет: настроите автоматическое автообновление (acme.sh умеет ставить cron для обновления и перезагрузки сервисов).

Шаг 4 — Установка и конфигурация Nginx для Matomo

Установите mainline-версию Nginx из репозитория:

sudo pkg install -y nginx-devel

Проверьте версию:

nginx -v
# nginx version: nginx/1.17.2

Включите и запустите сервис:

sudo sysrc nginx_enable=yes  
sudo service nginx start

Создайте конфигурационный файл для Matomo:

sudo vim /usr/local/etc/nginx/matomo.conf

Вставьте конфигурацию (приведённая конфигурация — пример, адаптируйте пути и домены под вашу систему):

server {
    
  listen [::]:443 ssl;  
  listen 443 ssl;
  listen [::]:80;
  listen 80;  

  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;  
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;  
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;  
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;  

  server_name example.com;
  
  root /usr/local/www/matomo;
  
  index index.php;
  
  location ~ ^/(index|matomo|piwik|js/index).php {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    try_files $fastcgi_script_name =404;
    set $path_info $fastcgi_path_info;
    fastcgi_param PATH_INFO $path_info;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_param HTTP_PROXY "";
    fastcgi_pass 127.0.0.1:9000;
  }
  
  location = /plugins/HeatmapSessionRecording/configs.php { 
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    try_files $fastcgi_script_name =404;
    set $path_info $fastcgi_path_info;
    fastcgi_param PATH_INFO $path_info;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_param HTTP_PROXY "";
    fastcgi_pass 127.0.0.1:9000;
  }
  
  location ~* ^.+\.php$ {
    deny all;
    return 403;
  }
  
  location / {
    try_files $uri $uri/ =404;
  }
  
  location ~ /(config|tmp|core|lang) {
    deny all;
    return 403; 
  }
  
  location ~ \.ht {
    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;
    expires 1h;
    add_header Pragma public;
    add_header Cache-Control "public";
  }
  
  location ~ /(libs|vendor|plugins|misc/user) {
    deny all;
    return 403;
  }
  
  location ~/(.*\.md|LEGALNOTICE|LICENSE) {
    default_type text/plain;
  }
  
}

Примечание: для production-окружения рекомендуется взять рекомендованный конфиг с https://github.com/matomo-org/matomo-nginx и адаптировать под ваши требования.

Подключите файл matomo.conf в http-блок основной конфигурации Nginx:

include matomo.conf;

Проверьте синтаксис конфигурации Nginx и перезагрузите сервис:

sudo nginx -t
sudo service nginx reload

Шаг 5 — Установка Matomo

Перейдите в директорию веб-контента и скачайте релиз Matomo:

cd /usr/local/www/
sudo wget https://builds.matomo.org/matomo.zip && sudo unzip matomo.zip
sudo rm matomo.zip
sudo chown -R www:www /usr/local/www/matomo

После этого откройте ваш сайт в браузере и следуйте веб-мастеру установки Matomo.

Логотип Matomo и обзор интерфейса

Веб-мастер Matomo проведёт вас через шаги: проверка системы, ввод параметров базы данных, создание суперпользователя, добавление первого сайта и получение JavaScript-кода для отслеживания.

Мастер установки Matomo — страница приветствия

Проверка системы — страница System Check

Настройка базы данных

Создание таблиц базы данных

Создание учётной записи суперпользователя

Добавление сайта для аналитики

JavaScript код для отслеживания

Установка Matomo завершена

Поздравляем — установка завершена.

Рекомендации по безопасности и производительности

Важно

  • Ограничьте доступ к базе данных по хосту/IP.
  • Регулярно обновляйте PHP, MySQL и Matomo.
  • Делайте регулярные резервные копии базы данных и каталога matomo.

Безопасность:

  • Запустите Matomo под отдельным системным пользователем (в примере — www).
  • Настройте firewall для запрещения доступа к административным портам.
  • Включите HTTP Strict Transport Security (HSTS) и современные TLS-параметры для Nginx.

Производительность:

  • Включите OPcache и APCu (мы установили расширения php73-opcache и php73-pecl-APCu).
  • Для больших установок используйте отдельный сервер базы данных, кеширование и CDN для статики.
  • Мониторьте SLI (время ответа, ошибки 5xx) и настраивайте SLO в зависимости от нагрузки.

Резервное копирование и обновление

Резервное копирование (минимум):

  • Регулярный дамп MySQL (mysqldump) для базы Matomo.
  • Резерв копирования каталога /usr/local/www/matomo (пользовательские плагины/настройки).

Обновление Matomo:

  • Перед обновлением создайте резервную копию БД и файлов.
  • Обновляйте Matomo через веб-интерфейс или заменой файлов релиза, затем проверьте совместимость плагинов.

Тестирование работоспособности (минимальные тест-кейсы)

  • Доступность страницы установки и мастера.
  • Прохождение System Check без критических ошибок.
  • Успешное создание таблиц в базе данных.
  • Успешный вход в интерфейс под суперпользователем.
  • Появление посетителя в отчётах после добавления трекинг-кода.

Типичные ошибки и устранение (Troubleshooting)

  • “502 Bad Gateway” — проверьте, что PHP-FPM запущен и слушает указанный адрес/порт.
  • Ошибки подключения к базе — проверьте credentials и права пользователя в MySQL, слушает ли MySQL локальный сокет/порт.
  • Проблемы с SSL — убедитесь, что acme.sh положил сертификаты в указанные пути и Nginx имеет доступ к файлам.
  • Плохая производительность — проверьте логи Nginx и PHP-FPM, отключите ненужные плагины Matomo.

Роли и чек-листы (кто что делает)

Администратор сервера:

  • Установить FreeBSD обновления.
  • Настроить firewall и права доступа.
  • Обеспечить резервное копирование.

DBA (администратор БД):

  • Установить MySQL, настроить резервное копирование и безопасность.
  • Мониторить производительность запросов.

DevOps / Системный инженер:

  • Установить и настроить Nginx и PHP-FPM.
  • Настроить автоматическое обновление сертификатов.

SRE / Оператор:

  • Настроить мониторинг доступности и метрик.
  • Проводить тестовые восстановление из резервных копий.

Мини-методология деплоя (шаблон)

  1. Создать тестовый сервер и проверить конфигурации Nginx/PHP/MySQL.
  2. Развернуть Matomo и пройти веб-мастер установки.
  3. Протестировать трекинг на тестовом сайте.
  4. Снять бэкапы и реплицировать на production при успешных результатах.

Советы по приватности и соответствию GDPR

  • Matomo можно настроить так, чтобы не собирать персональные данные по умолчанию.
  • Используйте анонимизацию IP и оповещайте пользователей о сборе аналитики в privacy policy.
  • Проверьте локальные законы и требования по хранению данных.

Полезные ссылки

Критерии приёмки

  • Matomo доступен по HTTPS и веб-интерфейс загружается.
  • Пользователь суперпользователь создан и может входить в систему.
  • Даются правильные отчёты после установки трекинг-кода.
  • Настроено регулярное резервное копирование базы и файлов.

Короткое резюме

Matomo — отличный выбор для тех, кто хочет контролировать свои аналитические данные и хранить их на собственном сервере. Эта пошаговая инструкция покрывает установку на FreeBSD 12, настройку MySQL, PHP-FPM, Nginx и получение сертификата Let’s Encrypt с помощью acme.sh. Следуйте рекомендациям по безопасности и резервному копированию.

Итого: проверьте версии ПО, настройте права, обеспечьте резервирование и мониторинг.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро