Установка 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 проведёт вас через шаги: проверка системы, ввод параметров базы данных, создание суперпользователя, добавление первого сайта и получение JavaScript-кода для отслеживания.








Поздравляем — установка завершена.
Рекомендации по безопасности и производительности
Важно
- Ограничьте доступ к базе данных по хосту/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 / Оператор:
- Настроить мониторинг доступности и метрик.
- Проводить тестовые восстановление из резервных копий.
Мини-методология деплоя (шаблон)
- Создать тестовый сервер и проверить конфигурации Nginx/PHP/MySQL.
- Развернуть Matomo и пройти веб-мастер установки.
- Протестировать трекинг на тестовом сайте.
- Снять бэкапы и реплицировать на production при успешных результатах.
Советы по приватности и соответствию GDPR
- Matomo можно настроить так, чтобы не собирать персональные данные по умолчанию.
- Используйте анонимизацию IP и оповещайте пользователей о сборе аналитики в privacy policy.
- Проверьте локальные законы и требования по хранению данных.
Полезные ссылки
Критерии приёмки
- Matomo доступен по HTTPS и веб-интерфейс загружается.
- Пользователь суперпользователь создан и может входить в систему.
- Даются правильные отчёты после установки трекинг-кода.
- Настроено регулярное резервное копирование базы и файлов.
Короткое резюме
Matomo — отличный выбор для тех, кто хочет контролировать свои аналитические данные и хранить их на собственном сервере. Эта пошаговая инструкция покрывает установку на FreeBSD 12, настройку MySQL, PHP-FPM, Nginx и получение сертификата Let’s Encrypt с помощью acme.sh. Следуйте рекомендациям по безопасности и резервному копированию.
Итого: проверьте версии ПО, настройте права, обеспечьте резервирование и мониторинг.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента