想知道你的网站每天多少人看、从哪来、看哪页——又不想上 Google Analytics(慢、被墙、隐私炸弹、还要弹Cookie 同意)?Umami 是答案:开源、轻量、隐私友好、部署在自己的服务器上。同类自托管工具见各类网站搭建系列。
一、为什么考虑换掉 Google Analytics
先摆事实,GA 的问题:
- 脚本体积大:
gtag.js几十 KB,拖慢首屏——而页面速度直接影响 SEO 和转化,见网站速度测试 - 隐私合规噩梦:GDPR 下要弹 Cookie 同意;国内个人信息保护法同样要求告知
- 数据在别人手里:你的访客行为数据全部上传谷歌;国内访问还时断时续
- 过度复杂:90% 的站长只用到 10% 的功能
Umami 的定位:你真正关心的那 10%——PV/UV、来源、设备、热门页面——做得干净利落,脚本 2KB,无 Cookie,数据自己存。知道什么该放弃(高级归因、广告整合),就知道它适不适合你。
二、部署:Docker + PostgreSQL
Umami 需要 PostgreSQL(不用 SQLite,官方不推荐生产用):
# 1. 起数据库
docker run -d --name umami-db \
--restart unless-stopped \
-e POSTGRES_USER=umami \
-e POSTGRES_PASSWORD=你的强密码 \
-e POSTGRES_DB=umami \
-v /data/umami-db:/var/lib/postgresql/data \
postgres:16-alpine
# 2. 起 Umami,连上面的数据库
docker run -d --name umami \
--restart unless-stopped \
-p 127.0.0.1:3000:3000 \
-e DATABASE_URL=postgresql://umami:你的强密码@umami-db:5432/umami \
-e APP_SECRET=随机长字符串 \
--link umami-db:umami-db \
docker.umami.dev/umami-software/umami:latest注意:
APP_SECRET用openssl rand -hex 32生成,改它会导致所有登录态失效- 数据库密码别用弱密码——分析数据也是资产,Redis 未授权访问的教训见Redis 未授权访问防范
-p 127.0.0.1:3000只听本地,对外走反代理(第五节)
首次访问 http://服务器IP:3000,默认账号 admin / umami,第一件事改密码。
三、接入网站:一行代码
Umami 后台添加网站后,给你一段跟踪代码:
<script defer src="https://stats.yourdomain.com/script.js"
data-website-id="你的网站ID"></script>把它粘贴到网站每个页面的 <head> 里。Typecho 主题改 header.php、WordPress 用主题自定义或插件,静态站(Hugo/VuePress)改模板——一处粘贴,全站生效。别忘 defer,不阻塞渲染。
验证:自己访问一下网站,Umami 面板"实时访客"应立刻 +1。没有就按第五节排查。
四、看板:每个数字的含义
Umami 默认看板很干净,认识六个指标就够:
| 指标 | 含义 | 怎么用 |
|---|---|---|
| 访客(UV) | 去重后的独立访客 | 核心规模指标 |
| 浏览量(PV) | 页面浏览次数 | 内容消耗总量 |
| 浏览量/访客 | 人均看几页 | 低 = 内容不抓人 or 导航差 |
| 跳出率 | 只看一页就走的比例 | 高 = 落地页有问题 |
| 来源 | 搜索引擎/外链/直接访问 | 看渠道效果 |
| 设备/浏览器/国家 | 受众画像 | 决定要不要适配移动端 |
进阶用法:
- UTM 参数:推广链接带
?utm_source=weibo&utm_medium=social,Umami 自动归类,各渠道效果一目了然 - 事件追踪:给按钮加
data-umami-event="click-download",统计"有多少人点了下载"——比 PV 更接近业务目标 - 对比日期:任何指标可对比上周/上月同期,发布效果立判
SEO 基础配合见网站 SEO 入门。
五、多站点与团队
Umami 支持一个面板管多个网站(团队矩阵、客户站点集合):
- 每个网站独立看板,数据隔离
- 支持"分享链接"——给客户开一个只读看板链接,不用给账号
- 团队功能在企业版,自托管免费版个人用足够
备份:分析数据全在 PostgreSQL 里,定期 dump:
docker exec umami-db pg_dump -U umami umami | gzip > umami-$(date +%F).sql.gz备份策略见数据备份体系完全手册。
六、常见问题排查
| 症状 | 原因 | 解决 |
|---|---|---|
| 实时访客没反应 | 代码没生效 / ID 错 | 浏览器 F12 看 script.js 加载和返回 200 |
| 有数据但域名不对 | 代理头没传 | Nginx 加 proxy_set_header Host $host |
| 刷新面板要重新登录 | APP_SECRET 变了 / Cookie 问题 | 固定 APP_SECRET;HTTPS 下确保 SameSite 正常 |
| 数据突然不更新 | 数据库容器挂了 | docker ps 看两个容器都在;看 db 日志 |
| 统计数字比 GA 少 | 正常——无 Cookie + 不追踪跨设备 | 口径不同,Umami 偏保守 |
| 脚本拖慢速度 | 不会——2KB + defer | 用网站速度测试验证 |
七、对外服务:反代 + HTTPS
server {
listen 443 ssl;
server_name stats.yourdomain.com;
ssl_certificate /etc/nginx/ssl/stats.yourdomain.com.pem;
ssl_certificate_key /etc/nginx/ssl/stats.yourdomain.com.key;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# WebSocket(看板实时推送)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}统计域名建议单独子域名(stats.yourdomain.com),和主站分开——它挂了不影响主站,也避免主站 Cookie 干扰。证书自动化见SSL 证书完全指南,反代细节见Nginx 反向代理实战。
隐私合规红利:Umami 无 Cookie、不存个人数据,国内部署可以豁免 Cookie 弹窗——这是相比 GA 最实际的好处之一。但注意:收集的仍是访问数据,隐私政策里提一句"本站使用自托管统计服务"更稳妥。
结语
Umami 把"网站分析"回归本质:知道有多少人、从哪来、看什么,然后干净利落地不管其他。2KB 脚本、无 Cookie、数据自主、看板现代——对个人站长和小团队,它是 GA 的全面上位替代。半小时部署完,你会庆幸再也用不到那个又重又慢的分析后台。
需要搭自托管工具的服务器,可以看看财富云计算:NAT 型云服务器内存档位全、SSD 系统盘、支持热升级,价格比独立 IP 机型省一半以上——跑 Umami、监控、各类自托管服务这类"吃配置不吃公网 IP"的场景,NAT 型刚好对症。
延伸阅读
- Homepage 个人仪表盘:把散落各处的服务收进一个首页
- SSL 证书完全指南:免费证书、自动续期与不过期监控
- 数据备份体系完全手册:从随手拷到 3-2-1,让数据永远丢不了
- 压测与容量规划:上线前就知道你的服务器能扛多少人
- AdGuard Home 内网 DNS:全家去广告、防劫持、内网解析一站解决
- Hugo 静态博客搭建:秒开的博客,部署只要一个目录
- 安全应急响应完全手册:服务器被入侵后,按这个流程走
- 游戏服运营完全手册:从开服到停服,把一台服务器运营成百年老店

[...]}Nginx 基础见Nginx 安装与配置,HTTPS 证书见SSL 证书完全指南。成本彩蛋:静态站资源消耗约等于零,2核2G 轻量服务器能挂十几个静态站——每个站一个 Nginx server 块 + 一个目录的事。想更省,直接上 CDN/对象存储,源站钱都省了,见静态网站 CDN 部署。方式 2:GitHub Pages / Vercel / Netlify代码推 GitHub,平台自动构建发[...]
2026-10-19 回复
[...]域名: router.home → 192.168.1.1之后全家设备直接 http://nas.home 访问 NAS,IP 变了只改一处重写。内网解析是 AdGuard 最被低估的功能——比每台设备配 hosts 干净一万倍。五、安全与暴露:DNS 开放的风险DNS 端口(53)必须对外才能给全家设备用,这就带来一个经典陷阱:开放的 DNS 解析器会被当成 DDoS 放大器滥用(伪造源地址的小[...]
2026-10-19 回复
[...]}证书自动续期见SSL 证书完全指南,反代细节见Nginx 反向代理实战。暴露面考量:仪表盘会暴露你有哪些服务(信息搜集价值),建议:只在内网/WireGuard 内网用(组网方案)或对外时加 Basic Auth,别裸奔Docker socket 只读挂载已经是权限最小化——绝不给读写权限,那等于把宿主机交出去(Docker 逃逸风险,见Docker 安全加固)六、和其他工具的分工仪表盘生态里各[...]
2026-10-19 回复
[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-19 回复