Google Analytics 替代品,零成本和零门槛搭建 umami.is
Google Analytics 应该是当今互联网使用最广泛的网站流量分析服务。通过在网页中嵌入追踪代码,Google Analytics 能够帮我们收集网站的流量来源,同时自动分析跳出率、转化率等核心指标。但是对于大部分中小型站点而言,接入 Google Analytics 并不是最理想的选择,因为它太复杂了,同时国内访问也不太方便。
umami.is 则可以看作是 Google Analytics 的精简版解决方案,它完全免费且开源,非常适合中小站点的网络流量统计分析。相对于复杂的 Google Analytics,umami.is 的界面也更加简洁,只关注于核心指标,并方便分享出去。
作为一款开源解决方案,umami.is 并不提供官方的托管服务,而是需要自行部署。提到部署,你可能想到需要使用自己的服务器或租用云主机。不用担心,接下来我将会介绍利用互联网上现成的无服务器解决方案,零成本、零门槛部署可靠的 umami.is 服务。
前期准备
Serverless 无服务器计算架构近年来逐渐火热,这里的无服务器并不意味着无需服务器参与计算,而是指开发者不必过多关心底层服务器的状态,性能,资源等。因为这一切由云服务商提供,并动态管理机器资源的分配。所以为了达到零成本部署的目标,我们需要选择一些免费可靠的 Serverless 服务。
根据 umami.is 官方文档 的说明,其服务需要运行在 Node.js 环境中,且需要对接到 MySQL 或者 PostgreSQL 数据库。所以,接下来我们会使用到免费可靠的 Vercel 静态站点托管服务,以及同样免费可靠到 PostgreSQL 数据库服务商 Supabase。
那么正式开始之前,你需要做的第一件事是 注册一个 GitHub 帐号。为什么注册 GitHub 呢?因为我们后续要克隆 umami.is 主仓库代码,同时通过 GitHub 帐号直接登录 Vercel 和 Supabase,从而不需要额外再注册相关平台了。
注册好 GitHub 帐号之后,你需要完成 3 个步骤:
- 访问 umami.is 代码仓库,点击右上方 Fork 到自己的账号。
- 访问 Vercel 注册页面,点击使用 GitHub 登录到 Vercel。
- 访问 Supabase 注册页面,点击使用 GitHub 登录到 Supabase。
至此,准备工作大功告成,是不是非常简单。
创建数据库
我们需要先在 Supabase 的主界面中找到 New Project 按钮创建一个新的数据库。名字可以使用 umami
,然后设置一个自己记得住的数据库密码。下方的 Region 区域选择 **Northeast Asia(Tokyo)**东京区域。Supabase 本身使用了 AWS 云服务,东京区域在大陆地区的访问速度还是比较理想的。
创建好之后,等待数据库初始化完成。接下来,我们需要向数据库中写入 umami.is 所需的基础数据结构。打开 umami.is 代码仓库,找到其预先提供的 PostgreSQL 初始化 SQL 语句 schema.postgresql.sql
。
接下来,我们回到初始化完成的 Supabase 数据库的设置页面,找到左侧的 SQL 选项,选中默认的 Query-1 查询面板。然后,完整复制上方 schema.postgresql.sql
文件中的 SQL 语句粘贴到查询对话框中,点击 RUN 执行。
几秒后,Supabase 会返回 Success. No rows returned
的提示,此时回到 Supabase 的 Tables 面板中,你可以看到多出了 5 张数据表,这也就是 umami.is 所需的初始化数据结构。
部署 umami.is
接下来,我们可以正式开始部署 umami.is 了。打开 Vercel 主面板,点击右上角 New Project 创建一个新的项目。创建项目的页面中,会自动加载你 GitHub 帐号下方的代码仓库。还记得准备步骤 Fork 的 umami.is 仓库吗?选中即可。
所有的设置都可以使用默认值。唯一需要自定义的是环境变量,我们需要传入相关的数据库连接参数。找到 Environment Variables
一项并展开,首先添加数据库连接的环境变量。
DATABASE_URL
:postgresql://username:mypassword@localhost:5432/mydb
值得注意的是,上方数据库链接中的参数需要使用实际值,你需要到 Supabase 的设置页面中查看。如下图所示,如果我一开始设置的数据库密码是 123456
,那么 DATABASE_URL
实际应该为:
DATABASE_URL
:postgresql://postgres:[email protected]:5432/postgres
请注意,数据库链接中的密码以你在准备步骤设置的实际密码为准,其他参数以你的 Supabase 设置页面提供的为准。然后,我们还需要添加第二组环境变量 HASH_SALT
,它的值可以是任意随机英文字符串,比如我使用了我的用户名 HUHUHANG
,你也可以自定义其他随机字符串。
HASH_SALT
:任意随机英文字符串。
两组环境变量添加完成之后的结果如上图所示。设置完成之后,点击 Deploy 部署项目。
测试和设置
至此,主要步骤已经顺利完成,你需要做的只是耐心等待项目部署完毕。完成之后,Vercel 会自动跳转到项目主页,并随机分配一个域名。点击 Visit 访问项目,umami 默认的后台登录的用户名是 admin
,密码是 umami
。登录之后,即可看到下方右图的界面。
一切大功告成,我们已经顺利部署了 umami.is 服务。接下来,我们还可以做几件事情个性化你的 umami.is 服务。
自定义域名
首先是设置一个独立域名,当然前提条件是你有自己的域名,没有的话可以到任意域名服务商(阿里云、腾讯云等)购买。当然你也可以一直使用 Vercel 自动分配的域名。
重设 umami 密码并绑定站点
不要忘记到 umami 后台重设默认的管理员密码。同时,你可以新建站点并获取到数据追踪代码嵌入到你的站点中。
这里非常推荐开启「启用共享链接」的选项,这是 umami 的一大特色,可以方便分享你的站点访问数据。同时当你自己查看时,可以免登录。你可以 访问我的示例分享页面。
常见问题和小结
至此,我们通过互联网现有的资源零成本部署了自己的 umami 网站数据追踪服务。最后列举几个大家可能关心的问题。
Q:Vercel 和 Supabase 是免费的吗?我能用多久?
A: 目前 Vercel 的个人帐号完全免费,企业帐号才需要付费。Supabase 的免费数据库存在 500 MB 的限制,对于中小站点这个容量理论上够用很多年了。
Q:umami 的访问速度如何?
A: 据我所知,Vercel 使用了 Google Cloud 的云服务,距离大陆地区最近的节点在台湾省和香港特别行政区,访问速度还算理想。而 Supabase 使用了 AWS 云服务,一开始我们创建的数据库就选择了离大陆地区最近的东京数据中心。
Q:umami 后续如何升级?
A: Vercel 的部署是自动触发和完成的,也就是说当 GitHub 代码仓库更新时,Vercel 会帮你自动部署上线最新版本的 umami。你可以不定期访问你 Fork 后的代码仓库,选中 Fetch upstream 从 umami 官方仓库同步最新的代码后即可自动升级。当然,你还可以从一开始直接部署官方仓库的代码,完全跟随官方版本迭代升级。
总之,如果你拥有自己的独立博客或者正在运营中小型站点,非常推荐 尝试一下 umami,它真的很不错。