Files
2026-06-09 18:40:21 +02:00

6.9 KiB


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é)

# 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

Pages Liées