feat(paperless): move consume and export to own volume

This commit is contained in:
2026-08-20 14:45:21 +02:00
parent 3844100012
commit 3f6a3475c8
2 changed files with 27 additions and 16 deletions

View File

@@ -77,23 +77,27 @@ exception : il n'est pas dans `env_file`, il vient de SOPS via
## `consume` et `export`
Deux bind mounts **relatifs à ce dossier**, donc situés dans le dépôt :
| Montage | Rôle |
| Volume | Rôle |
|---|---|
| `./consume` | tout fichier déposé ici est ingéré puis supprimé |
| `./export` | destination de `document_exporter` |
| `consume` | tout fichier déposé ici est ingéré puis supprimé |
| `export` | destination de `document_exporter` |
Ce sont des données, pas de la configuration : le `.gitignore` local les
exclut du dépôt. Ne pas retirer ces règles, ce sont des documents personnels.
Ce sont des volumes Docker et non des dossiers de ce dépôt : les données
restent hors de l'arbre versionné, et un déplacement du dépôt ne les emmène
pas. Ils naissent avec l'UID/GID du chemin correspondant dans l'image (1000),
donc sans `chown` à faire.
Ces dossiers doivent appartenir à l'UID/GID déclaré dans `env_file`
(`USERMAP_UID` / `USERMAP_GID`, 1000) : Docker les crée en `root` s'ils
n'existent pas, et Paperless ne peut alors plus supprimer les fichiers qu'il a
consommés.
Déposer un fichier à ingérer passe par l'UI, ou :
```bash
mkdir -p consume export && chown 1000:1000 consume export
docker cp fichier.pdf paperlessopytexorg-webserver-1:/usr/src/paperless/consume/
```
Générer une archive lisible sans Paperless :
```bash
sops exec-env secrets.env.yaml \
'docker compose exec webserver document_exporter ../export'
```
## Volumes
@@ -104,6 +108,8 @@ mkdir -p consume export && chown 1000:1000 consume export
| `paperless-media` | **les documents originaux et leurs archives PDF** | label `backup.enable=true` + `MANUAL_VOLUMES` |
| `paperless-pg-data` | base PostgreSQL | dump SQL (`backup.type=postgres` sur le conteneur `db`) |
| `paperlessopytexorg_valkeydata` | file de tâches Celery (Valkey) | non sauvegardé, volontairement — reconstruit |
| `paperlessopytexorg_export` | archive `document_exporter`, lisible sans Paperless | label `backup.enable=true` sur le volume |
| `paperlessopytexorg_consume` | sas d'ingestion | non sauvegardé, volontairement — transitoire |
Les trois premiers portent un `name:` explicite, sans préfixe de projet.

View File

@@ -59,10 +59,8 @@ services:
volumes:
- data:/usr/src/paperless/data
- media:/usr/src/paperless/media
# Bind mounts relatifs au dossier de la stack : leur chemin sur l'hôte
# change avec le déplacement du dépôt. Voir README.md.
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
- export:/usr/src/paperless/export
- consume:/usr/src/paperless/consume
networks:
- default
- traefik-proxy
@@ -115,6 +113,13 @@ volumes:
# zéro plutôt que de convertir. L'ancien `paperlessopytexorg_redisdata`
# subsiste, inutilisé : c'est le chemin de retour vers `redis:7`.
valkeydata:
# Volumes neufs : le label s'applique donc, contrairement aux quatre
# au-dessus. `consume` n'en porte pas — un fichier n'y séjourne que le temps
# d'être ingéré, après quoi il est dans `media`.
export:
labels:
backup.enable: true
consume:
networks:
traefik-proxy: