Разработка 4 мин чтения

PdfDing: договоры клиентам по ссылке с паролем и сроком

PdfDing хранит PDF на вашем сервере и отдаёт их клиентам по ссылке или QR-коду с паролем, сроком и лимитом открытий. Разобрали по исходникам, что защита ссылок умеет на самом деле и чего в проекте нет: журнала читателей и встроенных бэкапов.

PdfDingself-hostedPDFдокументы клиентам
Коротко. PdfDing это веб-приложение для PDF на вашем сервере. В нём можно хранить, читать и размечать документы, а клиентам отдавать их по ссылке или QR-коду. На ссылку вешаются пароль, срок жизни и лимит открытий. Кто именно читал, оно не покажет, только сколько раз открыли. Лицензия AGPL-3.0, запускается одним контейнером Docker. Проект ведёт один человек, и с конца августа он живёт на Codeberg, а не на GitHub.

Договор в чужой переписке

Юрист отправил клиенту проект договора в мессенджер. Бухгалтер выслал акт сверки на почту. Через год этот файл лежит у клиента, у его помощницы и в облаке телефона, который он забыл в такси. Отозвать его нельзя. Узнать, открыл ли его вообще кто-нибудь, тоже.

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

Вариант проще: файл остаётся у вас на сервере, клиенту уходит ссылка. Её можно закрыть паролем, ограничить по времени и погасить, когда документ перестал быть нужным. Именно это умеет 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 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх