Ein Wiki privater Natur

paperless-ngx Version 1.7xxx

Fehler in Dateiaufgaben

SubprocessOutputError: Ghostscript PDF/A rendering failed. See logs for more
Angeblich hilft {"continue_on_soft_render_error": true}
Das habe ich allerdings nicht erfolgreich umsetzen können.

Einen Workaround habe ich soeben ausprobiert.
Das entsprechenede Dokument war ein PDF einer Versicherung, welches ich zur inbox weitergeleitet hate.
Workaround war, das PDF drucken im Thunderbird als PDF drucken und an die Inbox weiterleteiten.
Das klappt prima.
Die Ursache sind mal wieder irgendwelche neuen Adobe Eskapaden.
Hier rennt Paperless-ngx 1.17.4 In der nächsten paperless-ngx Version wird es wahrscheinlich behoben sein.

Multiscan

Will sagen, wenn man mit einem Dokumentenscanner mehrere Blätter einscant, dann hält das paperless für ein Dokument.
Man kann aber eine Umgebungsvariable setzen, dass man Trennbätter benutzen will
PAPERLESS_CONSUMER_ENABLE_BARCODES = true
in docker-compose.env eintragen und restarten.
Und dieses Trennblatt benutzen, Ein anderes funtionierte bei mir nicht
patch-code-t.pdf

Upgrade durchführen

Vorher gerne mal gucken welche Version bisher läuft.
docker inspect paperless-webserver-1 |grep -i image.version
Oder in der Weboberfläche in linken unteren Ecke so:
paperless-ngx-version.png
oder Paperless-ngx 2.5.3 (Stand 17.02.2024)

Wenn am Tage des Upgrades bereits Dokumente eingescannt wurden, sind diese nicht mit im letzten Export.
Dann erst manuell einen Export durchführen.
su - admin -s /bin/bash -c /home/admin/paperless-ngx/backup_export.shich, wenn man die letzte Scan Session wiederholen muß.
Sollte das Upgrade nicht klappen, wäre es doch zu ärgerlich

admin@openmediavault:
~/paperless-ngx$ docker-compose stop
~/paperless-ngx$ docker-compose pull
~/paperless-ngx$ docker-compose up --detach

Beispiel vom start:

docker-compose up  --detach
[+] Running 3/4
 ⠹ Network paperless_default        Created                                                                                                                                                                   1.3s 
 ✔ Container paperless-broker-1     Started                                                                                                                                                                   0.7s 
 ✔ Container paperless-db-1         Started                                                                                                                                                                   0.7s 
 ✔ Container paperless-webserver-1  Started 

Nach ein paar Minuten kann man wieder mit paperless ,it der neuesten Version arbeiten.
Der gesammte Prozess kann länger dauern, scheinbar werden die geparsten Dokumete überarbeitet

**Stand 22.4.2024: Paperless-ngx 2.7.2 **

Alternative upgrade Version

docker-compose pull
docker-compose up --force-recreate --build -d

Und schon hat man Paperless-ngx v2.6.2 Latest
Stand 22.4.2024: Paperless-ngx 2.7.2
Stand Mai 2024 Paperless-ngx 2.8.3
Stand 6.7.2024 Paperless-ngx 2.10.2

docker-compose pull
docker-compose up --force-recreate --build -d

Die exporter Funktion

ich habe bis heute einen täglichen export per Cronjob gemacht, um dann das zip file auf dem NAS in ein Verzeichnis zu kopieren, damit der export auf dem Raid liegt.

Nun habe ich die Volumes umgestellt, damit die auch direkt auf dem RAID liegen.
Ausgangsconfig

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
    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
      - /home/admin/paperless-ngx/consume:/usr/src/paperless/consume
    env_file: docker-compose.env
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db


volumes:
  data:
  media:
  pgdata:
  redisdata:


Ich verwende nun docker-compose

Vorbereitung

mkdir /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/pgdata
mkdir /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/data
mkdir /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/media
mkdir /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/export
mkdir /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/consume

docker-compose.yml
Die neue Config

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:
      - /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/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
    ports:
      - "8000:8000"
    healthcheck:
      test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/data:/usr/src/paperless/data
      - /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/media:/usr/src/paperless/media
      - /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/export:/usr/src/paperless/export
      - /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/consume:/usr/src/paperless/consume
    env_file: docker-compose.env
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db


volumes:
  data:
  media:
  pgdata:
  redisdata:

docker-compose.env

PAPERLESS_URL=http://openmediavault.fritz.box
USERMAP_UID=998
USERMAP_GID=100
PAPERLESS_TIME_ZONE=Europe/Berlin
PAPERLESS_OCR_LANGUAGE=deu+eng
PAPERLESS_SECRET_KEY=GEHeiMistu1234rfvftzhgfdsertzztr345678765432-456fdfg
PAPERLESS_CONSUMER_ENABLE_BARCODES=true
continue_on_soft_render_error=true
PAPERLESS_AUTO_LOGIN_USERNAME="admin"
PAPERLESS_ADMIN_USER="admin"
PAPERLESS_ADMIN_PASSWORD="PASSWORD"

nun den Container mit docker-compose up -d neu pullen und starten

Den Export in den laufenden Container kopieren
docker cp export/. paperless-webserver-1:../export
Das dauert eine Weile.

Zum kontrollieren wo denn im Container denn nun dieser kopierte export gelandet ist
docker-compose exec -T webserver find / -name 'manifest.json'
Also /export, d.h. meine 2 .. waren überflüssig aber auch nicht störend
docker-compose exec -T webserver document_importer /export

Der alte export Job:

#!/bin/bash
# Einfaches Backup Script fuer paperless-ngx

PURGEAFTER="+30"
echo "cron-start $(date) " >>/home/admin/paperless-ngx/cronjob.log
cd /home/admin/paperless-ngx
# das -T heisst: kein pseudoterminal, sondern direkte Ausführung
docker-compose exec -T webserver document_exporter ../export -z
echo "cron-compose export rdy $(date) " >>/home/admin/paperless-ngx/cronjob.log
# rsync
cp -u /home/admin/paperless-ngx/export/* /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless-ngx_export/
#rsync  /home/admin/paperless-ngx/export/ /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless-ngx_export/
#/srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless-ngx_export/
echo "cron-start cp rdy $(date) " >>/home/admin/paperless-ngx/cronjob.log

echo "cron-start purge old exports " >>/home/admin/paperless-ngx/cronjob.log
find export/ -type f -mtime $PURGEAFTER -exec rm {} \;
find /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless-ngx_export/ -type f -mtime $PURGEAFTER -exec rm {} \;
echo "cron-start purge old exports rdy" >>/home/admin/paperless-ngx/cronjob.log

Mit der neuen KOnfiguration der Volumes, sollte der Cronjob das kopieren des exports nicht mehr machen müssen.
Wird jetzt auskommentiert.
Neues backup-export.sh

#!/bin/bash
# Einfaches Backup Script fuer paperless-ngx

PURGEAFTER="+30"
echo "cron-start export $(date) " >>/home/admin/paperless-ngx/cronjob.log
cd /home/admin/paperless-ngx
# das -T heisst: kein pseudoterminal, sondern direkte Ausführung
docker-compose exec -T webserver document_exporter ../export -z
echo "cron-compose export rdy $(date) " >>/home/admin/paperless-ngx/cronjob.log
echo "cron-start purge old exports " >>/home/admin/paperless-ngx/cronjob.log
# kalkuliere
ZLOESCH=$(find /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/export/ -type f -mtime $PURGEAFTER -exec ls {} \;|wc -l)
ANZAHL=$(find /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/export/ -ls |wc -l)
echo "Zu löschende Dateien: $ZLOESCH von insgesammt $ANZAHL Dateien"
ZLOESCH=$((ZLOESCH - 5))

if [ $ANZAHL -lt $ZLOESCH  ]
then
        echo "Lösche $ZLOESCH ältere Exporte"
        find /srv/dev-disk-by-uuid-4a5c8df2-cf08-4326-b79a-bc878185f222/paperless/export/ -type f -mtime $PURGEAFTER -exec rm {} \;
else
        echo "cron-start Keine älteren Exporte zu löschen rdy" >>/home/admin/paperless-ngx/cronjob.log
fi

Update:

Bin nicht mehr auf OMV
sondern auf DEBNAS

PostgreSQL Collation-Warnung beheben (Paperless / Docker)

docker compose exec db bash -lc
'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB"
-c "ALTER DATABASE "$POSTGRES_DB" REFRESH COLLATION VERSION;"'

Wenn danach Ruhe im Log → fertig.