去年统计是使用 Umami 期间总体不错,但迫于不熟悉 nodejs,每次更新 build 总会跳一堆错误,趁着假期准备换一个更方便的工具。其实以前也折腾过不少 Web Analytics 工具这里再记录一下自建 Plausible Analytics
的过程。
其实自建过程在官方文档里已经很详细了,通过 Docker Compose 搭建几行命令就完事了。安装 Docker 和 Docker Compose 可以参考文章: Debian 系统安装 Docker 教程
安装和更新
- 安装
在合适的文件目录下克隆仓库文件:
git clone https://github.com/plausible/hosting
cd hosting
此时目录下会有两个文件需要配置:
docker-compose.yml
:配置 Docker Compose,包括网络、数据库、SMTP 等;plausible-conf.env
:配置 Plausible 服务,完整的配置文件可以参考这里。
其中需要注意的是 BASE_URL
是你的域名地址(例如:http://yourdomain.com
或者 https://web.yourdomain.com
,目前不支持子目录),而 plausible-conf.env
则需要一个随机的 64 位字符 SECRET_KEY_BASE
用来提高安全性,可以通过下面的命令生成:
openssl rand -base64 64 | tr -d '\n' ; echo
在该目录下启动服务:
docker compose up -d
默认会运行在 http://{hostname}:8000
,第一次登录时可能会要求验证邮箱地址,如果前面没有配置 SMTP,可以通过下面的命令认证所有当前用户:
docker compose exec plausible_db psql -U postgres -d plausible_db -c "UPDATE users SET email_verified = true;"
添加网站(如下图,只需要输入根域名)之后将分析链接放入相应网站的 head 中即可。
Plausible 默认使用 dbip 的 IP 数据库,支持更换为 MaxMind,具体可以参考官方文档。
- 更新
Docker Compose 的更新比较简单:
docker compose down --remove-orphans
docker compose pull plausible
docker compose up -d
配置 Nginx 反代
使用 Nginx 反带记得提前将前面 docker-compose.yml
中的 Plausible 服务端口修改为 127.0.0.1:8000
并重启服务,一个简单的 Nginx 部分配置如下:
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-Proto $scheme;
}
被去广告插件拦截
毫无疑问,Plausible 也是被常见的去广告规则拦截了的,例如 EasyPrivacy,目前可以通过 proxy_pass 来解决,下面分享下我自用的配置:
location = /custom.js {
rewrite /custom.js /js/plausible.js break;
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location = /event {
rewrite /event /api/event break;
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
}
相应网站中的链接也需要修改:
<script defer data-domain="example.com" data-api="https://yourdomain.com/event" src="https://yourdomain.com/custom.js"></script>
微信扫描下方的二维码阅读本文
暂无评论内容