Umami
开源、隐私友好的网站分析平台,MIT 许可,可自托管,提供简洁的流量统计与事件跟踪。
精选工具性能优化网站分析开源隐私友好
开源(MIT)的轻量网站分析工具,作为 Google Analytics 的隐私替代方案,默认不使用 Cookie,跟踪脚本约 2KB,支持多站点管理、自定义事件与 API,基于 Next.js + PostgreSQL 构建,Docker 一键部署。
Umami
开源、隐私友好的网站分析平台,MIT 许可,可自托管,提供简洁的流量统计与事件跟踪。
技术简介说明
Umami 是开源(MIT) 的轻量网站分析工具,作为 Google Analytics 的隐私替代方案而设计。它通过小型跟踪脚本收集页面浏览、来源、浏览器、操作系统、国家等指标,默认不使用 Cookie、不跟踪跨站个人行为,数据由你完全掌控(自托管部署在自有服务器或 Umami Cloud)。
技术栈为 Next.js + PostgreSQL(现代版本),部署可用 Docker 一键启动。与 Plausible 相比,Umami 的 MIT 许可更宽松,适合嵌入商业产品与二次开发;功能上提供网站管理、团队、事件、漏斗(视版本)与 API,是开源社区中最活跃的分析方案之一。
基本信息
- 官网:https://umami.is
- GitHub:https://github.com/umami-software/umami
- License:MIT
- 跟踪脚本:
/script.js(自托管)或 Umami Cloud CDN - 主要维护者/公司:Umami Software(社区驱动)
- GitHub Stars:约 25,000+
- 运行环境:Node.js 18+、PostgreSQL;浏览器跟踪脚本
快速上手
Docker 自托管(推荐)
git clone https://github.com/umami-software/umami.git
cd umami
docker compose up -d默认 http://localhost:3000,登录 admin / umami,在控制台添加网站获取 Website ID。
跟踪脚本
<script
defer
src="https://your-umami.example.com/script.js"
data-website-id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
></script>Next.js 集成
import Script from 'next/script'
<Script
defer
src={`${process.env.NEXT_PUBLIC_UMAMI_URL}/script.js`}
data-website-id={process.env.NEXT_PUBLIC_UMAMI_WEBSITE_ID}
strategy="afterInteractive"
/>自定义事件
umami.track('signup', { plan: 'pro' })React Hook(社区模式)
// 路由变化时
useEffect(() => {
if (typeof window.umami !== 'undefined') {
window.umami.track((props) => ({ ...props, url: pathname }))
}
}, [pathname])核心特性
- MIT 开源:可自由修改、商用、嵌入产品。
- 轻量脚本:约 2KB,defer,对性能影响小。
- 无 Cookie 设计:隐私友好,简化合规。
- 多站点管理:单实例托管多个网站。
- 团队与权限:多用户协作(视版本)。
- 自定义事件:
umami.track(event, data)。 - API:查询统计数据集成 BI。
- Umami Cloud:官方托管,免运维。
- Docker 部署:生产常用 compose + PostgreSQL。
适用场景
- 需要完全数据主权的博客、文档、营销站、内部工具。
- 希望 MIT 许可二次开发或白标分析面板的产品公司。
- 预算有限,不愿为 GA4 或企业 RUM 付费的小团队。
- 欧盟/隐私敏感地区,避免第三方美国云分析。
- 与 Plausible 二选一:偏好 MIT + 自托管生态选 Umami。
技术亮点
- GitHub 25k+ stars:社区活跃,迭代快。
- 现代栈:Next.js App Router、TypeScript、Prisma/PostgreSQL。
- 部署简单:Docker 数分钟可运行。
- 云与自托管并行:先 Cloud 验证再迁移。
- 实时仪表板:页面、来源、设备、国家可视化清爽。
核心概念与架构
浏览器 script.js
↓
POST /api/send(或 collect 端点)
↓
Umami Server(Next.js API)
↓
PostgreSQL(事件聚合)
↓
Dashboard UI / Stats API
核心概念
- Website ID:每个跟踪站点的 UUID。
- Session:短期匿名会话(无 Cookie 时基于 IP+UA 等哈希,见文档隐私说明)。
- Event:自定义
umami.track名称与 data。 - Team:多用户共享网站访问。
技术局限与边界
- 非 GA 级营销归因:广告平台、BigQuery 导出生态弱。
- 高流量扩展:超大规模 PV 需数据库调优与分片,非开箱企业级。
- Session Replay 无:需另配回放工具。
- 自托管运维:备份、升级、HTTPS、反垃圾流量自行负责。
- SPA 路由:需手动或中间件触发 pageview,否则只记首屏。
生态地图
- 核心:https://github.com/umami-software/umami
- Cloud:https://cloud.umami.is
- 集成:WordPress、Astro、Nuxt 社区插件
- 对比:Plausible、Matomo、Google Analytics 4
- 互补:Sentry(错误)+ Umami(流量)
生态集成
- Next.js:
next/script+ 环境变量注入 website id。 - 反向代理:Nginx/Caddy 子路径
/umami托管。 - Turbo/Monorepo:可 fork 为内部
@company/analytics包。 - Grafana:通过 API 拉取指标到自定义面板(非原生)。
- CSP:允许 script 与 connect 到自托管域。
开发与工程化
- 环境变量:
DATABASE_URL、APP_SECRET生产必改默认密码。 - HTTPS:生产强制 TLS,防止脚本被劫持。
- 过滤内部 IP:Umami 支持忽略 IP 范围(员工流量)。
- 数据库迁移:升级版本前阅读 release note 跑 migrate。
- 备份策略:PostgreSQL 定期快照。
性能与安全
- 性能:脚本极小;自托管 API 需 CDN/缓存优化高并发 collect。
- 安全:改默认 admin 密码;暴露公网需防刷量(rate limit)。
- 隐私:
data勿含 email/phone;遵守站点隐私政策。 - MIT 自由:嵌入产品时仍建议披露分析采集说明。
技术对比
| 维度 | Umami | Plausible | Matomo |
|---|---|---|---|
| License | MIT | AGPL / SaaS | GPL |
| 自托管 | 易 | 中 | 中 |
| 脚本 | ~2KB | ~1KB | 较大 |
| 功能 | 中 | 中 | 极丰富 |
| Stars | 25k+ | 高 | 高 |
| 适合 | MIT 商用 | 欧盟 SaaS | 全功能自托管 |
最佳实践
- Docker + PostgreSQL 生产部署,勿用默认凭证。
- SPA 路由变化手动 track,确保单页统计准确。
- 开发环境禁用或独立 website id。
- 定期升级获取安全补丁与新 API。
- 高流量前压测 collect 端点与 DB 连接池。
- 与法务确认无 Cookie 分析在目标市场是否仍须横幅。
学习与社区资源
- 文档:https://umami.is/docs
- GitHub:https://github.com/umami-software/umami
- Docker 部署:https://umami.is/docs/guides/running-on-docker
- Track events:https://umami.is/docs/track-events
- Discord 社区:官网链接加入