这个项目能做什么
Allos 是一款面向个人、家庭和护理人员的自托管健康记录、追踪与教练应用程序。其名称源自 allostasis(稳态调节),意指身体通过变化来维持稳定。该项目的目标是将个人健康信息汇总到一个私有的时间线中,而不是分散在第三方服务中。数据存储在操作者自己的 SQLite 数据库中,大多数分析在本地针对捆绑数据集运行,AI 功能为可选。
追踪范围
该应用涵盖了日常健康(症状、情绪、睡眠、体征、身体测量、营养、健康实践)、训练(力量、有氧、运动、常规、目标、恢复情况)、医疗历史(病情、过敏、手术、免疫接种、预约、护理计划、家族史)、化验与文档(生物标志物、参考范围、扫描件、PDF、记录导入)以及药物与补充剂(计划、剂量历史、续药、依从性、本地检查的相互作用警告)。家庭支持包括独立配置文件、护理人员访问权限、只读授权和跨配置文件视图,且每个配置文件不需要单独登录。数据可通过 Health Connect、Strava、Oura、Fitbit 导出、Withings、日历馈送以及基于 FHIR/CCD 的导入(如 MyChart)获取。提醒可通过 Telegram、Web Push、Home Assistant 或电子邮件发送,所有内容均可导出为 JSON、CSV、FHIR 或上传文件。
设计原则
README 列出了五项原则:默认本地化,外部服务需选择性加入;将健康视为“引导”而非“评分”,因此显示原始信号而非单一的虚拟健康分数;提供信息性且引用来源的发现,而非指令性建议;除非涉及安全问题,否则保持冷静的语气,药物安全提醒的处理比其他观察结果更谨慎;用户控制,这意味着手动修正可在同步后保留,优先级由用户掌控,且数据可导出。
部署
推荐使用 Docker Compose 部署。它会启动 Web 应用以及一个用于通知和备份的小型调度服务。操作者克隆仓库,将 .env.example 复制为 .env,并至少设置管理员密码和 checkout 目录之外的绝对路径 DATA_DIR(默认为 ./data)。第一个管理员密码仅在创建第一个登录账户时适用。随后通过 docker compose up -d --pull always 启动堆栈,并通过 3000 端口访问。更新通过从 GitHub Container Registry 拉取发布的镜像实现;可通过 IMAGE 变量固定特定版本。数据库迁移在启动时自动运行,数据库会先被复制到 data/backups/pre-migration,如果无法完成此复制,容器将拒绝启动。
从源码运行需要 Node.js 24(在 .nvmrc 中固定)、npm 以及 better-sqlite3 的原生构建前提条件;运行 npm ci 和 npm run dev 即可,SQLite 数据库将创建在 data/allos.db。种子命令可加载数周的合成样本数据,但 README 警告不要在包含真实记录的实例上运行此命令。
人员与访问
管理员在“设置 > 人员与访问”中为被追踪者创建配置文件,为登录用户创建登录账户,并授予对选定配置文件的读/写或只读权限。管理员可以访问所有配置文件,因此在该界面中的条目决定了哪些配置文件的提醒会发送给他们;通知为每个配置文件独立选择加入。
数据、备份与隐私
DATA_DIR 下的持久状态包括 allos.db、上传的医疗文件、日志和经过验证的备份以及迁移前副本。内置的每夜快照与实时数据库共享卷,因此 README 建议将 BACKUP_DEST_DIR 配置为第二个挂载位置并在设置中验证。快照不包括上传的文件,离线卷备份功能会单独镜像这些文件。可选服务仅接收启用该功能所需的数据:可配置一个兼容 Anthropic 的端点(包括通过 AI_BASE_URL 配置的自托管端点),SMTP 提供登录邀请、密码重置和选择性加入的通知邮件(默认不含内容,因此健康详情不会进入收件箱)。
技术与许可
技术栈采用 Next.js 16(含 App Router 和 Server Actions)、React 19、TypeScript、通过 better-sqlite3 实现的 SQLite、Tailwind CSS 和 Recharts,以及可选的兼容 Anthropic 的 AI。开发检查包括格式化、lint、类型检查、单元测试、独立的 SQLite 集成测试、针对隔离种子数据库的 Playwright 端到端测试以及生产构建;贡献者可参考 AGENTS.md 了解架构、数据范围、迁移和测试约定。Allos 基于 GNU Affero General Public License v3.0 (AGPL-3.0-only) 许可。
评论
0 评分人数达到10人后显示
登录后参与讨论。