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

В отличие от облачных сервисов, документы и подписи хранятся на вашем сервере, и вы не платите за каждый отправленный конверт. Процесс тот же, что у DocuSign: загрузка, разметка полей, отправка на подпись, готовый подписанный документ.

После создания сервера Documenso ставится автоматически с PostgreSQL и Caddy (Let's Encrypt на magic-DNS домене). Аккаунт администратора создается и подтверждается сразу - вы входите паролем сервера, без настройки почты. Подписной сертификат и права на него выставлены правильно (частая грабля, из-за которой подписанный документ виснет в статусе PENDING, здесь закрыта).

Что внутри

  • Documenso (Next.js) - веб-приложение, редактор полей, публичные ссылки на подпись, порт 3000.
  • PostgreSQL 16 - документы, пользователи, шаблоны, журнал аудита.
  • Caddy - reverse-proxy и авто-TLS (Let's Encrypt).
  • Подписной сертификат .p12 - им Documenso подписывает итоговый PDF.

Безопасность

  • Аккаунт закрыт паролем сервера - вход сразу под паролем вашей машины, инстанс нельзя занять в первые минуты после запуска.
  • fail2ban - банит IP после серии неудачных попыток входа по SSH.
  • HTTPS + security-заголовки - Let's Encrypt (авто-продление), HSTS, X-Content-Type-Options, Referrer-Policy. Documenso слушает только localhost, наружу - через Caddy.
  • Данные на вашем сервере - документы, подписи и журнал аудита в томе PostgreSQL, не в чужом облаке.

Как войти

  1. Адрес формируется из IP сервера: замените точки на дефисы и добавьте .fatmetal.net. Пример: IP 45.15.159.10 -> https://45-15-159-10.fatmetal.net/.
  2. Логин: admin@<ваш-домен> (например admin@45-15-159-10.fatmetal.net). Пароль: пароль вашего сервера с добавленным в конце знаком ! (Documenso требует спецсимвол). Пароль сервера - в личном кабинете. Аккаунт уже подтвержден, входите сразу и смените пароль в настройках профиля.
  3. Загрузите PDF, разметьте поле подписи, укажите email контрагента и отправьте на подпись.

Важно

Для отправки приглашений на подпись нужен SMTP: впишите данные своего почтового сервера в /opt/documenso/.env (SMTP_HOST/PORT/USER/PASS) и выполните cd /opt/documenso && docker compose up -d. Вход в аккаунт и работа с документами доступны и без SMTP. Все документы и подписи лежат в томе PostgreSQL (pgdata) - бэкапьте его. Порт приложения наружу не публикуется - только через Caddy с TLS.

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

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

Лицензия

Documenso - открытый код под лицензией AGPL-3.0: свободное использование, в том числе коммерческий self-host-хостинг.

Свой домен

Наведите CNAME на этот сервер, впишите домен в /opt/Caddyfile и в WEBURL (/opt/documenso/.env), затем docker compose up -d и docker restart documenso-caddy - Caddy выпустит Let's Encrypt. NEXT_PUBLIC_WEBAPP_URL обязан совпадать с публичным адресом, иначе ссылки на подпись будут битые.

Требования

Ubuntu 24.04, открытые порты 80/443. Стек легкий: в простое около 0.4 ГБ (documenso ~323, postgres ~52, caddy ~24 МиБ), образы ~3.4 ГБ. Комфортный тариф CPU2-RAM4.

Подробный разбор с замерами и скриншотами