Ghost CMS 博客接入 Umami 流量分析完整教程:比 Google Analytics 好用在哪?(2026)
我的博客 tbbbk.com 从上线第一天就没装 Google Analytics。原因很简单——GA4 的界面复杂得像一架战斗机仪表盘,GDPR 合规问题一大堆,国内用户打开还可能因为 Google 被墙而导致追踪脚本超时拖慢页面速度。
后来我换成了 Umami,自托管在一台 VPS 上。用了一年多,数据干净,界面清爽,API 直接拿来写自动化脚本拉数据——这篇文章就是把我的整套接入流程原封不动地写下来,Ghost 博主应该都能用上。
Umami 是什么?为什么 Ghost 博主应该用它?
Umami 是一个开源的网站分析工具,定位是 Google Analytics 的隐私友好替代品。核心卖点:
- 完全开源,自托管数据不出服务器
- 无 Cookie,天然 GDPR 合规,不需要烦人的 Cookie 横幅
- 轻量,追踪脚本只有约 2KB,不拖慢页面
- 界面极简,PV、UV、跳出率、来源、设备一屏全展示
- API 齐全,可以用脚本自动拉数据做报表
和 Ghost CMS 的搭配尤其合适,因为:
- Ghost 支持在
Code injection里注入任意<head>脚本,Umami 追踪脚本两行代码就搞定 - Ghost 的 Membership / Newsletter 场景可以结合 Umami 自定义事件追踪订阅转化
- 两者都是"博主自主掌控"的哲学——数据归自己,不依赖第三方平台
方案选择:Umami Cloud 还是自托管?
开始之前先确认一件事:你要用 Umami Cloud(官方托管) 还是 自己在 VPS 上搭?
| 对比项 | Umami Cloud | 自托管 |
|---|---|---|
| 上手难度 | ⭐ 注册即用 | ⭐⭐⭐ 需要配置服务器 |
| 月费 | 免费 10 万 PV/月;超出按量收费 | VPS 成本(10-30 元/月起) |
| 数据主权 | 存在 Umami 服务器 | 完全自己掌控 |
| 国内访问速度 | 取决于服务器位置 | 取决于你的 VPS 位置 |
| API 访问 | 支持 | 支持 |
| 适合人群 | 新手、流量 <10W/月 | 追求数据自主、技术党 |
我的建议:
- 刚起步的博客,PV 还不大,先用 Umami Cloud,免费额度完全够用,省去折腾时间。
- 月 PV 超过 10 万,或者对数据隐私要求高,自托管性价比更高。
我自己用的是自托管方案,部署在单独的 VPS 上,域名是 stats.nkkk.de。下面两种方案都讲。
方案一:Umami Cloud 快速接入(5 分钟搞定)
第一步:注册账号,添加网站
- 打开 https://umami.is,点击右上角 Get started,注册账号
- 登录后进入 Dashboard,点击 Add website
- 填入你的博客域名(比如
tbbbk.com),随便起个名字 - 点击保存后,点击网站右边的 Edit 按钮
第二步:拿到追踪代码
在 Tracking code 标签下,你会看到类似这样一段代码:
<script defer src="https://cloud.umami.is/script.js" data-website-id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"></script>这里的 data-website-id 是你这个网站的唯一标识,复制整段代码备用。
第三步:注入到 Ghost
- 登录你的 Ghost 后台(
yourdomain.com/ghost) - 左侧菜单点击 Settings(设置)
- 找到 Code injection(代码注入)
- 把追踪代码粘贴到 Site Header 那个框里
<script defer src="https://cloud.umami.is/script.js" data-website-id="你的网站ID"></script>- 点击 Save 保存
完成。等 5-10 分钟,打开自己的博客,回到 Umami Dashboard,就能看到实时数据了。
💡 提示: 如果你在国内有读者,Cloud 版本的脚本可能被广告拦截器屏蔽。可以考虑自托管 + 自定义域名来绕过(见后文)。
方案二:VPS 自托管 Umami(Docker 版)
这是我自己在用的方案,推荐有一台 VPS 的技术博主跟着做。
环境要求
- 一台 Linux VPS(推荐 1 核 1G 内存起步)
- 已安装 Docker 和 Docker Compose
- 一个子域名(比如
stats.yourdomain.com),已解析到 VPS IP
第一步:Clone 项目,配置数据库
git clone https://github.com/umami-software/umami.git
cd umami复制一份环境变量配置文件:
cp .env.example .env编辑 .env,配置数据库连接(用 Docker Compose 的话,直接用默认配置就行):
DATABASE_URL=postgresql://umami:umami@db:5432/umami第二步:用 Docker Compose 启动
Umami 官方仓库自带 docker-compose.yml,直接跑:
docker compose up -d第一次启动会自动创建数据库表,并生成默认账号:
- 用户名:
admin - 密码:
umami
⚠️ 重要: 启动后第一件事是登录改密码,别留默认密码在服务器上。
默认跑在 http://localhost:3000,需要用 Nginx 反向代理到你的子域名。
第三步:Nginx 反向代理配置
假设你的子域名是 stats.tbbbk.com,在 Nginx 里新建一个配置文件:
server {
listen 80;
server_name stats.tbbbk.com;
location / {
proxy_pass http://127.0.0.1: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;
}
}然后用 Certbot 申请 SSL 证书(HTTPS 必须的):
certbot --nginx -d stats.tbbbk.com第四步:在 Umami 后台添加网站,生成追踪脚本
流程和 Cloud 版一样:登录 Umami 后台 → Add website → 填域名 → 拿到 <script> 代码。
区别在于,你的脚本 src 指向的是你自己的服务器:
<script defer src="https://stats.tbbbk.com/script.js" data-website-id="你的网站ID"></script>第五步:注入到 Ghost
和 Cloud 版完全一样,粘贴到 Settings → Code injection → Site Header,保存。
高阶配置:让追踪更精准
光装上去只是开始,下面这些配置能让数据更干净。
只追踪生产环境(避免测试数据污染)
如果你本地也有 Ghost 开发环境,可以用 data-domains 只追踪正式域名:
<script
defer
src="https://stats.tbbbk.com/script.js"
data-website-id="你的网站ID"
data-domains="tbbbk.com,www.tbbbk.com"
></script>这样即使本地访问也不会把数据打进去。
追踪自定义事件:订阅按钮点击
Ghost 博客一般都有 Newsletter 订阅按钮,这个转化数据很关键。可以用 Umami 的事件追踪来记录:
<!-- 在 Ghost 的 Code injection 里,Site Footer 注入 -->
<script>
document.addEventListener('DOMContentLoaded', function () {
// 追踪订阅按钮点击
const subscribeBtn = document.querySelector('.gh-subscribe-btn');
if (subscribeBtn) {
subscribeBtn.addEventListener('click', function () {
umami.track('subscribe-click', { location: 'header' });
});
}
});
</script>在 Umami 的 Dashboard → Events 里就能看到每天有多少人点了订阅按钮。
开启 Core Web Vitals 追踪
Umami v3.1.0 开始支持自动收集 LCP、CLS、FID 等性能指标,只需加一个参数:
<script
defer
src="https://stats.tbbbk.com/script.js"
data-website-id="你的网站ID"
data-performance="true"
></script>这对优化 Ghost 博客 SEO 性能很有用,可以直接在 Umami 里看到每个页面的加载性能分布。
Umami 与 Google Analytics 4 的核心差异
用了 GA4 再换过来的朋友,第一感受一般是:Umami 要简单太多了。
| 功能点 | Google Analytics 4 | Umami |
|---|---|---|
| 学习成本 | 极高,需要理解事件模型 | 极低,开箱即用 |
| 数据实时性 | 延迟约 24-48 小时 | 近实时 |
| GDPR 合规 | 需要额外配置 Cookie 弹窗 | 原生无 Cookie |
| 脚本体积 | ~90KB+ | ~2KB |
| 对国内读者速度影响 | 大(Google 服务器) | 小(可自托管国内 VPS) |
| 数据归属 | 完全自己 | |
| API 访问 | 复杂,OAuth2 授权 | 简单,API Key 直接调用 |
| 自定义报表 | 支持,但复杂 | 支持 Board 功能 |
| 免费额度 | 免费(但数据归 Google) | Cloud 版 10W PV/月 |
对于独立博客来说,我不需要 GA4 那套复杂的漏斗分析和广告转化追踪。我只需要知道:今天多少人来了,哪篇文章最受欢迎,流量从哪来,用什么设备。Umami 全都有,而且一眼就能看清楚。
常见问题与避坑
数据一直不出现怎么办?
打开浏览器开发者工具(F12)→ Network 标签,过滤 umami 或你的域名,看看请求有没有发出去。
常见原因:
- 广告拦截器屏蔽了脚本:用浏览器无痕模式试试,或者换一个自定义域名作为脚本 URL
- Ghost 缓存没刷新:改完 Code injection 后等几分钟,清一下浏览器缓存
- Nginx 配置有误:自托管方案检查一下 Nginx 日志
tail -f /var/log/nginx/error.log
我自己访问博客的数据要不要排除?
Umami 支持在本地浏览器里关闭追踪自己,方法是在 Console 里执行:
// 开启自我排除(在你自己电脑的浏览器开发者工具里运行)
localStorage.setItem('umami.disabled', '1');之后在这台电脑上访问博客就不会被记录了。
Umami Cloud 的免费额度够用吗?
每月 10 万 PV 免费。日均 3000 PV 左右的博客完全够用。超过了可以考虑升级付费计划,或者迁移到自托管。
我的真实数据:Umami 用了一年的感受
说几个我自己在用时感受最深的点:
数据干净。 因为没有 Cookie,少了很多 bot 流量混进来的情况。Umami 默认会过滤掉部分爬虫,展示的基本都是真实人类访客。
查历史数据快。 想看上周某篇文章的流量,直接调时间范围,两秒出来。GA4 里同样操作要点好多层。
API 极好用。 我现在用 Python 脚本每天自动拉数据做汇总,就几行代码,根本不用搞 OAuth2。这对想做数据自动化的博主来说是真正的生产力提升。
缺点也有: 高级功能比 GA4 少,比如多渠道归因、用户 ID 追踪这些。但对 90% 的独立博主来说,这些功能根本不需要。
总结
一句话:如果你是 Ghost 博主,用 Umami 替代 GA 的迁移成本极低,数据更干净,体验更好。
完整流程只有三步:
- 注册 Umami Cloud 或自托管搭建实例
- 在 Umami 里添加网站,拿到追踪脚本
- 粘贴到 Ghost 后台 Settings → Code injection → Site Header
Member discussion