起因#
最近研究接入友链接力,拜访了很多个人博客,有些博客会记录访客数量、在线人数和运行时间等站点数据。正好Blowfish也提供了一些站点分析的选项1,于是我打算也接入一个类似的分析服务。
Google Analytics肯定是最知名的站点分析服务之一,但是让Google掌握如此精细的数据,和出卖访问者的隐私无异;Google Analytics提供的巨大跟踪脚本,不仅访问性堪忧,也会拖慢网站的运行速度。
目光转向开源代替品后,我最终选择了Umami2。作为开源项目,它开发进度稳健、界面简洁优雅,还提供了自行部署的文档,看起来非常适合我这样的入门级用户。
部署过程#
Umami文档的Hosting一章就给出了很多自行部署的可选项。单一服务器部署不太符合我的需求,毕竟能让我免费长期使用的服务器真是难见踪迹,于是我们需要使用下方的App hosting + Managed databases方案。
在App hosting服务上,我选择Netlify,无他,只因我的Waline也部署在Netlify上,使用同样的平台方便管理,学习成本也更低。
Managed databases的选择其实已经呼之欲出,因为在Umami文档提供的选项中,好像只有Supabase是有免费方案,且无需过多手动设置的。
具体的部署过程不在此赘述,文档写得足够详细,我只记录部署中的一些小细节。
- Umami文档的一键部署按钮会自动创建你的Umami仓库,但是这个仓库没有与上游的fork关系。如果知道如何fork仓库,建议手动执行,保留fork关系便于后续的代码同步。
- Supabase在数据库连接上,有
Direct connection
、Transaction pooler
和Session pooler
3种方式,对于Umami,应该选择Session pooler
。 - Umami可以通过配置环境变量
TRACKER_SCRIPT_NAME
改变跟踪脚本的文件名以绕过屏蔽,但是我在Netlify上设置环境变量并不生效,原因未知。我们可以利用Netlify的Rewrites and proxies功能3,在netlify.toml
中添加如下代码,即可实现相同的效果。这里展示的是最基础的实现,更具体的配置可以参考Netlify的文档。[[redirects]] from = "/hugo-deploy" to = "/script.js" status = 200 force = true
迁移Waline#
之前在更换博客评论系统:Waline中,我没有提到数据库的选择,当时为了快速部署,直接选用了官方推荐的LeanCloud。
Umami使用Supabase,而Waline使用LeanCloud,显得有些复杂,更多的平台在维护上也不方便。Waline支持多种数据库,其中就包括Supabase使用的PostgreSQL,于是我顺手迁移了Waline的数据。
在LeanCloud导出的.csv有些错位,需要我手动调整数据。Supabase导出的.csv也会产生错位,这个问题大概率与平台无关,或许是文件格式的缺陷,又或者是我的打开方式有误。
与Umami不同,Waline连接Supabase的数据库时,需要使用Transaction pooler
的方式。
原本我开设评论区更多是为了好玩,没想到在我迁移的时候,看到了一位访客的3条留言。原来真的有人在看我写的文章,并且跟我互动,这种体验很奇妙。
后续#
目前部署了Umami,可以在仪表盘上看到各项站点数据,基本满足我的需求,但是要跳转到Umami的仪表盘上,毕竟不是很优雅。
Umami提供了一系列API,供我们获取数据,我的下一个目标或许是使用API,直接在页脚显示数据,让博客的元素丰富起来。