这个项目能做什么

SWA (Self-hosted Website Analytics) 是一个用 Rust 编写的小型 Web 分析服务器,将数据存储在 SQLite 中。它旨在直接部署到服务器上运行而无需外部服务:用户界面、HTTP API 和追踪脚本通过 rust-embed 全部嵌入到一个可执行文件中,数据库则是一个单一文件。 项目描述的功能集如下: - 单一二进制分发,包含仪表盘、API 和追踪器。 - SQLite 存储采用 WAL 模式,基于文件且零配置。 - 双端口架构:一个端口提供接收事件的公共追踪器 API,第二个端口提供经过身份验证的仪表盘。 - 页面浏览量追踪以及命名的行动号召 (call-to-action) 事件,因此登录、购买、下载或其他转化可与访问量一同统计。 - 多域名支持:一个实例可追踪多个站点,并在仪表盘中进行切换。 - 面向隐私的行为:尊重 Do-Not-Track 协议,访客指纹每天轮换而非依赖 Cookie。 - 仪表盘由基于 Cookie 的会话保护,并使用 argon2 密码哈希。 - 仪表盘 UI 采用深色主题,显示实时统计数据、可选择的日期范围、Chart.js 图表和自动刷新。 默认端口为追踪器 API 的 3330 和仪表盘 UI 的 3331,数据库默认为本地文件;这三者均可通过命令行标志进行更改。首次运行的用户打开仪表盘端口,注册账户,然后将追踪代码片段添加到想要测量的站点中。追踪器大小约为 1 KB,可自动记录页面路径、来源、浏览器、操作系统和屏幕尺寸。除页面浏览量外,该脚本还公开了一个带有 action 方法的全局对象,可接收名称和可选的自由格式标签,这些事件将出现在仪表盘的 Actions 部分。 HTTP 接口相应地分为两部分。追踪器端口公开用于记录页面浏览量、记录命名操作和提供追踪脚本的端点。仪表盘端口公开经过身份验证的端点,用于概览总量(浏览量、独立访客、日均浏览量、总操作数)、每日页面浏览量序列、热门页面、热门来源、浏览器和操作系统分布、操作统计、过去五分钟内的活跃访客、追踪域名列表、设置获取与更新,以及域名的全量数据删除。注册、登录和登出端点位于同一端口但对公众开放,登录会设置会话 Cookie。 源代码分为 Rust 部分(包含 CLI 入口点、双服务器设置和 CORS 处理;SQLite 模式和查询;请求与响应模型;端点处理器;会话中间件)和前端目录(包含追踪器、仪表盘单页应用、登录与注册页面、图表和表格逻辑以及样式表)。部署指南涵盖了具有自动重启功能的 systemd 单元,以及一种可选的 git push-to-deploy 流程(使用裸仓库和 post-receive 钩子来检出代码、构建发布二进制文件并重启服务);README 提到服务器上必须安装 Rust,或者对于资源受限的机器可以复制交叉编译的二进制文件。该项目基于 MIT 许可证发布。