在寻找合适的电子签名工具时,商业平台如DocuSign、Adobe Sign虽然功能强大,但其高昂的订阅费用和数据隐私顾虑常常令人却步。最近,一个名为DocuSeal的开源项目进入了视野,它是一个完全开源的电子签名平台,支持私有化部署,提供了从PDF表单构建、多方签署到自动邮件通知和API集成的完整解决方案。其Docker一键部署极为便捷,移动端体验也经过优化。经过数月的使用,感觉它完全有能力替代商业方案,将数据掌控权留在自己手中,让人倍感安心。

DocuSeal是什么?
这是一个开源的数字文档签名与处理平台,定位为 DocuSign的开源替代方案。它提供从PDF表单创建到在线签署的全流程解决方案,支持12种字段类型、多方签署、自动邮件通知和移动端优化。你可以将其部署在自己的服务器上,其技术栈基于Ruby on Rails与Vue.js,完全免费开源。
开源成就
- Star数:已在GitHub上收获 11K Star,成为开源电子签名工具中的热门选择。
- 技术栈:主要使用Ruby (43%)、HTML (24.2%)、Vue (22%) 和 JavaScript (10.4%) 开发。
- 版本迭代:已发布 133个版本,显示出活跃的维护状态,最新版本2.2.7于近期发布。
核心功能

- 可视化表单构建器:提供所见即所得的拖拽式PDF表单设计,无需编程基础即可快速创建专业表单。
- 12种字段类型:全面支持签名、日期、文件上传、复选框、文本输入、单选按钮、图片、印章等丰富字段。
- 多方签署支持:一份文档可设置让多个签署人按指定顺序或同时进行签署。
- 自动邮件通知:通过SMTP服务自动向签署人发送签署邀请、提醒及完成通知邮件。
- 灵活存储方案:文档支持存储在本地磁盘,或集成AWS S3、Google Cloud Storage、Azure Blob Storage等云端对象存储。
- 自动电子签名:签署完成后,系统会自动在PDF文档中嵌入符合标准的电子签名,并支持签名验证。
- 用户管理系统:内置完整的用户、角色与权限管理功能,适合团队协作。
- 移动端优化:界面针对手机、平板等移动设备进行了响应式优化,签署体验流畅。
- 多语言支持:管理界面支持7种语言,而签署流程页面更是支持多达14种语言。
- API和Webhooks:提供完整的REST API接口和Webhook事件通知,便于集成到现有业务系统中。
安装与使用指南
Docker快速启动
这是最简单快速的体验方式。
# 一行命令启动
docker run --name docuseal -p 3000:3000 -v ./data:/data docuseal/docuseal
# 访问应用
http://localhost:3000
# 默认使用SQLite数据库
# 如需使用PostgreSQL或MySQL,添加DATABASE_URL环境变量
docker run --name docuseal -p 3000:3000 \
-e DATABASE_URL=postgresql://user:password@host:5432/dbname \
-v ./data:/data \
docuseal/docuseal
Docker Compose部署
推荐用于生产环境,便于管理。
# 下载配置文件
curl https://raw.githubusercontent.com/docusealco/docuseal/master/docker-compose.yml > docker-compose.yml
# 使用自定义域名启动(自动配置HTTPS)
sudo HOST=your-domain.com docker compose up
# 后台运行
sudo HOST=your-domain.com docker compose up -d
云平台一键部署
项目也支持在主流的云平台一键部署。
# 支持的平台
- Heroku: 点击Deploy to Heroku按钮
- Railway: 点击Deploy on Railway按钮
- DigitalOcean: 点击Deploy to DigitalOcean按钮
- Render: 点击Deploy to Render按钮
# 访问项目GitHub页面点击相应按钮即可
https://github.com/docusealco/docuseal
创建PDF表单
通过直观的可视化构建器设计表单。
# 使用表单构建器
1. 登录DocuSeal后台
2. 点击 “New Template” 创建模板
3. 上传PDF文件或创建空白模板
4. 拖拽字段到PDF页面的指定位置
5. 配置字段属性(签名/日期/文本等)
6. 保存模板
# 12种字段类型
- Signature: 手写签名
- Initials: 姓名首字母
- Date: 日期选择
- Text: 文本输入
- Number: 数字输入
- Select: 下拉选择
- Checkbox: 复选框
- Radio: 单选按钮
- File: 文件上传
- Image: 图片上传
- Cells: 单元格
- Stamp: 印章
发送文档进行签署
# 通过Web界面发送
1. 选择创建好的模板
2. 点击 “Send” 发送
3. 填写签署人信息(姓名、邮箱)
4. 设置签署顺序(按顺序或同时)
5. 点击发送,系统将自动发送邀请邮件
# 签署人会收到
- 包含唯一签署链接的邮件
- 点击链接打开待签署的表单页面
- 填写所需信息并完成签名
- 提交后即完成签署
通过API创建签署任务
对于需要自动化集成的场景,可以直接调用API。
# 通过API发送文档
curl -X POST https://your-domain.com/api/submissions \
-H “X-Auth-Token: your_api_token” \
-H “Content-Type: application/json” \
-d ‘{
“template_id”: 123,
“send_email”: true,
“submitters”: [
{
“role”: “签署方”,
“email”: “client@example.com”,
“name”: “张三”
}
]
}’
# API返回示例
{
“id”: 456,
“status”: “pending”,
“submission_url”: “https://your-domain.com/s/abc123”
}
查询签署状态
# 通过API查询特定提交的状态
curl -X GET https://your-domain.com/api/submissions/456 \
-H “X-Auth-Token: your_api_token”
# 返回状态信息
{
“id”: 456,
“status”: “completed”, # 可能的状态: pending/completed/expired
“completed_at”: “2025-12-22T10:30:00Z”,
“documents”: [
{
“url”: “https://your-domain.com/documents/signed.pdf”
}
]
}
接收Webhook通知
可以配置Webhook来实时接收签署状态变更事件。
# 配置Webhook URL
1. 在后台设置中添加你的Webhook URL
2. 选择要监听的事件类型
3. 保存配置
# 主要事件类型
- submission.created: 签署任务被创建
- submission.completed: 签署完成
- submission.declined: 签署被拒绝
- submission.expired: 签署链接过期
# Webhook数据示例
{
“event_type”: “submission.completed”,
“timestamp”: “2025-12-22T10:30:00Z”,
“data”: {
“id”: 456,
“template_id”: 123,
“status”: “completed”,
“completed_at”: “2025-12-22T10:30:00Z”
}
}
配置SMTP邮件服务
确保自动邮件通知功能正常工作。
# 通过环境变量配置SMTP
docker run --name docuseal -p 3000:3000 \
-e SMTP_ADDRESS=smtp.gmail.com \
-e SMTP_PORT=587 \
-e SMTP_USERNAME=your-email@gmail.com \
-e SMTP_PASSWORD=your-app-password \
-e SMTP_DOMAIN=gmail.com \
-v ./data:/data \
docuseal/docuseal
# 支持的邮件服务
- Gmail
- SendGrid
- Mailgun
- AWS SES
- 自建SMTP服务器
配置云端对象存储
将签署的文件存储到云端,更可靠且易于扩展。
# 配置AWS S3存储
docker run --name docuseal -p 3000:3000 \
-e AWS_ACCESS_KEY_ID=your-key \
-e AWS_SECRET_ACCESS_KEY=your-secret \
-e AWS_REGION=us-east-1 \
-e AWS_S3_BUCKET=your-bucket \
-v ./data:/data \
docuseal/docuseal
# Google Cloud Storage
-e GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json
-e GCS_BUCKET=your-bucket
# Azure Blob Storage
-e AZURE_STORAGE_ACCOUNT=your-account
-e AZURE_STORAGE_ACCESS_KEY=your-key
-e AZURE_STORAGE_CONTAINER=your-container
签名验证
确保签署后文档的真实性与完整性。
# PDF签名自动验证
1. 下载签署完成的PDF文档
2. 使用Adobe Acrobat或其他支持标准的PDF阅读器打开
3. 查看签名面板
4. 阅读器会显示签名的有效性状态和可信时间戳
# 通过API验证签名
curl -X POST https://your-domain.com/api/verify \
-H “X-Auth-Token: your_api_token” \
-F “file=@signed.pdf”
用户与权限管理
系统内置了完整的RBAC(基于角色的访问控制)模型。
# 创建与管理用户
1. 以管理员身份登录后台
2. 进入 “Users” 页面
3. 点击 “Add User”
4. 填写用户邮箱、姓名等信息
5. 为用户分配合适的角色
# 系统预置角色
- Admin: 拥有所有权限,包括系统设置
- Manager: 可以管理所有文档和用户(除系统设置)
- Member: 可以创建和发送自己的文档
- Viewer: 仅能查看文档,无编辑或发送权限
多语言设置
DocuSeal支持国际化的签署流程。
# 管理界面语言(7种)
- English
- 中文
- Español
- Français
- Deutsch
- Português
- 日本語
# 签署流程语言(14种)
支持更广泛的语种,签署人打开链接时,系统会优先使用其浏览器语言设置。
更多功能预览




开源地址:https://github.com/docusealco/docuseal
DocuSeal作为一个由Ruby on Rails驱动并拥有11K Star的开源项目,展示了开源社区在构建企业级应用方面的强大能力。它不仅仅是一个工具,更为开发者提供了深入研究现代Web应用架构,特别是Ruby on Rails全栈开发实践的绝佳案例。如果你正在为电子签名需求寻找一个安全、可控且功能全面的解决方案,DocuSeal无疑值得你亲自部署体验。更多技术实践与开源项目探讨,欢迎访问云栈社区进行交流。