Skip to main content
50% off all plans, limited time. Starting at $2.48/mo
PdfDing

PdfDing

PdfDing is a self-hosted PDF manager, viewer, and editor with a clean experience across devices. Upload and organize documents, read them in the browser, and share them, with per-user accounts and optional admin controls. AGPL-3.0 licensed with 1,700+ GitHub stars.

At a glance

1.8k

GitHub stars

3

Page views

350

Active installs

License AGPL-3.0 Version Latest OS Ubuntu Server 24.04 LTS Min RAM 1 GB IP IPV4

Active installs is sample data (staging preview); real metric wires in before launch.

Access

  1. Open the PdfDing URL: https://<SERVER-IP>
  2. Self-signed SSL certificate is used, so a browser warning is expected on first visit.
  3. Sign up to create your first account.

Control Registration

User registration is enabled by default.

To disable new user registrations, edit:

nano /root/pdfding/.env

Set:

DISABLE_USER_SIGNUP=TRUE

Apply the changes:

cd /root/pdfding
docker compose up -d

Admin Account

Admin users can view and delete users.

Creating an admin user is optional. To grant administrator privileges to an existing user, run the following command on the server:

docker exec -it pdfding python pdfding/manage.py make_admin -e YOUR_EMAIL

Admin users can also grant administrator privileges to other users through the UI.

Alternatively, create a new admin account directly:

docker exec -it pdfding python pdfding/manage.py createsuperuser

Important Files and Directories

  • Install path: /root/pdfding
  • Compose file: /root/pdfding/docker-compose.yml
  • Environment file: /root/pdfding/.env
  • Database volume: /var/lib/docker/volumes/pdfding_sqlite_data
  • Media volume: /var/lib/docker/volumes/pdfding_media
  • Nginx config: /etc/nginx/sites-available/pdfding
  • SSL certificate: /etc/nginx/ssl/pdfding.crt
  • SSL private key: /etc/nginx/ssl/pdfding.key

Service Management

View running containers:

docker compose -f /root/pdfding/docker-compose.yml ps

Restart PdfDing:

docker compose -f /root/pdfding/docker-compose.yml restart

View PdfDing logs:

cd /root/pdfding && docker compose logs -f

Stop PdfDing:

docker compose -f /root/pdfding/docker-compose.yml stop

Start PdfDing:

docker compose -f /root/pdfding/docker-compose.yml start

Recreate PdfDing:

docker compose -f /root/pdfding/docker-compose.yml up -d

Check Nginx status:

systemctl status nginx

Restart Nginx:

systemctl restart nginx

Reload Nginx:

systemctl reload nginx

Validate the Nginx configuration:

nginx -t

Enabling HTTPS with a Domain

1. Point your domain to the server IP.

2. Edit /etc/nginx/sites-available/pdfding and replace both server_name _; directives with your domain (e.g. server_name yourdomain.com;).

3. Install Certbot:

apt install -y certbot python3-certbot-nginx

4. Obtain a Let's Encrypt certificate:

certbot certonly --nginx --non-interactive --agree-tos --email youremail@example.com -d yourdomain.com

5. Edit /etc/nginx/sites-available/pdfding and update the ssl_certificate and ssl_certificate_key directives to use your Let's Encrypt certificate.

Before:
    ssl_certificate     /etc/nginx/ssl/pdfding.crt;
    ssl_certificate_key /etc/nginx/ssl/pdfding.key;
After:
    ssl_certificate  /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

6. Reload Nginx to apply the changes:

systemctl reload nginx

7. Edit /root/pdfding/.env and update HOST_NAME from <SERVER_IP> to your domain (e.g. HOST_NAME=yourdomain.com).

8. Recreate the services:

cd /root/pdfding && docker compose up -d

9. Access PdfDing at https://yourdomain.com.

More in Self Hosted

Related apps.

Deploy PdfDing now. From $2.48/mo.