Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
Проверено
5 августа 2026 г.
Версия
2.15.0
Репозиторий
GitHub →
Электронная подпись и документооборот

Documenso

Self-host замена DocuSign и HelloSign: подписать договор, акт или NDA онлайн на своем сервере, без платы за каждый конверт и без выгрузки документов в чужое облако. Загружаете PDF, размечаете поля подписи, отправляете контрагенту по ссылке - он подписывает в браузере, а вы получаете подписанный PDF с полным журналом аудита. Подняли актуальную версию в боевом режиме и прогнали сквозной тест подписания через свой SMTP - от инвайта до готового документа.

Август 2026 ~10 минут чтения Fatmetal Team
Электронная подпись Лицензия: AGPL-3.0 Статус: запущен у нас, 2.15.0

Вердикт

Подходит
  • нужен процесс подписания договоров и NDA на своем сервере, а не в облаке DocuSign
  • надоела подписка за каждый отправленный на подпись конверт
  • достаточно простой электронной подписи (ПЭП) по соглашению сторон и внутреннего документооборота
Не подходит
  • нужна квалифицированная ЭП (УКЭП) для госорганов - ее выдает только аккредитованный УЦ или Госключ
  • нет возможности подключить SMTP - без почты нельзя отправить документ на подпись
  • нужен полноценный ЭДО-оператор с обменом через оператора и роумингом
Мин. тариф: CPU2-RAM4-DISK50 Рекомендуем: CPU2-RAM4-DISK50 Сложность: medium Время запуска: ~2-3 мин Главный риск: SMTP по IP и права на cert.p12 Прод-готовность: из коробки (Postgres + TLS + подписной серт)
Что это

Что это и какую задачу решает

Documenso - open-source платформа электронной подписи документов, self-host замена DocuSign и HelloSign. Загружаете PDF (договор, акт, NDA, оферту), размечаете на нем поля - подпись, дата, инициалы, произвольный текст - и отправляете контрагентам. Они открывают документ по ссылке из письма, подписывают прямо в браузере без регистрации, а вы получаете итоговый подписанный PDF и журнал аудита: кто, когда и с какого события подписал. Документы, подписи и вся история хранятся на вашем сервере.

Боль, которую это закрывает, простая: DocuSign и HelloSign берут подписку за каждый отправленный на подпись конверт, а сами договоры при этом уходят в чужое облако. Documenso дает тот же процесс подписания, но у себя - без платы за конверт и без выгрузки чувствительных документов наружу.

Next.jsPostgreSQL 16Подпись PDF (.p12)Audit logSMTPDocker
Регистрация

Вход и первый аккаунт

Первый аккаунт создается на /signup: имя, email, пароль и образец подписи прямо на входе - можно нарисовать мышью или ввести текстом. Регистрация по умолчанию открыта, поэтому после создания своего аккаунта ее стоит закрыть, чтобы посторонние не заводили пользователей на вашем инстансе.

Регистрация Documenso: поля имени, email, пароля и поле образца подписи
Регистрация: имя, 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: вкладки Pending, Completed, Draft, загрузка и папки
Панель документов: Pending / Completed / Draft, загрузка и папки
Редактор Documenso: разметка поля подписи на PDF и назначение подписанта
Редактор: размечаем поле подписи на PDF и назначаем подписанта
Юридика

Юридическая значимость в РФ

Прямо и без маркетинга: какой уровень подписи вы получаете.

Documenso создает простую электронную подпись (ПЭП) по смыслу ФЗ-63 "Об электронной подписи": фиксация факта подписания, журнал аудита и подпись итогового PDF локальным сертификатом. Такая подпись юридически работает по соглашению сторон и для внутреннего документооборота - например, чтобы зафиксировать согласование NDA, акта или внутреннего приказа.

Это НЕ квалифицированная ЭП (УКЭП)

Documenso не заменяет квалифицированную подпись. УКЭП выдает только аккредитованный удостоверяющий центр (или Госключ), и именно она нужна для юридически значимого документооборота с госорганами, налоговой и в судах по умолчанию. Не называйте подпись Documenso квалифицированной - это ПЭП уровня "свой процесс и хранение у себя, действие по соглашению сторон".

В маркетплейсе Fatmetal

Не хотите ставить руками?

Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS, подписной сертификат и готовое приложение - остается создать аккаунт владельца и подключить свой SMTP.

Рекомендуемая конфигурация: CPU2-RAM4-DISK50

Развернуть в 1 клик →
Развертывание

Развертывание на Fatmetal

Базовый путь - Cloud Server + Ubuntu 24.04 + Docker за Caddy.

  1. Создать VM

    Ubuntu 24.04 с Docker. Тариф CPU2-RAM4 - стек легкий, комфортно с запасом.

  2. Задать переменные

    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 - это первая грабля.

  3. Положить подписной серт

    Сгенерируйте cert.p12 (self-signed) и смонтируйте в контейнер. Права - chmod 644, чтобы non-root процесс мог его читать. Иначе seal PDF упадет с EACCES.

  4. Поднять стек и закрыть 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
i

Важно: стек легкий - все приложение вместе с базой в простое ест около 400 МиБ. Тарифа CPU2-RAM4 хватает с запасом; основной вес на диске - образы (~3.4 ГБ), сами данные компактные (тома ~70 МБ на старте).

Заказ-тест

Что проверено: сквозной тест подписания

Полный цикл от регистрации до готового документа - все письма через реальный SMTP.

Мы прогнали не просто "сайт отвечает 200", а весь сценарий подписания вживую. Подняли стек на боевом сервере, подняли свой отправляющий SMTP (proxygate:587, mail.fatmetal.net, валидный Let's Encrypt, SASL PLAIN + STARTTLS) и провели документ через все статусы:

  1. Регистрация и подтверждение почты

    Завели аккаунт на /signup, письмо подтверждения ушло на docs2@fatmetal.net через наш SMTP, аккаунт верифицирован.

  2. Загрузка PDF и разметка

    Загрузили документ, разметили поле подписи и назначили внешнего подписанта (nda-signer@fatmetal.net).

  3. Отправка на подпись

    Инвайт ушел контрагенту по email. Статус документа - SENT, в аудит-логе зафиксировано событие отправки.

  4. Подпись по ссылке

    Подписант открыл документ по ссылке из письма без регистрации, поставил подпись. Аудит-лог прошел OPENED, VIEWED, SIGNED.

  5. Документ завершен

    Статус - COMPLETED, PDF запечатан сертификатом .p12. Обе стороны получили email с подписанной копией. Полный аудит-лог: SENT, OPENED, VIEWED, SIGNED, COMPLETED.

Страница подписанта Documenso, открытая по ссылке из письма без регистрации
Страница подписанта: открывается по ссылке из письма, без регистрации
Документ Documenso подписан, обе стороны получают email с подписанной копией
Документ подписан: обе стороны получают email с подписанной копией
Контейнеров3 (documenso + postgres + caddy)
Внешний откликhttps 200, TTFB 0.17с
TLSвалидный Let's Encrypt
Писем через свой SMTP4 (подтверждение, инвайт, 2 завершения)
Итог документаCOMPLETED, sealed .p12, полный аудит-лог

Проверено на версии 2.15.0, август 2026. На новых версиях результаты могут отличаться.

Подводные камни

Где может сломаться

Две реальные грабли, на которые мы наступили при заказ-тесте.

Error: self-signed certificate (SMTP STARTTLS, CN mismatch)

Причина. В NEXT_PRIVATE_SMTP_HOST указан IP-адрес, а не DNS-имя. При STARTTLS клиент сверяет CN сертификата с хостом, и по IP проверка не проходит - TLS рубит соединение как self-signed.

Решение. Указывайте SMTP host именно DNS-именем (например mail.fatmetal.net), совпадающим с CN сертификата. После этого письма уходят.

EACCES: permission denied, open '/opt/.../cert.p12' (документ висит в PENDING)

Причина. Подписной 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
i

Перед продом закройте: открытую регистрацию, TLS на прокси, свой SMTP DNS-именем, права на cert.p12, секреты ключей шифрования и регулярный бэкап базы с документами.

Рядом

Связь с другими стеками

  • Почта - свой SMTP или внешний провайдер для инвайтов на подпись и готовых документов.
  • Обратный прокси - Caddy или Nginx Proxy Manager для TLS и единого домена.
  • База знаний / вики - Outline рядом, чтобы держать шаблоны договоров и регламенты подписания.
  • Мониторинг - Prometheus и Grafana по метрикам контейнеров и PostgreSQL.
Границы

Когда это НЕ ваш выбор

Нужна квалифицированная подпись

Если документ требует УКЭП для госорганов, налоговой или суда, Documenso не подойдет - квалифицированную подпись выдает только аккредитованный УЦ или Госключ.

Не готовы к почте

Без SMTP инвайты на подпись и готовые документы не уходят. Если отправка контрагентам - ключевая цель, заложите почтового провайдера сразу.

Нужен ЭДО-оператор

Documenso - это подписание PDF у себя, а не обмен через оператора ЭДО с роумингом и форматами ФНС. Для официального оператора нужен профильный сервис.

FAQ

Частые вопросы

Это юридически значимая подпись?

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, которые мы закрыли в карте из коробки.

Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на тарифе CPU2-RAM4. Нашли баг в гайде - напишите, поправим в течение дня. Разбор в Базе знаний: https://fatmetal.ru/knowledge-base/documenso

Спросить инженера в TelegramМы на связи