抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

封面来源:无题 | 黄瓜 #pixiv https://www.pixiv.net/artworks/104200866

自从 Google Analytics 宣布其不再处理 UA 媒体资源,强制用户迁移至 GA4 资源已经大概有一年左右。GA4 的统计面板比起之前的 UA 统计面板来说,商业化气息更浓,这对于个人博客来说,就意味着其更加难用了。因此,在这期间,在下一直都有给敝站更换统计工具的打算。但是由于强大的使用惯性自己过于懒,始终没能抽出时间来探索 Google Analytics 的替代品,此事便一拖再拖。

选择 umami 的理由

其实对于新的站点统计工具,在下的心中一直存在两个备选,分别是 Cloudflare Web Analytics 和 umami。umami 是一款开源的第三方站点统计工具,其对标 Google Analytics,秉持严格的隐私政策,各项统计指标精简克制,对敝站这类小型站点而言十分友好。更重要的是,umami 支持私有部署,这就保证了所有的统计数据都可以被牢牢地掌握在自己手里,免于成为大数据的一部分。而 Cloudflare Web Analytics 就和 Google Analytics 一样,都是大厂的产品线,可以方便地托管在 Cloudflare 的服务器上。比起 Google Analytics 来,Cloudflare Web Analytics 更轻量,在隐私保护方面也比 Google Analytics 做得更好。不过 Cloudflare Web Analytics 也有着大厂出品的站点统计工具的通病:更容易被广告屏蔽器给屏蔽(即便是 umami 脚本也同样可能会被某些屏蔽器屏蔽),这会导致统计数据与实际数据的偏差。此外,Cloudflare Web Analytics 的统计指标当中缺乏访问时间与跳出率这两个核心指标,作为站点统计工具来说,可能显得有些残缺。因而,权衡上述利弊,在下最终还是选择了 umami。

无服务器部署

umami 现在似乎已经有了官方平台的托管方案,但是既然可以进行私有部署,那还是把数据放在自己手里更加安心一些,因此在下还是选用了私有部署的方式。

敝站自 Wordpress 改由 Hexo 驱动以来,在下搭建的网站就全都运行在了 PaaS 服务上。至于 PaaS 如何省时省心省力,想来也无需在下多言。那对于 umami 的部署,自然也要寻求一个无服务器的解决方案。umami 的前端运行需要 Node.js 环境,数据库可以选用 MySQL 或者 Postgresql,基于上述条件,在下使用了 Vercel 和 Supabase 分别托管其静态网站和 Postgresql 数据库。Vercel 的 CDN 使用的是 AWS 的网络,因此在大陆的访问速度是相当理想的,而 Supabase 也同样拥有 AWS 的节点,两者结合可谓优雅。此外,Vercel 和 Supabase 皆可以使用 Github 账户登录,使用方便。

接下来就开始操作,首先来到 umami 的开源仓库下,将其 Fork 一份。

随后前往 Supabase 处,登录后,点按 New Project,创建一个新的数据库。Name 字段自拟;然后填入 Database Password 即数据库密码并记下;下方的 Region 即数据库区域就选择离自己最近的便可,一般来说,大陆地区选择东京是最快的。

创建完成之后,点击进入刚刚创建的数据库,找到左边侧边栏的最后一项,即 Project Settings,选择 Database 中的 Connection string 一栏,复制 URI 所对应的,如下画风的一串字符。

1
postgresql://postgres:[YOUR-PASSWORD]@db.xxxxxxxxxxxxxxxxxxxx.supabase.co:5432/postgres

接下来就可离开 Supabase,前往 Vercel 部署 umami 的前端网页。使用 Github 账号登录到 Vercel 主面板,点击 Add New,选择 Project 创建一个新的项目,此时 Vercel 会自动列出 GitHub 帐号下的所有仓库,找到之前 Fork 过的 umami 仓库,点击 Import

之后需要填入环境变量,让托管在 Vercel 的前端和托管在 Supabase 的数据库连接起来。找到 Environment Variables,在 Name 处填入 DATABASE_URL,在 Value 处填入之前复制的数据库连接 URL,需要注意的是,务必把 [YOUR-PASSWORD] 字段替换成数据库的密码。

数据库连接 URL 填完之后,还需要添加一组环境变量,其 NameHASH_SALTValue 则可以是任意英文字符串。

一切完成之后,点击 Deploy 即可启动部署。

部署完成后,Vecel 自动分配一个 vercel.app 的域名给 umami,但是这个域名在大陆已经处于被屏蔽的状态,因此需要绑定自己的域名来避免此类情况发生。选择部署完成的项目,找到 Settings - Domains,在此填入自有的域名。

最后前往域名托管商处添加对应的 CNAME 解析,记录值为 cname.vercel-dns.com ,稍等片刻,经 Vercel 验证后域名即可生效。

初始化设置

访问完成部署的 umami 的域名,即可看到 umami 的登录界面。umami 后台默认的用户名是 admin,密码是 umami,登录成功后可前往用户个人资料处分别更改默认的用户名和密码。

点击右上角地球图标即可更改 umami 的显示语言。

添加对应站点之后,umami 就会自动生成对应的脚本代码以供插入到站点之中。当然,前文已有提及,即便是 umami 的脚本也同样可能会被某些屏蔽器屏蔽,进而导致统计数据的偏差,为了应对此类情况,可以选择用 Cloudflare Workers 套一层反向代理来解决,具体的解决方案在 umami 项目下的 Discussions 中有提及。

版本更新

由于部署时采取了 Fork umami 仓库的方式,因此 umami 前端不会自动更新,除非手动同步 umami 的上游代码库,这保证了服务的稳定性。需要更新版本时,只需前往 Fork 仓库处点击 Sync Fork 同步最新代码即可,Vercel 机器人会将最新的代码自动部署至云端,进而完成版本更新。

评论