私有化部署Plausible Analytics

67a6b45e630a6.webp

介绍

Plausible Analytics 是一个简单、轻量且以隐私为中心的网站分析工具。它的设计旨在替代更复杂、更难以使用的分析工具,如 Google Analytics。Plausible Analytics 主要特征包括:

  1. 隐私优先:它不使用 cookie,也不收集个人数据,从而遵循 GDPR、CCPA 等隐私法规。
  2. 简单易用:界面直观,用户可以快速上手,查看网站流量、访问者来源、页面浏览量、用户行为等基本指标。
  3. 轻量化:相较于其他分析工具,Plausible 的代码更轻,导致网站加载速度更快,对用户体验影响较小。
  4. 开源:Plausible 的核心代码是开源的,用户可以自行部署和定制,增强透明度和可控性。
  5. 实时数据:提供实时访问数据,帮助网站管理员及时了解流量动态。
  6. 多种集成:支持与多种其他工具和平台的集成,方便用户进行更深入的分析和报告。

总之,Plausible Analytics 是一个非常适合注重用户隐私和网站性能的个人和企业使用的网站分析工具。

部署

以下是部署 Plausible Analytics 的详细步骤,基于 Docker 和 Docker Compose 的自托管方案:


1. 环境准备

  • 服务器要求:Linux 系统(推荐 x86_64 架构,支持 SSE 4.2 指令集),至少 1GB 内存。
  • 安装依赖
    • Docker 和 Docker Compose(安装教程参考)。
    • Nginx(用于反向代理和 HTTPS)。

2. 下载配置

克隆官方或社区维护的部署模板(以下以 plausible/hosting 仓库为例):

mkdir plausible && cd plausible
git clone https://github.com/plausible/hosting
cd hosting

或使用预配置的压缩包(部分教程提供)。


3. 生成密钥

生成必要的加密密钥:

# 生成 SECRET_KEY_BASE(64位随机字符)
openssl rand -base64 64 | tr -d '\n' ; echo

# 生成 TOTP_VAULT_KEY(32位随机字符,可选)
openssl rand -base64 32 | tr -d '\n' ; echo

将生成的密钥写入 plausible-conf.env 文件。


4. 配置环境变量

编辑 plausible-conf.env,设置关键参数:

BASE_URL=https://stats.yourdomain.com  # 部署域名
SECRET_KEY_BASE=生成的64位密钥
DISABLE_REGISTRATION=true  # 禁止用户注册
MAILER_EMAIL=admin@yourdomain.com  # 发信邮箱(需配置SMTP)
SMTP_HOST_ADDR=smtp.yourdomain.com
SMTP_HOST_PORT=587
SMTP_USER_NAME=admin@yourdomain.com
SMTP_USER_PWD=yourpassword

(其他参数如数据库配置保持默认即可)。


5. 配置 GeoIP 数据库

Plausible 默认使用 MaxMind 的 GeoLite2 数据库:

  1. 注册 MaxMind 账号 并生成 Account IDLicense Key
  2. 编辑 geoip/geoip.conf
    GEOIPUPDATE_ACCOUNT_ID=你的AccountID
    GEOIPUPDATE_LICENSE_KEY=你的LicenseKey
    GEOIPUPDATE_EDITION_IDS=GeoLite2-Country,GeoLite2-City  # 可选城市级精度。
    

6. 启动容器

docker compose up -d

检查容器日志确认初始化成功:

docker compose logs server  # 查看关键日志如数据库迁移完成。

7. 配置反向代理(Nginx)

示例配置(需替换域名和证书路径):

server {
    listen 80;
    server_name stats.yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name stats.yourdomain.com;
    ssl_certificate /etc/letsencrypt/live/stats.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/stats.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;
        proxy_set_header X-Forwarded-Proto $scheme;
        # WebSocket 支持
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
}

重载 Nginx:sudo systemctl reload nginx


8. 处理广告拦截

修改统计脚本路径以避免被屏蔽:

<!-- 原脚本 -->
<script defer data-domain="yourdomain.com" src="https://stats.yourdomain.com/js/script.js"></script>

<!-- 修改后(通过反向代理重写路径) -->
<script defer data-domain="yourdomain.com" data-api="https://stats.yourdomain.com/api/custom" src="https://stats.yourdomain.com/js/custom.js"></script>

在 Nginx 中添加路径重写规则。


9. 可选配置

  • 集成 Google Search Console
    • 在 Google Cloud Console 创建 OAuth 客户端,获取 Client IDClient Secret
    • 将密钥添加到 plausible-conf.env 并重启容器。
  • 邮件通知:配置 SMTP 参数后,启用每周/每月报告。
  • 备份与更新
    # 更新
    docker compose pull && docker compose up -d
    
    # 备份数据库
    docker exec -t plausible_db pg_dumpall -U postgres | gzip > plausible_backup.sql.gz
    

常见问题

  • 首次登录无邮件验证:通过 PostgreSQL 命令手动验证邮箱:
    docker compose exec plausible_db psql -U postgres -d plausible_db -c "UPDATE users SET email_verified = true;"。
    
  • 内存不足:若使用城市级 GeoIP 数据库,需至少 2GB 内存。

通过以上步骤,即可完成 Plausible 的私有化部署。更多高级功能(如自定义域名、API 集成)可参考 官方文档


本站由 新·都在 使用 Stellar 创建。