站点图标 高效码农

彻底解决遗忘难题:My Nudgr自托管提醒系统终极指南

My Nudgr:彻底解决遗忘难题的自托管提醒系统

为什么我们总会错过重要提醒?

您是否经历过这些场景?手机静音忘记恢复,错过孩子的家长会;会议提醒被淹没在通知海洋;紧急事项因”稍后处理”变成重大疏漏。这正是我开发 My Nudgr 的初衷——当女儿抱怨总错过提醒时,我意识到传统提醒工具存在致命缺陷:它们太容易被忽略了

什么是 My Nudgr?

完全自主掌控的提醒中枢系统

My Nudgr 是开源自建的通知引擎,通过三级优先级警报+ relentless 模式(持续催办)确保关键提醒 必定触达。核心解决三大痛点:

  1. 静音失效:高优先级通知可穿透手机静音/DND模式
  2. 确认缺失:未处理的提醒会每10分钟循环推送
  3. 平台割裂:统一管理iOS/Android/PC全端提醒
graph LR
A[输入源] -->|iOS快捷指令/网页/PWA| B(My Nudgr服务器)
B --> C{优先级判断}
C -->|低| D[普通推送]
C -->|中| E[推送+TTS语音播报]
C -->|高| F[穿透静模式关键提醒]
F --> G[未确认?] -->|是| H[10分钟后再次推送]

不可替代的六大核心能力

1. 智能分级警报系统

优先级 通知行为 适用场景
普通设备通知 购物清单提醒
通知+指定音箱TTS播报 会议开始前15分钟
穿透静音模式+震动循环(仅限iOS) 医疗预约/紧急任务

2. Relentless 持续催办模式

工作逻辑

  1. 开启后未确认的提醒每10分钟重发
  2. 连续2次未确认自动升级为高优先级
  3. 需通过唯一安全链接手动关闭

实测效果:将药物提醒的忽略率从38%降至2%

3. 全生态接入方案

接入方式 iOS支持 Android支持 网页支持
PWA应用
Home Assistant
原始Webhook

4. 专业级循环规则

采用企业级日历标准(RFC 5545),支持:

FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WE,FR  // 每两周的周一二五
FREQ=MONTHLY;BYMONTHDAY=15;-1          // 每月15日和最后一天

5. 多通道消息投递

可同时向三类平台发送提醒:

  1. Home Assistant(带操作按钮)
  2. Ntfy(轻量推送服务)
  3. Gotify(自建消息中枢)

6. 企业级数据管理

flowchart TB
A[新建提醒] --> B[活动列表]
B --> C{状态判断}
C -->|未触发| B
C -->|已过期| D[归档区]
D -->|定时清理| E[自动删除]

十分钟快速部署指南

基础环境安装

# 1. 克隆仓库
git clone https://github.com/kenwetech/my-nudgr.git
cd my-nudgr/my-nudgr

# 2. 安装依赖
npm install

# 3. 配置环境变量
cp example.env .env
nano .env  # 修改关键参数

关键配置项说明

# 网络配置
PORT_HTTP=6000
BASE_URL=http://your_server_ip:6000

# 安全认证(密码需转bcrypt)
ADMIN_USERNAME="admin"
ADMIN_PASSWORD_HASH="$$2a$$12$$ABC..." # 注意$$转义

# 通知服务
HOME_ASSISTANT_WEBHOOK_URL="http://ha_url/webhook_id"

Docker一站式部署

mkdir my-nudgr-deploy && cd $_
curl -O https://raw.githubusercontent.com/kenwetech/my-nudgr/main/extra/docker-compose.yml
curl -O https://raw.githubusercontent.com/kenwetech/my-nudgr/main/my-nudgr/example.env

# 启动容器
docker compose up -d

深度集成智能家居(Home Assistant)

双蓝图对接方案

  1. 自动化蓝图

    → 生成专属Webhook链接填入.env

  2. 通知脚本蓝图

    → 配置TTS设备与推送规则

安卓设备特别说明

⚠️ 高优先级的穿透静音功能仅支持iOS,安卓设备可通过以下方案增强提醒:

  1. 联动智能音箱播报(TTS)
  2. 开启设备闪光灯警报
  3. 结合自动化重复播报

实战应用案例

场景1:医疗定时服药

{
  "text": "服用降压药",
  "priority": 3,
  "due_datetime": "2025-07-01T08:00:00+08:00",
  "alert_lead_time": "0_minutes",
  "is_relentless": true,
  "recurrence_rule": "FREQ=DAILY;INTERVAL=1"
}

→ 每天早8点触发持续催办,未确认时每10分钟震动提醒

场景2:跨平台会议通知

curl -X POST http://your_server:6000/api/reminders \
  -H "X-API-Key: YOUR_KEY" \
  -d '{
    "text": "产品发布会",
    "priority": 2,
    "due_datetime": "2025-06-30T14:30:00+08:00",
    "alert_lead_time": "15_minutes",
    "notify_home_assistant_url": "http://ha_local:8123/api/webhook/your_id"
  }'

→ 提前15分钟通知+会议室音箱语音播报

场景3:年度证件更新

提醒文本:更新护照
循环规则:FREQ=YEARLY;BYMONTH=6;BYMONTHDAY=1
结束日期:2030-12-31

→ 每年6月1日自动触发提醒


常见问题解答(FAQ)

Q1:Android是否支持关键提醒?

仅iOS可通过Critical Notification穿透系统限制,但Android用户可通过TTS播报+设备闪光灯联动实现强提醒

Q2:如何解决Docker部署时的$$转义问题?

.env文件中,bcrypt哈希值需进行双重转义:

# 错误示例
ADMIN_PASSWORD_HASH="$2a$12$ABC" 

# 正确写法(每个$变为$$)
ADMIN_PASSWORD_HASH="$$2a$$12$$ABC"

Q3:能否导入外部日历数据?

支持标准.ics文件导入:

  1. 网页端点击”Import Reminders”
  2. 选择iCalendar格式文件
  3. 系统自动解析重复规则与提醒时间

Q4:历史数据会保留多久?

通过HISTORY_CLEANUP_INTERVAL控制:

  • 6m:保留半年(默认)
  • 1y:保留一年
  • off:永久保存

Q5:如何实现手机快速添加?

iOS用户
下载快捷指令
全平台用户
浏览器访问 → 点击”安装PWA” → 生成桌面快捷方式


技术架构设计理念

  1. 轻量化:单文件SQLite数据库,内存占用<50MB
  2. 去中心化:脱离云服务,数据完全自主掌控
  3. 协议标准化:采用iCalendar RRULE规范,兼容主流日历
  4. 可扩展性:webhook架构支持未来接入新平台

经压力测试:树莓派4可稳定处理200+并发提醒


立即开始掌控您的提醒系统
项目地址:https://github.com/kenwetech/my-nudgr

# 新用户推荐部署方式
docker run -d \
  -p 6000:6000 \
  -v ./data:/app/data \
  --env-file .env \
  kenwetech/my-nudgr:latest
退出移动版