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 -
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;
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 "$@"
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:
- 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
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
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
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.
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.
On insère 5 BL dans le scan et on lance la numérisation
On clique sur enregistrer ce qui ouvre un explorateur directement dans le dossier BL Scannés
On clique sur enregister, on vérifie qu’ils arrivent dans le dossier
Maintenant on peux voir sur l’interface web de Paperless NGX que les BLs sont en cours de traitement
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é)
Une fois que tous les documents sont dans Terminés, on peut voit que le dossier BL Scannés c’est vidé
Maintenant nous pouvons regarder le dossier Archive BL qui c’est rempli et des dossiers on été créé pour le tri mensuel
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.
Maintenant, le service client peut rechercher le numéro du BL rapidement
Nous pouvons même ouvrir le BL très rapidement sans avoir à le télécharger