PdfDing – небольшой веб-сервис с открытым исходным кодом, который можно развернуть у себя на сервере и использовать как инструмент для обмена PDF-файлами. Он работает на Django и внутри по умолчанию использует SQLite. Кроме того, PdfDing сохраняет загруженные документы в файловой системе и позволяет делиться ими через ссылки.
Приложение обладает минималистичным веб-интерфейсом, в котором есть светлая и тёмная темы, и где даже можно задавать основной цвет по своему усмотрению. У PdfDing есть встроенный механизм очистки. Логика заключается в том, что если у документа указана дата удаления, то по расписанию он автоматически удаляется, что позволяет не засорять базу данных. По сути, PdfDing – это лёгкий аналог крупных сервисов для отправки файлов, при этом заточенный именно под PDF. PdfDing обычно используют как приватный обменник документов внутри компании или для личных целей.
PdfDing рассчитан на установку через Docker или Docker Compose. Чтобы установить PdfDing, достаточно написать минимальный docker-compose.yml
. Фактически, инсталляция сервиса упрощается до создания одного файла и выполнения одной команды, что удобно для запуска на виртуальном выделенном сервере.
В статье рассмотрим, как установить PdfDing при помощи Docker Compose на VPS, работающий под управлением Ubuntu 24.04.
Как установить PdfDing на Ubuntu
Установка приложения при помощи чистого Docker означает запуск контейнера одной командой docker run ...
. В свою очередь, Docker Compose представляет собой декларативное описание всего проекта в файле docker-compose.yml
. Используя Docker Compose, впоследствии можно инсталлировать и запустить в одном проекте ещё несколько сервисов, например, прокси-сервер или СУБД, и управлять ими при помощи простых команд.
Таким образом, перед запуском сервиса PdfDing сначала необходимо установить Docker Compose. Как установить Docker Compose, описано в посвящённой этому статье нашего справочника.
Для установки непосредственно PdfDing перейдите в домашний каталог вашего пользователя:
$ cd ~
Создайте там директорию для PdfDing:
$ mkdir -p ~/pdfding
Перейдите в созданный каталог:
$ cd ~/pdfding
Файл docker-compose.yml
В каталоге, предназначенном для работы PdfDing, создайте файл docker-compose.yml
:
$ nano docker-compose.yml
В нашем примере содержимое данного файла выглядит следующим образом:
services:
pdfding:
container_name: pdfding
image: mrmn/pdfding:latest
restart: unless-stopped
ports:
- "8000:8000"
environment:
- DEFAULT_THEME=dark
- DEFAULT_THEME_COLOR=blue
- SECRET_KEY=abcdef...890
- HOST_NAME=X.X.X.X
- ALLOWED_HOSTS=X.X.X.X,localhost,127.0.0.1
- CSRF_COOKIE_SECURE=FALSE
- SESSION_COOKIE_SECURE=FALSE
volumes:
- sqlite_data:/home/nonroot/pdfding/db
- media:/home/nonroot/pdfding/media
volumes:
sqlite_data:
media:
Описание контейнера в файле docker-compose.yml
, предназначенного для работы PdfDing, состоит из следующих элементов:
pdfding
– имя сервиса, под которым он будет доступен внутриdocker-compose
;container_name
– название контейнера;image
– имя готового Docker-образа из Docker Hub, в данном случае Docker-образа PdfDing;restart: unless-stopped
– настройка указывает на то, как Docker будет вести себя, если контейнер остановится сам или из-за ошибки;ports: - "8000:8000"
– проброс порта 8000 контейнера наружу на порт 8000 хоста;environment
– секция, в которой задаются переменные окружения, используемые приложением;DEFAULT_THEME=dark
– по умолчанию устанавливает тёмную тему;DEFAULT_THEME_COLOR=blue
– по умолчанию устанавливает синюю схему интерфейса;SECRET_KEY=abcdef...890
– секретный ключ для криптографии, который необходимо заменить на случайный, чтобы обеспечить безопасность сессий и CSRF;HOST_NAME=X.X.X.X
– IP-адрес или доменное имя, по которому будет доступно приложение;ALLOWED_HOSTS=X.X.X.X,localhost,127.0.0.1
– список хостов, с которых можно будет обращаться к приложению;CSRF_COOKIE_SECURE=FALSE
– флаг, отключающий настройку cookie только через HTTPS, в противном случае не будет работать доступ через HTTP;SESSION_COOKIE_SECURE=FALSE
– то же, только для session cookie;
volumes
– секция, определяющая настройки хранения данных за пределами контейнера, что позволяет сохранять эти данные при пересоздании контейнера.
Последняя секция volumes
является объявлением томов, которые потом подключаются к сервису. Также обратите внимание, что в файле docker-compose.yml
необходимо заменить X.X.X.X
на IP-адрес вашего виртуального сервера.
Кроме того, в файле присутствует параметр SECRET_KEY
. Он нужен для шифрования и подписи сессий, cookies и токенов безопасности внутри PdfDing. Он защищает веб-интерфейс от подделки данных и атак, и поэтому всегда должен быть длинным, случайным и уникальным. Чтобы сгенерировать значение для этого параметра, выполните команду:
$ openssl rand -hex 32
Строку, являющуюся выводом команды, скопируйте и вставьте в docker-compose.yml
как значение параметра SECRET_KEY
.
Запуск контейнера PdfDing
После завершения работы с docker-compose.yml
запустите сервис, описанный в файле:
$ sudo docker compose up -d
В команде выше флаг -d
, то есть detached
, означает, что запускаемые контейнеры будут работать в фоне, а терминал не будет занят их логами.
Чтобы посмотреть текущее состояние запущенного контейнера, выполните команду:
$ sudo docker ps
Колонка STATUS
в выводе команды должна содержать значение Up
, означающее, что контейнер работает.

Если это так, откройте браузер и перейдите на http://X.X.X.X:8000
, где замените X.X.X.X
на IP-адрес вашего сервера.
При этом браузер должен открыть стартовую страницу веб-интерфейса PdfDing. При первом подключении к сервису создайте учётную запись для авторизации при помощи кнопки Sing up
в верхнем правом углу экрана.

Чтобы зарегистрировать новую учётную запись, укажите email, дважды – пароль и нажмите Sing Up
.

В результате браузер откроет начальную страницу веб-интерфейса PdfDing.
