---
title: PdfDing
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, document-management, pdf, lecteur, python, django, minimaliste]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=document-management, https://github.com/mrmn2/PdfDing, https://www.pdfding.com/]
---

# PdfDing 📑

> **Gestionnaire de PDF minimaliste** écrit en Python/Django : uploadez, taggez, lisez et partagez vos PDF en ligne. Pensé pour remplacer Pocket/Instapaper mais pour les PDF, avec un lecteur web intégré.

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://www.pdfding.com/ |
| **GitHub** | https://github.com/mrmn2/PdfDing |
| **License** | MIT |
| **Langage** | Python / Django (frontend Alpine.js + Tailwind) |
| **Étoiles** | ⭐101 |
| **Dernière MAJ** | 2026-04-20 |
| **Catégorie** | [[cat-document-management]] |

## Description

PdfDing est un **gestionnaire de PDF personnel** qui se distingue de Paperless/Papermerge en se concentrant sur la **lecture** plutôt que l'archivage de masse. L'idée : un endroit unique pour stocker tous les PDF qu'on accumule (articles, livres, manuels, recettes, notes) et les **lire depuis n'importe quel navigateur** avec un lecteur web intégré (rendu PDF.js), sans avoir à les télécharger.

Fonctionnalités principales : **upload de PDF** (drag&drop, multiple), **tags** (libres, multiples par PDF), **aperçu** in-app avec **progression de lecture** (synchronisée entre devices), **recherche** dans les noms/tags, **partage par lien** (avec expiration, QR code), **modes clair/sombre**, **dashboard** avec statistiques de lecture, **thème personnalisable** (couleur d'accent). L'UI est **moderne et rapide** (Alpine.js + Tailwind), sans la lourdeur d'un Paperless.

L'**architecture** est volontairement simple : un seul service Django, SQLite ou PostgreSQL, pas de worker Celery (tout est synchrone), pas de service d'OCR (PdfDing n'indexe pas le contenu, juste les métadonnées). Parfait pour un homelab léger (Raspberry Pi 4, NAS Synology). Le **mode multi-utilisateurs** est supporté, ce qui permet de partager une instance familiale ou associative. Le **modèle freemium** (cloud payant) finance le développement open source.

## Installation

### Via Docker Compose (recommandé)

```yaml
# docker-compose.yml
services:
  pdfding:
    image: mrmn2/pdfding:latest
    container_name: pdfding
    restart: unless-stopped
    ports:
      - "8765:8000"
    environment:
      - DJANGO_SETTINGS_MODULE=PdfDing.settings
      - SECRET_KEY=ChangeMeWithOpensslRandHex50
      - ALLOWED_HOSTS=*
      - DATABASE_URL=sqlite:///data/db.sqlite3
      - MEDIA_ROOT=/data/media
      - STATIC_ROOT=/data/static
      - CSRF_TRUSTED_ORIGINS=https://pdf.example.com
      - EMAIL_HOST=mail.example.com
      - EMAIL_PORT=587
      - EMAIL_HOST_USER=noreply@example.com
      - EMAIL_HOST_PASSWORD=ChangeMeSmtp!
      - EMAIL_USE_TLS=true
      - DEFAULT_FROM_EMAIL=PdfDing <noreply@example.com>
    volumes:
      - pdfding-data:/data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/health/"]
      interval: 30s
      timeout: 10s
      retries: 3

volumes:
  pdfding-data:
```

> **Astuce** : remplacer SQLite par PostgreSQL en changeant `DATABASE_URL=postgres://user:***@host:5432/pdfding` et en ajoutant un service `db` (image `postgres:16-alpine`).

### Installation manuelle

1. **Pré-requis** : Python 3.10+, pip, SQLite (inclus) ou PostgreSQL 13+, libpoppler (pour prévisualisation).
2. **Clone & install** : `git clone https://github.com/mrmn2/PdfDing && cd PdfDing && pip install -r requirements.txt`.
3. **Config** : copier `.env.example` vers `.env` et renseigner `SECRET_KEY`, `ALLOWED_HOSTS`, `DATABASE_URL`.
4. **Migrations** : `python manage.py migrate`.
5. **Statique** : `python manage.py collectstatic`.
6. **Lancer** : `python manage.py runserver 0.0.0.0:8000` (dev) ou `gunicorn PdfDing.wsgi` (prod).
7. **Premier admin** : `python manage.py createsuperuser`.

## Configuration

- **Premier admin** : créé via `createsuperuser`, se connecter pour configurer.
- **Multi-user** : par défaut, signup ouvert (à désactiver via `SIGNUP_ENABLED=false`).
- **Tags** : créer depuis l'UI, autocomplete sur nouveaux PDF.
- **Partage** : activer le partage public par lien dans Settings → Sharing.
- **Thème** : 6 thèmes couleurs, mode clair/sombre, persistant en localStorage.
- **SMTP** : configurer un serveur SMTP pour l'envoi d'emails (reset password, partage par email).
- **HTTPS** : obligatoire via reverse proxy.
- **Backups** : copier `/data` (DB SQLite + fichiers PDF + statiques).
- **Reverse proxy** : bien gérer `client_max_body_size` (uploads PDF jusqu'à 50 Mo).

## Alternatives

### Open Source
- [[app-stirling-pdf]] — boîte à outils PDF complète (Java)
- [[app-paperless-ngx]] — GED complète avec OCR (beaucoup plus lourd)
- [[app-papermerge]] — GED moderne avec OCR (Python/Vue)
- [[app-papra]] — GED minimaliste TypeScript
- [[app-i-librarian]] — bibliothèque PDF axée recherche (PHP)
- [[app-sheetable]] — gestionnaire de spreadsheets (TypeScript)
- **Calibre** — bibliothèque e-books (PDF/EPUB/MOBI)
- **Alexandria** — bookmark manager PDF
- **Hammond** (legacy) — lecteur PDF Django simple

### Propriétaires
- **Pocket** (Mozilla, abandonné en 2025) — lire plus tard
- **Instapaper** — lire plus tard, freemium
- **Readwise Reader** — lecteur universel, freemium
- **Apple Books** — bibliothèque PDF/e-books iCloud
- **Google Drive PDF Viewer** — basique
- **Adobe Acrobat Reader** — référence desktop
- **Foxit Reader** — lecteur PDF desktop populaire
- **Mendeley** — gestionnaire PDF universitaire (freemium)

## Sécurité

- **HTTPS obligatoire** + HSTS via reverse proxy.
- **CSRF** : Django CSRF actif par défaut, vérifier `CSRF_TRUSTED_ORIGINS` derrière reverse proxy.
- **Auth** : email + mot de passe (hashés PBKDF2), pas de 2FA natif.
- **Sessions** : cookies `Secure`, `HttpOnly`, `SameSite=Lax` par défaut.
- **SSO** : non supporté nativement — compter sur Authelia/Authentik via reverse proxy.
- **Permissions** : multi-user avec isolation par utilisateur (un user ne voit pas les PDF d'un autre).
- **Partage public** : liens signés avec UUID v4 et expiration, révocables.
- **Mises à jour** : suivre les releases GitHub (Django + dépendances).
- **Backups** : PdfDing étant SQLite-based, un `cp` du `.db` suffit. Tester régulièrement.
- **Chiffrement at-rest** : monter le volume sur stockage chiffré.

## Ressources
- Site officiel : https://www.pdfding.com/
- Documentation : https://www.pdfding.com/help/
- GitHub : https://github.com/mrmn2/PdfDing
- selfh.st : https://selfh.st/apps/?tag=document-management

## Pages Liées
- [[cat-document-management]] — catégorie parente
- [[app-stirling-pdf]] — outil PDF complémentaire
- [[app-paperless-ngx]] — GED complète si besoin d'OCR
- [[app-i-librarian]] — bibliothèque PDF avancée
- [[recettes-docker-compose]] — templates de déploiement
- [[securisation-home-lab]] — bonnes pratiques sécurité
