签合同、签协议,现在基本都是电子签名了。但主流电子签名服务是按份数收费的,用得越多账单越吓人。

Documenso 是这件事的开源答案,一句话定位:开源的 DocuSign 替代品。

Documenso 定位

它想解决的问题不只是钱

README 里有段话,讲的是比价格更深一层的东西:

数字签名文档应该又快又简单,也应该成为全世界每一份签名文档的默认做法。今天这在技术上是相当容易的,但它也为每次签名引入了一个新的角色:签名工具的提供方。

这本身不是问题,但我们应该想一想,我们希望这些"信任提供方"如何运作。

顺着他这个逻辑:你签的每一份合同,都要经过服务商。合同内容、签署人信息、签署时间,全在人家那里。服务商是谁、怎么运营、数据怎么处理,你其实很难审。

Documenso 的答案是把代码开放出来:

Documenso 想成为世界上最值得信赖的文档签署工具。这份信任来自于:让你能自己托管 Documenso,并且查看它在底层是怎么工作的。

许可证是 AGPLv3。

技术栈是透明的

README 里把整个技术栈列出来了,这本身就是一种态度——你可以对照着代码去看每一层是怎么实现的。

用途 技术
语言 TypeScript
框架 React Router v7
服务端 Hono
ORM Prisma
CSS Tailwind CSS
组件库 shadcn/ui + Radix UI
邮件模板 react-email
国际化 Lingui
API tRPC
PDF 签名 @libpdf/core
PDF 查看 pdf.js
PDF 操作 @cantoo/pdf-lib
支付 Stripe
代码检查与格式化 Biome
端到端测试 Playwright

都是当前主流的选择,没有什么冷门私有组件。

Documenso 技术栈

部署方式

自托管支持多种方式:Docker、Docker Compose、Railway、Kubernetes,以及手动部署。完整说明在自托管文档里:https://docs.documenso.com/docs/self-hosting

官方还准备了"一键部署"入口。

本地开发的话,要求不复杂:

  • Node.js v24 或以上
  • Postgres 数据库
  • Docker(可选)

README 里准备了 Developer Quickstart、手动配置、Gitpod、DevContainer 好几条路径,还配了视频演示。想先跑起来看看再决定要不要自托管,Gitpod 或 DevContainer 是最省事的入口。

Documenso 部署路径

关于信任这件事

有个细节值得注意。README 里专门有一节叫 Recognition,列的是在产品社区获得的认可,包括 Product Hunt 的奖项。

这看起来像是常见的宣传内容,但放在这个项目里其实挺切题——电子签名这个品类,最核心的资产就是信任。一个开源项目要在"签合同"这种场景里被接受,必须拿出比"我们很安全"更有说服力的东西。把代码公开、把技术栈列清、允许你自己部署自己审,就是它能拿出的东西。

谁适合用它

适合:

  • 合同签署量大,按份付费的成本已经明显偏高
  • 有合规要求,需要签署流程和数据不出自己的基础设施
  • 想审计签署工具到底怎么处理文档内容
  • 有自己的技术团队,愿意承担自托管的运维

不太适合:

  • 完全没有技术资源、也不想自己维护服务
  • 需要的是"开箱即用的 SaaS + 法律层面的背书"

说点实在的

电子签名工具本质上是把一份"信任"外包给了第三方。付费 SaaS 的思路是:你信任我们,我们来处理。开源自托管的思路是:代码给你,你自己判断,你自己部署。

这两种都不算错,区别在于你更愿意信任谁。

Documenso 把技术栈全列出来、把许可证设为 AGPLv3、支持 Docker 到 Kubernetes 的全套部署方式——这一整套动作都在回答同一个问题:凭什么让你把合同交给这个项目?

如果"能自己看代码、自己部署"恰好是你需要的答案,它值得试试。

项目地址:https://github.com/documenso/documenso

AGPLv3 许可证。官网:https://documenso.com 自托管文档:https://docs.documenso.com/docs/self-hosting