Documenso
Self-host замена DocuSign и HelloSign: подписать договор, акт или NDA онлайн на своем сервере, без платы за каждый конверт и без выгрузки документов в чужое облако. Загружаете PDF, размечаете поля подписи, отправляете контрагенту по ссылке - он подписывает в браузере, а вы получаете подписанный PDF с полным журналом аудита. Подняли актуальную версию в боевом режиме и прогнали сквозной тест подписания через свой SMTP - от инвайта до готового документа.
Вердикт
- нужен процесс подписания договоров и NDA на своем сервере, а не в облаке DocuSign
- надоела подписка за каждый отправленный на подпись конверт
- достаточно простой электронной подписи (ПЭП) по соглашению сторон и внутреннего документооборота
- нужна квалифицированная ЭП (УКЭП) для госорганов - ее выдает только аккредитованный УЦ или Госключ
- нет возможности подключить SMTP - без почты нельзя отправить документ на подпись
- нужен полноценный ЭДО-оператор с обменом через оператора и роумингом
Что это и какую задачу решает
Documenso - open-source платформа электронной подписи документов, self-host замена DocuSign и HelloSign. Загружаете PDF (договор, акт, NDA, оферту), размечаете на нем поля - подпись, дата, инициалы, произвольный текст - и отправляете контрагентам. Они открывают документ по ссылке из письма, подписывают прямо в браузере без регистрации, а вы получаете итоговый подписанный PDF и журнал аудита: кто, когда и с какого события подписал. Документы, подписи и вся история хранятся на вашем сервере.
Боль, которую это закрывает, простая: DocuSign и HelloSign берут подписку за каждый отправленный на подпись конверт, а сами договоры при этом уходят в чужое облако. Documenso дает тот же процесс подписания, но у себя - без платы за конверт и без выгрузки чувствительных документов наружу.
Вход и первый аккаунт
Первый аккаунт создается на /signup: имя, email, пароль и образец подписи прямо на входе - можно нарисовать мышью или ввести текстом. Регистрация по умолчанию открыта, поэтому после создания своего аккаунта ее стоит закрыть, чтобы посторонние не заводили пользователей на вашем инстансе.
Чем отличается от DocuSign
Сравнение по тому, что влияет на выбор инструмента для подписания.
| Параметр | Documenso (self-hosted) | DocuSign / облако |
|---|---|---|
| Где хранятся документы | на вашем сервере | у платформы |
| Оплата за подписание | нет платы за конверт | подписка за конверты |
| Подписант регистрируется | нет, подписывает по ссылке | нет, по ссылке |
| Журнал аудита | полный (SENT-OPENED-VIEWED-SIGNED) | полный |
| Уровень подписи | ПЭП по соглашению сторон, PDF sealed .p12 | ПЭП, в ряде стран усиленная |
Тех-стек и архитектура
Documenso - приложение на Next.js: панель документов, редактор полей на PDF, публичные страницы подписания, порт 3000. Данные - документы, пользователи, шаблоны и журнал аудита - лежат в PostgreSQL 16. Итоговый PDF подписывается локальным сертификатом .p12: для self-host это self-signed серт, для доверенной подписи - серт от CA. Наружу приложение слушает только localhost, публичный доступ - через Caddy обратным прокси с авто-TLS.
Для основного сценария SMTP обязателен: приглашения на подпись, напоминания и готовый документ уходят по email. Без почты ядро (загрузка PDF и разметка полей) работает, но отправить документ контрагенту на подпись нельзя. Два ключа шифрования (NEXT_PRIVATE_ENCRYPTION_KEY и SECONDARY) и NEXT_PUBLIC_WEBAPP_URL, совпадающий с публичным доменом, обязательны - иначе ссылки на подпись будут битыми.
Юридическая значимость в РФ
Прямо и без маркетинга: какой уровень подписи вы получаете.
Documenso создает простую электронную подпись (ПЭП) по смыслу ФЗ-63 "Об электронной подписи": фиксация факта подписания, журнал аудита и подпись итогового PDF локальным сертификатом. Такая подпись юридически работает по соглашению сторон и для внутреннего документооборота - например, чтобы зафиксировать согласование NDA, акта или внутреннего приказа.
Это НЕ квалифицированная ЭП (УКЭП)
Documenso не заменяет квалифицированную подпись. УКЭП выдает только аккредитованный удостоверяющий центр (или Госключ), и именно она нужна для юридически значимого документооборота с госорганами, налоговой и в судах по умолчанию. Не называйте подпись Documenso квалифицированной - это ПЭП уровня "свой процесс и хранение у себя, действие по соглашению сторон".
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS, подписной сертификат и готовое приложение - остается создать аккаунт владельца и подключить свой SMTP.
Рекомендуемая конфигурация: CPU2-RAM4-DISK50
Развертывание на Fatmetal
Базовый путь - Cloud Server + Ubuntu 24.04 + Docker за Caddy.
Создать VM
Ubuntu 24.04 с Docker. Тариф CPU2-RAM4 - стек легкий, комфортно с запасом.
Задать переменные
NEXT_PUBLIC_WEBAPP_URL=https://ваш-домен NEXT_PRIVATE_ENCRYPTION_KEY=... NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=... NEXT_PRIVATE_SIGNING_PASSPHRASE=... NEXT_PRIVATE_SMTP_HOST=mail.ваш-доменNEXT_PUBLIC_WEBAPP_URLобязан совпадать с публичным адресом, иначе ссылки на подпись уедут на localhost. SMTP host задавайте DNS-именем, не IP - это первая грабля.Положить подписной серт
Сгенерируйте
cert.p12(self-signed) и смонтируйте в контейнер. Права -chmod 644, чтобы non-root процесс мог его читать. Иначе seal PDF упадет с EACCES.Поднять стек и закрыть TLS
docker compose pull docker compose up -dТри контейнера:
documenso,postgresиcaddy. Caddy обратным прокси на :3000 выдает сертификат Let's Encrypt на ваш домен.
Минимальная конфигурация
Реальные требования по нашим замерам.
| Минимум для теста | CPU2-RAM4-DISK50 |
| Реально в простое (весь стек) | ~400 MiB RAM (documenso 323 + postgres 52 + caddy 24) |
| Образы на диске | ~3.4 GB |
| Рекомендуем тариф | CPU2-RAM4-DISK50 |
Важно: стек легкий - все приложение вместе с базой в простое ест около 400 МиБ. Тарифа CPU2-RAM4 хватает с запасом; основной вес на диске - образы (~3.4 ГБ), сами данные компактные (тома ~70 МБ на старте).
Что проверено: сквозной тест подписания
Полный цикл от регистрации до готового документа - все письма через реальный SMTP.
Мы прогнали не просто "сайт отвечает 200", а весь сценарий подписания вживую. Подняли стек на боевом сервере, подняли свой отправляющий SMTP (proxygate:587, mail.fatmetal.net, валидный Let's Encrypt, SASL PLAIN + STARTTLS) и провели документ через все статусы:
Регистрация и подтверждение почты
Завели аккаунт на /signup, письмо подтверждения ушло на docs2@fatmetal.net через наш SMTP, аккаунт верифицирован.
Загрузка PDF и разметка
Загрузили документ, разметили поле подписи и назначили внешнего подписанта (nda-signer@fatmetal.net).
Отправка на подпись
Инвайт ушел контрагенту по email. Статус документа - SENT, в аудит-логе зафиксировано событие отправки.
Подпись по ссылке
Подписант открыл документ по ссылке из письма без регистрации, поставил подпись. Аудит-лог прошел OPENED, VIEWED, SIGNED.
Документ завершен
Статус - COMPLETED, PDF запечатан сертификатом .p12. Обе стороны получили email с подписанной копией. Полный аудит-лог: SENT, OPENED, VIEWED, SIGNED, COMPLETED.
| Контейнеров | 3 (documenso + postgres + caddy) |
| Внешний отклик | https 200, TTFB 0.17с |
| TLS | валидный Let's Encrypt |
| Писем через свой SMTP | 4 (подтверждение, инвайт, 2 завершения) |
| Итог документа | COMPLETED, sealed .p12, полный аудит-лог |
Проверено на версии 2.15.0, август 2026. На новых версиях результаты могут отличаться.
Где может сломаться
Две реальные грабли, на которые мы наступили при заказ-тесте.
Причина. В NEXT_PRIVATE_SMTP_HOST указан IP-адрес, а не DNS-имя. При STARTTLS клиент сверяет CN сертификата с хостом, и по IP проверка не проходит - TLS рубит соединение как self-signed.
Решение. Указывайте SMTP host именно DNS-именем (например mail.fatmetal.net), совпадающим с CN сертификата. После этого письма уходят.
Причина. Подписной cert.p12 недоступен на чтение non-root процессу в контейнере. Seal итогового PDF падает с EACCES, и документ навсегда застревает в статусе PENDING - подписант отдал подпись, а готовый файл не формируется.
Решение. Дайте серту права на чтение: chmod 644 cert.p12. После этого seal проходит и документ доходит до COMPLETED.
Без SMTP не отправить на подпись. Загрузка и разметка PDF работают и без почты, но приглашения и готовый документ уходят только по email. Перед запуском подключите SMTP - в карте маркетплейса это учтено.
Безопасность и обновления
После создания своего аккаунта закройте открытую регистрацию на /signup, чтобы посторонние не заводили пользователей. Порт 3000 наружу не публикуйте - только через прокси с TLS. Храните оба ключа шифрования и passphrase подписного серта в секретах, а не в открытом compose. Подписной cert.p12 держите с правами на чтение только нужному процессу.
Обновление - смена тега образа:
docker compose pull && docker compose up -d
Бэкап - база и тома документов:
docker exec documenso-postgres-1 pg_dump -U documenso documenso > documenso-db.sql
Перед продом закройте: открытую регистрацию, TLS на прокси, свой SMTP DNS-именем, права на cert.p12, секреты ключей шифрования и регулярный бэкап базы с документами.
Связь с другими стеками
- Почта - свой SMTP или внешний провайдер для инвайтов на подпись и готовых документов.
- Обратный прокси - Caddy или Nginx Proxy Manager для TLS и единого домена.
- База знаний / вики - Outline рядом, чтобы держать шаблоны договоров и регламенты подписания.
- Мониторинг - Prometheus и Grafana по метрикам контейнеров и PostgreSQL.
Когда это НЕ ваш выбор
Нужна квалифицированная подпись
Если документ требует УКЭП для госорганов, налоговой или суда, Documenso не подойдет - квалифицированную подпись выдает только аккредитованный УЦ или Госключ.
Не готовы к почте
Без SMTP инвайты на подпись и готовые документы не уходят. Если отправка контрагентам - ключевая цель, заложите почтового провайдера сразу.
Нужен ЭДО-оператор
Documenso - это подписание PDF у себя, а не обмен через оператора ЭДО с роумингом и форматами ФНС. Для официального оператора нужен профильный сервис.
Частые вопросы
Это юридически значимая подпись?
Documenso дает простую электронную подпись (ПЭП) по ФЗ-63: она работает по соглашению сторон и для внутреннего документооборота. Это не квалифицированная ЭП (УКЭП) - ее выдает только аккредитованный УЦ или Госключ.
Нужна ли подписанту регистрация?
Нет. Контрагент открывает документ по ссылке из письма и подписывает прямо в браузере, аккаунт ему не нужен.
Обязателен ли SMTP?
Для основного сценария да - инвайты на подпись и готовые документы уходят по email. Без почты работают только загрузка и разметка PDF.
Почему документ висит в PENDING?
Чаще всего подписной cert.p12 недоступен на чтение процессу в контейнере - seal PDF падает с EACCES. Дайте серту chmod 644.
Почему не уходят письма?
SMTP host задан IP-адресом. Укажите DNS-имя, совпадающее с CN сертификата, иначе STARTTLS рубит соединение как self-signed.
Хватит ли ресурсов на легком тарифе?
Да. Весь стек в простое ест около 400 МиБ, комфортно на CPU2-RAM4.
Какие ограничения лицензии?
Лицензия AGPL-3.0 - копилефт. Использование, в том числе коммерческий self-host-хостинг, разрешено; при модификации и публичном сервисе действуют требования открытия исходников AGPL.
Итог
Documenso - зрелый способ подписывать договоры, акты и NDA на своем сервере: тот же процесс, что у DocuSign, но без платы за конверт и без выгрузки документов в чужое облако, под лицензией AGPL-3.0. Уровень подписи - ПЭП по ФЗ-63, по соглашению сторон и для внутреннего оборота; для УКЭП нужен аккредитованный УЦ. Мы прогнали полный сквозной тест: регистрация, инвайт, подпись по ссылке и документ COMPLETED с sealed PDF и полным аудит-логом - все письма через реальный SMTP. Весь стек в простое ест около 400 МиБ. Плата - обязательный SMTP DNS-именем и права на подписной cert.p12, которые мы закрыли в карте из коробки.
Этот стек у нас запущен на тарифе CPU2-RAM4. Нашли баг в гайде - напишите, поправим в течение дня. Разбор в Базе знаний: https://fatmetal.ru/knowledge-base/documenso