简介

DocuSeal 是一个开源的数字文档签署和处理平台,提供安全、高效的电子签名解决方案。它允许用户创建可填写和签署的 PDF 表单,可在任何设备上使用,具有易于使用的、移动优化的 Web 工具。DocuSeal 是 DocuSign 的开源替代方案,可自托管部署。

  • 官方网站: https://www.docuseal.com
  • GitHub 仓库: https://github.com/docusealco/docuseal
  • 在线演示: https://demo.docuseal.tech
  • 许可证: AGPLv3 with Section 7(b) Additional Terms
  • GitHub Stars: ~14,000+

核心功能

文档签署流程

功能 说明
PDF 表单字段构建器 (WYSIWYG) 可视化编辑器,用于创建可填写的 PDF 表单
12 种字段类型 包括签名、日期、文件、复选框等字段类型
多签署人支持 允许多人签署同一份文档
自动 PDF 电子签名 数字签名自动应用到文档
PDF 签名验证 内置签名验证功能
移动端优化 响应式设计,支持任何设备

模板与表单

  • 通过 HTML API 创建模板: 可编程创建可填写表单
  • 通过 PDF/DOCX 字段标签创建模板: 使用嵌入式文本字段标签
  • 嵌入式签署表单: 支持 React、Vue、Angular 和 JavaScript
  • 嵌入式文档表单构建器: 主要框架的集成 SDK

通信与存储

  • SMTP 自动邮件: 签署流程的邮件通知
  • 文件存储选项: 本地磁盘、AWS S3、Google Storage、Azure Cloud
  • 用户管理: 用户管理功能
  • 多语言支持: 7 种 UI 语言,签署支持 14 种语言

Pro 企业版功能

功能 说明
公司 Logo 与白标定制 品牌自定义
用户角色管理 权限管理
自动提醒 跟进通知
SMS 邀请与验证 通过短信进行身份验证
条件字段与公式 动态表单行为
批量发送 CSV/XLSX 导入批量签署
SSO / SAML 企业级身份认证
模板创建 API HTML API、PDF/DOCX 字段标签

技术架构

语言分布

语言 占比
Ruby ~43.9%
Vue ~32.1%
HTML ~24.3%
JavaScript ~13.8%
SCSS ~0.2%

后端架构

核心框架: Ruby on Rails (Ruby 4.0.1)

主要后端技术:

技术 用途
Rails Web 核心框架
Devise 身份认证(支持双因素)
Cancancan 授权/权限管理
Sidekiq 后台任务处理
Puma Web 服务器
Turbo-Rails Hotwired 实时更新
Pagy 分页

数据库支持:

数据库 说明
SQLite3 默认(零配置)
PostgreSQL 生产环境推荐
MySQL 支持(trilogy gem)

PDF 处理:

技术 用途
HexaPDF PDF 操作与签名
RubyXL Excel/XLSX 处理
Ruby-Vips 图像处理

云存储:

服务 Gem
AWS S3 aws-sdk-s3
Google Cloud Storage google-cloud-storage
Azure Blob azure-blob

安全与认证:

技术 用途
JWT API 认证
ROTP TOTP 时间令牌
RQRCode QR 码生成
Devise-Two-Factor 双因素认证

前端架构

核心框架: Vue.js 3.3.2 + Shakapacker

主要前端技术:

技术 版本 用途
Vue 3 3.3.2 组件框架
Hotwired Turbo - 实时页面更新
TailwindCSS 3.4 CSS 框架
DaisyUI 3.9 Tailwind 组件库
Shakapacker 9.5 Rails Webpack 集成
Webpack 5.104 模块打包

富文本与表单:

技术 版本 用途
TipTap 3.19 富文本编辑器
CodeMirror 6 代码编辑
Signature Pad 4.1 数字签名捕获

架构模式

混合单体架构: Rails 单体后端 + Vue.js 嵌入组件(通过 Shakapacker)。使用 Hotwired Turbo 进行服务器驱动的导航,Vue 用于交互式组件(签名板、表单构建器、富文本编辑器)。


安装与部署

Docker 快速启动

# 使用 SQLite(最简单)
docker run --name docuseal -p 3000:3000 -v .:/data docuseal/docuseal

Docker Compose 生产部署

# 下载配置文件
curl https://raw.githubusercontent.com/docusealco/docuseal/master/docker-compose.yml > docker-compose.yml

# 启动(自动 SSL)
sudo HOST=your-domain-name.com docker compose up

Docker Compose 包含:

  • app: DocuSeal 应用(端口 3000)
  • postgres: PostgreSQL 18 数据库
  • caddy: 反向代理(自动 SSL)

云平台一键部署

平台 部署链接
Heroku 一键部署
Railway 一键部署
DigitalOcean 一键部署
Render 一键部署

环境变量配置

数据库配置

变量 说明
DATABASE_URL PostgreSQL/MySQL 连接 URL,空则使用 SQLite
DATABASE_HOST 数据库主机
DATABASE_PORT 数据库端口(默认 5432)
DATABASE_USER 数据库用户名
DATABASE_PASSWORD 数据库密码
DATABASE_NAME 数据库名称

存储配置

本地存储:

变量 说明
WORKDIR 数据存储目录(默认 .
ACTIVE_STORAGE_PUBLIC 设为 true 公开文件访问

AWS S3:

变量 说明
AWS_ACCESS_KEY_ID AWS 访问密钥
AWS_SECRET_ACCESS_KEY AWS 密钥
AWS_REGION AWS 区域(默认 us-east-1)
S3_ATTACHMENTS_BUCKET S3 存储桶名称
S3_ENDPOINT 自定义 S3 端点

Google Cloud Storage:

变量 说明
GCS_CREDENTIALS GCS 凭证 JSON
GCS_PROJECT GCS 项目名称
GCS_BUCKET GCS 存储桶名称

Azure Blob Storage:

变量 说明
AZURE_STORAGE_ACCOUNT_NAME Azure 存储账户
AZURE_STORAGE_ACCESS_KEY Azure 访问密钥
AZURE_CONTAINER Azure 容器名称

SMTP 邮件配置

变量 说明
SMTP_ADDRESS SMTP 服务器地址
SMTP_PORT SMTP 端口(默认 587)
SMTP_DOMAIN SMTP 域名
SMTP_USERNAME SMTP 用户名
SMTP_PASSWORD SMTP 密码
SMTP_AUTHENTICATION 认证方式(默认 plain)
SMTP_ENABLE_STARTTLS 启用 STARTTLS(默认 true)

安全配置

变量 说明
SECRET_KEY_BASE Rails 密钥(未设置时自动生成)
FORCE_SSL 强制 SSL 的域名
RAILS_ENV 环境模式(production)

Redis 配置

变量 说明
REDIS_URL Redis 连接 URL(未设置时自动创建本地实例)

API 文档

API 端点

资源 端点 方法 说明
Submissions /submissions GET, POST 列出/创建提交
/submissions/{id} GET, DELETE 获取/删除提交
/submissions/{id}/documents GET 获取提交文档
/submissions/pdf POST 从 PDF 创建提交
/submissions/docx POST 从 DOCX 创建提交
/submissions/html POST 从 HTML 创建提交
Templates /templates GET 列出所有模板
/templates/{id} GET 获取模板
/templates/pdf POST 从 PDF 创建模板
/templates/docx POST 从 DOCX 创建模板
/templates/html POST 从 HTML 创建模板
/templates/merge POST 合并模板
Submitters /submitters GET 列出所有签署人
/submitters/{id} GET, PATCH 获取/更新签署人

API 服务器:

区域 URL
美国 https://api.docuseal.com
欧洲 https://api.docuseal.eu

认证

使用 X-Auth-Token 头进行 API Key 认证:

curl https://api.docuseal.com/templates -H 'X-Auth-Token: API_KEY'

获取 API Key:

  1. 注册 https://docuseal.com/sign_up
  2. 访问 https://console.docuseal.com/api

Webhooks

Webhook 类型 说明
Form Webhook 表单提交时触发
Submission Webhook 提交状态变更时触发
Template Webhook 模板事件触发

SDK 支持

API SDK

语言/平台 包名 安装命令
JavaScript/TypeScript @docuseal/api npm install @docuseal/api
Python docuseal pip install docuseal
Ruby docuseal gem install docuseal
PHP docusealco/docuseal-php composer require docusealco/docuseal-php
CLI docuseal npm install -g docuseal

嵌入式组件 SDK

框架 包名 文档
React @docuseal/react React 文档签署
Vue @docuseal/vue Vue 嵌入表单
Angular @docuseal/angular Angular 嵌入表单

集成示例

React 嵌入签署表单

import React from "react"
import { DocusealForm } from '@docuseal/react'

function App() {
  return (
    <DocusealForm
      src="https://docuseal.com/d/LEVGR9rhZYf86M"
      email="submitter@example.com"
      onComplete={(data) => console.log('签署完成!', data)}
    />
  )
}

JavaScript/HTML 嵌入

<script src="https://docuseal.com/js/embed.js"></script>
<docuseal-form src="https://docuseal.com/d/LEVGR9rhZYf86M"></docuseal-form>

API 创建提交

const resp = await fetch("https://api.docuseal.com/submissions", {
  method: "POST",
  headers: {
    "X-Auth-Token": "API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    template_id: 123,
    send_to: ["signer@example.com"],
    submitters_order: "random",
    submitters: [
      {
        email: "submitter@example.com",
        name: "John Doe",
        fields: [
          { name: "signature_field", value: "" }
        ]
      }
    ]
  })
});

const data = await resp.json();
console.log(data);

Python SDK 使用

from docuseal import Docuseal

docuseal = Docuseal(api_key="API_KEY")
submissions = docuseal.list_submissions(limit=10)

Ruby SDK 使用

require 'docuseal'

Docuseal.key = "API_KEY"
submissions = Docuseal.list_submissions(limit: 10)

生产部署示例

# docker-compose.yml 生产配置
services:
  app:
    image: docuseal/docuseal:latest
    ports:
      - "3000:3000"
    volumes:
      - ./docuseal:/data/docuseal
    environment:
      - DATABASE_URL=postgresql://user:password@postgres:5432/docuseal
      - SMTP_ADDRESS=smtp.example.com
      - SMTP_USERNAME=user@example.com
      - SMTP_PASSWORD=yourpassword
      - FORCE_SSL=your-domain.com

  postgres:
    image: postgres:18
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: docuseal

自托管最低要求

最小配置(SQLite 模式):

  • Docker 容器
  • 端口 3000
  • 数据持久化卷 /data

生产配置:

  • PostgreSQL 或 MySQL 数据库
  • Redis(自动配置或通过 REDIS_URL
  • SMTP 服务器(邮件通知)
  • 可选:S3/GCS/Azure 文件存储
  • SSL 终止(使用 FORCE_SSL 或反向代理)

应用场景

行业 应用
金融银行 贷款合同、开户协议
医疗健康 患者同意书、医疗记录
交通物流 运输合同、货物签收
房地产 租赁合同、买卖协议
电子商务 用户协议、订单确认
KYC 认证 身份验证文档
CRM 系统 客户合同管理

资源链接

资源 链接
官方网站 https://www.docuseal.com
GitHub 仓库 https://github.com/docusealco/docuseal
API 文档 https://www.docuseal.com/docs/api
OpenAPI 规范 https://editor.swagger.io/?url=https://console.docuseal.com/openapi.yml
Postman 集合 https://www.postman.com/docuseal/docuseal/collection/baauu23/docuseal-api
嵌入式签署文档 https://www.docuseal.com/docs/embedded
React SDK https://github.com/docusealco/docuseal-react
Vue SDK https://github.com/docusealco/docuseal-vue
Angular SDK https://github.com/docusealco/docuseal-angular
JS SDK https://github.com/docusealco/docuseal-js
Python SDK https://github.com/docusealco/docuseal-python
Ruby SDK https://github.com/docusealco/docuseal-ruby
PHP SDK https://github.com/docusealco/docuseal-php
Discord 社区 https://discord.gg/qygYCDGck9
Docker Hub https://hub.docker.com/r/docuseal/docuseal

快速开始指南

评估功能

  1. 使用 Docker 快速启动:docker run --name docuseal -p 3000:3000 -v .:/data docuseal/docuseal
  2. 访问 http://localhost:3000 测试功能
  3. 创建模板并测试签署流程

生产部署

  1. 使用 docker-compose.yml 配置 PostgreSQL
  2. 配置 SMTP 邮件发送
  3. 设置 FORCE_SSL 启用 HTTPS
  4. 可选配置云存储(S3/GCS/Azure)

API 集成

  1. 注册获取 API Key
  2. 选择合适的 SDK(React/Vue/Angular/JS/Python/Ruby)
  3. 嵌入签署表单或使用 REST API

总结

DocuSeal 是一个功能完整的开源电子签名平台,具备:

  • 开源免费: AGPLv3 许可证,可自托管
  • 技术栈现代: Ruby on Rails + Vue.js 3 + TailwindCSS
  • 部署灵活: Docker、云平台一键部署
  • API 完善: REST API + 多语言 SDK
  • 嵌入集成: React/Vue/Angular 嵌入组件
  • 企业功能: SSO、批量发送、白标定制

适合需要自托管电子签名解决方案的企业和开发者,是 DocuSign 等商业产品的优质开源替代方案。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐