OneTimeSecret v0.26.19 介绍与选型指南

OneTimeSecret v0.26.19 开源阅后即焚秘密分享服务介绍与选型:软件定位、Ruby+Valkey 技术架构、秘密生命周期、v0.25 Organizations/SSO 新特性,及与 PrivateBin/Yopass/SnapPass 的量化对比,数据均于 2026-10-26 联网溯源。

OneTimeSecretOneTimeSecret阅后即焚密码安全Redis缓存2026/10/26

OneTimeSecret v0.26.19 介绍与选型指南

目标:说清 OneTimeSecret 这款开源「阅后即焚」秘密分享服务是什么、能做什么、怎么选型。本篇为认知与选型篇,全部信息通过官方仓库、官方镜像仓库与公开渠道联网溯源(查询日期 2026-10-26),不做本地实测;部署实操与功能验证见本专栏后续各篇。

一、环境信息

本篇是软件介绍与选型篇,不涉及本地部署实验,本节记录取证口径与各软件的版本基线,便于读者复核数据时效。

  • 取证日期:2026-10-26(文中所有版本号、社区数据均为此日实查)
  • OneTimeSecret 最新稳定版:v0.26.19(GitHub Releases 实查,发布于 2026-10-25——取证当日仍在高频发版,属于强活跃期项目)
  • 官方仓库:onetimesecret/onetimesecret(GitHub),项目由 Delano Mandelbaum 于 2012 年发起并维护至今
  • 官方镜像:Docker Hub onetimesecret/onetimesecret(另有 ghcr.io/onetimesecret/onetimesecret 镜像源与 -lite 精简变体 tag),Docker Hub 累计拉取 10 万次以上(2026-10-26 实查)
  • 官方云服务:onetimesecret.com(同名 SaaS,2012 年运营至今,开源版与 SaaS 同源)
  • 开源协议:Apache-2.0(仓库 LICENSE 实查),对商业闭源集成友好
  • 数据来源:GitHub Releases 页面、仓库 README 与 LICENSE、Docker Hub 镜像仓库页、shields.io 公开徽章数据

各对比软件版本基线(2026-10-26 实查):

软件最新发布版本GitHub StarsLicense技术栈
OneTimeSecretv0.26.19(2026-10-25)3kApache-2.0Ruby / Valkey(Redis)
PrivateBinv2.1.08.7kGPLv3PHP(无数据库依赖)
Yopassv16.0.13.2kApache-2.0Go / Memcached 或 Redis
SnapPass滚动提交(无正式 Release)约 0.9kApache-2.0Python/Flask / Redis

表格解读:四者同属「自托管秘密/口令分享」赛道,但技术路线分野清晰——PrivateBin 是星数最高的老牌零知识粘贴板(客户端加密、PHP 单体、无需数据库);Yopass 是 Go 单二进制的轻量一次性消息分享器;SnapPass 是 Pinterest 出品的极简口令分享工具(Star 数与功能面都最小,社区以自用魔改为主);OneTimeSecret 则是其中唯一具备「完整账户体系 + 组织协作 + 三代 REST API + 商业 SaaS 同源验证」的产品化平台。Stars 数据上 PrivateBin 一骑绝尘,但注意其定位是「加密粘贴板」而非「企业级秘密分享平台」,二者重叠但不等价。

二、软件概述

OneTimeSecret(下文简称 OTS)是一个开源的一次性秘密分享服务,官方口号是「Keep sensitive info out of your email & chat logs」——把敏感信息从邮件与聊天记录里挪出去。典型场景:你想把一台服务器的 root 密码发给外包同事,直接发 Slack/邮件会让明文永久留在聊天记录与对方收件箱里;改用 OTS 则生成一条一次性链接,对方打开看一次,秘密即刻销毁,聊天记录里留下的只是一条看过即失效的 URL。

  • 核心能力:把一段文本(密码、API Key、恢复码、配好口令的备注)存为「一次性秘密」,生成带随机密钥的分享链接;链接被读取一次后秘密立即销毁(第二个人打开只能看到「已阅」占位页);同时支持 TTL 到期自动清除与可选口令二次保护。
  • 一次性语义是硬约束:读后即焚不是「标记已读」而是真删除——服务端在读取动作完成后立即销毁密文,这是它与常规粘贴板(PrivateBin 的「读 N 次」模式)最本质的行为差异。
  • 开源与商业同源:onetimesecret.com SaaS 服务与 GitHub 开源版出自同一代码库,SaaS 自 2012 年运营至今 14 年,产品形态经受了长期真实流量验证;开源版适合「秘密不出内网」的合规场景。
  • 开源协议:Apache-2.0,无 AGPL 式的网络服务传染条款,企业可以放心二开与内网商用。
  • 部署形态:官方主推容器化部署(Docker Hub + GHCR 双镜像源,tag 与 GitHub Release 同步);源码路线为标准 Ruby 应用构建,无预编译二进制。
  • 维护方:创始人 Delano Mandelbaum 长期主导,2022 年起重启高强度迭代(v0.12 → v0.26,几乎每月多个 Release),v0.20+ 引入 Vue 3 前端重构、v0.24 引入 Rodauth 认证体系、v0.25 引入 Organizations/SSO/自定义域名,处于「老树发新枝」的活跃通道。

💡 技术拓展:「秘密分享服务」与「密码管理器」是两类不同的软件,选型时不要混淆——

类型代表软件职责数据生命周期
一次性秘密分享(本文)OneTimeSecret / Yopass / SnapPass把一段敏感文本安全地交给指定的人看一次小时/天级,读后即焚
密码管理器Vaultwarden / KeePass / HashiCorp Vault长期存储与授权访问成百上千条凭据长期,可审计可轮换

OTS 不适合当密码库用(秘密看完就没了,无法检索回看),密码管理器也不适合做一次性传递(分享出去的是长期有效的凭据视图)。两者在企业里是互补关系:密码库管存量,OTS 管传递。

三、核心架构

本节基于官方仓库 README、源码依赖清单与镜像内配置文件(2026-10-26 联网溯源 + 官方仓库公开文件核对)描述 OTS 的技术架构与依赖链。

3.1 技术栈构成

层技术说明
语言运行时Ruby(3.x)官方镜像基于 Ruby 基础镜像构建
Web 框架Otto(Sinatra 血统的自研路由框架)轻量 Rack 栈,作者自研并长期维护
认证体系Rodauth(Ruby 业界标准认证框架)v0.24+ 引入,覆盖注册/登录/口令/会话/账户 API
数据访问Familia(Redis/Valkey ODM)作者自研的 Redis 对象映射层,秘密、账户、会话均为 Redis 数据结构
应用服务器Puma当前版本镜像内为 7.2.1
前端Vue 3 + Redux 状态管理v0.20+ 前端重构产物,前后端同仓
数据存储Valkey / Redis(5+ 兼容)唯一数据层:秘密密文、账户、会话、审计全在里面

表格解读:OTS 的外部依赖链极短——除应用进程外只需要一个 Valkey/Redis。没有 PostgreSQL/MySQL,没有消息队列,没有对象存储;秘密数据天然带 TTL,与 Redis 的过期语义完全同构。这意味着备份策略、高可用方案、安全边界全部围绕一个 Redis 实例设计;反过来,Redis 也是唯一的状态组件,其持久化配置(AOF/RDB)直接决定「实例重启后在途秘密是否存活」。Valkey 是 Redis 的开源分支(协议兼容),官方两条路线都支持,配置项命名保留了 VALKEY_URL=redis://... 的兼容写法。

3.2 运行架构与秘密生命周期

OTS 以单进程(Puma)对外提供 HTTP 服务,内部数据流围绕一条秘密生命周期展开:

  • 创建(conceal):创建者提交明文(Web 表单或 API),OTS 生成一个随机认证密钥,明文以密文形式写入 Redis 并绑定 TTL/口令/有效期元数据;完整链接 = 服务地址 + 秘密标识 + 随机密钥——随机密钥只出现在创建者拿到的完整 URL 中,服务端不落盘该密钥,这保证了「拿到链接才有能力解密」的语义。
  • 待读(pending):秘密在 TTL 窗口内等待读取;可叠加口令保护(读取时需输入口令,口令以哈希校验);创建者可通过 receipt 回执页随时查看「是否已被读取/是否已过期」,并可主动 burn 销毁。
  • 读取(reveal):收件人打开完整链接(可选输入口令),OTS 校验密钥与状态后返回明文并立即销毁密文——此后任何人(包括创建者)再访问同链接只会得到「已失效」状态(HTTP 410 Gone)。
  • 过期清除:未读秘密在 TTL 到期后由 Redis 过期机制清除,不留残骸。
  • 账户与组织数据:注册账户、API Token、组织(Organizations,v0.25+)与成员关系同样存于 Redis;账户 API(API Token 签发、口令修改)挂载在 /api/account 路径下。
  • 管理面:内置 /colonel 管理面板,需将账户提权为 colonel 角色后访问(提权走 CLI 而非环境变量自动赋予,详见本专栏部署与配置篇)。

3.3 发布形态(2026-10-26 实查)

  • 官方容器镜像:Docker Hub onetimesecret/onetimesecret(100K+ 拉取)与 GHCR ghcr.io/onetimesecret/onetimesecret 双源同步,tag 与 GitHub Release 一一对应;另有 -lite 变体(更精简的构建层)。
  • 源码 Release:GitHub Releases 提供源码 tag,不提供预编译二进制——服务器裸机部署需自备 Ruby 3.x 与 Bundler 构建链(本专栏《Debian 12 安装 OneTimeSecret v0.26.19 指南》实测了完整源码路线)。
  • 托管版:onetimesecret.com 官方 SaaS,免费档即可发一次性秘密,适合不想自托管的个人;付费档面向团队。

四、功能特性

本节功能清单来自官方 README、v0.25/v0.26 Release Notes 与官方文档站(onetimesecret.io)溯源归纳。

4.1 秘密分享核心

  • 一次性读取:读后即焚,第二访问固定 410 Gone。
  • TTL 档位:创建时可选有效期档位(5 分钟至 30 天),匿名用户上限默认 7 天;到期的在途秘密自动清除。
  • 口令保护:可为秘密附加口令,收件人需「链接 + 口令」双因子才能读取;口令可强制复杂度(服务端可配置最小长度与复杂度策略)。
  • 随机密码生成:内置 generate 能力,直接生成高强度随机口令并转为一次性链接,适合「给新服务器设初始密码」场景。
  • 回执与审计:创建者持 receipt 回执可查每个秘密的已读/过期状态,可主动 burn;API 侧同样有 receipt 查询端点。

4.2 账户与组织(v0.25+ 重头戏)

  • 账户体系:注册/登录/口令管理由 Rodauth 驱动;每个账户可签发 API Token(可注销轮换)。
  • Organizations(组织):v0.25 新增,团队可以在一个实例内建组织、管理成员,把「个人工具」升级为「团队设施」。
  • SSO 单点登录:v0.25 新增,企业 IdP 对接路线。
  • 自定义域名:v0.25 新增,自托管时可绑定自己的域名作为分享链接的展示域名。
  • Incoming Secrets(秘密收件箱):v0.25 新增,向同事/客户公开一个「收秘密入口」,收到的秘密进入账户专属空间,弥补「匿名链接无法归档」的短板。
  • Regions(区域化):v0.26 线引入的区域化能力,为多区域部署与数据驻留合规铺路。

4.3 REST API 三代并存

  • v1(legacy):表单编码接口(如创建/读取/销毁三件套),支持匿名与 Basic 认证(邮箱 + API Token),向下兼容大量存量脚本。
  • v2(stable,推荐):JSON 协议,覆盖 conceal(创建)/ generate(生成)/ reveal(读取)/ receipt(回执)/ burn(销毁)及 guest(匿名)变体;仅支持 Basic 认证(用户名填账户邮箱、密码填 API Token),不支持 Bearer。
  • v3(演进中):新一代接口的渐进引入线。
  • 账户 API:挂载在 /api/account(不带版本前缀),覆盖 API Token 签发/注销、口令修改等账户自管理端点。

4.4 管理与运维

  • colonel 管理面板:内置的管理视图(用户/系统级信息),角色提权走 CLI。
  • ots CLI:镜像与源码内自带 bin/ots 命令行,覆盖客户管理、角色提权等运维动作。
  • 健康检查:内置健康检查端点与健康检查脚本,便于编排层探活。
  • 多语言界面:Web 界面支持多语言(含中文)。

五、快速开始(最小可用形态)

本篇为认知篇,仅给出官方文档给出的最小部署形态以建立直观认识,本节内容为官方形态引用而非本地实测;逐命令的实测过程见本专栏部署各篇。

官方自托管主路径是官方镜像 onetimesecret/onetimesecret,最小可运行条件是:一个可达的 Valkey/Redis 实例 + 一组核心环境变量(会话签名密钥 SECRET、数据源 VALKEY_URL、对外地址 HOST 等)。启动后访问 Web 界面即可匿名创建第一条一次性秘密——OTS 的设计允许「不注册也能用」,注册账户解锁 API Token、组织与回执管理能力。

💡 说明:SECRET 是会话/加密签名的根密钥,官方要求以强随机串生成并在升级中保持不变——更换该密钥会导致既有会话失效;自 v0.26 起,该密钥还参与秘密加密(配套 SECRET_VERIFIER_MODE 启动校验),生产环境一旦确定就不要再改,否则旧秘密将不可解密(官方提供 warn/enforce/off 三档校验模式应对)。完整可复制、带实测回显的部署过程见本专栏《OneTimeSecret v0.26.19 Docker Compose 部署指南》。

六、适用场景与限制

6.1 适用场景

  • 运维凭据传递:服务器初始密码、数据库口令、堡垒机账号交给同事/外包/新员工,避免明文躺在 IM 里。
  • CI/CD 与自动化:脚本通过 v2 API 程序化创建一次性秘密,把部署凭据「推」给部署人,用完即焚。
  • 客服与对外支持:把临时凭据/恢复码发给客户,链接一次有效,客户侧无长期暴露面。
  • 企业合规传递:内网自托管(秘密不出企业边界),配 Apache-2.0 协议与自定义域名,安全团队容易过审。

6.2 限制与风险

  • 服务端加密而非客户端零知识:明文在提交时经过服务端(URL 中的随机密钥不在服务端留存,但服务端进程视野内存在明文瞬间)。若威胁模型要求「服务器被完全攻破也不泄露在途秘密」,应评估 PrivateBin/Hemmelig 这类客户端加密路线——这是选型时最需要想清楚的一条分界线。
  • Redis/Valkey 是单点状态:无独立数据库意味着运维简单,但也意味着备份/持久化/高可用全押在 Redis 配置上;AOF 关闭时实例重启会丢掉全部在途秘密(对「阅后即焚」场景通常可接受,但要知道)。
  • 邮件通知需自配 SMTP:账户验证、回执邮件等依赖外发邮件,未配置 SMTP 时相关功能降级(注册流程实测可走通,但邮件不可达)。
  • 无预编译二进制:裸机部署必须走源码构建(Ruby + Bundler),对非 Ruby 团队有构建链门槛;不想碰构建链就选官方镜像。
  • 版本仍在 0.x:v0.26 距 1.0 尚有距离,API 在三代并存演进中,大版本升级前建议细读 Release Notes 并锁定版本。

七、同类选型对比

本节从社区活跃度、版本节奏、功能定位与兼容矩阵四个维度量化对比三款主流开源秘密分享工具。所有数据于 2026-10-26 通过各项目 GitHub 仓库、Releases 页面与第三方统计实查。

7.1 社区活跃度与版本节奏(量化)

维度OneTimeSecretPrivateBinYopassSnapPass
GitHub Stars(2026-10-26)3k8.7k3.2k约 0.9k(第三方统计快照)
最新 Releasev0.26.19(2026-10-25)v2.1.0v16.0.1无正式 Release(滚动提交)
2026 年发版节奏极活跃:月均 2+ 个 Release平稳维护平稳维护低频(Pinterest 内部工具属性)
官方镜像拉取量100K+(Docker Hub 实查)数千万级(老牌粘贴板)数百万级无官方镜像
同源 SaaSonetimesecret.com(2012 至今)无无无
商业支持官方 SaaS + 开源同源社区社区Pinterest 内部

表格解读:论星数 PrivateBin 最高(8.7k,14 年老牌项目的沉淀);但论当前迭代强度,OTS 是四者中唯一处于「月均多 Release 强活跃期」的项目——v0.25/v0.26 连续引入 Organizations、SSO、自定义域名、Incoming Secrets、区域化,产品化速度明显快于另外三家(三家均为「功能稳定、低频维护」状态)。SnapPass 是 Pinterest 出品的极简内部工具,无正式版本发布,适合当「参考实现」而非生产平台。

7.2 功能定位与兼容矩阵

维度OneTimeSecret v0.26.19PrivateBin v2.1.0Yopass v16.0.1SnapPass
定位产品化一次性秘密分享平台零知识加密粘贴板轻量一次性消息分享极简口令分享
加密模型服务端加密(密钥在 URL、不留存)客户端加密(零知识)服务端加密(AES,密钥在 URL)服务端加密(Fernet)
一次性语义硬约束(读后即焚)可配(1 次或 N 次)读后即焚读后即焚
账户体系完整(Rodauth + API Token)无(纯匿名)无(纯匿名)无(纯匿名)
组织/团队Organizations + SSO(v0.25+)无无无
REST API三代并存(v1/v2/v3 + 账户 API)简单 API有无
口令保护可选 + 可强制复杂度可选(Argon2 派生)可选可选
文件分享v0.25+ Incoming Secrets 路线支持(附件)支持不支持
数据依赖Valkey/Redis无(文件系统)Memcached 或 RedisRedis
部署单元官方镜像 / 源码构建PHP 应用Go 单二进制Python 应用
LicenseApache-2.0GPLv3Apache-2.0Apache-2.0

表格解读:「要不要账户与组织能力」是第一分水岭——PrivateBin/Yopass/SnapPass 都是纯匿名工具(链接即一切),OTS 是四者中唯一有完整账户、API Token、组织与 SSO 的产品化平台,企业统一管控场景基本只有 OTS 一个答案。第二分水岭是加密模型——要求「服务器零知识」选 PrivateBin(代价是纯粘贴板形态、无账户生态);接受「密钥不出服务端落盘」的服务端模型,则 OTS 的功能面最全。第三分水岭是 API 化程度——要把秘密分享嵌进自动化流水线,OTS 的三代 REST API 与 API Token 体系是四者中最完整的。

7.3 「如果……则……」选型建议

  • 如果你要的是「团队级秘密传递设施」:有账户、有组织、有 API、能过企业安全评审,且秘密允许服务端模型 → OneTimeSecret(配合本专栏部署两篇落地)。
  • 如果你的威胁模型要求服务端零知识(服务器被攻破也不能泄露在途秘密),且只是临时贴一段文本 → PrivateBin。
  • 如果你要一个 Go 单二进制、几分钟跑起来的极简一次性链接服务,无账户诉求 → Yopass。
  • 如果你在 Pinterest 式的 Python/Flask 技术栈里想要个可魔改的最小参考实现 → SnapPass。
  • 如果你要的是长期凭据管理(存量密码库、动态密钥、审计轮换)→ 以上都不合适,去看 Vaultwarden 或 HashiCorp Vault。

八、本专栏阅读路线

本专栏基于 v0.26.19 全量实测,五篇分工如下:

  1. 《OneTimeSecret v0.26.19 介绍与选型指南》(本篇):认知与选型。
  2. Debian 12 安装 OneTimeSecret v0.26.19 指南:源码路线实装(Ruby 环境构建、系统服务化)。
  3. OneTimeSecret v0.26.19 Docker Compose 部署指南:官方镜像编排路线(OTS + Valkey 双服务栈、首次初始化、注册与提权)。
  4. OneTimeSecret v0.26.19 配置参数详解:核心配置逐项实测(会话与 SSL 陷阱、TTL 体系、口令策略、认证开关、区域化等)。
  5. OneTimeSecret v0.26.19 REST API 实战指南:v1/v2 API 全链路实测(鉴权差异、conceal→reveal 一次性语义、burn 与回执、账户 API)。

九、参考链接