步骤/目录:
1.背景介绍
2.Umami
    (1)Umami的搭建
    (2)Umami的使用
3.Plausible
    (1)Plausible的搭建
    (2)Plausible的使用
    (3)Plausible接入谷歌搜索
        a.创建专案
        b.启用OAuth
        c.创建OAuth
        d.域名验证
        e.plausible重启与设置
        f.在plausible查看GSC数据
4.Matomo
    (1)Matomo的搭建
    (2)Matomo的使用

本文首发于个人博客https://lisper517.top/index.php/archives/162/,转载请注明出处。
本文的目的是介绍一些监控个人网站流量的工具。
本文写作日期为2023年12月30日。主要受up主 我不是咕咕鸽 的启发。他还分享了很多其它有趣的内容,讲解也很详细、基础,很适合小白学习。

1.背景介绍

在日常管理服务器的过程中,一些工具能大大减轻工作量。前几天在up主 我不是咕咕鸽 的空间看到了很多有趣的分享,也尝试自己搭建一下。

搭建网站后,有时候希望统计一下有多少人在看,都是用什么设备看,以对网站做针对性的优化,就需要进行流量统计。该up主推荐过3款统计软件,按复杂程度是 Umami ≤ Plausible < Matomo ,当然Matomo的功能也是最全的。原视频在 UmamiPlausibleMatomo 。如果不想自己搭建,也可以在 Google Analytics 注册账号、使用谷歌统计。实际上,这3者都自称是Google Analytics的替代品,无疑说明了GA的地位。

2.Umami

Umami是其中功能最简单的,但是满足个人需要已经足够。

(1)Umami的搭建

Umami的github项目地址 上演示了如何使用docker-Umami,因为仓库中自带了Dockerfile、docker-compose.yml,所以把项目 git clone 到服务器上后稍微修改一下yml,再 docker compose up -d 就行了。

由于还是比较习惯有详细说明的镜像,笔者接下来选择稍微可靠一点的 elestio版本的Umami镜像 来演示。在服务器上如下操作:

mkdir -p /docker
cd /docker
yum install git -y
git clone https://github.com/elestio-examples/umami.git
#git一直clone不了,就到项目原址下zip包解压到服务器上
cd /docker/umami
cp /docker/umami/tests/.env /docker/umami/.env
vim /docker/umami/.env

该.env内容为:

ADMIN_PASSWORD=test@123
SECRET_KEY_BASE=test-test-test
TEST_URL=http://172.17.0.1:3956

前两行可以稍微改一下(可以用 openssl rand -base64 64 | tr -d '\n' ; echo 生成64位密钥作为SECRET_KEY_BASE,或者自己乱写)。因为要用NPM,把3956改成了3000。

vim docker-compose.yml

yml内容为:

version: '3'
services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    ports:
      - "172.17.0.1:3956:3000"
    environment:
      DATABASE_URL: postgresql://umami:${ADMIN_PASSWORD}@db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: ${SECRET_KEY_BASE}
    depends_on:
      - db
    restart: always
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: ${ADMIN_PASSWORD}
    volumes:
      - ./umami-db-data:/var/lib/postgresql/data
    restart: always

因为接下来要使用NPM,所以把umami的端口映射注释掉,并在末尾加上了:

networks:
  default:
    external: true
    name: NPM_group

最后运行:

docker-compose pull
docker-compose config
docker-compose up

从ghcr.io拉镜像比较慢,需要等待一会儿。笔者拉了2个小时。等不及的也可以拉 elestio/umami:latest ,记得修改一下yml。
成功运行后,配置一下NPM,从网页访问Umami;不用NPM,则在3956(或者3000)端口访问即可。但是不管怎么样,都要求能通过公开的域名、https访问到umami,最简单的方法是NPM,参考 可视化管理Nginx-Nginx Proxy Manager

(2)Umami的使用

.env里面的是postgresql的用户密码,Umami网页默认的则是 adminumami 。登录后,在右上角profile处设置一下语言、密码、用户名。

添加一个网站,然后在 跟踪代码 可看到一段javascript代码。把这段代码复制到网站的php里,要保证每个页面都有这段代码(比如footer.php、header.php,typecho在 typecho/app/usr/themes/default/header.php ),并且加上注释:

<!--umami analytics start-->
<script async src="https://umami域名/script.js" data-website-id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"></script>
<!--umami analytics end-->

修改php后重启一下博客。然后chrome浏览器打开新的页面,按F12出现开发者工具,访问自己的博客, 开发者工具-网络页 中可以看到一个script.js,请求网址是 https://umami域名/script.js 。返回umami,就能看到访问数据了。

在umami中可以添加其它网站,注意在网址中加入js即可。如果多人使用,可以创建umami的其它用户,控制一下用户权限。总的来说是很不错的,唯一缺点大概是不能统计别人是通过什么搜索词点进你的网站。

3.Plausible

github-Plausible 展示了搭建的效果,和Umami差不多。Plausible有官方维护的镜像: docker-Plausible 。Plausible还可以接入谷歌搜索,看看别人都是通过什么关键词来到你的网站,这将在下文详细介绍。

(1)Plausible的搭建

在服务器上如下操作:

mkdir -p /docker
cd /docker
git clone https://github.com/plausible/hosting
mv /docker/hosting /docker/plausible
cd /docker/plausible
vim docker-compose.yml

原yml为:

version: "3.3"
services:
  mail:
    image: bytemark/smtp
    restart: always

  plausible_db:
    # supported versions are 12, 13, and 14
    image: postgres:14-alpine
    restart: always
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=postgres

  plausible_events_db:
    image: clickhouse/clickhouse-server:23.3.7.5-alpine
    restart: always
    volumes:
      - event-data:/var/lib/clickhouse
      - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
      - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
    ulimits:
      nofile:
        soft: 262144
        hard: 262144

  plausible:
    image: plausible/analytics:v2.0
    restart: always
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
    depends_on:
      - plausible_db
      - plausible_events_db
      - mail
    ports:
      - 8000:8000
    env_file:
      - plausible-conf.env

volumes:
  db-data:
    driver: local
  event-data:
    driver: local

同样,因为要用NPM,把plausible的 8000->8000 注释掉,在末尾加上:

networks:
  default:
    external: true
    name: NPM_group

并且把volume卷都改成本地目录。最后得到:

version: "3.3"
services:
  mail:
    image: bytemark/smtp
    restart: always

  plausible_db:
    # supported versions are 12, 13, and 14
    image: postgres:14-alpine
    restart: always
    volumes:
      - ./db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=postgres

  plausible_events_db:
    image: clickhouse/clickhouse-server:23.3.7.5-alpine
    restart: always
    volumes:
      - ./event-data:/var/lib/clickhouse
      - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
      - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
    ulimits:
      nofile:
        soft: 262144
        hard: 262144

  plausible:
    image: plausible/analytics:v2.0
    restart: always
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
    depends_on:
      - plausible_db
      - plausible_events_db
      - mail
    #ports:
      #- 8000:8000
    env_file:
      - plausible-conf.env

networks:
  default:
    external: true
    name: NPM_group

在本地创建两个目录,并修改一下配置:

mkdir -p /docker/plausible/db-data
mkdir -p /docker/plausible/event-data
openssl rand -base64 64 | tr -d '\n' ; echo
#生成64位密钥。复制下来
vim plausible-conf.env

原文件内容为:

BASE_URL=replace-me
SECRET_KEY_BASE=replace-me

把BASE_URL换成你打算给Plausible的网址,比如 https://plausible.你的域名 ;SECRET_KEY_BASE换成刚才生成的密钥。Plausible也是可以注册的,如果想仅邀请才能注册,就加上一行: DISABLE_REGISTRATION=invite_only ,笔者的建议是最好不要开放注册。
最后运行:

cd /docker/plausible
docker-compose config
docker-compose pull
docker-compose up

(2)Plausible的使用

用NPM反代一下plausible:8000,浏览器访问,第一次登录需要注册,然后按照流程走即可,最后同样在header.php添加js:

<!--plausible analytics start-->
<script defer data-domain="你的域名" src="https://plausible域名/js/script.js"></script>
<!--plausible analytics end-->

同样重启博客,F12-网络,看到有script.js发送请求到plausible域名。
其它使用方面没什么好说的,Plausible界面和Umami差不多,用起来也是很简单。在网站的右上角有一个小齿轮,点进去有一些设置,值得注意的有:
a.可以接受Google Analytics导出的数据;
b.可以与Google Search Console整合(见下文);
c.可以定期发送邮件,或者在大流量冲击时(比如有10个人同时浏览你的网站)发邮件提醒,而且发邮件不需要设置SMTP等。

(3)Plausible接入谷歌搜索

这部分参考了 官方文档1 官方文档2 (官方文档写的比较详细,或者也可以看 这篇文章 )。
另外,下面的操作前提是你的本机和服务器都能访问谷歌,最好是香港服务器。

a.创建专案

谷歌云控制台 ,登录谷歌账号,在最上方偏左处下拉,创建一个专案。笔者之前曾免费体验过谷歌云服务器,有一个默认的 My First Project ,现在新增一个叫 Plausible 的专案,在最上方偏左的地方可以切换到这个专案。然后在 API和服务 (APIs & Services)里,上方有一个 启用API和服务 ,在里面搜索并启用 Google Search Console API

b.启用OAuth

API和服务 里,左边第四项 OAuth同意画面OAuth consent screen ),内部 是说只要提供的ID密码正确、plausible或者其它应用就能使用你的API(用于在测试中的应用), 外部 是说不光验证用户密码、还要验证应用身份(用于可以发布的应用),为了安全性可以选外部,接下来 編輯應用程式註冊申請 。需要注意:在 测试使用者 中,添加自己的google账号(因为刚才选的外部,只有测试使用者才能使用)。

c.创建OAuth

回到 API和服务 ,左边第三项 凭证Credentials ) - 上方建立凭证 - OAuth 用户端 ID ,需要注意:类型选择 网页应用程式已授權的重新導向 URIhttps://自己的plausible域名/auth/google/callback 。创建完成后可以下载一个json文件,里面最关键的是 client_id 和 client_secret 。

d.域名验证

访问 GSC ,选择左边的网域,添加自己的域名,然后到DNS厂商处验证,Google会跳转到DNS厂商处给你加一个TXT的解析,以确定域名是你的。如果不支持DNS验证,或者其它原因(比如你的博客是在blog等子域名下、且只想收集博客的数据),也可以选右边的子域名。

e.plausible重启与设置

vim /docker/plausible/plausible-conf.env

现在添加id和secret,结果如下:

BASE_URL=replace-me
SECRET_KEY_BASE=replace-me
DISABLE_REGISTRATION=invite_only
GOOGLE_CLIENT_ID=你的id
GOOGLE_CLIENT_SECRET=你的密码

换成自己的id和secret。然后重启plausible:

cd /docker/plausible
docker-compose down --remove-orphans
docker-compose up -d

然后回到自己的plausible域名里,在网站设置里找到GSC integration,点击Continue with Google。跳转并登录google账号,会显示 此應用程式未獲 Google 驗證 ,继续即可,把 查看已驗證網站的 Search Console 資料 勾选上。
如果此处显示 There has been a server error. ,说明你搭建plausible的服务器被谷歌封禁了。

一切正常的话,最后会跳转回你的plausible域名,在下方的 (Choose property) 下拉菜单中选择 sc-domain:你的域名 就大功告成了。

最后,还可以在 自己谷歌账号的主页 看看,会显示有一个你刚才设置名称的应用接入。

f.在plausible查看GSC数据

在plausible查看网站的dashboard,其中有一个 Top Sources ,下面有个 Google ,点击就能看到搜索关键词。注意GSC的统计有24-36h的延迟(而Plausible是从GSC立即拿数据的),所以刚开通GSC时不会显示什么,你可以自己从google搜索关键词、点进自己的博客实验一下,第二天再看看。

另外需要注意的是,Plausible这里对GSC的数据有所筛选,只显示通过谷歌搜索到、并点进了你的网站的关键词。如果别人只是通过谷歌搜索到你的网站,但没有点进来,Plausible这里则不会显示。GSC也不是一定能统计准确的,有时候各个关键词加起来不等于通过谷歌点击网站的人数,Plausible对此无能为力。

最后,plausible的开发者在2020年就明确表示暂时没有计划接入其它搜索引擎(见 这个问题 ),所以现在只能接入谷歌,好在已经够用。

4.Matomo

Matomo占用服务器资源最多,功能也最全面,个人网站其实不太需要太复杂的功能,它的优点是能为电商统计现金流。另外,由于Matomo功能比较复杂,他们除了开源外还接受付费为网站定制统计功能。

(1)Matomo的搭建

在云服务器上如下操作:

mkdir -p /docker/matomo/data/mysql
mkdir -p /docker/matomo/www
cd /docker/matomo
vim docker-compose.yml

写入如下内容:

version: "3"
services:
  mariadb_matomo:
    image: mariadb
    command: --max-allowed-packet=64MB
    volumes:
      - /docker/matomo/data/mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=999999
      - MYSQL_USER=matomo
      - MYSQL_PASSWORD=123456
      - MYSQL_DATABASE=matomo
    restart: always

  matomo:
    image: matomo
    volumes:
      - /docker/matomo/www:/var/www/html
    environment:
      - MATOMO_DATABASE_HOST=mariadb_matomo
      - MATOMO_DATABASE_ADAPTER=mysql
      - MATOMO_DATABASE_TABLES_PREFIX=matomo_
      - MATOMO_DATABASE_USERNAME=matomo
      - MATOMO_DATABASE_PASSWORD=123456
      - MATOMO_DATABASE_DBNAME=matomo
    #ports:
      #- 80:80
      #- 443:443
    restart: always

networks:
  default:
    external: true
    name: NPM_group

8080和8443如果被占用,可以改一下,记得在服务器的防火墙处打开这两个端口。
最后运行:

docker-compose config
docker-compose up

最后用NPM为Matomo添加一个proxy host,并强制SSL访问。如果不用NPM的话,也要通过nginx等方式来https访问Matomo,否则之后是统计不到的。

(2)Matomo的使用

访问Matomo域名,按部就班进行安装。设置好要统计的网站,把JS代码粘贴到该网站的页面里即可(或者用列出的其它统计方法)。
要测试JS代码是否正常,可以chrome访问自己的域名,按F12打开 开发者工具 ,刷新一下,在网络里面有一个 matomo.js 。可以发现该js请求了 https://域名:8080 ,所以前面必须要能通过https访问Matomo。

Matomo的使用没有其它太多可讲的,因为它的功能比较强大,笔者又不是很熟悉。值得一提的是它支持更多搜索引擎的关键词,但是需要安装 Search Engine Keywords Performance插件 ,而且这个插件是收费的(可免费试用30天。最低收费$159/年,限你的matomo不超过4个用户)。如果不幸购买了该插件,可以按照 matomo官方文档 接入谷歌的SEC。

标签: docker, matomo, Plausible, Umami

添加新评论