Umami:轻量级开源网站分析工具,打造隐私友好的 Google Analytics 替代方案
背景
网站运营者都希望了解访客行为,但现有分析工具存在诸多问题:
- Google Analytics 配置复杂,功能繁多但不实用
- Google Analytics 依赖 Cookie,违反隐私法规(如 GDPR)
- 商业分析工具价格高昂,个人站长难以承受
- 数据存储在第三方,隐私无法保障
- 追踪代码拖慢网站加载速度
- 数据报告过于复杂,难以快速获取关键信息
今天介绍一款开源网站分析利器------Umami,它是 Google Analytics 的隐私友好替代方案。
什么是 Umami?
Umami 是一款简单、快速、注重隐私的开源网站分析工具,目标是提供 Google Analytics 的开源替代方案。
核心理念: "Simple, fast, privacy-focused alternative to Google Analytics"------简单、快速、注重隐私的 Google Analytics 替代方案。
核心特性:
| 特性 | 说明 |
|---|---|
| 隐私优先 | 默认不使用 Cookie,不跟踪个人数据 |
| GDPR 合规 | 符合欧盟隐私法规 |
| 轻量高效 | 追踪脚本仅 2KB,加载极快 |
| 简单易用 | 界面清晰,关键指标一目了然 |
| 开源免费 | MIT 许可证,完全免费 |
| 自托管 | 数据完全自主,隐私安全 |
| 多网站支持 | 一个实例管理多个网站 |
GitHub 地址: https://github.com/umami-software/umami
Star 数量: 20K+
Umami vs Google Analytics vs Plausible
| 对比项 | Umami | Google Analytics | Plausible |
|---|---|---|---|
| 价格 | 免费 | 免费(GA4) | 免费/付费 |
| 开源 | ✅ 完全开源 | ❌ 闭源 | ⚠️ 半开源 |
| 自托管 | ✅ 完全支持 | ❌ 不支持 | ✅ 支持 |
| Cookie | ❌ 不使用 | ⚠️ 需要 | ❌ 不使用 |
| GDPR 合规 | ✅ 完全合规 | ⚠️ 需配置 | ✅ 合规 |
| 追踪脚本 | ~2KB | ~44KB | ~1KB |
| 界面复杂度 | 简单清晰 | 复杂 | 简单 |
| 数据存储 | 自己的数据库 | Google 云 | 自己的数据库 |
Umami 的独特优势:
- 完全开源,代码透明可审计
- 隐私优先设计,不使用 Cookie,不跟踪个人
- 追踪脚本极小(仅 2KB),不影响网站性能
- 界面简洁,关键指标一目了然
- 数据完全自主,隐私安全有保障
- 支持多网站,一个实例管理所有网站
工作原理
Umami 采用轻量级追踪方案:
┌─────────────────────────────────────────────────────────────────┐
│ 访客浏览器 │
│ │
│ 加载网站 → 执行 Umami 追踪脚本(2KB) │
│ │
│ 收集数据: │
│ - 页面 URL │
│ - 访问时间 │
│ - 屏幕分辨率 │
│ - 浏览器/操作系统 │
│ - 来源网站(referrer) │
│ - 国家/地区(通过 IP 地理定位) │
│ │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Umami Server │
│ │
│ 接收追踪数据 → 存储到 PostgreSQL 数据库 │
│ │
│ 数据处理: │
│ - 实时数据更新 │
│ - 会话聚合 │
│ - 统计计算 │
│ │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Umami Dashboard │
│ │
│ 数据可视化: │
│ - 实时访客 │
│ - 页面浏览 │
│ - 访问来源 │
│ - 地理分布 │
│ - 设备统计 │
│ │
└─────────────────────────────────────────────────────────────────┘
追踪脚本工作流程:
- 访客访问网站,加载 Umami 追踪脚本
- 脚本收集基本访问数据(无 Cookie,无个人识别)
- 数据以 JSON 格式发送到 Umami 服务器
- 服务器解析并存入数据库
- Dashboard 实时展示统计数据
快速上手
Docker 部署(推荐)
创建目录:
bash
mkdir -p ~/umami && cd ~/umami
创建 docker-compose.yml:
yaml
version: '3'
services:
umami:
image: ghcr.io/umami-software/umami:latest
container_name: umami
restart: unless-stopped
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://umami:umami_password@db:5432/umami
- DATABASE_TYPE=postgresql
- APP_SECRET=your_random_secret_key
depends_on:
- db
volumes:
- ./umami-data:/app/data
db:
image: postgres:15-alpine
container_name: umami_db
restart: unless-stopped
environment:
- POSTGRES_USER=umami
- POSTGRES_PASSWORD=umami_password
- POSTGRES_DB=umami
volumes:
- ./db-data:/var/lib/postgresql/data
volumes:
umami-data:
db-data:
启动服务:
bash
# 启动服务
docker-compose up -d
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f
访问 Web 界面:
http://your-server-ip:3000
默认账号:admin
默认密码:umami
首次登录后请立即修改密码!
使用 MySQL 数据库
yaml
version: '3'
services:
umami:
image: ghcr.io/umami-software/umami:latest
container_name: umami
restart: unless-stopped
ports:
- "3000:3000"
environment:
- DATABASE_URL=mysql://umami:umami_password@db:3306/umami
- DATABASE_TYPE=mysql
- APP_SECRET=your_random_secret_key
depends_on:
- db
db:
image: mysql:8
container_name: umami_db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_USER=umami
- MYSQL_PASSWORD=umami_password
- MYSQL_DATABASE=umami
volumes:
- ./db-data:/var/lib/mysql
基础配置
添加网站:
1. 登录 Umami Dashboard
2. 点击"Settings" → "Websites"
3. 点击"Add website"
4. 填写网站信息:
- Website name:网站名称
- Domain:网站域名
- Website password:(可选)分享用的密码
5. 点击"Save"
6. 复制生成的追踪代码
追踪代码:
html
<script async defer
src="http://your-umami-server:3000/script.js"
data-website-id="your-website-id">
</script>
将代码添加到网站:
html
<!DOCTYPE html>
<html>
<head>
<!-- 其他 head 内容 -->
</head>
<body>
<!-- 网站内容 -->
<!-- Umami 追踪代码 -->
<script async defer
src="http://your-umami-server:3000/script.js"
data-website-id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
</script>
</body>
</html>
核心功能详解
1. 实时数据
实时访客面板:
实时显示:
- 当前在线访客数量
- 当前浏览的页面
- 访客来源
- 访问设备类型
更新频率:实时
数据延迟:< 1 秒
2. 关键指标
核心指标:
| 指标 | 说明 |
|---|---|
| 页面浏览量(Pageviews) | 页面被访问的总次数 |
| 独立访客(Unique visitors) | 访问网站的不同 IP 数量 |
| 访问时长(Bounce rate) | 单页面访问比例 |
| 平均访问时长(Avg. session) | 访客平均停留时间 |
| 访问深度(Page depth) | 访客平均浏览的页面数 |
3. 流量来源
来源分析:
| 来源类型 | 说明 |
|---|---|
| 直接访问 | 直接输入 URL 或书签访问 |
| 外部链接 | 从其他网站点击链接访问 |
| 搜索引擎 | Google、Bing、百度等 |
| 社交媒体 | 微博、微信、Twitter 等 |
来源详情:
追踪的来源信息:
- Referrer URL
- 搜索引擎关键词(如果适用)
- 社交平台
- 广告链接(UTM 参数)
4. 地理分布
访客地理位置:
统计内容:
- 国家/地区分布
- 城市分布(部分支持)
- 语言设置分布
数据来源:
- IP 地址地理定位
- Browser Language
注意:精确度取决于 IP 定位服务
5. 设备统计
设备类型分析:
| 设备类型 | 说明 |
|---|---|
| 桌面 | Windows/macOS/Linux |
| 移动 | iOS/Android 手机 |
| 平板 | iPad/Android 平板 |
浏览器统计:
追踪内容:
- 浏览器类型和版本
- 操作系统
- 屏幕分辨率
- 是否启用 JavaScript
6. 页面分析
页面性能:
页面统计:
- 各页面浏览量
- 平均停留时长
- 跳出率
- 入口页面
- 退出页面
用途:
- 了解哪些内容最受欢迎
- 优化高跳出率页面
- 分析用户访问路径
7. 事件追踪
自定义事件:
javascript
// 追踪按钮点击
umami.track('button_click', { button_id: 'signup', button_text: '注册' });
// 追踪表单提交
umami.track('form_submit', { form_id: 'contact', success: true });
// 追踪视频播放
umami.track('video_play', { video_id: 'intro', duration: 45 });
事件分析:
Dashboard 查看:
- 事件触发次数
- 事件属性分布
- 事件转化漏斗
高级配置
反向代理配置
Nginx 配置:
nginx
server {
listen 80;
server_name analytics.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 启用 WebSocket(用于实时数据)
location /ws {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
启用 HTTPS:
nginx
server {
listen 443 ssl http2;
server_name analytics.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:3000;
# ... 其他配置同上
}
}
环境变量配置
完整环境变量:
yaml
environment:
# 数据库连接
- DATABASE_URL=postgresql://umami:password@db:5432/umami
- DATABASE_TYPE=postgresql
# 应用密钥(生成随机字符串)
- APP_SECRET=your_random_secret_key_min_32_chars
# 可选配置
- CHECK_UPDATE=false
- LOG_LEVEL=info
- FORCE_SSL=false
- TRACKER_SCRIPT_NAME=script
生成随机密钥:
bash
# Linux/macOS
openssl rand -base64 32
# 使用随机字符串
# 示例输出:YWxzamtsYWZzamtsYWZzamtsYWZzamtsYWZzamtsYWZ=
多网站管理
添加多个网站:
管理多个网站:
1. Settings → Websites → Add website
2. 为每个网站生成独立追踪代码
3. 可设置网站密码保护
4. Dashboard 切换查看不同网站
团队协作:
- 共享网站访问
- 设置不同权限
- 分配网站给用户
数据保留设置
yaml
# 数据保留策略(按需配置)
environment:
# PostgreSQL 可设置表分区
# 定期清理旧数据
# 手动清理脚本
docker exec umami_db psql -U umami -d umami -c "
DELETE FROM event WHERE created_at < NOW() - INTERVAL '12 months';
"
隐私合规
GDPR 合规
Umami 的 GDPR 优势:
| GDPR 要求 | Umami 支持情况 |
|---|---|
| 明确同意 | ✅ 不使用 Cookie,无需同意 |
| 数据最小化 | ✅ 仅收集分析必需数据 |
| 数据保护 | ✅ 数据存储在自有服务器 |
| 被遗忘权 | ✅ 可删除所有用户数据 |
| 数据可携 | ✅ 可导出所有数据 |
合规配置建议:
javascript
// 延迟加载追踪脚本(等待用户交互)
<script>
// 检测用户交互后再加载
document.addEventListener('scroll', loadUmami, { once: true });
document.addEventListener('mousemove', loadUmami, { once: true });
function loadUmami() {
var s = document.createElement('script');
s.src = 'http://your-umami-server/script.js';
s.setAttribute('data-website-id', 'your-id');
document.body.appendChild(s);
}
</script>
Cookie 政策
无需 Cookie 声明:
Umami 不使用 Cookie,因此:
- 无需烦人的 Cookie 同意横幅
- 无需复杂的 Cookie 政策页面
- 访客体验不受影响
- 符合 ePrivacy 指令
数据导出
导出所有数据:
1. 登录 Dashboard
2. 进入 Settings → Account
3. 点击 Export Data
4. 选择日期范围
5. 下载 JSON/CSV 格式数据
常见问题
Q:Umami 和 Google Analytics 有什么区别?
A:
- Umami 不使用 Cookie,Google Analytics 使用
- Umami 追踪脚本仅 2KB,GA 约 44KB
- Umami 界面更简洁,指标更清晰
- Umami 数据存储在自己的服务器
- Umami 完全免费,GA 免费版功能受限
Q:数据准确性如何?
A:
- 由于不使用 Cookie,同一访客多次访问可能计为多次
- IP 地理定位精确度有限
- 对于大多数网站分析需求,精度足够
- 无法追踪单个用户行为路径
Q:需要多少服务器资源?
A:
- 最低配置:1核1G
- 推荐配置:2核2G
- PostgreSQL 存储占用小
- 月访问量 10 万以下,1GB 内存足够
Q:支持哪些数据库?
A:
- PostgreSQL(推荐)
- MySQL(支持但不如 PG 完善)
Q:可以追踪转化目标吗?
A:
- 支持自定义事件追踪
- 可设置转化目标和漏斗
- 需要使用 umami.track() API
Q:如何更新 Umami?
A:
bash
# Docker 更新
docker-compose pull
docker-compose up -d
# 注意:更新前建议备份数据库
docker exec umami_db pg_dump -U umami > umami-backup.sql
适用场景
推荐使用:
- 个人博客和网站分析
- 企业官网流量统计
- 注重隐私的网站
- 需要 GDPR 合规的网站
- 不想使用 Google Analytics 的网站
- 多个网站统一管理
不推荐使用:
- 需要精确用户行为路径分析
- 需要实时热力图
- 超大规模电商网站分析
- 需要 A/B 测试集成
总结
Umami 以"隐私优先 + 轻量高效 + 开源免费 + 简单易用"的组合,成为了网站分析领域的最佳开源选择。
核心优势回顾:
- 隐私优先:不使用 Cookie,不跟踪个人数据
- GDPR 合规:完全符合欧盟隐私法规
- 轻量高效:追踪脚本仅 2KB,不影响网站性能
- 简单易用:界面清晰,关键指标一目了然
- 开源免费:MIT 许可证,无任何功能限制
- 数据自主:自托管部署,数据完全可控
对于注重隐私、追求简洁、想要摆脱 Google Analytics 的网站运营者,Umami 是最佳选择。
本文由无边界科技技术团队分享,专注软件开发与技术解决方案。
官网:wubianj.com
© 版权归无边界科技所有,版权所有。