Files
wiki/Catalogue-Self-Hosted/apps/app-paperless-ngx.md
T
2026-06-09 18:40:21 +02:00

166 lines
8.1 KiB
Markdown

---
title: Paperless-ngx
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, document-management, ged, ocr, python, django, postgresql]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=document-management, https://github.com/paperless-ngx/paperless-ngx, https://docs.paperless-ngx.com/]
---
# Paperless-ngx 📚
> Système de **gestion électronique de documents (GED)** grand public : scannez, classez, taguez et retrouvez tous vos papiers (factures, contrats, courriers) via une recherche full-text dopée à l'OCR.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://docs.paperless-ngx.com/ |
| **GitHub** | https://github.com/paperless-ngx/paperless-ngx |
| **License** | GPL-3.0 |
| **Langage** | Python / Django (frontend Alpine.js) |
| **Étoiles** | ⭐2796 |
| **Dernière MAJ** | 2026-05-29 |
| **Catégorie** | [[cat-document-management]] |
## Description
Paperless-ngx est le **fork communautaire actif** de Paperless (arrêté en 2020), devenu la référence de la GED personnelle auto-hébergeable. Le principe est simple : vous déposez vos scans (PDF, images, fichiers Office) dans un dossier `consume/`, Paperless applique **l'OCR** (Tesseract) pour extraire le texte, détecte automatiquement les **métadonnées** (date, montant, expéditeur, type de document) et **range** le document dans une arborescence de correspondants/tags. Tout est indexé et **recherchable en full-text**.
L'**interface web** offre une vue type « boîte de réception » (à la Gmail), avec filtres avancés (type, date, tag, correspondant, montant), aperçus PDF, et un système de **workflows** (statut, partage, partage de liens publics). Le **machine learning** apprend de vos classements manuels pour suggérer automatiquement le bon tag/correspondant sur les nouveaux documents. L'**OCR allemand** est très bon (le projet est né en Allemagne), le français fonctionne correctement avec les bons modèles.
L'écosystème comprend un **client mobile** (Paperless Mobile, Flutter, F-Droid), des **intégrations** avec Nextcloud, Synology, scanners Fujitsu SnapScan, et un **consumer d'email** (IMAP) pour importer automatiquement les pièces jointes. C'est l'une des apps les plus installées en homelab, avec une communauté très active et un Wiki/RFC bien fourni. Attention : c'est une app « lourde » (PostgreSQL + Redis + Python), prévoir 1-2 Go de RAM minimum.
## Installation
### Via Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
paperless:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: paperless-ngx
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- paperless-data:/usr/src/paperless/data
- paperless-media:/usr/src/paperless/media
- paperless-consume:/usr/src/paperless/consume
- paperless-export:/usr/src/paperless/export
environment:
- PAPERLESS_REDIS=redis://broker:6379
- PAPERLESS_DBHOST=db
- PAPERLESS_DBNAME=paperless
- PAPERLESS_DBUSER=paperless
- PAPERLESS_DBPASS=ChangeMeDbPass!
- PAPERLESS_SECRET_KEY=ChangeMeSecretKey!
- PAPERLESS_URL=https://docs.example.com
- PAPERLESS_TIME_ZONE=Europe/Paris
- PAPERLESS_OCR_LANGUAGE=fra+eng
- PAPERLESS_OCR_MODE=skip_noarchive
depends_on:
- db
- broker
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/"]
interval: 30s
timeout: 10s
retries: 3
db:
image: postgres:16-alpine
container_name: paperless-db
restart: unless-stopped
environment:
- POSTGRES_DB=paperless
- POSTGRES_USER=paperless
- POSTGRES_PASSWORD=ChangeMeDbPass!
volumes:
- paperless-db:/var/lib/postgresql/data
broker:
image: redis:7-alpine
container_name: paperless-redis
restart: unless-stopped
volumes:
paperless-data:
paperless-media:
paperless-consume:
paperless-export:
paperless-db:
```
> **Note** : ajouter `gotenberg` et `tika` comme services additionnels permet de générer des aperçus de documents Office et PDF en HTML (cf. [doc officielle](https://docs.paperless-ngx.com/configuration/#optional-dependencies)).
### Installation manuelle
1. **Pré-requis** : Python 3.11+, PostgreSQL 13+, Redis 6+, Tesseract OCR (`tesseract-ocr tesseract-ocr-fra tesseract-ocr-eng`), ImageMagick, Ghostscript, libpoppler, Java (pour Tika).
2. **Installation** : `pip install paperless-ngx` (paquet PyPI).
3. **Initialisation** : `paperless-manage migrate && paperless-manage createsuperuser`.
4. **Consommateur** : `paperless-consumer` à mettre en cron ou systemd.
5. **Web** : `gunicorn -w 3 paperless.wsgi` derrière Nginx.
## Configuration
- **Premier admin** : créer via `paperless-manage createsuperuser` (ou via l'UI au premier lancement).
- **Correspondants/Tags/Types** : créer l'arborescence AVANT d'importer en masse (sinon tout finit en « sans catégorie »).
- **Workflows** : configurer les règles auto-classement dans Settings → Workflows (exemple : « si texte contient 'EDF' → tag Énergie, correspondant EDF »).
- **ML** : après 50+ documents classifiés manuellement, Paperless commence à suggérer (Settings → Machine Learning).
- **Dossier consume** : monter un partage SMB/NFS depuis votre scanner ou utiliser le scan-to-mail.
- **Backups** : 4 dossiers critiques → `data/` (DB SQLite historique ou non utilisé si Postgres), `media/` (originaux), `db/` (dump Postgres), `export/` (archive).
- **HTTPS** : obligatoire, via Traefik/Caddy.
- **Reverse proxy** : bien gérer les `client_max_body_size` (uploads PDF jusqu'à 100 Mo).
## Alternatives
### Open Source
- [[app-mayan-edms]] — EDMS Python avec workflows, plus « entreprise »
- [[app-papermerge]] — concurrent direct, UI plus moderne (Django + Vue)
- [[app-papra]] — alternative moderne minimaliste (TypeScript)
- [[app-docspell]] — scanner/OCR Scala, axé « zéro-effort »
- [[app-teedy]] (Sismics Docs) — GED légère Java
- [[app-archivebox]] — archivage web (pas vraiment GED)
- **OpenKM** — EDMS Java enterprise
- **Alfresco Community** — GED enterprise complète (lourd)
### Propriétaires
- **Evernote** / **Notion** — prise de notes, pas vraiment GED
- **Google Drive + OCR** — cloud Google, OCR limité
- **Dropbox + HelloSign** — cloud freemium
- **Adobe Scan** — mobile, OCR cloud Adobe
- **1Password Documents** — pour quelques documents sensibles
- **Evernote Scannable** (iOS) — scan mobile, cloud
## Sécurité
- **Chiffrement at-rest** : monter les volumes Paperless sur un disque LUKS ou activer le chiffrement ZFS.
- **HTTPS obligatoire** + HSTS via reverse proxy.
- **Authentification** : compte admin unique, pas de SSO natif (compter sur Authelia/Authentik via reverse proxy).
- **Permissions fines** : groupes d'utilisateurs (admin, utilisateur) — non encore au niveau LDAP complet.
- **Secrets** : `PAPERLESS_SECRET_KEY` doit être long et aléatoire (utiliser `openssl rand -hex 32`).
- **Mise à jour** : suivre les releases GitHub (canal stable), les CVE Django/Pillow sont rares mais possibles.
- **Logs** : `paperless-manage changelog` (audit) + logs Django standards.
- **Isolation réseau** : exposer Paperless uniquement via VPN ou reverse proxy authentifié, jamais en direct sur Internet.
- **Backups testés** : un Paperless corrompu = 10 ans de documents perdus, tester régulièrement la restauration.
## Ressources
- Documentation officielle : https://docs.paperless-ngx.com/
- GitHub : https://github.com/paperless-ngx/paperless-ngx
- Wiki communautaire : https://github.com/paperless-ngx/paperless-ngx/wiki
- Discord : https://discord.gg/paperless
- selfh.st : https://selfh.st/apps/?tag=document-management
- r/PaperlessNGX : https://reddit.com/r/PaperlessNGX
## Pages Liées
- [[cat-document-management]] — catégorie parente
- [[app-mayan-edms]] — alternative enterprise
- [[app-papermerge]] — concurrent moderne
- [[app-papra]] — alternative TS minimaliste
- [[app-stirling-pdf]] — outil PDF complémentaire (post-traitement)
- [[recettes-docker-compose]] — templates de déploiement
- [[securisation-home-lab]] — bonnes pratiques sécurité
- [[strategie-backup-3-2-1]] — crucial pour une GED