【隐私分析 02】2026 实测:Plausible 自建轻量分析,2GB VPS 摆脱 GA 与月费(避坑)
2026-08-16 · DevCraft Studio
手把手教你用一台 2GB 内存的便宜 VPS 自建 Plausible Community Edition:Web + Postgres + ClickHouse 三件套、SMTP 邮件、自有域名反拦截,以及 CE 和云版的功能差异避坑。读完你就能拿到亚秒级、免 Cookie 横幅的站点分析,彻底告别 GA4 的复杂与月费。
隐私友好分析 · 共 2 篇
先说结论:如果你只是想看自己网站每天有多少人访问、从哪来、看了哪些页面,完全没必要把 Google Analytics 那套又重又绕的东西绑在站上。2026 年我在一台 2GB 内存的便宜 VPS 上把 Plausible Community Edition(简称 CE)跑了起来,整个统计脚本只有约 1KB,不写 Cookie、不需要欧盟那种烦人的同意横幅,看板打开基本是亚秒级。这篇文章就是把从买机器到上线、再到踩坑的全过程讲清楚,照着做你也能摆脱 GA 和月费。
延伸阅读
更多相关攻略推荐:2026 VPS 选购决策树与白皮书:一张图看懂怎么买、2026 海外 VPS 行业趋势年报:价格、架构与格局全景、如何给 VPS 厂商做"信用评估":跑路、超售与售后风险排查手册、买 VPS 别只看标价:带宽超支、块存储、快照、IP 的真实总成本(、【VPS性价比与隐藏成本 07】VPS 性价比怎么算:每美元能买到多。
为什么要把 GA 踢了,自己搭 Plausible
GA4 现在越来越像一个"数据仓库"而不是"看板",事件、数据流、BigQuery linkage 一套套,普通内容站站长根本用不上。更麻烦的是合规:只要你的访客来自欧盟,就得弹 Cookie 同意横幅,否则就有 GDPR 风险。Plausible 走的是另一条路——它不采集个人数据、不种 Cookie,所以大多数司法辖区下你压根不需要同意横幅。
自建 CE 还有一个 GA 永远给不了你的好处:数据完全在你自己手里。访客的行为数据不出你的服务器,没人拿去卖广告,你也不会因为云版超量被按月收更多钱。CE 是 AGPL 开源的,自己跑不要给 Plausible 交一分钱,你只付 VPS 的租金。
- 免 Cookie 横幅:不种 Cookie,多数地区合规默认过关。
- 脚本约 1KB:对页面加载速度几乎零影响,Core Web Vitals 更稳。
- 看板亚秒级:单页展示核心指标,不用来回点。
- 数据主权:事件只存在你的机器上,想保留几年就几年。
准备工作:一台 2GB 的 VPS 就够了
Plausible CE 真正吃内存的是 ClickHouse。官方和社区普遍给出的底线是 2GB 内存,1GB 能跑但很挤,遇到数据量稍微涨一点就容易 OOM。CPU 方面要注意:ClickHouse 要求处理器支持 SSE 4.2 或 NEON 指令集,现在主流 x86 VPS 基本都满足,但下单前最好确认一下机型说明。
硬盘给 20GB 以上就很宽裕,分析数据按列存,体积小得惊人。系统用 Ubuntu 22.04 或 24.04 都行。商家方面,像 Contabo 的 CAX/VPS 系列经常给到 4GB 以上内存却只卖几欧,性价比极高;RackNerd 常年有年付十几刀的特价机,做这种轻量分析足够;如果你更看重网络和亚洲回程,DMIT 的机器延迟低、线路干净,适合把看板放在离访客近的地方。三家都可以,挑离你用户近、内存够的就行。
- 内存:2GB 起步,4GB 更舒服。
- 硬盘:20GB 以上 SSD。
- 系统:Ubuntu 22.04 / 24.04 LTS。
- 域名:准备一个子域,比如 stats.yourdomain.com,并解析到机器 IP。
安装 Docker 与准备环境
先在新机器上装好 Docker 和 Docker Compose v2。官方一键脚本最省事:
curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER newgrp docker docker --version docker compose version把你的子域(例如 stats.yourdomain.com)用 A 记录指向这台 VPS 的公网 IP,等 DNS 生效。后面我们用 Caddy 做反代自动签发 Let's Encrypt 证书,所以 80 和 443 端口要放通。顺手开一下防火墙:
sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable克隆官方 Community Edition 仓库
别自己手写一大堆 compose 配置,Plausible 官方维护了一个 community-edition 仓库,里面把三个服务都定义好了。直接克隆:
git clone -b v3.2.0 --single-branch https://github.com/plausible/community-edition plausible-ce cd plausible-ce仓库里自带的 compose.yml 定义了三件套:plausible(分析 Web 服务,镜像 ghcr.io/plausible/community-edition:v3.2.x)、plausible_db(postgres:16-alpine,存账号和站点配置)、plausible_events_db(clickhouse/clickhouse-server:24.12-alpine,存事件数据)。你基本不用改它,只需要补一个 .env。
配置 .env:BASE_URL、密钥、SMTP 三大件
仓库里有 .env.example,复制成 .env 再填。最关键的三样是 BASE_URL、SECRET_KEY_BASE 和 SMTP。
cp .env.example .env openssl rand -base64 64 openssl rand -base64 32第一行生成的是会话签名密钥,第二行可以当 Postgres 密码用。把 .env 里这几个值填好:
BASE_URL=https://stats.yourdomain.com SECRET_KEY_BASE=贴上你 openssl rand -base64 64 的输出 DISABLE_REGISTRATION=invite_only MAILER_EMAIL=analytics@yourdomain.com SMTP_HOST_ADDR=smtp.resend.com SMTP_HOST_PORT=587 SMTP_USER_NAME=resend SMTP_USER_PWD=你的SMTP密码 SMTP_HOST_SSL_ENABLED=true这里有三个最容易踩的坑。第一,BASE_URL 必须和你看板的真实访问地址一字不差,包含 https://,否则登录后会无限跳转。第二,SECRET_KEY_BASE 只在第一次开机前设一次,之后千万别改——改了所有已登录会话和密码重置链接全部失效。把它和 Postgres 密码一起备份好。第三,SMTP 一定要配,否则你收不到注册确认邮件,也做不了找回密码,等于把自己锁在外面。
启动、初始化与反代
直接拉起整套服务:
docker compose up -d第一次会下载镜像并自动建库、跑迁移,耐心等一两分钟。用 docker compose ps 看三个容器是否都 healthy。如果你让 Plausible 自己处理 SSL,就在 compose.override.yml 里暴露 80/443 并设 HTTP_PORT=80、HTTPS_PORT=443;更常见的做法是前面挂一个 Caddy,几行配置就能自动续证书:
stats.yourdomain.com { reverse_proxy localhost:8000 }浏览器打开 https://stats.yourdomain.com,创建第一个账号(它会是管理员),然后添加你的网站域名,复制官方给的那一行统计脚本。注意:自建后脚本 src 应该用你自己的域名,例如 https://stats.yourdomain.com/js/script.js,而不是 plausible.io。用自己的域名有两个好处:一是访客数据不进任何第三方,二是很多广告拦截插件默认只拦 plausible.io,用自己的子域能显著降低被误拦的概率。
把脚本塞进网站,并躲开拦截
把下面这行加进你网站每个页面的 <head> 里(如果是 WordPress 就塞进主题 header,如果是静态站就塞进模板):
<script defer data-domain="yourdomain.com" src="https://stats.yourdomain.com/js/script.js"></script>这行就是全部追踪代码,没有 Cookie,没有额外标签。为了进一步反拦截,可以再加一条 Caddy 的 rewrite,把 /js/script.js 在本地响应,避免被识别成外部统计域名。另外很多拦截列表是按 "plausible" 关键字匹配的,把子域起成 stats. 而不是 plausible. 也能少被误杀。上线后等几分钟,看板里就能看到实时访客了。
CE 与云版到底差在哪(避坑重点)
这是中文圈教程最爱漏的一段。Plausible 官方把代码分成 CE(免费自托管)和云版(订阅)。自托管能省月费,但也要接受 CE 砍掉的几个"高级功能":
- 营销漏斗(Funnels)、用户旅程(User Journeys)、电商收入目标:CE 没有,只有云版才有。
- SSO 与 Sites API:团队协作、自动化接入在 CE 里不可用。
- Bot 过滤精度:云版有进阶的机器人过滤(约 3.2 万个数据中心 IP 段),CE 只有基于 User-Agent 和引荐垃圾域名的基础过滤,偶尔会混进一些爬虫。
- 数据可移植与高级支持:云版有真人支持,CE 是社区支持,安全补丁要你自己跟。
所以避坑点很明确:如果你只是要干净的流量看板,CE 完全够;如果你要做电商转化漏斗或公司级 SSO,自建就别勉强,要么上云版,要么另外找方案。另外 CE 是半年一次的长期发布,新功能不会像云版那样每周更新,这也是"自托管是一种长期承诺"的真实含义。
2GB 内存规划与常见踩坑
在 2GB 机器上跑,资源要算细一点。大致分配:ClickHouse 最吃内存,给它留 1GB 以上余量;Postgres 300–500MB;Plausible Web 300MB 左右;系统本身再吃掉几百 MB。如果内存紧张,官方仓库的 clickhouse 配置目录里有 low-resources.xml,挂上它能调低 ClickHouse 的资源占用。顺便提醒一句:swap 最好还是开个 1–2GB,虽然 ClickHouse 官方不推荐依赖 swap,但作为 2GB 小机的内存安全垫,能在突发流量时避免整个容器被 OOM killer 直接干掉,代价只是偶尔慢一点点。
- 坑一:SECRET_KEY_BASE 改了会话全废,第一次设好就备份,别手痒。
- 坑二:BASE_URL 写错导致登录死循环,必须含 https:// 且与访问地址一致。
- 坑三:没配 SMTP 收不到邮件,注册卡在验证环节。
- 坑四:1GB 内存硬跑会 OOM,ClickHouse 一崩溃事件就写不进。
- 坑五:CE 没有漏斗和 SSO,需求错配比技术坑更致命。
备份、升级与收尾
自托管等于你自己当运维。备份要同时保住 Postgres 和 ClickHouse 两个数据卷,缺一不可:
docker compose exec plausible_db pg_dump -U plausible plausible > pg-$(date +%F).sql docker compose exec plausible_events_db clickhouse-client --query "BACKUP TABLE plausible_events TO File('/backups/events')"升级时盯紧 GitHub 上的 releases,先看官方升级 wiki,再拉新镜像 docker compose pull && docker compose up -d。安全更新出来要尽快打,因为 CE 的补丁只有你自己应用才对你生效。最后把 DISABLE_REGISTRATION 设成 invite_only,防止陌生人乱注册你的实例。
整套下来,一台 Contabo、RackNerd 或 DMIT 的 2GB 小机,一年租金几十块人民币,换来的是干净、快速、合规、完全自主的站点分析。值不值,你打开看板看到那个亚秒级加载的瞬间就懂了。