使用 Vercel 免费部署自托管 Umami

2572 字
13 分钟
使用 Vercel 免费部署自托管 Umami

前言#

在 PB-Website 完成重构后,我需要一个帮忙统计访问数据的平台。经过一番研究,我对比了几个比较知名的平台及其对应的免费版额度,整理如下:

平台保存事件条数开通项目个数数据保留时长自定义事件UTM 参数是否使用 Cookie
Google Analytics无限制10014 个月
Microsoft Clarity无限制无限制13 个月 (录屏 30 天)1
Vercel Web Analytics50000无限制1 个月××
Cloudflare Web Analytics无限制10 (CF 未代理)6 个月××
Umami Cloud每月 10 万条最多 3 个网站6 个月
自托管 Umami无限制无限制永久 (取决于数据库)

我的需求是能够较为长期地保存统计数据,同时不引入任何基于 Cookie 的统计平台。我很讨厌某些网站把接不接受 Cookies 的弹窗怼在我脸上,更不想把这种体验带给别人

经过比较,我决定选择 Umami,它是一款开源的注重隐私的现代分析平台,无需 Cookie 就能够收集统计数据,因此不需要弹出 Cookies 窗口,同时提供了所有我所需要和不需要的功能

umami-software
/
umami
Waiting for api.github.com...
00K
0K
0K
Waiting...

一开始用的是 Umami Cloud 官方服务,直到我折腾出了完全免费的自托管方案,于是转身向自托管走去~♪

Important

注意,如果你正在自托管和 Umami Cloud 官方服务之间纠结,请优先考虑尝试官方服务。Umami Cloud 支持以 CSV 格式免费导出数据,但导入数据只有付费计划才支持。建议先体验一下 Umami Cloud 能否满足需求,再决定要不要自托管,以规避日后潜在的迁移成本。

先决条件#

如果没有数据库也没关系,这篇教程会带你免费部署一个~

部署#

1. 部署 PostgreSQL 数据库#

如果你有自己的 PostgreSQL 数据库可以跳过这一步

在这里提供两种免费方案:

  • 使用 Neon 部署 PostgreSQL 数据库
  • 优点:部署简单;免费额度项目之间独立计算
  • 缺点:免费额度足够应付低频访问的小型网站,但无法满足 24/7 的连续运行需求
  • 优点:持续运行(共享 CPU)
  • 缺点:部署需要手动修改 Umami 配置文件,需要一定动手能力;七天不活跃后会被自动暂停
点击展开对比表格
资源项目NeonSupabase
项目数量最多 100 个项目最多 2 个活跃项目
数据库大小500 MB / 项目500 MB / 项目
计算资源100 CU-小时 / 项目共享 CPU
自动扩缩容最高 2 CU / 8 GB RAM不支持
闲置暂停5 分钟无活动后;自动恢复1 周无活动后;手动恢复
出站流量5 GB / 月 / 项目总计 5 GB / 月
分支功能每个项目 10 个分支付费计划
备份6 小时恢复窗口 (最大 1 GB)付费计划
日志1 天保留期付费计划

Warning

Neon 免费计划每个项目每月提供 100 CU-小时,按照最低消耗 0.25 CU/小时 计算,每月可用时长仅为 400 小时。由于 Neon 数据库仅在处理查询时消耗 CU 额度,闲置时自动缩减至零,故该配额足以应付低频访问的小型网站,但无法满足 24/7 的连续运行需求(每月 24×30=720 小时)。如果需要不间断的免费数据库服务,请参考 Supabase

以下为 Neon 平台部署教程:

  1. 登录 Vercel 仪表盘,在左边导航栏点击 Storage

Vercel 导航栏
Vercel 导航栏

  1. 点击 Create Database,选择 Neon,点击 Continue

选择 Neon 数据库
选择 Neon 数据库

这里可能会要求同意用户协议,阅读后同意即可下一步

  1. 选择一个地区,并且禁用 Auth,下方保持默认的免费方案就好,点击 Continue
Tip

地区推荐选择 Singapore (Southeast) sin1,地理位置上距离中国大陆最近。 请记住这个地区,后续部署 Umami 的时候可以选择相同/相近的地区以提高数据库响应速度。

选择地区并禁用 Auth
选择地区并禁用 Auth

  1. 为你的数据库取一个好记的名字 比如 Ciallo 就很好记,点击 Continue

Ciallo~(∠・ω< )⌒★
Ciallo~(∠・ω< )⌒★

  1. 完成! 点击 Done 以完成数据库部署

2. 在 Vercel 上部署 Umami#

Tip
  • Umami 官方提供了一个链接,你可以 点击这里 快速完成下方教程的 1 ~ 4 步
  • 如果手动 Fork 官方仓库后导入,则可以在 GitHub 网页端快速同步主仓库 commit(缺点是无法把仓库设置为 Private
  • 连接 Supabase 数据库需要单独适配,请阅读对应的教程

以下内容参考自 Umami 官方文档

  1. https://github.com/umami-software/umami 项目 Fork 到您的 GitHub 帐户
  2. 在 Vercel 上创建一个帐户
  3. 在仪表板页面上点击“导入项目”,然后指定您在 GitHub 上 Fork 的项目 URL
  4. 将所需的 DATABASE_URL 环境变量添加到您的 Vercel 项目中。这些值在 安装步骤 的“配置 Umami”中定义
  5. 部署
Note
  • 你需要为 Umami 使用 POSTGRES_PRISMA_URL,其形式为 postgres://user:passwd@endpoint-pooler.postgres.vercel-storage.com/verceldb?pgbouncer=true&connect_timeout=10
  • 用于数据库 URL 的环境变量可以在 db/postgresql/prisma.schema 文件中更改
  • 官方文档中提到的“Vercel Postgres”服务已停运,不再可用
  1. 回到 Vercel 仪表盘,前往 Storage → <你的数据库名>,找到 POSTGRES_PRISMA_URL 并复制等号右边的值(注意是包含**PRISMA**的变量,记得在右边点开Show secret显示明文)

  2. 打开你的 Umami 项目,在 SettingsEnvironment VariablesAdd Environment Variable 填入环境变量,Key 填写 DATABASE_URLValue 粘贴 你刚刚复制的值,按 Save 保存

Tip

POSTGRES_PRISMA_URL 的形式为 postgresql://user:password@ep-*****-******-*******-pooler.ap-ciallo-1.aws.neon.tech/neondb?connect_timeout=15&sslmode=require (你直接复制粘贴我这个是没用的喵=w=)

配置环境变量
配置环境变量

  1. 保存后 Vercel 会弹窗提示你重新部署,在弹出的窗口中点击 Redeploy 确认即可

    右下角的蓝色弹窗,点击 Redeplay
    右下角的蓝色弹窗,点击 Redeplay
    在新窗口中点击 Redeplay 确认部署
    在新窗口中点击 Redeplay 确认部署

3. (可选) 配置自定义域名#

Important

Vercel 会为每个项目默认分配一个形如 <project-name>.vercel.app 的域名,但该域名在中国大陆地区无法访问,因此强烈建议添加一个你自费购买的域名来提供服务

回到你的 Umami 项目页面,在左边导航栏点击 Domains(如果遇到 404 尝试刷新一下页面),然后点击右上角的 Add Domain 。在弹出的窗口中填入你的域名并确认,根据你的 DNS 提供商的说明设置 CNAME

如果你的域名使用 Cloudflare 管理 DNS,Vercel 会提供一个选项跳转到 Cloudflare 快速设置 DNS

配置自定义域名
配置自定义域名

添加好后可以直接点击默认域名旁边的 EditRemove 移除默认域名 这个,不需要了

如果你希望新添加一个以 .vercel.app 结尾的自定义子域名,直接在 Add Existing 输入完整的子域名即可

4. 登录 Umami#

Caution

请务必在登录后更改默认账户密码

  1. 回到你的 Umami 项目页面(Overview),在右侧找到 Domains,点开下方你添加的域名(或者 Vercel 分配给你的默认域名),进入 Umami 登录页面

  2. 使用默认管理员账户登录

    • 默认用户名:admin
    • 默认密码:umami

Umami 登录页面
Umami 登录页面

  1. 登录后点击侧边导航下拉菜单,然后点击设置

下拉菜单
下拉菜单

  1. 导航到个人资料并点击更改密码按钮

更改密码
更改密码

  1. 输入新密码并保存
Tip
  • 页面左下角可以切换语言
  • 点击侧边导航下拉菜单,然后点击管理员可以修改默认用户名

5. 添加你的第一个网站#

  1. 网站页面点击右上角添加网站,在弹出的窗口中输入网站名和域名(域名不需要添加 https:// 协议头)并保存

  2. 打开你添加的网站页面,点击右上角编辑,复制页面中的跟踪代码

  3. 在你自己网站的 <head> 部分插入跟踪代码并更新网站

  4. 大功告成! 试着访问一下你的网站吧,数据应该会立即出现在你的 Umami 控制面板里面!

Umami 控制面板示例图
Umami 控制面板示例图


DLC 1:提高数据库响应速度:自定义 Vercel 函数运行位置#

还记得前面部署数据库时选择的地区吗?你可以修改 Vercel 运行 Umami 的地区,降低 Umami 访问数据库的延迟,提高响应速度

  1. 在 Vercel 控制台中打开你的 Umami 项目页面

  2. 点击左侧导航栏下方的 SettingsFunctions

  3. 在** Function Region **中选择函数运行地区,建议与数据库所在地区保持一致(如 Asia PacificSingapore (Southeast) - ap-southeast-1 - sin1

Function Region
Function Region

DLC 2:通过 Vercel 代理 Umami Analytics#

该部分内容参考自 Umami 官方文档

如果你的网站也部署在 Vercel 上,你可以使用 Vercel 的 重写功能 代理 Umami Analytics,以便从你网站的域名提供 Umami Analytics 服务。这在使用 Umami Cloud 时对于绕过广告拦截器也很有帮助

在你网站项目的根目录中,添加 vercel.json 文件,内容如下:

{
"rewrites": [
{
"source": "/stats/:match*",
"destination": "https://cloud.umami.is/:match*"
}
]
}

自托管 Umami 请注意替换其中的 https://cloud.umami.is 部分为你的自托管 Umami 实例的 URL

跟踪代码脚本标签应使用 /stats/script.js 作为 src 值:

<script
defer
src="/stats/script.js"
data-website-id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
></script>

DLC 3:共享链接#

想要展示你的网站访问数据给访客看吗?可以在 Umami 控制面板的设置里开启共享链接

启用共享链接
启用共享链接

截至目前(v3.0.3)自部署 Umami 的分享链接只能分享 Overview 页面的数据(Umami Cloud 可以自定义分享范围)

效果展示
效果展示

参考文献#


Footnotes#

  1. 可关闭,但对可收集的数据有一定影响

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
使用 Vercel 免费部署自托管 Umami
https://www.hk256.top/posts/tutorials/umami/
作者
白隐Hakuin
发布于
2026-03-07
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
白隐Hakuin
“播种与期待之歌,亦是收获与欢愉之歌。”
公告
Ciallo~(∠・ω< )⌒★
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
18
分类
5
标签
26
总字数
38,572
运行时长
0
最后活动
0 天前

目录