这个项目能做什么
OpenAnalytics是一款开源Web分析产品,以pnpm单仓库形式发布,采用AGPL-3.0许可,设计为自托管部署。其核心理念是隐私优先、无Cookie的聚合测量:不存储Cookie、不进行设备指纹识别、不使用跨站点标识符,也不会存储原始IP地址。访问者身份采用每晚轮换的加盐哈希值,因此追踪轨迹最长仅限于单次访问,而非整个用户生命期。Do Not Track(请勿跟踪)和Global Privacy Control(全球隐私控制)会在采集器写入任何数据之前被尊重执行;城市级地理定位按站点单独启用,解析过程完全在本机数据库上完成,不会向外发出任何查询请求。由项目作者运营的一个托管实例在getopen.so使用相同代码运行。
该单仓库将产品拆分为多个独立应用:浏览器追踪器代码片段(体积预算由CI强制约束);负责验证、清理、限速和入队的采集器;负责处理会话、汇总、导出、邮件和删除并将数据写入ClickHouse的工作节点;覆盖认证、站点管理、密钥、分享、事件定义、漏斗、部件、收入、AI助手及MCP服务器的API控制平面;仅允许读取ClickHouse并验证Ed25519签名查询信封的查询网关;提供实时仪表板SSE流的实时应用;基于Next.js的仪表板;以及用于站点配置、查看统计数据和设备模式登录的`oa` CLI命令行工具。共享包涵盖域名逻辑、Postgres和ClickHouse的带迁移的数据库模式、Redis/Valkey、认证、OpenAPI规范、可观测性和集成模块。
存储方案分为三部分:Postgres用于控制平面,ClickHouse用于事件和聚合数据,另有两个Valkey实例——一个用于持久化事件队列,另一个用于易失性实时缓存。报告的功能包括页面浏览、自定义和属性驱动的事件、会话追踪、Web vitals性能指标、漏斗分析、按站点保留率、可嵌入的小部件、公共分享链接、来自自有Stripe账户的收入分析、CSV/JSON导入导出、MCP服务器和CLI工具。仪表板还展示从存在缓存获取的实时访客列表、每位访客的访问轨迹以及可选的城市级实时地球仪视图。
多项架构规则通过CI强制执行而非依赖惯例:Web应用只能导入共享合同包,OpenAPI文档是前后端之间的唯一接口点;ClickHouse只能通过查询网关访问;超出追踪器体积预算的变更会导致构建失败;CI任务会针对真实数据库断言Postgres模式中不包含任何账单表。
自托管文档记录在SELF-HOSTING.md中,使用生成脚本并通过一条`docker compose up -d`命令完成,支持自动TLS。系统要求Linux主机搭载Docker、四条DNS记录(app、api、c、rt子域名)、约4GB内存和25GB可用磁盘空间。发行版向ghcr.io推送十个镜像,安装方式仅需拉取而非本地编译;arm64主机或分支构建则需要在本地编译镜像。`upgrade.sh`脚本用于跨版本升级,并在过程中创建快照供`rollback.sh`回滚使用,因为迁移操作不可逆,官方推荐的回退方式是数据恢复。从源码构建时,需在编译后的迁移运行程序之前先完成各组件构建。仅AI助手和对象存储为可选项;未配置时这两项功能会自动禁用。CI风格的测试套件可在无需基础设施的情况下运行。
地理定位数据不随包分发(README注明其为60MB下载量且一个月内即过期);项目提供了一个辅助脚本来获取DB-IP数据库,采用CC BY 4.0许可使用。贡献通过PR直接合并至本仓库进行,需签署一次性CLA,版权仍归贡献者所有。代码采用AGPL-3.0许可,README明确指出,任何将修改版本作为网络服务运营的人员必须向其用户提供修改后的源代码;项目命名和托管服务的域名不属于许可证授权范围。
评论
0 评分人数达到10人后显示
登录后参与讨论。