对于每一位站长来说,了解自己网站的哪些内容更热门,以及访客的来路是相当重要的一件事。只有了解这些信息,我们才能更好地优化自己的网站,从而形成良性循环。

对于大多数站长而言,在选择网站统计的解决方案时都会很犹豫——自建维护成本很高,而且稳定性得不到保障;使用第三方平台则面临隐私问题,以及可能被用户终端的隐私保护功能所屏蔽。

所以版本答案来了:自建,但不完全自建。 即自行搭建,但托管在第三方专业Serverless平台上,而不是自己的服务器。

Umami是一个开源、轻量(JS体积小)、对隐私友好(无cookie)的网站统计软件。我们可以借助Vercel或Netlify等平台对其进行托管。鉴于Netlify风控较为严格,且国内用户无法通过实名认证,故本文将以Vercel作为示例进行说明。

在Vercel上部署Umami的官方英文文档:https://umami.is/docs/running-on-vercel

第一步:准备

首先确保已经注册并登录了Vercel,且拥有一个GitHub账户。然后通过此链接开始部署。

进入后,Vercel会要求我们克隆一份Git仓库到第三方托管平台,以确保生产环境的安全,这里推荐选择GitHub。

屏幕截图 2024-04-11 120658.png

成功连接GitHub账户后,我们可以自己给新的仓库取个名字,确认并点击“Create”按钮后Vercel会自动将Umami的官方仓库同步到这里。

等待仓库克隆完毕后,环境变量的配置区域会自动展开(未完成仓库克隆时此区域不可用),需要我们填入数据库连接地址。

屏幕截图 2024-04-11 121211.png

Umami支持许多种数据库,但如Vercel、Supabase等免费云数据库平台都只提供PostgreSQL,因此这里不做MySQL数据库的相关说明。

数据库可以根据自身的需要,自行选择托管在Vercel还是Supabase。选择Vercel的优点是和Umami部署在同一厂商,延迟基本上很小;而选择Supabase,则可获得的免费配额要比Vercel多得多,但也将面临延迟较高、官方不支持中国大陆地区用户注册、境内部分地区无法访问官网等诸多不便。

如果日常网站访问流量不大,那么Vercel的免费额度已足够使用,因此我便以Vercel为例继续进行讲解。

由于我们尚未在Vercel内创建云数据库,且就算提前创建好Vercel也不会直接给出数据库的连接URL,只能选择一个已有的项目,然后再由Vercel自动设置环境变量。因此这里我们直接为这个环境变量随便填一个值,例如“0”,并点击“Deploy”按钮部署。

之后不用等待构建,直接转入项目页面。一段时间后会收到构建失败的提示,我们先暂时忽略,进行下一步。

第二步:数据库

在项目页面中打开“Storage”部分,并选择第三个“Postgres”类型的数据库创建。

屏幕截图 2024-04-11 163541.png

首次创建数据库,会弹出相关使用条款,选择“Accept”后进行数据库命名及地理位置选择。建议保持默认的美国区域,此区域目前延迟很低。

屏幕截图 2024-04-11 163833.png

成功创建数据库后,将进入连接对话框。这时不要进行操作,直接关闭它。

然后转到“Settings”-“Environment Variables”中,将刚才设置的数据库连接地址的环境变量删除掉,否则会在接下来的数据库连接步骤中遇到冲突错误。

屏幕截图 2024-04-11 164546.png

接下来,回到“Storage”部分,可以看到刚才创建的PostgreSQL数据库,点击右侧的“Connect”按钮重新进入连接配置对话框。

屏幕截图 2024-04-11 164055.png

此处务必点击展开“Advanced Options”部分,并将“Environment Variables Prefix”配置为DATABASE。这是Umami数据库连接地址的环境变量,如果保持默认值不更改,会导致Umami获取不到数据库连接地址,从而无法使用。

完成后再次进入“Settings”-“Environment Variables”中,确认下相关的环境变量是否已经正确创建。Vercel会创建多个环境变量以兼容不同的连接语法,多出来的环境变量不用管(想删也删不掉啊)。

屏幕截图 2024-04-11 165059.png

(可选操作)向上滚动,额外添加一个名为TRACKER_SCRIPT_NAME的环境变量,用来自定义追踪脚本的路径,以防被用户浏览器拦截,不设置此环境变量则使用默认的“umami.js”。注意设置的时候不要和系统里的其它路径重复,推荐设置为“script”,跟踪代码中的脚本地址将变为“域名/script”。

图片.png

配置完毕后可以进入设置中给自己的项目绑定一个自定义域名(Vercel默认分配的域名在中国大陆已被墙),过程很简单,且大多数用户应该都会,此处不再赘述。如果不会可以使用搜索引擎查找相关资料,网上已有很多。

然后进入“Deployments”页面,找到刚才报错的构建记录,并点击“Redeploy”开始重新构建。

图片.png

待构建完毕后,访问刚才绑定的自定义域名,就可以看到Umami的登录界面了。默认用户名为admin,密码为umami

第三步:升级

Umami作为一个开源项目,是会经常更新升级的。Vercel也有同步构建功能,只要绑定的仓库中指定分支有新的commit,Vercel就会自动构建并将其部署到生产环境当中。

然而Vercel自动克隆到我们GitHub账户中的仓库并不是直接fork过来的,因此无法在GitHub上一键同步。常规方法是在本地电脑上安装Git,然后将自己账户中的仓库clone到本地,添加fork信息后再push。此方法较为繁琐,这里介绍另外一种简单的方式。

在项目中进入“Settings”-“Git”,解绑刚才创建的仓库。

图片.png

进入GitHub,fork一下官方的仓库,之前创建的仓库可以删除了。完成后再回到“Settings”-“Git”中,绑定刚才fork到自己账户中的仓库。

这样,当Umami的官方仓库有更新时,我们可以直接在自己fork的仓库中一键同步commit,然后Vercel也会自动构建新版本并发布到生产环境。

图片.png

结语

我们应当感谢Vercel等平台,为我们提供了足够自由灵活、而又免费稳定的服务;也应当感谢诸如Umami等软件背后的开源贡献者们,使得我们有更多、更好、对用户隐私友好的选择,而不是将我们网站的访客信息,被迫“共享”给某些互联网厂商。

点个赞吧~ 让我知道创作的路上有你陪伴