Netlify + Supabase部署Umami

目录

起因

最近研究接入友链接力,拜访了很多个人博客,有些博客会记录访客数量、在线人数和运行时间等站点数据。正好Blowfish也提供了一些站点分析的选项1,于是我打算也接入一个类似的分析服务。

Google Analytics肯定是最知名的站点分析服务之一,但是让Google掌握如此精细的数据,与出卖访问者的隐私无异;Google Analytics提供的巨大跟踪脚本,不仅访问性堪忧,也会拖慢网站的运行速度。

目光转向开源替代品后,我最终选择了Umami2。作为开源项目,它开发进度稳健、界面简洁优雅,还提供了自行部署的文档,看起来非常适合我这样的入门级用户。

部署过程

Umami文档的Hosting一章就给出了很多自行部署的可选项。单一服务器部署不太符合我的需求,毕竟能让我免费长期使用的服务器真是难觅踪迹,于是我们需要使用下方的App hosting+Managed databases方案。

在App hosting服务上,我选择Netlify,无他,只因我的Waline也部署在Netlify上,使用同样的平台方便管理,学习成本也更低。

Managed databases的选择其实已经呼之欲出,因为在Umami文档提供的选项中,好像只有Supabase提供免费方案,且无需过多手动设置。

具体的部署过程不在此赘述,文档写得足够详细,我只记录部署中的一些小细节。

  1. Umami文档的一键部署按钮会自动创建你的Umami仓库,但是这个仓库没有与上游的fork关系。如果知道如何fork仓库,建议手动执行,保留fork关系便于后续的代码同步。

  2. Supabase在数据库连接上,有Direct connectionTransaction poolerSession pooler3种方式,对于Umami,应该选择Session pooler

  3. Umami可以通过配置环境变量TRACKER_SCRIPT_NAME改变跟踪脚本的文件名以绕过屏蔽,但是我在Netlify上设置环境变量并不生效,原因未知。我们可以利用Netlify的Rewrites and proxies功能3,在netlify.toml中添加如下代码,即可实现相同的效果。

    [[redirects]]
    from = "/hugo-deploy"
    to = "/script.js"
    status = 200
    force = true
    

    这里展示的是最基础的实现,更具体的配置可以参考Netlify的文档。

迁移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,直接在页脚显示数据,让博客的元素丰富起来。

脚注

  1. 局部模板(Partials) · Blowfish

  2. Umami

  3. Rewrites and proxies | Netlify Docs

评论

  1. #01 StonePick

    敢问作者说的3条留言是我的嘛?好像只有我在这里评论过,哈哈。

  2. #02 Xeonzilla

    是的🥰。

有新的想法?欢迎向我发送邮件,或使用下方留言板进行留言。

留言板
留言可见性

公开留言会整理后展示,私人消息仅站长可见。

必填。最多2000字。支持Markdown语法,但不支持预览。

必填。公开展示时将使用这个昵称。

如需回复某条评论,请填写其序号。

可填写个人站点URL,公开展示时会附加于昵称之上。

页首