介绍

Plausible Analytics 是一个简单、开源、轻量级(< 1 KB)且注重隐私的 Google Analytics 替代品。Plausible 被超过10,000个付费订阅用户信任,用于提供他们网站和业务洞察力。我们完全独立、自筹资金并自给自足。

来自官方Docs

特点

  • 支持docker一键部署,轻量级Docker镜像(使用Alpine Linux)
  • 支持谷歌API,链接谷歌分析、谷歌关键词工具
  • 支持自定义事件

安装 Docker 与 Nginx Proxy Manager

可以直接参考这篇内容:

docker-compose 搭建 nginx proxy manager | 赛博空间 (macin.top)

安装教程

创建安装目录

1
2
3
4
5
6
7
8
9
10
11
12
#管理员权限
sudo -i
#新建文件夹和路径
mkdir -p /root/data/docker_data/plausible
#进入文件夹
cd /root/data/docker_data/plausible
#克隆项目
git clone https://github.com/plausible/hosting
#进入文件夹
cd hosting
#编辑docker-compose内容
vim docker-compose.yml

英文输入法下,按 i进入编辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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

修改好之后,注意切换成英文输入法,然后按一下 esc,然后 :wq 保存退出

生成一串随机字符,写到下面的 SECRET_KEY_BASE

1
2
3
4
#生成随机秘钥
openssl rand -base64 64 | tr -d '\n' ; echo
#示例输出
FhNHzoWJyoQgT21RsFQG+KUzJ/o5YbKsszc6CMOArA0OXxjZ763oCGiItOPlKJAfIQO0uov8xt8p5k+MqtmtOQ==

打开环境配置文件:

vim plausible-conf.env

1
2
3
BASE_URL=访问plausible的域名,例如:https://fenxi.xxx.com
SECRET_KEY_BASE=填刚刚生成的那个密钥
DISABLE_REGISTRATION=true # 禁止用户注册

修改好之后,注意切换成英文输入法,然后按一下 esc,然后 :wq 保存退出。

更多参数配置,请看文档:https://plausible.io/docs/self-hosting-configuration

查看端口是否被占用

1
lsof -i:8000  #查看 8000 端口是否被占用,如果被占用,重新自定义一个端口

如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了

如果出现:

1
-bash: lsof: command not found

运行:

1
apt install lsof  #安装 lsof

被占用就修改一下端口,比如改成 8081,注意 docker 命令行里和防火墙端口放行都要改

输入 http://ip:8000 访问

添加发信邮箱【可选】

使用外部 SMTP 发信邮箱,编辑 Plausible 环境变量文件

1
vim plausible-conf.env

添加下面内容

1
2
3
4
5
6
7
MAILER_EMAIL=plausible@your.domain	# 发信邮箱
SMTP_HOST_ADDR=smtp.your.domain # SMTP 主机名
SMTP_HOST_PORT=625 # SMTP 端口
SMTP_USER_NAME=plausible@your.domain # 发信邮箱用户名
SMTP_USER_PWD=admin1234567890 # 发信邮箱密码
SMTP_HOST_SSL_ENABLED=true # 是否启用 SSL?
SMTP_RETRIES=2 # 发信重试次数

重启容器

1
docker compose down && docker compose up -d

没问题的话可以去 Plausible 后台开启每周/每月/异常流量邮件报告,当然这个邮箱也可以在你忘记密码的时候用来重置密码

SMTP

SMTP

重写路径【建议】

Plausible 是一个极其尊重隐私的网站统计服务,它:

  • 与广告技术和监视资本主义无关
  • 不收集任何个人数据,所有统计数据仅为汇总数据
  • 没有跨站点或跨设备跟踪
  • 您 100% 拥有您的网站数据,不会将其发送、共享或出售给任何第三方
  • 完全开源的网络分析软件,可以自行托管

即使如此,它 仍然 被一些广告过滤器规则所屏蔽,作为网站管理员,我们可以使用反向代理脚本和 API 路由来减少被广告过滤器误杀的风险,按照官网文档,至少可以使用的是:

我的服务依赖 Cloudflare,但 Cloudflare Workers 每日请求数有限制,因此在本文中,我会使用 Cloudflare 转换规则 下面的 重写 URL 规则 来完成这个过程,它实施起来非常容易。

在 Plausible 控制台获取到站点统计的脚本示例如下

1
2
3
4
<script defer
data-domain="blog.your.domain"
src="https://plausible.your.domain/js/script.js"
></script>

其中:

  • plausible.your.domain 是您部署 Plausible 的域名
  • blog.your.domain 是您安装 Plausible 统计脚本的域名

创建重写 URL 规则

Add Rewrite Rules

Add Rewrite Rules

规则名称随便填,传入请求匹配自定义筛选表达式

Rewrite Script Rule.webp

Rewrite Script Rule.webp

同理,再添加一条规则,重写 API 路由

Rewrite API Rule.webp

Rewrite API Rule.webp

接下来,修改安装到被统计站点的脚本如下:

1
2
3
4
5
<script defer
src="https://plausible.your.domain/js/vue.min.js"
data-api="https://plausible.your.domain/stats/car/benz"
data-domain="blog.your.domain"
></script>

如果您的站点使用 Plausible 的其他 统计脚本拓展 也按照上面修改就可以。

统计关键词【可选】

Plausible 支持集成 Google Search Console,可以获得通过搜索引擎得到的关键词统计,详细配置流程可参阅 Plausible 文档,步骤如下:

  • Google Cloud Console 创建一个新项目
  • 配置 OAuth 同意屏幕
  • 创建一个 OAuth 客户端,获取 Client ID 和 CLIENT SECRET

微信截图_20230815125015

已获授权的 JavaScript 来源,填被查询网站的网址,例:https://macin.top

已获授权的重定向 URI,填plausible网址/auth/google/callback,例:https://stats.macin.ac.cn/auth/google/callback

启用 Google Search Console API

微信截图_20230815125223

将 Client ID 和 Client Secret 添加到 Plausible 环境变量文件里

1
2
GOOGLE_CLIENT_ID=xxxx
GOOGLE_CLIENT_SECRET=yyyy

重启容器

1
docker compose down && docker compose up -d

之后在 Plausible 配置下 Google 集成即可

Google Integration

Google Integration

城市精细度【可选】

Plausible 的 v1.5.1 版本新增一条可选配置项,完成这步可获得精细度达到省(州)到具体城市的统计效果,但会额外消耗 1GB 左右的 RAM,请酌情选择。

在前面部署好 Plausible 服务后,进入 geoip 文件夹,下载所需数据库

1
2
3
4
5
6
cd geoip
curl -O https://s3.eu-central-1.wasabisys.com/plausible-application/geonames.csv
# 将 LNpsJCCKPis6XvBP 替换为您的 GeoLite2 API Key
export MAXMIND_LICENSE_KEY=LNpsJCCKPis6XvBP
curl -L "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=${MAXMIND_LICENSE_KEY}&suffix=tar.gz" -o geolite2-city.mmdb.gz
gunzip geolite2-city.mmdb.gz

回到 Plausible 根目录

1
2
3
4
5
6
cd ..
# 编辑环境变量
vim plausible-conf.env
# 添加下面两行
GEONAMES_SOURCE_FILE=/etc/app/geonames.csv
IP_GEOLOCATION_DB=/etc/app/geolite2-city.mmdb

编辑 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
vim docker-compose.yml
# 添加两行(有 + 标记的两行)
plausible:
image: plausible/analytics:latest
restart: always
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
...
volumes:
- ./geoip:/geoip:ro
+ - ./geoip/geonames.csv:/etc/app/geonames.csv:ro
+ - ./geoip/geolite2-city.mmdb:/etc/app/geolite2-city.mmdb:ro

重新创建容器即可

1
docker compose down && docker compose up -d

参考信息

Getting started | Plausible docs

  1. 尽量使用 Gmail、Outlook 等邮箱
  2. 非必需,您也可以使用其他方式部署 SSL 证书