什么是Umami

Umami 是一款使用MIT开源协议且注重隐私的轻量级网站分析工具,可作为Google Analytics 的替代品,提供流量统计、用户行为分析等功能,支持自托管且不收集个人数据。
流量分析:跟踪总流量、唯一用户数、会话时长等指标。
访客分析:记录地理位置、设备类型等数据。
隐私保护:符合GDPR 和CCPA,不使用 Cookie 或追踪个人行为。
自定义事件:支持按钮点击、表单提交等事件跟踪。
简而言之,它是一款为个人和中小团队打造的轻量级网站分析工具。它不只简单高效,更将用户隐私置于首位。
官网: umami.is
中文网: umami.zhcndoc.com
我为什么要用Umami呢?
我之前使用的是91LA(数字没有错)网站统计,然后听别人说容易跳片战,但是我觉得我从来没有过,所以不以为意。直到我日常视奸BlogsClub成员的时候,发现某某日记跳片站了
。询问的之后发现是用了91LA,这次我是真见识到了

我是看见群友提到的Umami,好奇心驱使我打开它们的demo站,发现简直长在我的心巴上了!!!属于是简约而不简单hhhh~
如何部署Umami
支持环境
一台安装 Node.js 版本 18.18 或更高的服务器。
一个数据库。 Umami 支持 MySQL(最低 v8.0)和 PostgreSQL(最低 v12.14)数据库。
部署方式
从源代码安装: 从 GitHub 获取代码并自行构建应用程序。
使用 Docker Compose: 使用 docker compose 构建自己的 Docker 容器。
使用 Docker 镜像: 下载一个预构建的 Docker 镜像。
本次使用Vercel部署的教程属于“从源代码安装”方式(因为我的很多网站只适配小于MySQL 8.0的版本)
准备工作
- Vercel账户(需提前登录)
- Git账户(这里演示GitHub,需提前登录)
- 自建数据库(可有可无)
可以在https://vercel.com/account/settings/authentication 提前绑定Git账户
开始部署
一键部署
点击立刻部署后,请填写第二行的Repository Name(意为储存库名称,只能填字母、数字),在这里创建的储存库默认为私人库,点一下右边上解锁图标就变成公共库了(纯字面意思,不懂百度)

然后点击Create等待储存库创建完成就可以进入下一步了

这里会让你填写环境变量中的信息,DATABASE_URL表示你的数据库
有自建数据库
在DATABASE_URL中填写数据库的连接字符串(如下)
MySQL:
mysql://username:password@host:3306/dbnamePostgres:
postgresql://username:password@host:5432/dbname注意: 请保证你的数据库版本和支持环境的版本一致,否则将会一直部署失败
你需要将其中的username、password、host、port、dbname和端口(3306、5523是大部分默认的端口)替换为你自己数据库的实际信息,然后点击Deploy即可部署

无自建数据库
当然!如果你没有任何属于自己的数据库,那就可以选择Vercel中免费的数据库,这时你可以直接随便填点内容,再点击Deploy进行部署(虽然会部署失败
)
小技巧:在立刻部署的链接中,把&env=DATABASE_URL删除后再访问就可以跳过配置环境变量,直接部署了。(后面步骤中的也不用移除环境变量了)
点击Deploy后会变成Deploying,向下滑等待部署失败后,点击Go to Project进入项目

然后你需要点击依次点击Settings→Environment Variables,找到DATABASE_URL环境变量,点击右边三个点,再点击Remove进行移除

接着点击Storage,再点击Create Databas

选择Neon后,点击Continue

选择数据库服务器来源,一般选择推荐的就行(结尾带!的就是),再点击Continue

填写数据库名称后,点击Sreate进行创建数据库

创建完成后,找到创建好的数据库点击C!onnect填写相关信息

在弹出的窗口中直接点击Connect进行连接,其他的可管可不管,但是Custom Prefix那一项不要填!!

连接完后,我们需要重新部署。点击Deployments,再点击任意消息旁边的三个点,最后点击Redeploy进行 
重新部署就完成了
手动部署
进入Umami的GitHub项目页面,点击
Fork进行创建副本
分别在
Repository name、Description中填上副本的名称和描述(后面可以更改),然后点击Create fork创建副本
在Vercel中,点击Add New,再点击Project

找到刚刚创建的副本,点击Import

有自建数据库
展开Environment Variables环境变量列表,添加DATABASE_URL,添加内容如下:
MySQL:
mysql://username:password@host:3306/dbnamePostgres:
postgresql://username:password@host:5432/dbname注意: 请保证你的数据库版本和支持环境的版本一致,否则将会一直部署失败
你需要将其中的username、password、host、port、dbname和端口(3306、5523是大部分默认的端口)替换为你自己数据库的实际信息,然后点击Deploy即可部署

无自建数据库
请参考一键部署中无自建数据库使用Vercel中免费的数据库的操作
这里直接点击点击Deploy部署就行了

我推荐的部署方式
结论:推荐手动部署,数据库自建或不自建都行(反正我用的是Vercel免费数据库)
原因:通过手动部署后,在GitHub上的Umami副本可以一键同步官方仓库的最新代码,点击Sync fork进行同步即可。但是一键部署的Umami副本(应该不叫副本了,因为与官方仓库没有关联了)就不能一键同步。

优化配置
域名绑定
由于Vercel是一款非常出名的前端开发工具和AI云计算服务,所以它提供的免费域名(vercel.app)被很多人滥用,已经在国内打不开了。我们需要在设置中绑定自己的域名,以便Umami正常工作。
点击Settings,点击Domains,再点击Add Domain进行添加域名(首次添加域名会验证域名的所有权),添加成功后会自动申请SSL证书。

绕过广告拦截器
尽管 Umami 是一款注重隐私的产品,但它仍可能被阻止某些广告拦截器。因为有些拦截器可能过于激进,它们会拦截某些域名关键词或者常见的数据收集接口请求……
在Umami环境变量文档(https://umami.is/docs/environment-variables)中提供了两个环境变量以最大限度的绕过广告拦截器。
注意:每次更改环境变量后都要重新部署
TRACKER_SCRIPT_NAME
假如原本的跟踪代码如下:
<script defer src="https://aa.bb.cc/script.js" data-website-id="xxxxxxxxx"></script>但是如果添加了TRACKER_SCRIPT_NAME,并且对应的内容填写了style.css,那么跟踪代码会变成如下:
<script defer src="https://aa.bb.cc/style.css" data-website-id="xxxxxxxxx"></script>当然!style.css可以为任何你喜欢的内容
COLLECT_API_ENDPOINT
环境变量COLLECT_API_ENDPOINT是用来修改数据收集的接口,其格式是/xxx或/xxx/xxx以此类推等等。
如何添加环境变量
点击Settings,再点击Environment Variables,在图中标记处添加环境变量,然后点击Save,最后重新部署即可。
可以参考我的环境变量填写的内容

常见问题
问:
怎么从Vercel的免费数据库(Neon)导出数据呢?
答:
因为上述提到的数据库服务商Neon是第三方合作平台,所以要前往第三方导出数据。
点击Storage,再点击对应的数据库进入详情页

最后点击Open in Neon就可以直接登录到Neon服务商了

导出数据的具体操作不过多赘述了,请参考Neon控制台文档(看不懂自行翻译):https://neon.com/docs/guides/tables
问:
Neon提供的免费数据库怎么样?
答:
- 永远免费:提供无需信用卡、永不过期的免费套餐,包含可观的存储和计算资源。
- 无服务器架构:计算与存储分离,按实际使用量计费,不用时自动暂停,成本极低。
- 即时分支:可以像 Git 一样,为数据库创建多个独立的完整分支,极大提升开发、测试和协作效率。
- 完全兼容 PostgreSQL:支持标准 PostgreSQL 协议、驱动和扩展,迁移和使用无门槛。
- 基于时间点恢复:能够将数据库状态回溯到过去的任意一秒,数据安全更有保障(免费版好像仅支持回溯一天以内)。
- 现代工作流:数据库分支能与 CI/CD 流程无缝集成,适合云原生和敏捷开发。

评论区(2条评论)
温馨提示:您的假期只剩下两个小时!