不想给 Strava 交月费?试试用 Dreeve 把运动数据自托管在本地
最近运动平台的 API 策略越来越激进,很多原本免费的分析功能都被塞进了付费墙。对于跑者或骑行者来说,最焦虑的其实不是少几个图表,而是数据的“所有权”问题。如果平台哪天突然改政策或者限制导出,积累了几年的历史记录就成了对方的数字资产。在这种背景下,我尝试部署了 Dreeve(原名 Statistics for Strava),想看看在完全脱离云端依赖的情况下,本地化管理运动数据能达到什么程度。
Dreeve 的核心逻辑非常简单:它是一个基于 Docker 的自托管仪表板,允许用户将 FIT、TCX 或 GPX 格式的运动文件直接导入,或者通过授权 Strava 账号同步数据。一旦数据进入 Dreeve,所有记录都会存储在本地的 SQLite 数据库中。这意味着当你关闭容器或切断网络时,你的运动轨迹和成绩就实现了物理隔离,不再需要担心隐私泄露给第三方广告商。
在技术实现上,Dreeve 的选择很有意思。它采用了 PHP 8.5 + Symfony 框架,并配合 SQLite 存储。坦白说,在现在的自托管项目趋势中,PHP 并不算最“时髦”的选择,但实际运行效果出乎意料。在我的测试环境下,它的内存占用仅在几十 MB 级别,远低于那些使用 Node.js 或 Go 语言且必须依赖独立数据库服务的复杂系统。对于绝大多数单用户场景,这种轻量化设计极大地降低了维护成本。
部署过程几乎没有任何门槛,整个项目仅依赖一个 docker-compose.yml 文件。你不需要预先安装 MySQL 或 PostgreSQL,也不需要配置复杂的网络拓扑,只要修改几个环境变量后执行 docker compose up -d,整个仪表板就能在几秒钟内启动完成。这种“零配置”的体验对于非专业开发者非常友好。
进入后台后,Dreeve 提供的分析维度相当全面。它不仅能生成月度日历视图和里程碑统计,最实用的是它的“装备磨损追踪”功能,可以清晰地看到每双跑鞋跑了多少公里,提醒你何时该更换。此外,它还支持生成年度回顾和热力图,这些在 Strava 上可能需要付费或等待年终总结才能看到的数据,在 Dreeve 里是实时可见的。
不过,在深度使用过程中我也发现了一些局限性。首先,Dreeve 目前仅支持单用户模式,无法实现多租户管理,所以它更像是一个私人数字档案库,而不是一个社交平台。其次,虽然它主打脱钩,但如果你需要查看“分段成绩(Segments)”,依然需要依赖 Strava 的接口,因为分段数据的计算逻辑目前仍由平台掌控。
还有一个值得关注的细节是,Dreeve 内置了一个 AI 锻炼助手。这个功能在默认状态下是关闭的,需要用户手动在配置项中开启并填写 API Key。这种“默认关闭”的设计逻辑非常克制,避免了在用户不知情的情况下产生不必要的 API 调用或数据传输。
总的来说,如果你厌倦了在各个运动 App 之间切换,或者不想为了几个分析图表而支付月费,Dreeve 是一个极佳的替代方案。它把数据的控制权重新交还给了用户,让运动记录回归到纯粹的个人统计。唯一需要叮嘱的是,由于所有数据都存在一个 SQLite 文件中,请务必养成定期备份该文件的习惯,以免容器损坏导致数据丢失。
Dreeve要是得自己折腾数据库就太麻烦了,SQLite能直接跑起来吗?