19 10 月 2026
想知道你的网站每天多少人看、从哪来、看哪页——又不想上 Google Analytics(慢、被墙、隐私炸弹、还要弹Cookie 同意)?Umami 是答案:开源、轻量、隐私友好、部署在自己的服务器上。同类自托管工具见各类网站搭建系列。

一、为什么考虑换掉 Google Analytics

先摆事实,GA 的问题:

  1. 脚本体积大:gtag.js 几十 KB,拖慢首屏——而页面速度直接影响 SEO 和转化,见网站速度测试
  2. 隐私合规噩梦:GDPR 下要弹 Cookie 同意;国内个人信息保护法同样要求告知
  3. 数据在别人手里:你的访客行为数据全部上传谷歌;国内访问还时断时续
  4. 过度复杂: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 型刚好对症。

延伸阅读
  1. Homepage 个人仪表盘:把散落各处的服务收进一个首页
  2. SSL 证书完全指南:免费证书、自动续期与不过期监控
  3. 数据备份体系完全手册:从随手拷到 3-2-1,让数据永远丢不了
  4. 压测与容量规划:上线前就知道你的服务器能扛多少人
  5. AdGuard Home 内网 DNS:全家去广告、防劫持、内网解析一站解决
  6. Hugo 静态博客搭建:秒开的博客,部署只要一个目录
  7. 安全应急响应完全手册:服务器被入侵后,按这个流程走
  8. 游戏服运营完全手册:从开服到停服,把一台服务器运营成百年老店
更多阅读
  1. 上一篇:n8n 自动化工作流:开源 Zapier,把重复劳动交给服务器
  2. 下一篇:Memos 个人笔记自托管:flomo 的开源替代,把灵感存在自己服务器上
发表评论 4

取消回复