Matomo 网站分析平台部署教程
Matomo(原 Piwik)是全球最流行的开源网站分析平台,是 Google Analytics 的最佳自托管替代方案。自托管 Matomo 意味着你完全掌控用户数据,不必将流量信息交给第三方,天然符合 GDPR 等数据隐私法规。本文将在搬瓦工 VPS 上部署 Matomo 并进行完整配置。
一、Docker 方式部署(推荐)
确保已安装 Docker 和 Docker Compose。
1.1 创建 Docker Compose 配置
mkdir -p /opt/matomo && cd /opt/matomo
创建 docker-compose.yml:
version: '3.8'
services:
db:
image: mariadb:11
restart: always
environment:
MARIADB_ROOT_PASSWORD: rootpassword
MARIADB_DATABASE: matomo
MARIADB_USER: matomo
MARIADB_PASSWORD: matomo_password
volumes:
- db_data:/var/lib/mysql
command: --max-allowed-packet=64MB
matomo:
image: matomo:latest
restart: always
depends_on:
- db
ports:
- "8080:80"
environment:
MATOMO_DATABASE_HOST: db
MATOMO_DATABASE_DBNAME: matomo
MATOMO_DATABASE_USERNAME: matomo
MATOMO_DATABASE_PASSWORD: matomo_password
volumes:
- matomo_data:/var/www/html
- ./config:/var/www/html/config
volumes:
db_data:
matomo_data:
docker compose up -d
1.2 配置 Nginx 反向代理
server {
listen 80;
listen 443 ssl http2;
server_name analytics.example.com;
ssl_certificate /etc/letsencrypt/live/analytics.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/analytics.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 追踪脚本缓存配置
location ~ ^/matomo\.(js|php)$ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
nginx -t && systemctl reload nginx
1.3 运行安装向导
访问 https://analytics.example.com,按照向导完成安装,填写数据库连接信息和超级管理员账号。
二、添加追踪代码
安装完成后,Matomo 会生成追踪代码。将以下代码添加到你要监控的网站的 </head> 标签之前:
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.example.com/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
三、高级功能配置
3.1 目标和转化追踪
在 Matomo 管理面板中,进入"目标"页面创建转化目标,支持的目标类型包括:
- 访问特定 URL(如感谢页面)。
- 页面标题匹配。
- 下载文件操作。
- 点击外部链接。
- 自定义事件触发。
3.2 自定义事件追踪
// 追踪按钮点击事件
_paq.push(['trackEvent', 'Button', 'Click', '购买按钮']);
// 追踪搜索行为
_paq.push(['trackSiteSearch', '搜索关键词', '商品分类', 10]);
// 追踪内容交互
_paq.push(['trackContentImpression', 'Banner', '首页轮播图', 'https://example.com/promo']);
3.3 电商追踪
// 设置电商视图
_paq.push(['setEcommerceView', 'SKU001', '产品名称', ['分类A'], 99.9]);
// 添加购物车
_paq.push(['addEcommerceItem', 'SKU001', '产品名称', ['分类A'], 99.9, 1]);
_paq.push(['trackEcommerceCartUpdate', 99.9]);
// 追踪订单完成
_paq.push(['addEcommerceItem', 'SKU001', '产品名称', ['分类A'], 99.9, 1]);
_paq.push(['trackEcommerceOrder', 'ORDER123', 99.9, 99.9, 0, 0, 0]);
四、数据隐私与合规
Matomo 内置了强大的隐私保护功能:
- IP 匿名化:在"管理 > 隐私 > 匿名化数据"中启用,将 IP 地址的最后几个字节替换为零。
- Do Not Track 支持:在"隐私"设置中启用浏览器的 DNT 请求。
- 数据保留策略:设置原始数据和汇总报告的自动删除周期。
- 用户退出选项:提供嵌入式退出表单让用户选择不被追踪。
五、性能优化
5.1 配置归档 Cron
Matomo 默认在用户访问报告时实时计算,这会导致加载缓慢。配置定时归档可以预先计算报告:
# 添加 Cron 任务
echo "5 * * * * docker exec matomo-matomo-1 php /var/www/html/console core:archive --url=https://analytics.example.com" | crontab -
然后在 Matomo 的"系统 > 通用设置"中,将"浏览器触发归档"设为"否"。
5.2 数据库优化
# 优化 MariaDB 配置
docker exec matomo-db-1 mysql -u root -p -e "
SET GLOBAL innodb_buffer_pool_size = 536870912;
SET GLOBAL query_cache_size = 67108864;
"
六、数据备份
# 备份数据库
docker exec matomo-db-1 mysqldump -u matomo -pmatomo_password matomo | gzip > /root/backups/matomo_$(date +%Y%m%d).sql.gz
# 备份配置文件
tar -czf /root/backups/matomo_config_$(date +%Y%m%d).tar.gz /opt/matomo/config/
总结
Matomo 是功能最全面的自托管网站分析方案,提供了与 Google Analytics 不相上下的分析能力,同时保证了数据完全自主可控。在搬瓦工 VPS 上通过 Docker 部署非常方便,1GB 内存即可运行中小流量的网站分析。如果你需要更轻量的统计工具,可以参考 GoatCounter 或 Ackee。选购搬瓦工 VPS 请查看 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 进入官网购买。