自托管 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 模板开始,先保护好管理员账号,再装统计代码、确认数据进来,最后安排备份。
这是 coding agent 读到的内容,地址是 https://zenavo.app/zh-CN/blog/umami-vs-plausible.md。
无法加载 Markdown,请直接打开: https://zenavo.app/zh-CN/blog/umami-vs-plausible.md