ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ntfy 隐私政策深度解读:数据收集边界、保留策略与自托管数据控制方案

ntfy 隐私政策深度解读:数据收集边界、保留策略与自托管数据控制方案 ntfy 隐私政策深度解读数据收集边界、保留策略与自托管数据控制方案【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy导读本文基于 ntfy 官方隐私政策文档docs/privacy.md最后更新于 2026 年 6 月 15 日编写逐项拆解 ntfy.sh 公共服务在账户信息、消息缓存、附件、访问令牌、Web Push 订阅等维度的数据收集与保留机制并结合本仓库源码服务端配置默认值、用户认证实现、Web Push 订阅存储、Stripe 集成验证每一项论断的真实实现。读完本文你将掌握ntfy 到底存了什么、存多久、经过哪些第三方链路、何时应选择自托管、以及自托管后每一项数据策略如何通过 server.yml 自行掌控。一、隐私承诺与开源立场ntfy 对隐私的承诺可以概括为三点不商业化你的数据ntfy.sh 服务不会对你提交的信息进行商业化利用或出售服务与软件始终保持免费与开源敏感场景可自托管如果你不信任 ntfy.sh或消息本身敏感可以自行部署服务端完全掌控数据匿名可用不使用 ntfy 也完全可以——注册账户不是使用前提匿名发布与订阅是被完整支持的。这一承诺的底气来自整个仓库的开放特性服务端全部源码位于本仓库配置与行为均可审计安装文档 提供了从源码、Docker、二进制包等多种自托管路径。二、ntfy.sh 收集哪些数据2.1 账户信息可选在 ntfy.sh 创建账户时服务端会收集以下字段数据项用途与存储方式是否可选用户名你选择的唯一标识符注册必需密码仅存储 bcrypt 安全哈希绝不保存明文注册必需邮箱地址账户找回、密码重置、邮件通知功能、付费计划账单经 Stripe可选添加后需通过确认链接验证手机号码仅在启用电话呼叫通知功能时收集经短信/呼叫验证可选源码层面的佐证用户管理模块在 user/types.go 中明确将Hash字段定义为 Password hash (bcrypt)认证过程在 user/manager.go 中通过bcrypt.CompareHashAndPassword比对哈希并且代码中有意引入了一次额外的 bcrypt 比较intentional slow-down to avoid timing attacks来对抗时序攻击——这证明服务端在架构上就没有保存明文密码的能力。2.2 消息与通知内容数据项处理方式消息内容在服务端临时缓存默认 12 小时用于支持消息轮询poll与客户端断网恢复缓存到期后即删除附件临时存储默认 3 小时到期后自动删除主题名称你发布或订阅的主题名会被服务端处理这是推送服务的核心机制无法避免这里需要说明消息缓存不是日志归档。缓存存在的唯一目的是支撑since...与poll1等 API 参数见 server/server.yml 中关于 cache-duration 的注释This is required to support the since... and poll1 parameter。缓存时间由服务端运维者配置且可将cache-duration设为0完全禁用缓存含磁盘/内存缓存。2.3 技术信息IP 地址用于限流rate limiting防止滥用可能被临时记录用于调试但通常关闭访问令牌Access Tokens如果创建访问令牌服务端会存储令牌值、可选标签、最近访问时间以及最近一次访问的 IP 地址Web Push 订阅如果启用浏览器通知服务端会存储你浏览器的推送订阅端点endpoint用于投递通知。2.4 账单信息仅付费计划付费计划的处理完全交由 Stripentfy.sh 仅存储 Stripe 客户 ID、订阅状态与计费周期不直接持有信用卡号或支付明细。并且官方明确声明集成中显式关闭了 Stripe 的遥测telemetry功能。源码佐证位于 payments/payments.goSetup函数在设置 Stripe 密钥的同时执行stripe.EnableTelemetry false // Whoa!从库层面杜绝了支付数据回传给 Stripe 遥测体系的可能性。三、第三方服务链路一览ntfy.sh 依赖少量第三方服务完成推送、语音、邮件与支付能力每条链路的数据流向如下3.1 Firebase Cloud MessagingFCM——移动推送使用 Google Play 版与 App Store 版移动应用接收通知时消息元数据与内容会经由 Google 的 FCM 基础设施传输。如果想彻底绕开 FCM有两个途径使用 F-Droid 版本的 Android 应用——该版本不包含任何 Google 服务或 Firebase配合自托管服务端使用即时投递特性。值得补充的是FCM 仅用于服务端到设备的推送通道而 Web Push 订阅端点也有严格校验。在 server/server_webpush.go 中服务端通过白名单正则只接受来自 Googlefcm.googleapis.com、jmt17.google.com、Mozillaupdates.push.services.mozilla.com、*.mozaws.net、Appleweb.push.apple.com、Microsoft*.notify.windows.com的官方推送端点从源头防止向任意第三方端点泄露订阅信息。3.2 Twilio——电话呼叫使用X-Call头触发电话呼叫通知时Twilio 负责向你已验证的手机号发起语音呼叫号码验证过程也经由 Twilio 的短信/语音完成。你的手机号会共享给 Twilio 以完成这些服务。3.3 Amazon SES——邮件投递使用X-Email头发送邮件通知或 ntfy 发送账户相关邮件邮箱验证、密码重置链接时收件人邮箱地址与消息内容会经由 Amazon Simple Email ServiceSES的基础设施传输。3.4 Stripe——支付付费订阅的支付处理完全由 Stripe 承担支付信息受 Stripe 隐私政策管辖ntfy.sh 侧不存储卡号等敏感支付数据。3.5 浏览器推送提供商——Web 通知Web 应用启用浏览器通知后推送消息经由你所用浏览器的厂商推送服务投递GoogleChromeMozillaFirefoxAppleSafariMicrosoftEdge你的浏览器推送订阅端点会共享给上述提供商以完成投递。四、移动端与 Web 端的数据存储4.1 Android 应用两个版本两条数据路径Android 应用有两个发行渠道其推送机制截然不同Google Play 版通过 FCM 接收推送官方明确表示应用内Firebase Analytics 被显式禁用F-Droid 版不含任何 Google 服务或 Firebase改用**前台服务foreground service**维持与服务端的直接连接。两个版本在本机都会存储以下数据已订阅主题及其设置、缓存的通知、用户凭据若配置了带认证的服务器、应用日志仅本地用于调试。4.2 iOS 应用通过 FCM经 Apple Push Notification service接收通知本机存储已订阅主题、缓存通知与用户凭据若已配置。4.3 Web 应用纯静态、纯本地ntfy Web 应用是一个静态网站所有数据都在浏览器本地IndexedDB存储订阅与缓存的通知Local Storage存储偏好与会话信息。关键承诺不使用任何跟踪型 CookieWeb 应用除了 ntfy API 之外没有自己的后端——也就是说网页本身不会把任何数据偷偷上报到第三方。五、数据保留期限默认值与你可控的一切数据类型保留期限自托管可控性消息12 小时服务端可配置cache-duration附件3 小时服务端可配置attachment-expiry-duration用户账户直到你删除账户由运维者掌控访问令牌直到撤销或删除账户由运维者掌控邮箱地址直到移除或删除账户由运维者掌控手机号码直到移除或删除账户由运维者掌控Web Push 订阅60 天无活动后自动移除由运维者掌控服务端日志视情况而定调试日志通常是临时的由运维者掌控以上默认值均可在服务端源码中得到印证server/config.goDefaultCacheDuration 12 * time.Hour第 20 行——消息缓存 12 小时DefaultAttachmentExpiryDuration 3 * time.Hour第 73 行——附件保留 3 小时DefaultWebPushExpiryDuration 60 * 24 * time.Hour第 43 行——Web Push 订阅 60 天无活动过期。Web Push 订阅的过期机制有完整的实现闭环存储层在 webpush/store.go 提供RemoveExpiredSubscriptions通过deleteSubscriptionByAge删除超过期限的订阅对应 webpush/store_sqlite.go 的DELETE FROM subscription WHERE updated_at ?服务端在 server/server_webpush.go 定期调用该清理逻辑并在过期前通过SubscriptionsExpiringwebpush/store.go向用户发出即将过期的警告。此外server/server.yml 与 (server/server.yml#L168) 展示了这两个核心配置项的自托管写法# 消息缓存时长默认 12h设为 0 可完全禁用缓存 cache-duration: 12h # 附件过期时长默认 3h例如 3h、20h attachment-expiry-duration: 3h六、自托管把数据控制权完全握在自己手里若你希望获得对数据的完全控制自托管是官方推荐路径详见 安装文档。自托管后你拥有全部存储与保留控制权消息缓存、附件保留、访问令牌、Web Push 订阅的清理时机全部由你配置集成自由裁量权是否使用 Firebase、Twilio、邮件投递或其他集成完全由你决定零第三方泄露除非你主动配置这些集成否则不会有任何数据共享给 ntfy.sh 或任何第三方。服务端与全部应用均为开源软件所有实现均可审计。自托管涉及的关键配置都可以在 server/server.yml 中找到包括上文提到的缓存时长、附件参数以及后端的数据库SQLite 或 PostgreSQL与认证体系auth-file/auth-default-access等。七、数据安全机制隐私政策中承诺的安全措施同样在源码中得到印证全链路 TLS/HTTPS 加密与 ntfy.sh 的所有连接均加密bcrypt 密码哈希见 user/types.go 与 user/util.goHashPassword使用 bcrypt 及可配置的 cost配合 user/manager.go 的恒定时间比较逻辑密码学安全的访问令牌令牌由安全随机数生成参考 server/server.yml 中tk_前缀的令牌示例与ntfy token generate命令默认不记录消息内容服务端日志默认不含消息正文。八、你的数据权利针对使用 ntfy.sh 服务的用户隐私政策明确了三类基本权利访问权随时查看自己的账户信息与数据删除权通过 Web 应用账户设置删除账户及关联数据访问令牌、邮箱、手机号等随之删除导出权消息在缓存期内可通过 APIsince...、poll1等参数随时取回。九、政策变更与联系渠道隐私政策会不定期更新每次更新都会在文档页标注新的 Last updated 日期历史变更可在文档的 Git 历史中追溯重大变更还会通过 Discord/Matrix 或 ntfy 官方公告主题另行通知。如需咨询隐私相关问题可发送邮件至 privacymail.ntfy.sh其他联系方式见 联系页面。小结ntfy 的隐私设计可以概括为三条主线——最小化收集匿名可用、非必需字段全部可选、不使用跟踪型 Cookie、自动过期消息 12 小时、附件 3 小时、Web Push 订阅 60 天无活动即清除、彻底透明全部源码开放、Stripe 遥测显式关闭、FCM 仅作投递通道且可完全绕开。对隐私要求更高的场景结合 server.yml 自托管即可把这些策略全部接管为本地配置。【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表