PdfDing

PdfDing

Docker app from grtgbln's Repository

Overview

Self-hosted PDF manager, viewer and editor offering a seamless user experience on multiple devices.

PdfDing

Selfhosted PDF manager, viewer and editor offering a seamless user experience on multiple devices.

Website  •  Demo  •  Docs  •  Get Started


GitHub Repo Stars Docker Pulls Version GitHub Actions Workflow Status Last Commit

PdfDing Demo Screenshot

Introduction

PdfDing is a PDF manager, viewer and editor that you can host yourself. It offers a seamless user experience on multiple devices. It's designed be to be minimal, fast, and easy to set up using Docker.

The name is a combination of PDF and ding. Ding is the German word for thing. Thus, PdfDing is a thing for your PDFs. Initially inspired by linkding.

A live demo is available at demo.pdfding.com.

Features

  • Seamless browser based PDF viewing on multiple devices. Remembers current position - continue where you stopped reading
  • Stay on top of your PDF collection with workspaces, collections, multi-level tagging, starring and archiving functionalities
  • Edit PDFs by adding text, highlighting and drawings
  • Add signatures to PDFs and access them on all devices
  • Manage and export PDF highlights and comments in dedicated sections
  • Clean, intuitive UI with dark mode, inverted color mode, custom theme colors and multiple layouts
  • SSO support via OIDC
  • Share PDFs with an external audience via a link or a QR Code with optional access control
  • Protect accounts with two-factor authentication (TOTP + WebAuthn)
  • Markdown Notes
  • Progress bars show the reading progress of each PDF at a quick glance

Getting started

Ready to dive into PdfDing? Then head over to the Getting Started pages of the documentation and find instructions for setting up PdfDing via Docker, Docker Compose and Helm. Configuration options can be found here.

Contributing

Small improvements, bugfixes and documentation improvements are always welcome. If you want to contribute a larger feature, consider opening an issue first to discuss it. I may choose to ignore PRs for features that don't align with the project's goals or that I don't want to maintain.

If you are interested in contributing more information can be found in the Contributing pages of the docs. There are also ways to contribute if you are not a developer.

Website & Docs

The repository, which contains the source code for the project website and the documentation, can be found on Codeberg.

Acknowledgements

This project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101135429.

NLnet foundation logo     NGI Zero Logo

Media gallery

Install PdfDing on Unraid in a few clicks.

Find PdfDing in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for PdfDing Review the template variables and paths Click Install

Requirements


        Optionally can use a separate Postgres database container, or a built-in SQLite database.
    

Download Statistics

296,607
Total Downloads
21,814
This Month
21,749
Avg / Month

Total Downloads Over Time

Loading chart...

Details

Repository
mrmn/pdfding:latest
Last Updated2026-06-22
First Seen2025-01-04

Runtime arguments

Web UI
http://[IP]:[PORT:8000]/
Network
bridge
Privileged
false

Template configuration

Web UI PortPorttcp

Container Port: 8000

Target
8000
Default
8000
Value
8000
Media PathPath

Path to the media folder

Target
/home/nonroot/pdfding/media
ThemeVariable

Theme

Target
DEFAULT_THEME
Default
dark|light
Theme ColorVariable

Theme color

Target
DEFAULT_THEME_COLOR
Default
green|blue|red|pink|orange|gray
Secret KeyVariable

Used for securing signed data. Should be to a large random value.

Target
SECRET_KEY
Host NameVariable

The host/domain name where PdfDing will be reachable.

Target
HOST_NAME
Default
127.0.0.1
Value
127.0.0.1
Require User Email VerificationVariable

Block users until they have verified their email address.

Target
ACCOUNT_EMAIL_VERIFICATION
Default
TRUE|FALSE
Disable User SignupsVariable

Disable user signups

Target
DISABLE_USER_SIGNUPS
Default
FALSE|TRUE
Database - TypeVariable

Database type

Target
DATABASE_TYPE
Default
SQLITE|POSTGRES
Database - HostVariable

Postgres database host. Remove if using SQLite.

Target
POSTGRES_HOST
Database - PortVariable

Postgres database port. Remove if using SQLite.

Target
POSTGRES_PORT
Default
5432
Database - PasswordVariable

Postgres database password. Remove if using SQLite.

Target
POSTGRES_PASSWORD
OIDC - EnableVariable

Enable OpenID Connect

Target
OIDC_ENABLE
Default
FALSE|TRUE
OIDC - Provider NameVariable

OpenID Connect provider name

Target
OIDC_PROVIDER_NAME
OIDC - Client IDVariable

OpenID Connect client ID

Target
OIDC_CLIENT_ID
OIDC - Client SecretVariable

OpenID Connect client secret

Target
OIDC_CLIENT_SECRET
OIDC - Auth URLVariable

OpenID Connect authorization URL

Target
OIDC_AUTH_URL
OIDC - EnforceVariable

Require users to use OIDC

Target
OIDC_ONLY
Default
FALSE|TRUE
Email - BackendVariable

Whether to send account related emails, e.g a password reset or account verification, to the console or via an SMTP server.

Target
EMAIL_BACKEND
Default
CONSOLE|SMTP
Email - SMTP HostVariable

SMTP server host. Remove if using the console backend.

Target
SMTP_HOST
Email - SMTP PortVariable

SMTP server port. Remove if using the console backend.

Target
SMTP_PORT
Default
25
Email - SMTP UserVariable

SMTP server user. Remove if using the console backend.

Target
SMTP_USER
Email - SMTP PasswordVariable

SMTP server password. Remove if using the console backend.

Target
SMTP_PASSWORD
Email - SMTP TLSVariable

Secure the connection to the SMTP server with TLS. Remove if using the console backend.

Target
SMTP_USE_TLS
Default
FALSE|TRUE
Email - SMTP SSLVariable

Secure the connection to the SMTP server with SSL. Remove if using the console backend.

Target
SMTP_USE_SSL
Default
FALSE|TRUE
Consumption - EnableVariable

Enable the consumption folder as an alternative way for adding PDFs.

Target
CONSUME_ENABLE
Default
FALSE|TRUE
Consumption - Skip ExistingVariable

Skip the addition PDF files if the user already has PDF with the same name and file size.

Target
CONSUME_SKIP_EXISTING
Default
TRUE|FALSE
Consumption - TagsVariable

Comma separated list of tags to add to the PDFs added via the consumption folder.

Target
CONSUME_TAGS
Backups - EnableVariable

Enable periodic backups to S3 compatible storage.

Target
BACKUP_ENABLE
Default
FALSE|TRUE
Backups - S3 EndpointVariable

S3 compatible storage endpoint. Remove if not using backups.

Target
BACKUP_ENDPOINT
Backups - S3 Access KeyVariable

S3 compatible storage access key. Remove if not using backups.

Target
BACKUP_ACCESS_KEY
Backups - S3 Secret KeyVariable

S3 compatible storage secret key. Remove if not using backups.

Target
BACKUP_SECRET_KEY
Backups - S3 BucketVariable

S3 compatible storage bucket. Remove if not using backups.

Target
BACKUP_BUCKET_NAME
Backups - ScheduleVariable

Cron schedule for the backups. Default is midnight every day.

Target
BACKUP_SCHEDULE
Default
0 0 * * *
Backups - SecureVariable

Secure the connection to the S3 compatible storage with TLS.

Target
BACKUP_SECURE
Default
FALSE|TRUE
Backups - EncryptionVariable

Encrypt the backups before uploading them to the S3 compatible storage.

Target
BACKUP_ENCRYPTION_ENABLE
Default
FALSE|TRUE
Backups - Encryption PasswordVariable

Password to encrypt the backups. Remove if not using encryption.

Target
BACKUP_ENCRYPTION_PASSWORD
Backups - Encryption SaltVariable

Salt to encrypt the backups. Remove if not using encryption.

Target
BACKUP_ENCRYPTION_SALT
Database PathPathrw

Path to the SQLite database folder. Remove if using Postgres. May need to update write permissions.

Target
/home/nonroot/pdfding/db
Default
/mnt/user/appdata/pdfding/db
Value
/mnt/user/appdata/pdfding/db
PGIDVariable
Default
1000
Value
1000
PUIDVariable
Default
1000
Value
1000
Log LevelVariable

Log level

Target
LOG_LEVEL
Default
ERROR|WARN|INFO|DEBUG
Secure CSRF CookieVariable

Set this to TRUE to avoid transmitting the CSRF cookie over HTTP accidentally.

Target
CSRF_COOKIE_SECURE
Default
TRUE|FALSE
Secure Session CookieVariable

Set this to TRUE to avoid transmitting the session cookie over HTTP accidentally.

Target
SESSION_COOKIE_SECURE
Default
TRUE|FALSE
Secure SSL RedirectsVariable

Redirects all non-HTTPS requests to HTTPS. If PdfDing is running behind a reverse proxy this can cause infinite redirects.

Target
SECURE_SSL_REDIRECT
Default
FALSE|TRUE
Secure HSTS SecondsVariable

See details: https://github.com/mrmn2/PdfDing/blob/master/docs/configuration.md#secure_hsts_seconds

Target
SECURE_HSTS_SECONDS
Default Protocol for AccountVariable

The default protocol for account related URLs, e.g. for the password forgotten procedure.

Target
ACCOUNT_DEFAULT_HTTP_PROTOCOL
Default
https|http
Internal Server PortVariable

The port where the internal server is reachable. Not recommended to change.

Target
HOST_PORT
Default
8000
Value
8000