À quoi ça sert ?
Paperless-ngx transforme vos papiers (factures, fiches de paie, contrats) en archive numérique. Il lit le texte des documents scannés (OCR), les classe automatiquement et vous permet de tout retrouver en une recherche.
Pour qui ?
Ceux qui veulent enfin en finir avec les classeurs de papiers administratifs.
Après l'installation
- Créez le compte administrateur : docker compose run --rm paperless createsuperuser
- Déposez des PDF dans le dossier consume : ils sont importés automatiquement.
Le docker-compose
Exemple derrière Traefik, avec une explication sur chaque ligne. Pour l'adapter à votre cas (Nginx Proxy Manager, port local…), utilisez le générateur.
# docker-compose.yml : Paperless-ngx
# Ce fichier décrit les « conteneurs » à lancer : chaque conteneur est une petite
# boîte isolée qui contient un programme. Lancez-le avec : docker compose up -d
services:
# Conteneur principal : l'application Paperless-ngx
paperless:
# Le programme à télécharger (l'« image »), avec sa version
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: paperless
# Redémarre tout seul après une panne ou un redémarrage du serveur
restart: unless-stopped
# Démarre ces conteneurs avant celui-ci
depends_on:
- db
- broker
# Réglages de l'application. Les valeurs ${...} viennent du fichier .env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_DBPASS: "${DB_PASSWORD}"
PAPERLESS_SECRET_KEY: "${PAPERLESS_SECRET_KEY}"
PAPERLESS_URL: https://papiers.mondomaine.fr
PAPERLESS_OCR_LANGUAGE: fra
PAPERLESS_TIME_ZONE: Europe/Paris
USERMAP_UID: "1000"
USERMAP_GID: "1000"
TZ: Europe/Paris
# Dossiers du serveur partagés avec le conteneur (dossier_serveur:dossier_conteneur).
# Vos données sont stockées ici : ce sont ces dossiers qu'il faut sauvegarder.
volumes:
- ./data:/usr/src/paperless/data
- ./media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
# Réseau partagé avec le reverse proxy pour qu'il puisse joindre l'application
networks:
- traefik
- default
# Indique à Traefik de publier l'application sur https://papiers.mondomaine.fr avec un certificat HTTPS
labels:
- traefik.enable=true
- traefik.http.routers.paperless.rule=Host(`papiers.mondomaine.fr`)
- traefik.http.routers.paperless.entrypoints=websecure
- traefik.http.routers.paperless.tls.certresolver=letsencrypt
- traefik.http.services.paperless.loadbalancer.server.port=8000
- traefik.docker.network=traefik
# Conteneur annexe « db » (utilisé par l'application, pas accessible de l'extérieur)
db:
# Le programme à télécharger (l'« image »), avec sa version
image: postgres:17-alpine
container_name: paperless-db
# Redémarre tout seul après une panne ou un redémarrage du serveur
restart: unless-stopped
# Réglages de l'application. Les valeurs ${...} viennent du fichier .env
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: "${DB_PASSWORD}"
# Dossiers du serveur partagés avec le conteneur (dossier_serveur:dossier_conteneur).
# Vos données sont stockées ici : ce sont ces dossiers qu'il faut sauvegarder.
volumes:
- ./db:/var/lib/postgresql/data
# Conteneur annexe « broker » (utilisé par l'application, pas accessible de l'extérieur)
broker:
# Le programme à télécharger (l'« image »), avec sa version
image: redis:7-alpine
container_name: paperless-broker
# Redémarre tout seul après une panne ou un redémarrage du serveur
restart: unless-stopped
# Empêche un programme piraté de devenir administrateur
security_opt:
- no-new-privileges:true
# Le réseau du reverse proxy existe déjà : on s'y raccroche
networks:
traefik:
external: true