【隐私分析 01】GA4 隐私替代方案 2026:Plausible/Matomo 自托管,无 Cookie 也能看数据

GA4 因 Schrems II 与数据隐私框架(DPF)的不确定性在欧盟持续面临合规风险。本文对比 Plausible、Matomo、Fathom 三款隐私友好分析工具,并手把手教你用一台 VPS 自托管实现无 Cookie 追踪与数据自持。

延伸阅读

更多相关攻略推荐:【10刀以内VPS系列 01】年付不到70块钱的便宜VPS,到底能用【IP 地址 06】IPv4 枯竭之后:CGNAT / NAT64 【IP 地址 05】IPv6-Only VPS + Cloudfla512MB/1GB 小内存 VPS 优化实战:1 美元机器能跑什么 2026 年 BookStack 自建 wiki/文档站:5 美元

为什么 2026 年要重新考虑 GA4

Google Analytics 4(GA4)依然是市场占有率最高的网站分析工具,但如果你面向欧洲用户、或者做的是出海业务,2026 年它已经不是一个"无脑上"的选择。问题的核心不是功能强弱,而是合规风险。2020 年 7 月 16 日,欧盟法院(CJEU)在 Schrems II(C-311/18)判决中推翻了欧美之间的 Privacy Shield 框架,理由是美国的监控法律(尤其是 FISA 702 条款和行政命令 12333)可能强制美国服务商向情报机构交出欧盟个人数据,而这达不到 GDPR 要求的保护水平。GA4 本质上把欧盟访客的数据传回 Google 的美国服务器,于是它成了这场数据跨境传输争议的头号"被告"。

判决之后,奥地利、法国、意大利、丹麦、挪威、芬兰等国的数据保护机构(DPA)先后在具体案件中裁定某些 GA 实现方式不合法。谷歌后来补上了欧盟区域服务器、Consent Mode v2、更新版标准合同条款(SCC)等补救措施,但这些只能"降低"风险,无法根除底层架构问题。GDPR 第 6 条要求处理个人数据要有合法依据(对分析工具几乎总归为"同意"),第 7 条要求同意是自由给出、具体、知情、明确的——也就是说欧盟访客的 cookie 横幅不是可选项,而是强制项。更棘手的是,IP 地址、cookie 标识符、设备指纹在 GDPR 下都属于"个人数据",即便你没收集姓名和邮箱,GA4 依然踩线。

2023 年 7 月生效的欧美数据隐私框架(DPF)本想一劳永逸,但它同样被 noyb 等组织挑战,很可能迎来"Schrems III"。在法院最终裁决落地前,依赖 DPF 让 GA4 合法化,本质上是在赌一个可能无法通过司法复核的结论。对于不想当"测试案例"的普通站长和小团队来说,最稳妥的办法往往是直接换掉 GA4,而不是试图把它"配置到合规"。

三款隐私友好分析工具对比:Plausible / Matomo / Fathom

把 GA4 换掉之后,主流的隐私友好替代品有三类思路。第一类是"轻量无 Cookie"阵营,代表是 Plausible 和 Fathom;第二类是"功能完整的自托管平台" Matomo;第三类是更极简的 Simple Analytics、Umami 等。下面我们聚焦受众最广的三款。

  • Plausible:开源(AGPL-3.0),默认无 Cookie、不收集个人数据。它用访客 IP 和 User-Agent 的哈希来粗略区分独立访客,这个哈希每 24 小时轮换一次,原始 IP 永不落盘,因此无法跨天追踪单个用户。脚本体积小于 1 KB,仪表盘极简——访客、页面浏览、来源、热门页面、目标转化一目了然。可以云端托管,也可以完全免费自托管(Community Edition)。
  • Matomo:开源(GPL-3.0),功能最全,被法国 CNIL 认可。它默认会设置 cookie(_pk_id 13 个月、_pk_ses 30 分钟),但提供"无 Cookie 模式"——关闭所有 cookie,改用和 Plausible 类似的每日哈希。Matomo 自带目标转化、漏斗、电商报表、热力图与录屏(付费插件)、日志分析、内置标签管理器,还能用官方 Google Analytics Importer 直接导入历史 GA4 数据。自托管完全免费,数据 100% 归你。
  • Fathom:闭源的商业 SaaS,同样无 Cookie、不收集个人数据,持有 SOC 2 与 ISO 27001 认证。脚本约 3 KB,且通过自定义域名路由能绕过广告拦截器。它的定价对多站点组合很友好(入门档就含 50 个站点)。但 Fathom 不提供自托管选项,数据由它托管(欧盟或美国可选)。

简单说:想要"装好就忘、最省心"选 Plausible;想要"功能深度、数据完全自主、还能迁移历史 GA4 数据"选 Matomo;想要"多站点、商业级支持、抗广告拦截"选 Fathom。如果只需要页面浏览和来源,Simple Analytics 和 Umami 也是合格的轻量备选。

无 Cookie 追踪如何帮你免掉 GDPR Cookie 横幅

很多站长最怕的不是罚款,而是那个丑陋的同意横幅——它既影响首屏体验,又拉低转化率。无 Cookie 分析工具的逻辑是:如果我的脚本根本不在用户设备上写入任何信息、也不读取任何信息,那么 ePrivacy 指令第 5(3) 条(存储或读取设备信息需经同意)就不适用,cookie 横幅也就不需要了。

Plausible 和 Fathom 的立场是:既然不存个人数据,GDPR 第 6(1)(a) 条的"同意"要求也不触发;既然不在设备上读写,ePrivacy 也不触发,所以不需要横幅。法国 CNIL 也承认某些无 Cookie 分析配置可以在无需同意的情况下运行,不过这取决于具体实现。Matomo 在"无 Cookie 模式"下占据和前两者类似的法律地位;一旦开启 cookie 追踪或会话录屏,就需要像 GA4 一样接入同意管理平台(CMP)。

但要注意一个常见误区:"无 Cookie"不等于"自动合规"。工具还必须满足两点:数据要存在欧盟(或有充分性保护);不能收集不必要的个人信息。把脚本从 plausible.io 这类被广告拦截器记名的域名换成你自己的域名(反代模式),还能把被拦截率从约 30% 降到 5% 以下,数据更准。

用一台 VPS 自托管:成本几何

自托管最大的卖点是"数据所有权自持"——没有任何第三方经手访客信息,对于受严格数据主权要求约束的组织尤其省心。成本方面,Matomo 核心版和 Plausible Community Edition 都完全免费,你只需要付 VPS 和数据库的钱。

实际开销很低:Matomo 因为是 PHP/MySQL 架构,相对吃内存,1 GB 是底线、建议 2 GB 起步,月流量小于 10 万事件的个人站点用 4 GB 也能跑;Plausible 基于 Elixir + ClickHouse,建议至少 2 GB 内存(ClickHouse 需要内存),CPU 要支持 SSE 4.2 或 NEON 指令集。综合来看,一台 2–4 GB 内存、带 1 个 IPv4 的入门 VPS,月费通常在 5–15 美元之间,一年的自托管成本约 60–180 美元,往往第一年就比同等规模的云端分析订阅更划算,而且之后不再有按 PV 计费的"流量税"。

对出海站长友好的高性价比商家包括 RackNerdCloudConeVirtono:它们都提供低价年付 KVM VPS,自带 IPv4,适合放一台分析服务;其中 Virtono欧洲节点(如罗马尼亚、德国)覆盖不错,对欧盟数据驻留更友好。无论选哪家,记得把分析子域名(如 analytics.yourdomain.com)解析到这台 VPS,并关闭 CDN 代理让服务器自己处理 TLS。

实战:Docker 自托管 Plausible(Community Edition)

下面是一套可直接落地的生产级配置。先在 VPS 上装好 Docker,再拉取官方 community-edition 仓库(或手写 docker-compose)。关键是三个服务:PostgreSQL 存用户/站点/目标,ClickHouse 存事件,Plausible 本体。

services:
  plausible_db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: plausible
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: plausible_db
    volumes:
      - db-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U plausible"]
      interval: 10s
      retries: 5
  plausible_events_db:
    image: clickhouse/clickhouse-server:24.12-alpine
    restart: unless-stopped
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    volumes:
      - event-data:/var/lib/clickhouse
  plausible:
    image: ghcr.io/plausible/community-edition:v3.2.0
    restart: unless-stopped
    depends_on:
      plausible_db:
        condition: service_healthy
      plausible_events_db:
        condition: service_started
    command: sh -c "/entrypoint.sh db migrate && /entrypoint.sh run"
    ports:
      - "127.0.0.1:8000:8000"
    env_file: .env
volumes:
  db-data:
  event-data:

.env 里至少要有:BASE_URL=https://analytics.yourdomain.com、用 openssl rand -base64 64 生成的 SECRET_KEY_BASE、以及 DATABASE_URLCLICKHOUSE_DATABASE_URL。建议创建首个管理员账号后把 DISABLE_REGISTRATION=invite_only 打开,防止陌生人注册。

用 Nginx 反代并终结 TLS(Let's Encrypt 证书)。关键配置如下:

server {
    listen 443 ssl http2;
    server_name analytics.yourdomain.com;
    ssl_certificate     /etc/letsencrypt/live/analytics.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/analytics.yourdomain.com/privkey.pem;
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

启动后访问域名完成注册,添加站点,把这段脚本塞进每个页面的 <head><script defer data-domain="yourdomain.com" src="https://analytics.yourdomain.com/js/script.js"></script>。几秒内仪表盘就有数据了。想要更高数据质量,可把 /js/script.js/api/event 反代到你主站域名,让广告拦截器认不出来。

实战:Docker 自托管 Matomo(含无 Cookie 模式与归档 cron)

Matomo 比 Plausible 重,但功能也强得多。下面是一套 MariaDB + Matomo(PHP-FPM) + Nginx 的组合:

services:
  db:
    image: mariadb:11
    restart: unless-stopped
    command: --max-allowed-packet=64MB
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: matomo
      MYSQL_USER: matomo
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - db-data:/var/lib/mysql
  matomo:
    image: matomo:5-fpm
    restart: unless-stopped
    depends_on:
      - db
    environment:
      MATOMO_DATABASE_HOST: db
      MATOMO_DATABASE_USERNAME: matomo
      MATOMO_DATABASE_PASSWORD: ${MYSQL_PASSWORD}
      MATOMO_DATABASE_DBNAME: matomo
      MATOMO_DATABASE_TABLES_PREFIX: matomo_
    volumes:
      - matomo-data:/var/www/html
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    depends_on:
      - matomo
    ports:
      - "127.0.0.1:8088:80"
    volumes:
      - matomo-data:/var/www/html:ro
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
volumes:
  db-data:
  matomo-data:

Nginx 要配置 PHP-FPM 的 FastCGI 转发(把 .php 请求转给 matomo:9000),并拒绝访问 /config/tmp 等敏感目录。Matomo 会把原始事件聚合成预计算报表,建议加一个归档 cron,否则打开仪表盘时会同步聚合、很慢:

5 * * * * docker compose -f /opt/matomo/docker-compose.yml exec -T matomo \
  /usr/local/bin/php /var/www/html/console core:archive \
  --url=https://analytics.yourdomain.com/ > /var/log/matomo-archive.log 2>&1

装好后,进入"设置 → 隐私 → 匿名化访客 → 关闭 Cookie",即可切换到无 Cookie 模式:代价是丢失跨会话的访客唯一性,换来的是无需同意横幅。追踪代码里也可显式加一行:_paq.push(['disableCookies']);。若要完整数据主权,把 Matomo 数据库与 matomo-data 卷每日备份即可。

GA4 迁移到 Matomo/Plausible 的实操步骤

迁移不是"一键切换",稳妥做法是并行跑一段时间再割接。结合 Schrems II / DPF 的不确定性,建议按这个顺序来:

  • 第 1 步,评估与选型:先想清楚你要的是轻量无 Cookie(Plausible)还是深度功能(Matomo)。只看 PV 和来源就选 Plausible;需要漏斗、电商、热力图就选 Matomo。
  • 第 2 步,部署自托管实例:按上面任一 docker-compose 起好服务,配好域名、TLS、反代,创建管理员账号并关闭公开注册。
  • 第 3 步,导入历史 GA4 数据(仅 Matomo 完整支持):进"设置 → 市场 → 搜索 Google Analytics Importer → 安装"(官方免费插件),在 Google Cloud 控制台创建一个服务账号 JSON(授予 BigQuery Data Viewer + Analytics Reader 角色),上传后选择你的 GA4 媒体资源开始导入。页面浏览、来源、流量渠道会带过来;自定义事件和受众需要重新埋点。
  • 第 4 步,并行运行 30 天:在站点同时保留 GA4 和新工具脚本,对比总数。5%–15% 的偏差是正常的(机器人过滤、归因窗口不同),别被吓到。
  • 第 5 步,割接与收尾:确认新工具数据稳定后,移除 GA4 脚本,更新隐私政策,删掉 GA4 相关条目。至此你彻底摆脱跨大西洋数据传输的合规包袱。

Plausible 和 Fathom 一般不导入历史 GA4 数据,通常是在并行期结束后"重新开始"统计,所以如果你特别在意历史曲线连贯,Matomo 是更顺的选择。

延伸阅读

如果你想进一步夯实出海站点的基础设施,可以参考这几篇:VPS 新手入门指南VPS 安全基础外贸建站 VPS 选型 2026,以及商家评测 CloudCone 评测 2026Virtono 评测 2026。把分析服务和数据主站放在同一家稳定 VPS 上,运维更省心。