自托管 Google Analytics 替代方案:Umami 和 Plausible 怎么选、怎么部署

对比两款开源、无 Cookie 的网站统计工具 Umami 与 Plausible,在 Zenavo 上部署到自己的服务器,完成首个账号、添加统计代码、验证数据和备份。

本文亦提供 English、繁體中文、日本語、Español 和 Bahasa Indonesia。

很多网站只想知道几件事:今天有多少访客、从哪里来、看了哪些页面。Google Analytics 能回答这些问题,但它配置复杂,数据留在第三方,还常常需要配合 Cookie 提示。

Umami 和 Plausible 是两款开源的网站统计工具,界面简洁,默认不使用 Cookie,数据保存在你自己的数据库里。Zenavo 为两者都准备了模板,几分钟就能部署到你租用或自有的服务器上。

先选一个

Umami Plausible 社区版
组成 Umami + PostgreSQL Plausible + PostgreSQL + ClickHouse
内存 小,可以和其他应用共用一台小服务器 模板标注约 2 GB
适合 个人站点、多个小网站、想要最少维护 访问量较大,想要 Plausible 的报表风格
首次登录 默认管理员账号,需立刻改密码 打开后注册第一个账号
邮件 不依赖邮件 邀请成员、重置密码需要配置 SMTP

拿不准时,先用 Umami:它更轻,迁移和备份也只涉及一个 PostgreSQL。访问量大到 PostgreSQL 吃力时,再考虑基于 ClickHouse 的 Plausible。

两者都不使用 Cookie,但是否还需要隐私声明或用户同意,取决于你所在地区的法律和你收集的内容,请自行确认。部分广告拦截插件也会拦截这类统计脚本,所以数字会比真实访问略低。

部署 Umami

先在 Zenavo 中连接一台 Linux 服务器,再打开 Umami 模板,选择服务器并部署。模板会创建两个服务:

  • postgresql:PostgreSQL 17,数据在 /var/lib/postgresql/data 卷中,密码自动生成;
  • umami:ghcr.io/umami-software/umami:postgresql-latest,HTTP 端口 3000,通过 DATABASE_URL 连接数据库,APP_SECRET 自动生成。

在 umami 服务的 网络 页为 3000 端口绑定域名,例如 stats.example.com,配置 DNS 并等待 HTTPS 生效(见域名文档)。

域名一生效就登录。 Umami 的默认管理员是 admin,密码 umami。登录后马上在 Settings → Profile 修改密码,并在 Security 中开启两步验证。在你改密码之前,任何人知道这个地址都能用默认密码登录。

然后在 Settings → Websites 添加网站,复制它给出的统计代码。

部署 Plausible

打开 Plausible 模板,部署前会要求填写 访问网址,即你将来打开 Plausible 的完整地址,例如 https://stats.example.com。模板会创建三个服务:

  • postgresql:保存账号和站点设置;
  • clickhouse:保存访问事件,模板已为小内存服务器调低了它的线程和日志;
  • plausible:社区版 v3.1.0,HTTP 端口 8000,启动时自动建库和迁移。

部署后给 plausible 服务绑定 同一个 域名。访问网址与实际域名不一致时,登录和统计脚本地址都会出错;要改地址,就修改 BASE_URL 变量并重新部署。

ClickHouse 要求 CPU 支持 SSE 4.2(x86)或 NEON(ARM),常见云服务器都满足,非常老的机器可能启动失败。

打开网站,注册第一个账号。Plausible 社区版默认 DISABLE_REGISTRATION=invite_only:第一个账号之后,新用户只能通过邀请加入。

要邀请成员或找回密码,需要邮件。在 plausible 服务的 变量 中添加 SMTP 设置,例如 MAILER_EMAIL、SMTP_HOST_ADDR、SMTP_HOST_PORT、SMTP_USER_NAME 和 SMTP_USER_PWD,然后重新部署。各项含义见 Plausible 的配置说明。SMTP 密码只填在变量里,不要提交到代码仓库。

登录后点 Add a website,填写要统计的域名,复制它给出的统计代码。

安装统计代码并验证

把复制的 <script> 放进网站每个页面的 <head> 中。用 Next.js、Vue 等框架时,放在全站共享的布局里;用 WordPress、Ghost 等系统时,放进主题或站点设置的“页头代码”。

然后用手机或无痕窗口打开你的网站,Umami 的 Realtime 和 Plausible 的实时访客数应该在几秒内出现这次访问。没有数据时:

  • 用浏览器开发者工具的 Network 面板,确认脚本请求返回 200;
  • 关掉广告拦截插件再试一次;
  • 确认网站上填写的统计域名和 Umami、Plausible 中添加的网站一致。

备份

统计数据都在数据库里。Umami 只需备份 postgresql 服务;Plausible 的账号在 postgresql 中,访问事件在 clickhouse 的数据卷中,两者都要保存。

在数据库服务的 备份与恢复 中可以直接备份 PostgreSQL。ClickHouse 是数据卷,备份时需要先停止项目。重要的数据,下载一份备份自行保存,并找时间在新项目中恢复一次,确认备份真的能用。详见备份与恢复。

常见问题

能导入 Google Analytics 的历史数据吗? Plausible 社区版可以导入 Google Analytics 4 的历史数据,但需要先在 Google Cloud 创建 OAuth 凭据,把 GOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET 加进 plausible 服务的变量,步骤见 Plausible 的导入说明。Umami 是否支持导入,以它当前的文档为准。

一个 Umami 能统计多个网站吗? 可以。每个网站在 Websites 中单独添加,各自有自己的统计代码。

统计服务挂了,会影响我的网站吗? 统计脚本加载失败不会阻止页面显示,只是这段时间的访问不会被记录。

Plausible 一直卡在启动? 看 clickhouse 和 plausible 服务的日志。常见原因是服务器内存不足,或 CPU 不支持 ClickHouse 要求的指令集。

从 Umami 模板或 Plausible 模板开始,先保护好管理员账号,再装统计代码、确认数据进来,最后安排备份。