Plausible Analytics 自托管搭建指南:隐私优先的 Google Analytics 替代方案
Plausible Analytics 自托管搭建指南:隐私优先的 Google Analytics 替代方案
Google Analytics 是很多站长的默认选择,但它存在几个现实问题:统计数据上传到 Google 服务器、在中国大陆加载缓慢导致统计失真、被广告屏蔽器大量拦截、需要烦人的 Cookie 授权弹窗。对于注重隐私的网站或面向欧洲用户的业务,这些问题很难绕开。
Plausible Analytics 是一个开源的轻量级网站统计系统,完全可以自托管。统计脚本仅 1KB(GA 的脚本超过 17KB),无 Cookie、无跨站追踪、无个人数据收集,符合 GDPR 合规要求。自建之后,所有访问数据都存在自己的服务器,不经过任何第三方。界面设计极简,访客数、页面浏览量、流量来源、热门页面一页全部呈现,基本上打开就能看懂。
本文介绍如何用 Docker Compose + Caddy 在自己的 VPS 上部署 Plausible Analytics。
服务器配置
Plausible 后端使用 PostgreSQL 存储用户和网站数据,使用 ClickHouse 存储页面访问事件流,因此对内存有一定要求。
| 项目 | 规格 |
|---|---|
| CPU | 2 核 |
| 内存 | 4GB |
| 硬盘 | 40GB(事件数据随时间增长) |
| 系统 | Ubuntu 22.04 / Debian 12 |
推荐使用 雨云服务器 rainyun-com的 2 核 4GB 机型来部署 Plausible Analytics,性价比高,国内访问速度稳定。注册填优惠码 2026off 领 5 折优惠券,新用户首单直接半价。
准备工作
确保服务器已安装 Docker 和 Docker Compose:
# 安装 Docker
curl -fsSL https://get.docker.com | sh
# 验证安装
docker --version
docker compose version
准备好一个域名,例如 stats.example.com,并将该域名 DNS A 记录解析到服务器 IP。
安装 Caddy 作为反向代理和自动 HTTPS:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy -y
docker-compose.yml
Plausible 官方提供了 community-edition 配置仓库,直接克隆使用:
git clone https://github.com/plausible/community-edition /opt/plausible
cd /opt/plausible
cp plausible-conf.env.example plausible-conf.env
编辑 plausible-conf.env,填入必要配置:
# 生成随机密钥(必须填写)
SECRET_KEY_BASE=$(openssl rand -base64 48)
# 你的站点访问地址(必须是 HTTPS)
BASE_URL=https://stats.example.com
# 可选:邮件配置(用于发送注册邮件和邀请链接)
MAILER_EMAIL=noreply@example.com
SMTP_HOST_ADDR=smtp.example.com
SMTP_HOST_PORT=587
SMTP_USER_NAME=你的邮箱账号
SMTP_USER_PWD=邮箱授权码
SMTP_HOST_SSL_ENABLED=false
官方仓库自带的 docker-compose.yml 内容如下(无需修改,仅供参考):
version: "3.8"
services:
mail:
image: bytemark/smtp
restart: unless-stopped
plausible_db:
image: postgres:16-alpine
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
plausible_events_db:
image: clickhouse/clickhouse-server:24.3.3.102-alpine
restart: unless-stopped
volumes:
- event-data:/var/lib/clickhouse
- event-logs:/var/log/clickhouse-server
- ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
- ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
ulimits:
nofile:
soft: 262144
hard: 262144
plausible:
image: ghcr.io/plausible/community-edition:v2
restart: unless-stopped
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
ports:
- 127.0.0.1:8000:8000
env_file:
- plausible-conf.env
volumes:
db-data:
driver: local
event-data:
driver: local
event-logs:
driver: local
启动服务:
docker compose up -d
配置说明
Caddy 反向代理配置
编辑 /etc/caddy/Caddyfile:
stats.example.com {
reverse_proxy localhost:8000
}
重启 Caddy:
sudo systemctl reload caddy
Caddy 会自动申请 Let’s Encrypt 证书并配置 HTTPS,无需手动操作。
核心环境变量说明
| 变量 | 说明 |
|---|---|
SECRET_KEY_BASE |
会话加密密钥,必须填随机字符串 |
BASE_URL |
访问地址,必须是 HTTPS |
DISABLE_REGISTRATION |
设为 true 可关闭新用户注册 |
GOOGLE_CLIENT_ID |
可选,填入后可接入 Google Search Console |
使用方法
初始化管理员账号
访问 https://stats.example.com,首次打开会显示注册页面,创建管理员账号。如果部署时设置了 DISABLE_REGISTRATION=true,则需要先通过命令行创建用户:
docker exec plausible_plausible_1 /entrypoint.sh new_user
添加网站并接入统计代码
登录后点击"+ Add Website",输入网站域名(不含 https://),Plausible 会生成一段追踪代码:
<script defer data-domain="yoursite.com"
src="https://stats.example.com/js/script.js"></script>
将这段代码粘贴到网站每个页面 <head> 标签内。WordPress 可以用 Plausible 官方插件一键接入;静态站点直接在模板 <head> 里加即可。
查看统计数据
Plausible 的仪表板提供以下核心指标:
- 访客/浏览量:独立访客数、页面浏览数、跳出率、平均停留时长
- 来源:来源网站、UTM 参数分类、搜索引擎流量占比
- 页面:热门页面排行,支持按入口页和退出页筛选
- 地理:国家/城市分布,地图可视化
- 设备:浏览器、操作系统、屏幕尺寸分布
- 转化目标:可配置页面访问或自定义事件作为转化目标
设置转化目标
在网站设置 → Goals 中添加目标,例如追踪 /thank-you 页面作为表单提交转化:
页面访问目标:/thank-you
自定义事件目标:Download(需配合 JS 代码触发)
常见问题
Q:统计数据为零,没有记录到访问?
检查追踪脚本是否正确加载:在浏览器开发者工具 Network 标签中,访问网站时应该能看到对 stats.example.com/js/script.js 的请求,以及对 /api/event 的 POST 请求(返回 202)。
如果脚本加载正常但没有数据,检查 BASE_URL 配置是否与实际访问地址完全一致(包括 https 前缀)。
Q:ClickHouse 容器启动失败,提示内存不足?
ClickHouse 默认内存限制较高,可以在 clickhouse/clickhouse-user-config.xml 中调整:
<profiles>
<default>
<max_memory_usage>1073741824</max_memory_usage>
</default>
</profiles>
Q:如何备份数据?
# PostgreSQL 备份
docker exec plausible_plausible_db_1 pg_dump -U postgres plausible_db \
| gzip > /backup/plausible-pg-$(date +%Y%m%d).sql.gz
# ClickHouse 数据卷备份
docker run --rm \
-v plausible_event-data:/data \
-v /backup:/backup \
alpine tar czf /backup/plausible-ch-$(date +%Y%m%d).tar.gz /data
建议配合 cron 定时执行,备份文件异地存储。
Q:如何屏蔽自己的访问,避免污染统计数据?
在浏览器中安装 Plausible 官方扩展,或手动在 localStorage 中设置屏蔽标记:
// 在浏览器控制台执行,之后本机访问不计入统计
localStorage.setItem('plausible_ignore', 'true');
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)