admin 管理员组文章数量: 887007
Plausible: 一款简单、隐私友好的谷歌分析替代品自托管部署指南
公众号关注 「奇妙的 Linux 世界」
设为「星标」,每天带你玩转 Linux !
前言
Umami 是一个很棒的自托管网站统计服务,我使用它快一年了。目前为止它仍然无法在 ARM 架构的服务器上部署,此前我一直使用 Vercel + Supabase 托管它。
Umami 用于统计的 JavaScript 脚本体积接近 3KB。
介绍
最近我瞄上了易于使用和隐私友好的谷歌分析替代品──Plausible[1]|演示地址[2],他们提供付费托管服务,但也开放源码让用户可以自行托管。Plausible 比 Umami 还要轻量很多,用于统计的脚本体积只有 1KB 左右。
为了方便用户自部署,他们甚至专门开了个编排容器及相关配置的仓库 plausible/hosting[3],此前有用户要求的 ARM64 架构的也早就上线了,非常 Nice 有没有 🤗!
先决条件
已安装 Docker
已安装 Docker Compose
已安装 Nginx
准备
❝plausible/hosting[4] 的有些服务我们用不上,我删除了。
SSH 登录服务器,下载所需文件
mkdir plausible && cd plausible \
&& wget /posts/plausible-selfhosted-with-docker-complete-guide/plausible.tar.gz
解压文件
tar -xzvf plausible.tar.gz \
&& rm plausible.tar.gz
现在这个文件目录应该是这样的
.
├── README.md # 备注
├── clickhouse # Clickhouse
│ ├── clickhouse-config.xml
│ └── clickhouse-user-config.xml
├── docker-compose.yml
├── geoip # GeoIP 相关配置
│ └── geoip.conf
└── plausible-conf.env # Plausible 环境变量
使用 GeoLite2
Plausible 默认使用 dbip[5] 的 GeoIP 数据库,也可以使用 MaxMind 提供的 GeoLite2 数据库,步骤如下:
关闭代理,点击 注册 GeoLite2[6] 链接,填写必要的信息,提交。
收到有设置密码的邮件:
登录后就可以创建 GeoLite2 API Key 了。
提交后,复制 Account ID 和 License key 写到 geoip/geoip.conf
里保存。
GEOIPUPDATE_ACCOUNT_ID=123456
GEOIPUPDATE_LICENSE_KEY=abcdEFCDhijklmop
编辑 Plausible 的环境变量文件 plausible-conf.env
:
DISABLE_REGISTRATION=true # 禁止用户注册
BASE_URL= # 部署 Plausible 的 BaseURL
SECRET_KEY_BASE=FhNHzoWJyoQgT21RsFQG+KUzJ/o5YbKsszc6CMOArA0OXxjZ763oCGiItOPlKJAfIQO0uov8xt8p5k+MqtmtOQ==
生成一串随机字符,写到上面的 SECRET_KEY_BASE
里:
openssl rand -base64 64 | tr -d '\n' ; echo// 示例输出
FhNHzoWJyoQgT21RsFQG+KUzJ/o5YbKsszc6CMOArA0OXxjZ763oCGiItOPlKJAfIQO0uov8xt8p5k+MqtmtOQ==
部署
现在可以开始部署了
sudo docker compose up -d
在 Cloudflare 生成一个源服务器证书 2[7],并安装,更多帮助[8]。下面是一个示例 Nginx 配置文件
server {listen 80;listen [::]:80;# 替换为您的域名server_name plausible.your.domain;return 301 https://$host$request_uri;
}server {listen 443 ssl http2;listen [::]:443 ssl http2;# 替换为您的域名server_name plausible.your.domain;access_log /var/log/nginx/plausible.access.log;error_log /var/log/nginx/plausible.error.log;# 替换为您的实际(源服务器)SSL 证书路径ssl_certificate /etc/nginx/cert/xxx.your.domain.pem;ssl_certificate_key /etc/nginx/cert/xxx.your.domain.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 5m;ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+AESGCM:EDH+AESGCM:EECDH+CHACHA20:EDH+CHACHA20:EECDH+AES128:EDH+AES128:EECDH+AES256:EDH+AES256:EECDH+3DES:EDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS';location / {proxy_pass http://127.0.0.1:8088;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto https;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_redirect off;add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';}
}
检查 Nginx 配置文件
sudo nginx -t
重载配置文件
sudo systemctl reload nginx
现在在 Cloudflare 控制台将 DNS 解析到服务器 IP 即可访问啦,第一次访问创建的用户即是管理员,登录后,就可以添加网站啦🤤
添加发信邮箱【可选】
使用外部 SMTP 发信邮箱,编辑 Plausible 环境变量文件
vim plausible-conf.env
添加下面内容
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 # 发信重试次数
然后重启容器
sudo docker compose down --remove-orphans \
&& sudo docker compose up -d
没问题的话可以去 Plausible 后台开启每周/每月/异常流量邮件报告,当然这个邮箱也可以在你忘记密码的时候用来重置密码 🤤
重写路径【建议】
Plausible 是一个极其尊重隐私的网站统计服务,它:
与广告技术和监视资本主义无关
不收集任何个人数据,所有统计数据仅为汇总数据
没有跨站点或跨设备跟踪
您 100% 拥有您的网站数据,不会将其发送、共享或出售给任何第三方
完全开源的网络分析软件,可以自行托管
即使如此,它 仍然[9] 被一些广告过滤器规则所屏蔽,作为网站管理员,我们可以使用反向代理脚本和 API 路由来减少被广告过滤器误杀的风险,按照官网文档,至少可以使用的是:
Cloudflare Workers[10]
Akamai[11]
Netlify[12]
Vercel[13]
CloudFront[14]
Nginx[15]
Caddy[16]
我的服务依赖 Cloudflare,但 Cloudflare Workers 每日请求数有限制,因此在本文中,我会使用 Cloudflare 转换规则 下面的 重写 URL 规则 来完成这个过程,它实施起来非常容易。
在 Plausible 控制台获取到站点统计的脚本示例如下:
<script defer data-domain="blog.your.domain" src="/js/script.js"></script>
其中:
plausible.your.domain 是您部署 Plausible 的域名;
blog.your.domain 是您安装 Plausible 统计脚本的域名。
创建重写 URL 规则:
规则名称随便填,传入请求匹配自定义筛选表达式:
同理,再添加一条规则,重写 API 路由:
接下来,修改安装到被统计站点的脚本如下:
<scriptsrc="/js/vue.min.js"data-api="/stats/car/benz"data-domain="blog.your.domain"
></script>
如果您的站点使用 Plausible 的其他 统计脚本拓展[17] 也按照上面修改就可以。
统计关键词【可选】
Plausible 支持集成 Google Search Console[18],可以获得通过搜索引擎得到的关键词统计,详细配置流程可参阅 Plausible 文档[19],步骤如下:
在 Google Cloud Console[20] 创建一个新项目;
配置 OAuth 同意屏幕;
创建一个 OAuth 客户端,获取 Client ID 和 CLIENT SECRET;
启用 Google Search Console API[21]。
将 Client ID 和 Client Secret 添加到 Plausible 环境变量文件里:
GOOGLE_CLIENT_ID=xxxx
GOOGLE_CLIENT_SECRET=yyyy
重启容器即可:
sudo docker compose down --remove-orphans \
&& sudo docker compose up -d
之后在 Plausible 配置下 Google 集成即可:
城市精细度【可选】
Plausible 的 v1.5.1[22] 版本新增一条可选配置项,完成这步可获得精细度达到省(州)到具体城市的统计效果,但会额外消耗 1GB 左右的 RAM,请酌情选择。
在前面部署好 Plausible 服务后,进入 geoip 文件夹,下载所需数据库:
cd geoip
curl -O .csv
# 将 LNpsJCCKPis6XvBP 替换为您的 GeoLite2 API Key
export MAXMIND_LICENSE_KEY=LNpsJCCKPis6XvBP
curl -L "=GeoLite2-City&license_key=${MAXMIND_LICENSE_KEY}&suffix=tar.gz" -o geolite2-city.mmdb.gz
gunzip geolite2-city.mmdb.gz
回到 Plausible 根目录:
cd ..
# 编辑环境变量
vim plausible-conf.env
# 添加下面两行
GEONAMES_SOURCE_FILE=/etc/app/geonames.csv
IP_GEOLOCATION_DB=/etc/app/geolite2-city.mmdb
编辑 docker-compose.yml 文件:
vim docker-compose.yml
# 添加两行(有 + 标记的两行)plausible:image: plausible/analytics:latestrestart: alwayscommand: 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
重新创建容器即可:
sudo docker compose down && sudo docker compose up -d
参考信息
Getting started | Plausible docs[23]
引用链接
[1]
Plausible: /
[2]演示地址: .io
[3]plausible/hosting:
[4]plausible/hosting:
[5]dbip: /
[6]注册 GeoLite2:
[7]2: /posts/plausible-selfhosted-with-docker-complete-guide/#fn:2
[8]更多帮助: /posts/best-server-security-practices-with-cloudflare/#源服务器证书
[9]仍然:
[10]Cloudflare Workers:
[11]Akamai:
[12]Netlify:
[13]Vercel:
[14]CloudFront:
[15]Nginx:
[16]Caddy:
[17]统计脚本拓展:
[18]Google Search Console: /
[19]Plausible 文档:
[20]Google Cloud Console: /
[21]Google Search Console API: .googleapis
[22]v1.5.1: .5.1
[23]Getting started | Plausible docs:
复制 搜一搜 转发 收藏 赞本文转载自:「Déjà Vu 的博客」,原文:,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux。
最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。
你可能还喜欢
点击下方图片即可阅读
eTempMail: 一款免费的临时教育邮箱
点击上方图片,『美团|饿了么』外卖红包天天免费领
更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!
本文标签: Plausible 一款简单隐私友好的谷歌分析替代品自托管部署指南
版权声明:本文标题:Plausible: 一款简单、隐私友好的谷歌分析替代品自托管部署指南 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732357563h1534875.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论