Installer Paperless sur un serveur via Docker

Paperless est un gestionnaire de documents magique. En effet il permet d’uploader tous les documents de votre choix, en étant équipé d’un logiciel d’OCR qui vous permettra de retrouver n’importe quel document en cherchant un seul mot qu’il contient.

On commence par se rendre sur ce site: https://github.com/paperless-ngx/paperless-ngx/tree/main/docker/compose

On y trouve une liste importante de modèles de fichiers « docker-compose ». Seuls deux nous intéressent:

docker-compose.postgres-tika.yml

 

docker-compose.env

Le premier est le docker-compose.yml qui nous permettra d’installer paperless & le second contiendra les variables d’environnement.

On va ouvrir un terminal et se connecter à son serveur en ssh. Une fois connecté on crée (ou on se rends) dans sont répertoire « docker » (pour ma part: /home/user/docker). Dans ce répertoire on crée un répertoire « paperless »:

sudo mkdir paperless

On se rends dans ce répertoire:

cd paperless

Et on crée le  fichier docker-compose.yml.

sudo nano docker-compose.yml

On se rends sur le premier lien ci-dessus et on copie colle le dans le terminal le contenu du fichier docker-compose du site internet cité plus haut.

Dans ce fichier, on va faire quelques modifs.

Le port par défaut est le port 8000. Pour ma part je l’utilise déjà pour portainer je vais donc le remplacer par le port 8095, ce qui donne concrètement:

ports:
– « 8095:8000 »

en lieu et place de :

ports:
– « 8000:8000 »

Je rappel ici que le port de gauche est celui que vous pouvez modifier, surtout pas celui de droite (qui lui se trouve dans le container).

Voilà, on ne touche rien de plus dans cette page.

On enregistre avec:

ctrl o puis Y puis enter puis ctrl x.

# Docker Compose file for running paperless from the docker container registry.
# This file contains everything paperless needs to run.
# Paperless supports amd64, arm and arm64 hardware.
#
# All compose files of paperless configure paperless in the following way:
#
# – Paperless is (re)started on system boot, if it was running before shutdown.
# – Docker volumes for storing data are managed by Docker.
# – Folders for importing and exporting files are created in the same directory
# as this file and mounted to the correct folders inside the container.
# – Paperless listens on port 8000.
#
# In addition to that, this Docker Compose file adds the following optional
# configurations:
#
# – Instead of SQLite (default), PostgreSQL is used as the database server.
# – Apache Tika and Gotenberg servers are started with paperless and paperless
# is configured to use these services. These provide support for consuming
# Office documents (Word, Excel, Power Point and their LibreOffice counter-
# parts.
#
# To install and update paperless with this file, do the following:
#
# – Copy this file as ‘docker-compose.yml’ and the files ‘docker-compose.env’
# and ‘.env’ into a folder.
# – Run ‘docker compose pull’.
# – Run ‘docker compose run –rm webserver createsuperuser’ to create a user.
# – Run ‘docker compose up -d’.
#
# For more extensive installation and update instructions, refer to the
# documentation.

version: « 3.4 »
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
– redisdata:/data

db:
image: docker.io/library/postgres:15
restart: unless-stopped
volumes:
– pgdata:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless

webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
– db
– broker
– gotenberg
– tika
ports:
– « 8000:8000 »
healthcheck:
test: [« CMD », « curl », « -fs », « -S », « –max-time », « 2 », « http://localhost:8000 »]
interval: 30s
timeout: 10s
retries: 5
volumes:
– data:/usr/src/paperless/data
– media:/usr/src/paperless/media
– ./export:/usr/src/paperless/export
– ./consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998

gotenberg:
image: docker.io/gotenberg/gotenberg:7.8
restart: unless-stopped

# The gotenberg chromium route is used to convert .eml files. We do not
# want to allow external content like tracking pixels or even javascript.
command:
– « gotenberg »
– « –chromium-disable-javascript=true »
– « –chromium-allow-list=file:///tmp/.* »

tika:
image: ghcr.io/paperless-ngx/tika:latest
restart: unless-stopped

volumes:
data:
media:
pgdata:
redisdata:

Nous allons désormais passer au fichier docker-compose.env.

Nous nous trouvons toujours dans le répertoire « paperless » qui se situe dans le répertoire « docker » et on tape la commande suivante:

sudo nano docker-compose.env

dans le fichier qui s’ouvre on copie colle le contenu de cette page.

Dans ce fichier nous allons faire encore quelques modif:

Sur les lignes 4 & 5 on peux décommenter (enlever le # en début de ligne) si votre UID & GID ne sont pas 1000 & 1000. Pour connaitre son uid & gid sous linux il suffit de taper la commande:

id

dans un terminal.

Ligne 34: on décommente et on met sa timezone:

Europe/Paris (par exemple)

Et voilà, on enregistre et c’est presque terminé.

Il suffit désormais de lancer la commande:

sudo docker-compose -d

pour lancer l’installation de Paperless.

Le « -d » permet que Paperless continue de tourner en tâche de fond

Enfin, nous allons créer un utilisateur:

docker compose run –rm webserver createsuperuser

Il suffit de laisser faire et de remplir lorsque c’est demandé le nom d’utilisateur et le mdp.

# The UID and GID of the user used to run paperless in the container. Set this
# to your UID and GID on the host so that you have write access to the
# consumption directory.
#USERMAP_UID=1000
#USERMAP_GID=1000

# Additional languages to install for text recognition, separated by a
# whitespace. Note that this is
# different from PAPERLESS_OCR_LANGUAGE (default=eng), which defines the
# language used for OCR.
# The container installs English, German, Italian, Spanish and French by
# default.
# See https://packages.debian.org/search?keywords=tesseract-ocr-&searchon=names&suite=buster
# for available languages.
#PAPERLESS_OCR_LANGUAGES=tur ces

###############################################################################
# Paperless-specific settings #
###############################################################################

# All settings defined in the paperless.conf.example can be used here. The
# Docker setup does not use the configuration file.
# A few commonly adjusted settings are provided below.

# This is required if you will be exposing Paperless-ngx on a public domain
# (if doing so please consider security measures such as reverse proxy)
#PAPERLESS_URL=https://paperless.example.com

# Adjust this key if you plan to make paperless available publicly. It should
# be a very long sequence of random characters. You don’t need to remember it.
#PAPERLESS_SECRET_KEY=change-me

# Use this variable to set a timezone for the Paperless Docker containers. If not specified, defaults to UTC.
#PAPERLESS_TIME_ZONE=America/Los_Angeles

# The default language to use for OCR. Set this to the language most of your
# documents are written in.
#PAPERLESS_OCR_LANGUAGE=eng

# Set if accessing paperless via a domain subpath e.g. https://domain.com/PATHPREFIX and using a reverse-proxy like traefik or nginx
#PAPERLESS_FORCE_SCRIPT_NAME=/PATHPREFIX
#PAPERLESS_STATIC_URL=/PATHPREFIX/static/ # trailing slash required