惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
O
OpenAI News
酷 壳 – CoolShell
酷 壳 – CoolShell
The GitHub Blog
The GitHub Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - 聂微东
Engineering at Meta
Engineering at Meta
W
WeLiveSecurity
Hacker News: Ask HN
Hacker News: Ask HN
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
D
Docker
F
Full Disclosure
AI
AI
罗磊的独立博客
博客园 - 【当耐特】
U
Unit 42
S
SegmentFault 最新的问题
Stack Overflow Blog
Stack Overflow Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Palo Alto Networks Blog
博客园_首页
H
Help Net Security
量子位
月光博客
月光博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 司徒正美
F
Fortinet All Blogs
D
DataBreaches.Net
B
Blog RSS Feed
Webroot Blog
Webroot Blog
TaoSecurity Blog
TaoSecurity Blog
S
Secure Thoughts
爱范儿
爱范儿
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Attack and Defense Labs
Attack and Defense Labs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
C
CERT Recently Published Vulnerability Notes
Martin Fowler
Martin Fowler
Blog — PlanetScale
Blog — PlanetScale
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Securelist

澄沨的漫游茶记

岁暮杂记 在 KOReader 上显示直排文本 虎落平阳:TNO 美国罗伯特·F·肯尼迪线·前篇 烟火·乙巳 蜀都行纪 实习日 事故小记 烟火·甲辰 藏地行纪 元旦杂记 浴火重生:TNO 东方红西北国防阵线党权线·后篇 太阳旗之下:TNO 东方红西北国防阵线党权线·前篇 尚在人间:TNO 乌克兰-苏维埃社会主义共和国线 上海电信 SDN 网关全局域网皆可收看 IPTV 的实现 论 AList 的滥用:多平台串联搭建个人影音-番剧流媒体服务 俄罗斯已逝:TNO 俄罗斯科米-神俄线·后篇 紫日高悬:TNO 俄罗斯科米-神俄线·前篇 The Pure WINDOWS Project: 使用 Windows Sandbox 隔离腾讯系软件的笔记 廣東手艺人:TNO 广东国索尼-长江实业线 柏林春晓:TNO 德国施佩尔左线 闲话 COMICUP 与敝站 解决小米手机在 fastboot 模式下不被 Windows 识别的问题 贺正·癸卯 MIUI 下观看 Netflix 等流媒体时 Widevine DRM L1 认证失效之解决 崇明骑行纪事·合 磊哥小传 崇明骑行纪事·转 让 Hyper-V 虚拟机支持调用 USB 摄像头 崇明骑行纪事·起承 炎夏小憩 飞哥小传 さよなら、WordPress 使用 Cloudflare Workers 加速甲骨文存储桶 博客流浪纪事 moe-counter-cf:将萌萌计数器部署到 Cloudflare Workers 烟火·迪士尼 红十字救护员培训小记 迁移到了狗云 探索优雅纯粹的追番体验:蜜柑计划 + Resilio Sync Moe-counter: 给网站装上多种风格可选的萌萌计数器 疫情,在下的朋友圈拾遗 Postcrossing 初探小记 解决 Github 同步复刻上游仓库时冲突的问题 使用甲骨文免费云服务器搭建 frp 内网穿透工具的笔记 「在下」的两周年 The Pure WINDOWS Project: Hyper-V 虚拟机使用笔记 The Pure MIUI Project: 小米 10 刷机笔记 烟火·壬寅 贝恩小传「大盛り」 非法侵入住宅罪之浅究 碧蓝航线舰娘原型考据「铁血驱逐篇」 贰拾 火警纪事 观 EDG 夺冠有感 华硕路由器实现远程唤醒局域网设备的笔记 军训随笔 夏日蓝调 在 Wordpress 博客里创建彩色标签云页面的笔记 贝恩小传 迁移到了 Bandwagon Host 杂诗二首 来给 WordPress 添加一个书单页面吧 乡影随摄 从刑法的报复主义论中国刑法的发展 漫谈二次元的「破圈」 浅谈「FBI WARNING」 とある魔都の ACGN 巡礼目録 桜色 在 WordPress 上添加 moc3 Live2d 看板娘的超简单方法 COVID-19 疫苗接种全纪录 Steam 转区小记 元旦 更新主题为 Sakurairo 华为 HarmonyOS / EMUI 安装 GMS 谷歌框架的笔记 下载没有下载权限的钉钉直播回放的笔记 Re:从零开始的 Windows 简明优化指南 Re:从零开始的计算机使用指南 使用 ADB 工具箱卸载手机预装应用 基于宝塔面板的 Google Drive 百宝箱搭建笔记 The Story of the Snake | 蛇纪事 参议院纪事 箱轮纪事
使用 PaaS 服务部署 umami 统计工具的笔记
澄沨 · 2023-05-17 · via 澄沨的漫游茶记

自从 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 机器人会将最新的代码自动部署至云端,进而完成版本更新。