2026年10月14日 1 分钟阅读

不想把访客数据交给第三方?Potoo 把轻量网站分析装进自己的服务器

tinyash 0 条评论

不想把访客数据交给第三方?Potoo 把轻量网站分析装进自己的服务器

网站分析常常陷入两难:既想知道页面访问和来源,又不愿把访客数据交给外部平台,或为了统计功能额外部署一套庞大的服务。Potoo 是一个可自行托管的网站分析应用,采用单个服务进程提供仪表盘并收集访问数据,数据保存在本地 SQLite 文件中。它的设计重点不是追踪更多,而是尽量减少收集和留存。

它记录什么,又主动丢弃什么

Potoo 不使用 Cookie、localStorage 或浏览器指纹。收集请求到达服务器后,应用会从 IP 地址推导国家,从 User-Agent 推导设备类别、浏览器和操作系统,随后丢弃原始 IP 与 User-Agent。页面查询参数和片段也会被丢弃,只保留来源主机名,而不是完整来源 URL。

“独立访客”按站点和日期计算:服务器用每日盐值对 IP 与 User-Agent 生成哈希。因此同一访客在不同日期、不同站点不会被关联成长期身份。它仍然会保存汇总所需的访问记录,所以“隐私友好”不等于“零数据”;运营者仍应根据自身隐私政策说明统计行为。

仪表盘可以按站点查看,也能把选定站点合并分析;常见维度包括路径、来源、国家、设备、浏览器和操作系统。可选的点击追踪面向带有指定属性的页面元素,另有站外链接追踪。单页应用的 pushState 导航也会计入页面访问。对于关闭 JavaScript 的访问者,追踪代码还可提供 1×1 像素回退,但该方式只记录页面访问,不包含站内导航或点击事件。

用 Docker 启动自己的实例

项目 README 给出的容器镜像支持 amd64 和 arm64。下面的命令把持久化数据放在 Docker 命名卷中,并将服务端口映射到本机:

docker run -d --name potoo -p 8000:8000 -v potoo-data:/data ghcr.io/lmxrd/potoo

启动后访问 http://localhost:8000。首次打开会进入 /setup,创建第一个管理员;接着添加站点,并把站点页面生成的追踪代码片段放进自己的网站。实际部署到公网时,应在反向代理处配置 HTTPS;如果代理会传递 X-Forwarded-For,则按文档设置 TRUST_PROXY=1,让应用读取代理提供的客户端地址。不要在没有可信代理的环境中盲目启用该设置。

数据与 GeoIP 数据库保存在 /data。若希望使用宿主机目录而非命名卷,可使用 Compose:

services:
  potoo:
    image: ghcr.io/lmxrd/potoo
    restart: unless-stopped
    ports:
      - "8000:8000"
    volumes:
      - ./data:/data
    environment:
      TRUST_PROXY: "1"
      RETENTION_DAYS: "365"

其中 TRUST_PROXY 只适用于代理配置正确的场景;RETENTION_DAYS 可设置旧记录保留天数。README 还列出 DATABASE_PATH、SQLITE_SYNCHRONOUS、GEOIP_DB_PATH 和 GEOIP_URL 等配置。比如设置 GEOIP_URL 为空字符串可禁用 GeoIP 下载;需要自行承担国家信息缺失的影响。生产部署前建议先确认卷目录可写、反向代理规则正确,并通过备份流程保护 SQLite 文件。

数据可带走,也能做保留治理

Potoo 提供 CSV 导出,数据可按时间区间、站点及仪表盘维度筛选;管理员也可导入同格式数据。项目文档说明,导入会检查行数据,遇到无法读取的行或不存在的站点时会整体拒绝,而不是只导入一部分。应用还支持按保留天数清理旧数据。这样的组合让迁移、离线分析和数据生命周期管理不必依赖供应商控制台。

需要留意的是,自托管意味着运维责任转移到了自己手里:服务器更新、备份、访问控制、TLS 和磁盘空间都要纳入日常管理。默认 SQLite 同步策略偏向性能与可靠性折中,文档指出断电可能影响最近排队或提交的数据;对统计数据有更严格持久性要求时,应评估 SQLITE_SYNCHRONOUS 选项并做好备份,而不是假设容器重启就等于数据保护。

适合谁

如果你运营个人博客、小型产品站或多个独立站点,需要基本流量趋势、热门路径和来源统计,同时希望数据保存在自己控制的环境里,Potoo 值得试用。它不是复杂的营销归因或用户行为分析平台,也不应被当成合规工作的自动替代品;它提供的是一个边界清楚、便于自行部署的数据分析基线。部署后先检查追踪片段实际发送的字段、代理信任设置和保留策略,再将统计用途纳入面向访客的说明。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。