自托管经期追踪工具 Ovumcy:数据不上云,完全自主掌控
简介
什么是 Ovumcy ?
Ovumcy是一个开源的隐私优先型经期周期追踪工具,你可以把它部署在自己的服务器上。它帮助你、你的爱人、你的女友记录经期日期、症状和笔记,预测下一次经期、排卵期和受孕窗口,所有健康数据都保存在你控制的设备上,不会上传到任何第三方云服务。
主要特点
- 隐私优先:无遥测、无广告追踪、无外部网络请求(除非你主动配置了
Webhook或OIDC),数据完全由你掌控 - 智能周期预测:基于你记录的周期数据,自动预测下一次经期、排卵期和受孕窗口,算法完全透明
- 多维度记录:支持经期天数、流量强度、症状和自由笔记,还可以自定义症状名称
- 三种提醒方式:仪表盘横幅提醒、
Webhook推送(支持ntfy/Gotify)、私有日历订阅(.ics) - 可选 OIDC 单点登录:支持与自建身份提供商集成,可选混合模式或纯
SSO模式 - TOTP 双因素认证:可选启用,密钥使用
AES-256-GCM加密存储 - 数据导出:支持
CSV和JSON格式导出,数据随时可迁移 - PWA 支持:可添加到手机主屏幕,像原生应用一样使用
- 多语言界面:支持英语、俄语、西班牙语、法语、德语、意大利语六种语言
- 开源免费:基于
AGPL v3协议开源,可免费使用和修改
应用场景
- 个人健康管理:女性用户可以在自己的服务器上安全记录经期和症状,无需担心隐私泄露
- 家庭部署:部署在家庭
NAS上,家庭成员均可安全访问 - 隐私敏感用户:对于不希望将健康数据交给第三方云服务的用户,
Ovumcy提供了完全自主的数据控制权 - 开发者测试:开发人员可以快速搭建测试环境,体验自托管健康追踪应用

Ovumcy 是一个专注于隐私的经期追踪工具,让你在享受智能周期预测的同时,完全掌控自己的健康数据。
安装
在群晖上以 Docker 方式安装。
本文写作时,
latest版本对应为sha-01d5eac;

由于镜像托管在 ghcr.io,群晖 Docker 套件无法直接搜索,需要通过命令行拉取镜像。
docker cli 安装
如果你熟悉命令行,用 docker cli 更快捷
1 | # 新建文件夹 ovumcy 和 子目录 |
SECRET_KEY可以用openssl rand -hex 16命令生成32位十六进制字符串
docker-compose 安装
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
1 | version: '3.8' |
然后通过 SSH 登录到您的群晖,执行下面的命令:
1 | # 新建文件夹 ovumcy 和 子目录 |

安全配置说明
Ovumcy 的 docker-compose.yml 包含一套严格的安全加固配置,这也是该项目的一大特点:
security_opt: no-new-privileges:true:阻止容器内的进程通过suid、setuid等机制提升权限。即使容器被攻破,攻击者也无法通过提权获取宿主机的更高权限cap_drop: ALL:丢弃Linux内核的所有能力(capabilities),容器进程以最受限的非特权用户运行。这意味着进程无法执行任何需要特权的系统调用(如mount、chown、原始网络套接字等),极大地限制了攻击面read_only: true:容器根文件系统设为只读,除了显式挂载的卷(volumes)和tmpfs之外的任何路径都无法写入。这可以防止恶意程序在容器内写入或篡改系统文件tmpfs: /tmp:将/tmp目录挂载为内存文件系统(tmpfs),应用所需的临时写入操作只能发生在内存中,容器重启后自动清空,不留痕迹
这四项组合使用的效果是:即使容器被攻破,攻击者无法提权、无法写系统文件、无法持久化恶意载荷,最大程度限制了安全事件的影响范围。对于存储健康数据的应用来说,这样的防御纵深是非常有必要的。
环境变量说明
| 变量 | 说明 | 默认值 |
|---|---|---|
SECRET_KEY |
必填,用于会话加密的密钥 | 无 |
TZ |
时区设置,设为 Asia/Shanghai |
UTC |
DEFAULT_LANGUAGE |
默认语言(en/ru/es/fr/de/it) | en |
REGISTRATION_MODE |
注册模式(open/closed) | open |
DB_DRIVER |
数据库驱动(sqlite/postgres) | sqlite |
COOKIE_SECURE |
是否启用安全 Cookie | false |
SECRET_KEY说明:这是唯一必填的环境变量,用于加密会话、TOTP Secret等敏感数据。首次部署前必须设置,一旦设置后不要轻易更改,否则会使所有现有会话和TOTP密钥失效。
运行
在浏览器中访问 http://<群晖IP>:8674 即可进入登录界面
默认语言:
Ovumcy目前支持英语、俄语、西班牙语、法语、德语、意大利语六种语言,暂未内置中文界面,但可以在设置中切换语言。

首次使用需要点击注册按钮创建账户(默认开放注册)

recovery code 必须要保存好

完成简单的引导设置,填写基本个人信息

进入仪表盘开始记录经期数据

官方的动图演示了基本的使用流程

注意事项
- 数据备份:所有数据存储在
/app/data目录下的SQLite数据库中,定期备份该目录即可完整备份Ovumcy数据 - 密钥管理:
SECRET_KEY务必妥善保管,丢失后无法恢复加密数据;更改密钥会使所有现有会话、TOTP密钥和Webhook URL失效 - 端口冲突:如果
8080端口已被占用,修改ports映射中的本地端口即可 - 反向代理:如需通过域名和
HTTPS访问,建议在Ovumcy前配置反向代理(如Nginx、Caddy),同时设置COOKIE_SECURE=true和TRUST_PROXY_ENABLED=true - 非医疗设备:
Ovumcy提供的是基于日历统计的预测估计,不是医疗设备,不可作为避孕或生育治疗的依据
参考文档
Ovumcy — A menstrual cycle tracker you run yourself. Your data stays on your server.
地址:https://github.com/ovumcy/ovumcy-webOvumcy 官方网站
地址:https://ovumcy.comovumcy-web Docker 镜像
地址:https://github.com/ovumcy/ovumcy-web/pkgs/container/ovumcy-web