PdfDing: договоры клиентам по ссылке с паролем и сроком
PdfDing хранит PDF на вашем сервере и отдаёт их клиентам по ссылке или QR-коду с паролем, сроком и лимитом открытий. Разобрали по исходникам, что защита ссылок умеет на самом деле и чего в проекте нет: журнала читателей и встроенных бэкапов.
Договор в чужой переписке
Юрист отправил клиенту проект договора в мессенджер. Бухгалтер выслал акт сверки на почту. Через год этот файл лежит у клиента, у его помощницы и в облаке телефона, который он забыл в такси. Отозвать его нельзя. Узнать, открыл ли его вообще кто-нибудь, тоже.
Так выдают документы большинство небольших студий, агентств и учебных центров. Для типового договора терпимо. Для пакета с реквизитами, ценами и персональными данными уже нет.
Вариант проще: файл остаётся у вас на сервере, клиенту уходит ссылка. Её можно закрыть паролем, ограничить по времени и погасить, когда документ перестал быть нужным. Именно это умеет PdfDing.
Что такое PdfDing
Внутри обычная библиотека PDF. Документы открываются в браузере с любого устройства, приложение запоминает, где вы остановились. Файлы раскладываются по рабочим пространствам, коллекциям и тегам любой вложенности. Поверх страницы можно добавлять текст, выделять фрагменты, рисовать и ставить подпись. Есть тёмная тема, единый вход через OIDC и двухфакторная защита (TOTP и WebAuthn). Это перечень из README проекта, я проверял его по документации и коду.
Лицензия AGPL-3.0, я открыл файл LICENSE в репозитории. Ставить себе и пользоваться можно свободно. Если вы правите код и даёте доступ другим людям по сети, свои правки придётся опубликовать.
Ставится образом mrmn/pdfding с Docker Hub (процессоры amd64 и arm64). Есть compose-файлы с SQLite или Postgres и чарт для Helm. Минимальный запуск это одна команда docker run с двумя обязательными значениями, HOST_NAME и SECRET_KEY. Файлы лежат в томе media, база в томе db. Для рабочего сервера нужны домен и HTTPS.
PDF можно загружать через интерфейс или класть в папку на сервере: режим consumption directory подхватывает файлы сам и вешает на них заданные теги. По умолчанию он выключен, у каждого пользователя своя подпапка. Регистрацию новых аккаунтов закрывает переменная DISABLE_USER_SIGNUP, тогда посторонние люди себе учётку не заведут.
Репозиторий создан 27 ноября 2024 года. На GitHub у него 1847 звёзд и 118 форков, разработку поддержал грант NGI0 Commons Fund фонда NLnet.
Как устроена ссылка для клиента
В документации отдельной страницы про ссылки нет, поэтому я читал исходники. Отдать можно один PDF или целую коллекцию. К ссылке сразу создаётся QR-код в SVG, его можно скачать и напечатать. Дальше три настройки.
Пароль необязателен, в базе хранится его хеш. Срок жизни задаётся в формате «7d0h0m», то есть днях, часах и минутах. Когда он выходит, человек видит страницу «ссылка неактивна», а у вас запись пропадает из списка. Лимит открытий есть только у отдельного PDF: дошёл счётчик до заданного числа, ссылка гаснет.
Получателю регистрироваться не нужно. Он открывает ссылку, вводит пароль и читает в браузере. После пароля браузер запоминается на неделю.
Видите ли вы, что читают? Видите счётчик. В списке у каждого PDF написано «3/10 Views» или «3 Views». Кто открыл, когда и сколько страниц прочёл, приложение не показывает, журнала читателей в коде я не нашёл. Если нужно знать, кто именно, дайте каждому получателю свою ссылку с его именем в названии. Тогда счётчик этой ссылки показывает его открытия.
Что важно учесть
Проект держится на одном человеке. В истории коммитов два аккаунта, судя по всему одного автора, и боты. В README он пишет, что может проигнорировать чужие правки, если они не по его планам. GitHub-репозиторий заархивирован после последнего обновления 29 августа 2026 года. Разработка идёт на Codeberg (mrmn/PdfDing): там релизы v1.14.0 от 4 сентября, до этого от 11 августа, 2 августа и 24 июля. Последний коммит, который я там нашёл, от 11 сентября. Ссылки на GitHub ведут в замороженную копию.
Лимит открытий не защищает от копирования. Он считает открытия страницы, а файл при этом уходит в браузер получателя. Человек может сохранить его или переслать пароль. Для документов, где важен контроль копий, нужна другая система.
У коллекции нет ни счётчика, ни лимита, только пароль и срок.
Резервных копий в приложении нет. Документация лишь советует сделать копию перед обновлением. Копировать нужно оба тома, db и media, или отдельно Postgres.
Подпись в PdfDing это изображение на странице. Про усиленную квалифицированную электронную подпись в описании ничего нет, юридический вес такой подписи не проверялся.
Что можно сделать уже сейчас
Договор клиенту. Загрузите PDF, нажмите «Share», поставьте пароль, срок «3d0h0m» и лимит три открытия. Ссылку отправьте в чат, пароль сообщите другим каналом, например голосом. Через три дня в переписке останется мёртвый адрес вместо файла. Свои сканы и входящие документы лучше держать в архиве вроде Paperless-ngx, а PdfDing оставить для выдачи.
Методичка ученикам. Учебный центр кладёт материалы курса в коллекцию и делает одну ссылку на группу. QR-код печатается на листе в аудитории. Пароль общий, срок до конца курса. Ученик читает с телефона, ничего ставить не нужно.
Пакет документов партнёру. Реквизиты, прайс и презентацию склейте в один PDF, например в Stirling-PDF. На каждого партнёра сделайте отдельную ссылку с его названием в имени. По списку будет видно, кто открыл пакет, а кто пропустил.
Если разовый файл любого формата нужно просто передать и забыть, подойдёт Send. PdfDing нужен там, где документы остаются у вас и выдаются регулярно.
Поднять сервис, настроить домен, HTTPS, вход, обновления и копии мы можем в рамках IT-инфраструктуры под ключ. Ориентиры по стоимости есть в прайсе.
Частые вопросы
Нужна ли получателю регистрация?
Нет. Публичная страница ссылки открывается без входа, нужен только пароль, если вы его задали.
Можно ли узнать, кто прочитал документ?
Только в виде счётчика открытий у каждой ссылки. Имён и времени чтения приложение не хранит. Обходной путь: своя ссылка на каждого получателя.
Какие данные придётся резервировать?
Том с базой и том с файлами, а при Postgres ещё и саму базу. Встроенного бэкапа нет, его настраивают отдельно.
Коротко о главном
PdfDing решает узкую задачу и решает её по существу. Файл остаётся у вас, клиент получает ссылку с паролем, сроком и, для одиночных PDF, лимитом открытий. Читателей по именам оно не показывает, резервных копий не делает, а держит его один разработчик, который недавно сменил площадку.
Хотите выдавать клиентам документы по ссылке, а не вложением, и увидеть это на своём сервере? Напишите мне в Telegram слово «ЧИТАЛКА». Разберём ваши сценарии, поднимем пробную версию и решим, хватает ли её.
Что я делаю для бизнеса
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»
12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.
Готовы обсудить вашу задачу?
Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


