Installation de Paperless-ngx avec Docker Compose
Déployez votre GED personnelle avec support OCR et fichiers Office
Webographie
- Paperless-ngx Documentation - Documentation officielle complète
- Paperless-ngx GitHub - Dépôt officiel du projet
- Gotenberg - Service de conversion de documents Office
- Apache Tika - Extraction de texte et métadonnées
Objectif
Installer et configurer Paperless-ngx, une solution complète de gestion électronique de documents (GED) avec OCR multilingue et support des fichiers Office. Cette installation inclut tous les services nécessaires : PostgreSQL, Redis, Gotenberg (conversion Office) et Tika (extraction de texte).
Prérequis
- ✅ Docker installé et fonctionnel
- ✅ Docker Compose disponible
- ✅ (Optionnel) Portainer pour la gestion via interface web
- ✅ Au moins 4 GB de RAM disponible
Vérification rapide :
docker --version
docker compose version
1. Création de la structure de dossiers
Créez les répertoires nécessaires pour Paperless-ngx :
# Création de la structure complète
mkdir -p /opt/paperless-ngx/{consume,data,media,export,postgres,redis}
# Attribution des permissions (remplacez 1000:1000 par votre UID:GID)
sudo chown -R 1000:1000 /opt/paperless-ngx
# Vérification
ls -la /opt/paperless-ngx/
Structure des dossiers :
consume/- Documents à traiter automatiquementdata/- Données de l'applicationmedia/- Documents archivés et traitésexport/- Exports et sauvegardespostgres/- Base de données PostgreSQLredis/- Cache Redis
💡 Trouver votre UID:GID :
id
# Résultat : uid=1000(votre_user) gid=1000(votre_user)
2. Création du fichier docker-compose.yml
Créez le fichier de configuration Docker Compose :
cd /opt/paperless-ngx
nano docker-compose.yml
Contenu du fichier :
version: "3.8"
services:
broker:
image: redis:7
container_name: paperless-redis
restart: unless-stopped
volumes:
- ./redis:/data
environment:
TZ: Europe/Paris
db:
image: postgres:16
container_name: paperless-db
restart: unless-stopped
volumes:
- ./postgres:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperlessuser
POSTGRES_PASSWORD: ChangezCeMotDePasse123!
TZ: Europe/Paris
gotenberg:
image: gotenberg/gotenberg:8
container_name: paperless-gotenberg
restart: unless-stopped
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
tika:
image: apache/tika:latest
container_name: paperless-tika
restart: unless-stopped
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: paperless-ngx
restart: unless-stopped
depends_on:
- db
- broker
- gotenberg
- tika
ports:
- "8095:8000"
volumes:
- ./data:/usr/src/paperless/data
- ./media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
environment:
# Base de données
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_DBNAME: paperless
PAPERLESS_DBUSER: paperlessuser
PAPERLESS_DBPASS: ChangezCeMotDePasse123!
# Services de conversion
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
# Configuration OCR
PAPERLESS_OCR_LANGUAGE: fra+eng
# Configuration générale
PAPERLESS_TIME_ZONE: Europe/Paris
PAPERLESS_SECRET_KEY: ChangezCetteCleSuperSecrete2024!
PAPERLESS_URL: http://192.168.1.100:8095
# Compte administrateur (création automatique)
PAPERLESS_ADMIN_USER: admin
PAPERLESS_ADMIN_PASSWORD: VotreMotDePasseAdmin123!
PAPERLESS_ADMIN_MAIL: admin@example.com
# Permissions
USERMAP_UID: 1000
USERMAP_GID: 1000
⚠️ PERSONNALISATION OBLIGATOIRE :
| Paramètre | À modifier |
|---|---|
POSTGRES_PASSWORD |
Mot de passe PostgreSQL (doit être identique à PAPERLESS_DBPASS) |
PAPERLESS_DBPASS |
Mot de passe PostgreSQL (même valeur que ci-dessus) |
PAPERLESS_SECRET_KEY |
Clé secrète unique (générez-en une avec openssl rand -base64 32) |
PAPERLESS_URL |
Votre IP ou nom de domaine |
PAPERLESS_ADMIN_USER |
Nom d'utilisateur admin (optionnel, par défaut "admin") |
PAPERLESS_ADMIN_PASSWORD |
Mot de passe du compte admin |
PAPERLESS_ADMIN_MAIL |
Votre adresse email |
USERMAP_UID / USERMAP_GID |
Votre UID:GID (trouvé avec id) |
PAPERLESS_OCR_LANGUAGE |
Langues OCR : fra (français), eng (anglais), deu (allemand), spa (espagnol), etc. |
💡 Générer une clé secrète sécurisée :
openssl rand -base64 32
3. Déploiement de Paperless-ngx
Lancez le stack complet :
cd /opt/paperless-ngx
docker compose up -d
Vérifiez que tous les conteneurs sont démarrés :
docker compose ps
Vous devriez voir 5 conteneurs avec le statut "Up" :
- ✅
paperless-ngx- Application principale - ✅
paperless-db- Base de données PostgreSQL - ✅
paperless-redis- Cache Redis - ✅
paperless-gotenberg- Conversion Office - ✅
paperless-tika- Extraction de texte
Surveillez les logs pendant le démarrage initial :
docker compose logs -f
Attendez que l'initialisation soit terminée (peut prendre 1-2 minutes au premier démarrage).
4. Première connexion
Accédez à l'interface web :
http://VOTRE-IP:8095
Connectez-vous avec les identifiants définis :
- Nom d'utilisateur :
admin(ou celui défini dans PAPERLESS_ADMIN_USER) - Mot de passe : celui défini dans PAPERLESS_ADMIN_PASSWORD
🎉 Félicitations ! Paperless-ngx est opérationnel !
5. Configuration initiale recommandée
Paramètres OCR (Settings → OCR) :
- OCR mode :
skip(sauter si texte déjà présent) - OCR language : Vérifier que
fra+engest bien configuré - Auto-rotate pages : Activé ✅
Métadonnées de base à créer :
1. Correspondants (Correspondents)
Créez des correspondants pour identifier automatiquement les expéditeurs/destinataires :
- EDF, Orange, Banque, Assurance, Employeur, etc.
2. Tags
Organisez vos documents avec des tags :
- Facture, Contrat, Administratif, Personnel, Impôts, Santé, etc.
3. Types de documents (Document types)
Catégorisez vos documents :
- Facture, Contrat, Courrier, Reçu, Certificat, etc.
4. Chemins de stockage (Storage paths) - Optionnel
Organisez physiquement vos documents archivés sur le disque.
6. Test avec un fichier Office
Méthode 1 : Upload via l'interface web
- Cliquez sur le bouton "Upload" en haut à droite
- Sélectionnez un document Word, Excel ou PowerPoint
- Attendez le traitement (quelques secondes à quelques minutes)
- Vérifiez que le document apparaît dans la liste
- Ouvrez-le et testez la recherche de texte
Méthode 2 : Dépôt dans le dossier consume
# Copiez un fichier dans le dossier consume
cp ~/document-test.docx /opt/paperless-ngx/consume/
# Surveillez les logs du traitement
docker compose logs -f webserver
Le fichier sera automatiquement détecté, traité et supprimé du dossier consume une fois indexé.
7. Commandes utiles
Gestion du stack :
# Voir les logs
docker compose logs -f
# Redémarrer tous les conteneurs
docker compose restart
# Arrêter le stack
docker compose stop
# Démarrer le stack
docker compose start
# Redéployer après modification du docker-compose.yml
docker compose up -d
# Mettre à jour les images
docker compose pull
docker compose up -d
Logs spécifiques :
# Logs de Paperless-ngx
docker compose logs -f webserver
# Logs de PostgreSQL
docker compose logs -f db
# Logs de Gotenberg (conversion Office)
docker compose logs -f gotenberg
# Logs de Tika (extraction texte)
docker compose logs -f tika
Gestion des utilisateurs :
# Créer un utilisateur supplémentaire
docker exec -it paperless-ngx python3 manage.py createsuperuser
# Changer le mot de passe d'un utilisateur
docker exec -it paperless-ngx python3 manage.py changepassword admin
8. Architecture de la solution
| Service | Rôle | Port |
|---|---|---|
| Paperless-ngx | Application GED principale avec interface web | 8095 |
| PostgreSQL | Base de données pour métadonnées et index | Interne |
| Redis | Cache et file d'attente pour traitement asynchrone | Interne |
| Gotenberg | Conversion de fichiers Office (docx, xlsx, pptx) vers PDF | Interne |
| Tika | Extraction de texte et métadonnées de tous types de fichiers | Interne |
Flux de traitement d'un document :
- 📄 Document déposé dans
consume/ou uploadé via l'interface - 🔄 Tika extrait le texte et les métadonnées
- 📋 Gotenberg convertit les fichiers Office en PDF si nécessaire
- 👁️ OCR (Tesseract) analyse les images et PDFs scannés
- 💾 Document stocké dans
media/, métadonnées dans PostgreSQL - 🔍 Document indexé et recherchable instantanément
Fonctionnalités principales
✅ Ce que Paperless-ngx peut faire :
- 📸 OCR multilingue sur documents scannés
- 📁 Traitement automatique des fichiers Office (Word, Excel, PowerPoint)
- 🔍 Recherche plein texte ultra-rapide
- 🏷️ Organisation avec tags, correspondants et types de documents
- 📱 Application mobile (Android/iOS) pour scanner directement
- 📧 Import automatique depuis email (via fetchmail/getmail)
- 🔄 Règles de traitement automatiques
- 📤 Export en masse (PDF, ZIP)
- 👥 Multi-utilisateurs avec permissions
- 🌐 API REST complète pour intégrations
- 🔒 Stockage local sécurisé (RGPD compliant)
Dépannage rapide
| Problème | Solution |
|---|---|
| Conteneurs ne démarrent pas | Vérifiez les logs : docker compose logs |
| Erreur de permissions | Vérifiez les UID:GID dans le docker-compose.yml et les permissions des dossiers |
| PostgreSQL ne démarre pas | Vérifiez l'espace disque et les logs : docker compose logs db |
| OCR ne fonctionne pas | Vérifiez la langue configurée dans PAPERLESS_OCR_LANGUAGE |
| Fichiers Office non traités | Vérifiez les logs de Gotenberg et Tika |
| Interface web inaccessible | Vérifiez le port 8095 et les logs du webserver |
Réinitialisation complète (⚠️ PERTE DE DONNÉES) :
docker compose down -v
sudo rm -rf /opt/paperless-ngx/{postgres,redis,data,media}/*
docker compose up -d
Conclusion
Vous avez maintenant une installation complète de Paperless-ngx opérationnelle ! Cette solution vous permet de :
- ✅ Dématérialiser tous vos documents papier
- ✅ Organiser factures, contrats et courriers administratifs
- ✅ Rechercher instantanément dans tous vos documents
- ✅ Traiter automatiquement les fichiers Office
- ✅ Respecter le RGPD avec hébergement local
🎯 Paperless-ngx transforme votre chaos documentaire en bibliothèque numérique parfaitement organisée !
Pour aller plus loin
- 🔒 Sécurité : Configurez un reverse proxy (Nginx, Traefik) avec HTTPS
- 📧 Email : Intégrez fetchmail pour import automatique des pièces jointes
- 📱 Mobile : Installez l'app Paperless Mobile pour scanner avec votre smartphone
- 💾 Sauvegarde : Automatisez les backups des dossiers
data/,media/etpostgres/ - 🔄 Automatisation : Créez des règles de traitement pour tag et classement automatiques
- 🌐 Accès distant : Utilisez Cloudflare Tunnel ou Tailscale pour accès sécurisé depuis l'extérieur
Aucun commentaire:
Enregistrer un commentaire