Prérequis

Pour l’installation nous avons besoin de :

  • Python, pip et outils de compilation
  • TesseractOCR et le pack de langue française
  • Redis 7
  • PostgreSQL version 16
  • Java 11 et Tika
  • Libmagic et Exiftool

Installation de Python

On va faire tout d’abord mettre à jour les dépôts :

apt update

Ensuite, on installe python, venc et les outils de compilation:

apt install python3 python3-venv python3-pip build-essential libmagic1 -y

Installation de TesseractOCR et pack de langue française

Pour installer TesseractOCR et le pack de langue française:

apt install tesseract-ocr tesseract-ocr-fra -y

Redis version 7

Pour installer Redis version 7:

apt install redis-server -y

On vérifie la version avec la commande:

redis-server --version

On devrait tomber sur la version v=77.0.15

PorsgreSQL version 16

Il n’existe pas de dépôt PostgreSQL 16 par défaut, on va donc l’ajouter :

echo "deb http://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

Installation PostgreSQL 16

Maintenant que l’on a mis le dépôt, il faut l’installer avec la commande:

apt install postgresql-16 -y

Il faut maintenant configurer PostgreSQL, on va donc se connecter:

su - postgres
psql

On va maintenant créer un utilisateur et créer une base de données via le shell de PostgreSQL:

CREATE USER paperless WITH PASSWORD 'password';
CREATE DATABASE paperless OWNER paperless;

Création d’un user et d’une bdd

Java 11 et Tika

Pour installer Java 11? il faut aller dans le fichier:

nano /etc/apt/Sources.list

Il faut maintenant ajouter la ligne dans le fichier

deb https://deb.debian.org/debian unstable main non-free contrib

Ensuite il faut actualiser les dépôts et installer java 11

apt update
apt install openjdk-11-jre

Pour télécharger le serveur Tika, on utilise la commande:

wget https://dlcdn.apache.org/tika/2.9.3/tika-app-2.9.3.jar -O tika-app.jar

Ensuite, on créé un fichier pour démarre automatiquement Tika

#!/bin/bash
exec java -jar /opt/tika/tika-app.jar "$@"

Fichier de démarrage automatique pour Tika

Et on donne les permissions au fichier avec la commande:

chmod +x /usr/local/bin/tika

Libmagic et Exiftool

Pour installer les dépendances pour les métadonnées, il faut utiliser la commande:

apt install libmagic1 exiftool -y

Paperless NGX

Installation

Pour commencer l’installation, nous allons télécharger le code source de github via la commande:

wget https://github.com/paperless-ngx/paperless-ngx/releases/download/v2.15.1/paperless-ngx-v2.15.1.tar.xz

Et on décompresse l’archive avec la commande:

tar -xf paperless-ngx-v2.15.1.tar.xz

On active maintenant l’environnement virtuel avec la commande:

source /home/paperless/paperless-ngx/venv/bin/activate

On peut maintenant lancer l’installation avec la commande:

pip install --upgrade pip wheel setuptools

Puis:

pip install

Configuration

On peut désormais créé un fichier paperless.env pour mettre toutes les informations:

Paperless.env

  • Il ne faut pas oublier de mettre le nom du user, le nom de la bdd et le mot de passe.
  • J’ai modifié le fichier pour avoir le dossier d’importation qui s’appelle scannes au lieu de consume, cela sera plus parlant pour les utilisateurs
  • J’ai ajouté la ligne PAPERLESS_FILENAME_FORMAT pour que les fichiers soient automatiquement triés dans des fichiers
  • J’ai forcé l’OCR car l’ancienne procédure de l’entreprise utilisait Adobe pour l’indexation. Vu que les fichiers étaient déjà indexés, Paperless ne les prennaient pas en considération

J’ai généré une clé de 50 carractères avec la commande python:

python3 -c "import secrets; print(secrets.token_urlsafe(50))"

Il faut maintenant créer un fichier de démarrage de la machine

Fichier paperless-ngx.service

Nginx (Bonus)

On va installer Nginx pour faire une redirection vers le port 80 afin de tomber directement sur le serveur Paperless-ngx

apt install nging -y

On lance automatiquement nginx au démarrage de la machine

systemctl enable --now nginx

On créé le fichier paperless.conf

Configuration nginx pour la redirection

server {
    listen 80;
    server_name  192.168.0.14;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
    }
}

On peux maintenant démarrer paperless

systemctl start paperless-ngx

On a désormais accès au site via la port 80

Page d’accueil de Paperless

Samba

Je vais mettre en place un service samba pour que les utilisateurs puissent scanner et enregistrer directement dans le répertoire home / paperless / BL / scannes

Pour installer le service samba, on utilise la commande:

apt install samba -y

Puis on modifie le fichier de configuration:

Configuration de samba
##############################################################################
# Sample configuration file for the Samba suite for Debian GNU/Linux.
##############################################################################

#======================= Global Settings =======================
[global]

### Identification ###
   workgroup = R2S
   server string = Serveur Samba Paperless

#### Networking ####
#    interfaces = 127.0.0.0/8 eth0
#    bind interfaces only = yes

#### Logging ####
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d

#### Authentication ####
   security = user
   map to guest = Bad User
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes

# Standalone server mode
   server role = standalone server

#### User Shares ####
   usershare allow guests = yes
   usershare max shares = 100

##############################################################################
# Share Definitions
##############################################################################

# Homes share (par défaut)
[homes]
   comment = Home Directories
   browseable = no
   read only = yes
   create mask = 0700
   directory mask = 0700
   valid users = %S

# Partage des scans Paperless
[scannes]
   comment = Scans Paperless
   path = /home/paperless/BL/scannes
   browseable = yes
   writable = yes
   valid users = paperless
   force user = paperless
   create mask = 0640
   directory mask = 0750

# Partage de l'archive Paperless
[archive]
   comment = Archive Paperless
   path = /home/paperless/media/documents/archive
   browseable = yes
   writable = yes
   valid users = paperless
   force user = paperless
   create mask = 0640
   directory mask = 0750

# Imprimantes (optionnel)
[printers]
   comment = All Printers
   browseable = no
   path = /var/tmp
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
#   write list = root, @lpadmin

J’ai ajoute:

  • workgroup = R2S : pour que les postes ayant une session active directory puisse y accéder sans avoir d’erreur de sécurité
  • server string = Serveur Samba Paperless : c’est une simple description
  • security = user : Pour avoir une connexion via mot de passe
  • valid users = paperless / force user = paperless : Je n’utilise pas de compte samba mais le compte paperless pour que Paperless-NGX ai accès aux fichiers et en soit propriétaire

Notre installation est désormais prête, passons au tests !

Tests

Pour commencer les tests, on connecte le dossier partagé scannes, on monte le disque sur le poste et on l’appel BL Scannés ainsi que le dossier archive que j’appelle Archive BL pour que cela soit plus compréhensible pour les utilisateurs.

Connexion au dossier BL Scannés

Connexion au dossier Archive BL

Une fois que l’on a connecté les dossiers partagés sur le PC, on modifie le paramètre d’emplacement de sauvegarde pour qu’il envoie les BLs scannés dans BL Scannés.

Papramètres application scan

On insère 5 BL dans le scan et on lance la numérisation

Ajout des feuilles dans le scanneur

Les BLsapparaissent dans le logiciel de scan

On clique sur enregistrer ce qui ouvre un explorateur directement dans le dossier BL Scannés

Enregistrer les BL dans le dossier BL Scannés

On clique sur enregister, on vérifie qu’ils arrivent dans le dossier

Le dossier BL Scannés est plein

Maintenant on peux voir sur l’interface web de Paperless NGX que les BLs sont en cours de traitement

Tâches dans les fichiers

L’avantage d’utiliser le fichier BL scannés pour importer les documents, c’est que Paperless NGX utilise ce fichier comme “file d’attente”, lorsqu’il traite un fichier, il le supprime du dossier BL Scannés et quand il a fini l’indexation, il le déplacera dans Archive BL. (Il sera trié par mois et par année vu qu’on l’a paramètré)

Indexation des ficheirs terminée

Une fois que tous les documents sont dans Terminés, on peut voit que le dossier BL Scannés c’est vidé

Dossier BL scannés vixé

Maintenant nous pouvons regarder le dossier Archive BL qui c’est rempli et des dossiers on été créé pour le tri mensuel

Dossier Archive BL rempli

Ce dossier permettra de faire une synchronisation du dossier sur le Google Drive de l’entreprise comme demandé.

Si nous regardons dans la catégorie Documents de l’interface web Paperless NGX, nous avons les documents.

BL dans l’interface

Maintenant, le service client peut rechercher le numéro du BL rapidement

Recherche de BL

Nous pouvons même ouvrir le BL très rapidement sans avoir à le télécharger

contenu du BL