多合一网络分析平台Matomo

在这里插入图片描述

什么是 Matomo ?

Matomo(以前称为 Piwik)是领先的开源分析平台,可以让您轻松地从访问者那里获得您想要的信息。例如查看您的网站访问者来自何处、正在查看哪些页面、单击了哪些链接以及其他各种有用的信息。

Umami 时,网友 Juijote 留言推荐过 Matomo,所以我们今天来折腾看看

文章传送门:网站分析软件Umami

前言

开始之前需要先说明两个问题:

  1. 官方的版本,在低版本内核( Linux kernel < 3.16)的群晖上,会出现下面的错误
[Tue Nov 01 05:44:11.089128 2022] [:crit] [pid 268] (38)Function not implemented: AH00141: Could not initialize random number generator
Action '-D FOREGROUND' failed.

这个 AH00141 错误除了换机器折腾外,老苏也没有更好的办法

你可以在 SSH 客户端,输入 uname -a 查看内核版本

在这里插入图片描述

  1. 尝试过用群晖自带的数据库,但是连不上,没找到原因;

命令行安装

docker cli

SSH 客户端中依次执行下面的命令

从安全角度,涉及到 password 的地方,最好都改一下;

# 新建文件夹 matomo 和 子目录
mkdir -p /volume1/docker/matomo/{
    
    data,web}

# 进入 matomo 目录
cd /volume1/docker/matomo

# 运行 mariadb 容器
docker run -d \
   --restart unless-stopped \
   --name matomo_db \
   -v $(pwd)/data:/var/lib/mysql \
   -e MARIADB_ROOT_PASSWORD=123456 \
   -e MARIADB_DATABASE=matomo \
   -e MARIADB_USER=matomo \
   -e MARIADB_PASSWORD=123456 \
   mariadb:10.6

# 运行 matomo 容器
docker run -d \
   --restart unless-stopped \
   --name matomo_web \
    --link matomo_db:mariadb \
    -p 7880:80 \
    -v $(pwd)/web:/var/www/html \
    -e MATOMO_DATABASE_HOST=mariadb \
    -e MATOMO_DATABASE_ADAPTER=mysql \
    -e MATOMO_DATABASE_TABLES_PREFIX=ma_ \
    -e MATOMO_DATABASE_USERNAME=matomo \
    -e MATOMO_DATABASE_PASSWORD=123456 \
    -e MATOMO_DATABASE_DBNAME=matomo \
    matomo:4.13

docker compose

将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  mariadb:
    image: mariadb:10.6
    container_name: matomo_db
    restart: unless-stopped
    volumes:
      - ./data:/var/lib/mysql
    environment:
      - MARIADB_ROOT_PASSWORD=123456
      - MARIADB_DATABASE=matomo
      - MARIADB_USER=matomo
      - MARIADB_PASSWORD=123456
      
  matomo:
    image: matomo:4.13
    container_name: matomo_web
    restart: unless-stopped
    ports:
      - 7880:80
    volumes:
      - ./web:/var/www/html
    environment:
      - MATOMO_DATABASE_HOST=mariadb
      - MATOMO_DATABASE_ADAPTER=mysql
      - MATOMO_DATABASE_TABLES_PREFIX=ma_
      - MATOMO_DATABASE_USERNAME=matomo
      - MATOMO_DATABASE_PASSWORD=123456
      - MATOMO_DATABASE_DBNAME=matomo
    depends_on:
      - mariadb

然后执行下面的命令

# 新建文件夹 matomo 和 子目录
mkdir -p /volume1/docker/matomo/{
    
    data,web}

# 进入 matomo 目录
cd /volume1/docker/matomo

# 修改目录权限
chmod 777 web

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:7880 就能看到主界面

在这里插入图片描述

选择 简体中文

在这里插入图片描述

设置完成就是中文了,不需要刷新

在这里插入图片描述

下一步,进行运行环境检测

在这里插入图片描述

继续 下一步,进行数据库设置

在这里插入图片描述

因为我们已经在环境变量中进行了设置,所以这里只要继续点 下一步 即可

在这里插入图片描述

一般来说如果设置没问题的话,会成功建立数据表,继续 下一步,创建系统的超级用户

在这里插入图片描述

设置完成后还是点 下一步,对要跟踪的网站进行设置,当然还是以老苏的博客为例

在这里插入图片描述

接下来会生成 JavaScript 跟踪代码

其中 var u="//172.22.0.3/"; 这是容器内部的 IP,后面用域名访问后会发生变化;

在这里插入图片描述

最后一步完成后,会收到安全警告

在这里插入图片描述

需要修改 /docker/matomo/web/config 目录中的 config.ini.php 文件

在这里插入图片描述

【注意】直接修改后保存,会显示权限不足,需要我们将 config.ini.php 文件先下载到本地,修改后再覆盖上传

找到 trusted_hosts[] = "192.168.0.199" ,增加端口,改为 trusted_hosts[] = "192.168.0.199:7880"

另外还需要再增加一行 enable_trusted_host_check=0,用于跳过受信任检测,否则反代之后登录可能会失败

在这里插入图片描述

刷新页面,就会显示登录界面

在这里插入图片描述

登录成功后的主界面

在这里插入图片描述

反向代理

原来老苏准备用 https://matomo.laosu.ml:444 来访问,但经老苏测试,带端口的域名不管用,也就是说收集不到信息,这一点上和 Umami 是一样的

【备注】:

  • Nginx Proxy Manager 反代,因为老苏的域名没备案,所以带端口,似乎不起作用;
  • Cloudflared 反代,域名不带端口,是 OK 的;

按我们预设置的域名、局域网 IP 和端口进行设置

在这里插入图片描述

SSL 设置

在这里插入图片描述

网页访问存在截端口的情况,所以还需要在 Advanced 中加入下面的代码

   location / {  
       proxy_set_header Host $host:444;  
       proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;  
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Forwarded-Protocol $scheme;
       proxy_pass  http://192.168.0.199:7880;  
       proxy_redirect http:// https://;  
   }

在这里插入图片描述

跟踪代码

前面我们已经讲了,带端口的域名会收集不到信息,所以如果你跟老苏一样没备案,还是用 Cloudflared 做反代吧

假设用 Cloudflared 反代的域名是https://matomo.xiaosu.ml,就不会有什么问题了,跟踪代码中会自动变成访问的域名地址

<!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    
    
    var u="//matomo.xiaosu.ml/";
    _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 -->

Tracking Code放到老苏博客网站的 <head> 部分,如果正好有人访问的话,很快就会有数据

在这里插入图片描述

可以查看访客更详细的访问页面和停留时间

在这里插入图片描述

参考文档

matomo-org/matomo: Liberating Web Analytics. Star us on Github? +1. Matomo is the leading open alternative to Google Analytics that gives you full control over your data. Matomo lets you easily collect data from websites & apps and visualise this data and extract insights. Privacy is built-in. We love Pull Requests!
地址:https://github.com/matomo-org/matomo

Matomo Analytics - The Google Analytics alternative that protects your data
地址:https://matomo.org/

matomo-org/docker: Official Docker project for Matomo Analytics
地址:https://github.com/matomo-org/docker

猜你喜欢

转载自blog.csdn.net/wbsu2004/article/details/129236049