Initial vault setup
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user