阅读时间 9 分钟

Ghost CMS 博客接入 Umami 流量分析完整教程:比 Google Analytics 好用在哪?(2026)

从零讲清楚 Ghost 博客接入 Umami 的完整流程,Cloud 版和自托管两种方案都有。对比 GA4 的核心差异、高阶配置技巧、真实踩坑经验,博主自用一年的真实感受。

我的博客 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 的搭配尤其合适,因为:

  1. Ghost 支持在 Code injection 里注入任意 <head> 脚本,Umami 追踪脚本两行代码就搞定
  2. Ghost 的 Membership / Newsletter 场景可以结合 Umami 自定义事件追踪订阅转化
  3. 两者都是"博主自主掌控"的哲学——数据归自己,不依赖第三方平台

方案选择: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 分钟搞定)

第一步:注册账号,添加网站

  1. 打开 https://umami.is,点击右上角 Get started,注册账号
  2. 登录后进入 Dashboard,点击 Add website
  3. 填入你的博客域名(比如 tbbbk.com),随便起个名字
  4. 点击保存后,点击网站右边的 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

  1. 登录你的 Ghost 后台(yourdomain.com/ghost
  2. 左侧菜单点击 Settings(设置)
  3. 找到 Code injection(代码注入)
  4. 把追踪代码粘贴到 Site Header 那个框里
<script defer src="https://cloud.umami.is/script.js" data-website-id="你的网站ID"></script>
  1. 点击 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 4Umami
学习成本极高,需要理解事件模型极低,开箱即用
数据实时性延迟约 24-48 小时近实时
GDPR 合规需要额外配置 Cookie 弹窗原生无 Cookie
脚本体积~90KB+~2KB
对国内读者速度影响大(Google 服务器)小(可自托管国内 VPS)
数据归属Google完全自己
API 访问复杂,OAuth2 授权简单,API Key 直接调用
自定义报表支持,但复杂支持 Board 功能
免费额度免费(但数据归 Google)Cloud 版 10W PV/月

对于独立博客来说,我不需要 GA4 那套复杂的漏斗分析和广告转化追踪。我只需要知道:今天多少人来了,哪篇文章最受欢迎,流量从哪来,用什么设备。Umami 全都有,而且一眼就能看清楚。


常见问题与避坑

数据一直不出现怎么办?

打开浏览器开发者工具(F12)→ Network 标签,过滤 umami 或你的域名,看看请求有没有发出去。

常见原因:

  1. 广告拦截器屏蔽了脚本:用浏览器无痕模式试试,或者换一个自定义域名作为脚本 URL
  2. Ghost 缓存没刷新:改完 Code injection 后等几分钟,清一下浏览器缓存
  3. 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 的迁移成本极低,数据更干净,体验更好。

完整流程只有三步:

  1. 注册 Umami Cloud 或自托管搭建实例
  2. 在 Umami 里添加网站,拿到追踪脚本
  3. 粘贴到 Ghost 后台 Settings → Code injection → Site Header