关注我的公众号:【编程朝花夕拾】,可获取首发内容。
01 引言
在企业开发中经常会遇到合同类的问题,随着互联网的发展电子签迅速被企业引入。很多企业没有自己的电子签平台,只能找第三方的电子签平台。第三方的服务、升级都影响着业务系统。
今天介绍一款开源的电子签平台:DocuSeal
02 简介
DocuSeal 是一个开源的数字文档签署与处理平台,提供安全、高效的在线文档填写与电子签名能力。它允许你在任何设备上通过移动端优化的 Web 工具,创建 PDF 表单、分发给签署人、并在线收集签名与填写内容。官方直接定位是Open source DocuSign alternative(开源版 DocuSign 替代品)。
核心解决痛点:不再依赖第三方电子签名服务商的「按信封(envelope)计费」模式,数据完全掌握在自己手里,适合对合同保密性、合规性要求高的企业。
当前项目的许可证是基于 AGPLv3,并附加 Section 7(b) Additional Terms(额外条款)。即:自由自用、自托管、修改均免费;但若提供网络服务并修改了代码,需以 AGPL 方式开放修改后的源码。商业闭源使用需购买 Pro 授权。版权 © 2023--2026 DocuSeal LLC。

GitHub地址:github.com/docusealco/...
官网地址:www.docuseal.com/
03 部署
3.1 Docker 部署
默认使用 SQLite 存储,无需额外数据库,数据持久化到本地 ./data 目录:
bash
docker run --name docuseal -p 3000:3000 -v "$PWD/data:/data" docuseal/docuseal
启动后访问 http://localhost:3000,第一个注册的用户即为管理员。
若改用 PostgreSQL / MySQL,只需通过环境变量 DATABASE_URL 指定连接串即可,镜像本身不变。
3.2 Docker Compose 部署
官方 docker-compose.yml 包含三个服务:app(DocuSeal)+ postgres(数据库)+ caddy(反向代理自动签发 SSL)
- 下载官方编排文件:
bash
curl https://raw.githubusercontent.com/docusealco/docuseal/master/docker-compose.yml > docker-compose.yml
- 用自定义域名启动(需将 DNS 解析指向该服务器,Caddy 会自动申请 Let's Encrypt 证书):
bash
sudo HOST=your-domain-name.com docker compose up
3.3 源码部署
适合需要修改代码、做二次开发的场景。前置依赖:Ruby 3.x + Node.js + Yarn + PostgreSQL(或 MySQL/SQLite)。
bash
# 1. 拉取源码
git clone https://github.com/docusealco/docuseal.git
cd docuseal
# 2. 安装依赖
bundle install
yarn install
# 3. 配置环境变量(至少设置 DATABASE_URL 与 SECRET_KEY_BASE)
cp .env.example .env
# 编辑 .env,填入:
# DATABASE_URL=postgresql://user:pass@localhost:5432/docuseal
# SECRET_KEY_BASE=$(openssl rand -hex 64)
# 4. 准备数据库
rails db:create db:migrate
# 5. 启动(开发模式)
rails server
# 生产模式(需预编译静态资源)
RAILS_ENV=production rails assets:precompile
RAILS_ENV=production rails server
3.4 PaaS 部署
官方 README 提供了一键部署按钮,无需手动配置:
- Heroku :heroku.com/deploy?temp...
- Railway :railway.com/deploy/IGoD...
- DigitalOcean App Platform :cloud.digitalocean.com/apps/new?re...
- Render :render.com/deploy?repo...
04 体验
演示直接使用最简单的单机Docker部署方式,持久化使用Mysql。由于本机的3000端口被占用,这里改成4001端口。
bash
docker run -d --name docuseal --network docuseal-net -p 4001:3000 -v docuseal_data:/data -e DATABASE_URL="mysql2://root:root@mysql8/docuseal" docuseal/docuseal

部署成功之后,直接通过IP+端口就可以访问。
4.1 初次访问
初次访问需要设置账号。语言中没有中文,有点小遗憾。

4.2 注册成功
注册成功之后就可以制作模板了。

上传模版后就可以标记签字盖章的地方了。

- ① 区域罗列了很多签字相关的不同种类,签字、文本、日期等
- ② 自动检测并识别签字的区域
4.3 编辑模版
我们需要根据需要调整签字区域,自动识别的不一定是我们想要的结果。以案例为准,我们需要签字模块和日期。

如图设置两个区域,分别包含了签字和日期。
4.4 保存与发送
保存完成后就可以查看了:

这里的保存和发送是有讲究的。如果当前保存时是第一部分,就只能签署第一部分的内容。如果是第二部分,也就只能八年级第二部分的内容。
下面是只保存了第一部分。

发送的话需要配置对应的参数。

4.5 签署
因为涉及两部分,需要发送给多人签署。配置参数后就可以按照上面的截图发送邮件了。
我都发给了我自己,我就会收到两份邮件:

邮件是这样的:

打开之后,就可以签署自己的那一份了。

全部签署完成之后就可以在后台查看:

完整的结果:

4.6 API支持
业务系统中最关心的就是和私有部署打通,这里提供了API的支持可以和业务系统打通。

05 小结
DocuSeal免费版还是有诸多的限制的,用量小的话没有问题。一旦增多可能需要使用企业版的软件了。

既然有限制,那么能不能使用AI自己开发一套呢?