找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

95

积分

0

好友

7

主题
发表于 2025-11-8 23:07:54 | 查看: 25| 回复: 0
本帖最后由 云栈大前端 于 2025-11-8 23:09 编辑

230659jt85458h.png
Umami


不想被大厂"监控"?试试这个开源方案

你的网站装了 Google Analytics,但总觉得数据被第三方掌控不太放心?想要实时统计访问数据,又不想折腾复杂的配置?今天介绍的 Umami 或许能解决你的困扰。

这是一个在 GitHub 上获得 3.2 万 Star 的开源项目,专门用来做网站数据分析,最大的特点是数据完全由你自己掌控。

用了什么技术?

前端用的是 Next.js + TypeScript,后端是 Node.js 18 + Prisma,数据存在 PostgreSQL 里。整个项目 97% 的代码都是 TypeScript 写的,类型安全做得很到位。

部署方式也很灵活,可以直接用 Docker 一键启动,也可以从源码编译。项目用 pnpm 管理依赖,测试用的是 Cypress 和 Jest。

能解决什么问题?

第一是隐私。Umami 不用 Cookie 追踪用户,数据存在你自己的服务器上,符合 GDPR 等隐私法规。用户的访问记录都是匿名化处理的。

第二是性能。追踪脚本很小,压缩后不到 2KB,异步加载不会拖慢页面速度。数据是实时的,打开后台就能看到最新的访问情况。

第三是简单。用 Docker 的话,一行命令就能跑起来,默认账号是 admin/umami,登录就能用。

工作原理

整个流程是这样的:用户访问你的网站 → 执行追踪脚本 → 数据发送到 Next.js 的 API 接口 → 通过 Prisma 存入 PostgreSQL → 后台实时展示统计结果。

代码结构也很清晰:

  • src/app/ 是 Next.js 的页面和路由
  • src/components/ 放 React 组件
  • src/lib/ 是工具函数和 API 层
  • prisma/ 里是数据库的表结构定义

数据访问用的是 Repository 模式,Prisma 封装了所有数据库操作。统计功能用了时间序列聚合算法,可以高效处理大量访问记录。

适合什么场景?

个人博客、企业官网、SaaS 产品、开源项目的官网,基本上任何需要统计访问数据的网站都能用。

如果你在意数据隐私,或者不想依赖第三方服务,Umami 是个不错的选择。

怎么用?

Docker 部署(推荐):

git clone https://github.com/umami-software/umami.git
cd umami
docker compose up -d
# 访问 http://localhost:3000

源码部署

pnpm install
echo "DATABASE_URL=postgresql://user:pass@localhost:5432/umami" > .env
pnpm run build
pnpm run start

接入网站
在你的网页里加一行代码就行:

<script async src="http://your-domain/script.js" 
        data-website-id="your-id"></script>

技术细节

Prisma 做了类型安全的数据库操作,自动管理数据库迁移,支持 PostgreSQL 等多种数据库。

Next.js 用的是最新的 App Router,API 接口和页面都在一个项目里,前后端统一开发。

工程化方面,用 pnpm workspace 管理 Monorepo,代码规范用 ESLint 和 Prettier,测试覆盖也比较完整。

数据安全

所有数据都存在你自己的服务器上,不会发送给第三方。追踪的时候不收集用户的个人信息,只记录匿名的访问行为。代码完全开源,可以自己审计。

性能方面,追踪脚本压缩后小于 2KB,异步加载不影响页面,数据实时更新,能支撑百万级的访问量。

更新维护

项目很活跃,已经发布了 100 个版本,最新的是 2024 年 11 月的 v3.0.0。

更新也很简单:

# 源码更新
git pull && pnpm install && pnpm run build

# Docker 更新
docker compose pull
docker compose up --force-recreate -d

适合学习吗?

如果你在学全栈开发,这个项目是个很好的参考案例。可以学到 Next.js 13+ 的新特性、Prisma 的数据库设计、如何开发轻量级的 SDK、Docker 容器化部署、E2E 测试的实践等等。

总结

Umami 用现代的技术栈解决了网站分析的几个核心问题:隐私保护、性能优化、使用简单。对于不想把数据交给大厂的开发者来说,是个实用的工具。


关注《云栈大前端》,每周分享前端、移动端、全栈领域的优质开源项目

配套资源

📦 Github:umami-software/umami
📖 使用文档:umami.is/docs
🎬 Prometheus监控系统教程:https://yunpan.plus/t/362-1-1
🎬 PostgreSQL数据库学习:https://yunpan.plus/t/39-1-1

标签:#Umami #Github #Next.js #Web分析 #开源项目 #数据统计 #隐私保护

来自圈子: 云栈大前端
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|云栈社区(YunPan.Plus) ( 苏ICP备2022046150号-2 )

GMT+8, 2025-11-19 09:28 , Processed in 0.059843 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 CloudStack.

快速回复 返回顶部 返回列表