Addon: Paperless-ngx

Hi guys,

today I want to share the Addon Paperless-ngx, a document management system with ai sorting and ocr recognition.

It’s very easy to use. Download the .zip file and upload it in the addons section of Libre Workspace.
Then hit “install” at the modules section.

After few minutes you will find a new entry at the portal page.
The url will be paper.yourdomain.com.
At the time Paperless-ngx is not conncted to the central authentication system at Libre Workspace and will not share any users.
The default login for Paperless-ngx is: “Administrator” the Libre Workspace password of your administrator user.

Have fun using it!
If you have any further questions, please let me know.

paperlessngx.zip (9,0 KB)

1 „Gefällt mir“

whooo yeah, thank you.
one question, is it with tika & gotenberg to deal with .docx and .eml ?

Tika should be supported.
The official paperless ngx docker image is taken: https://hub.docker.com/r/paperlessngx/paperless-ngx

i think its optional, so its not includet.

https://paste.yunohost.org/eduquhucem.less

this might work with tika and gotenberg

1 „Gefällt mir“

I will have a look to it in time :slight_smile:

1 „Gefällt mir“

In dieser Version kann Paperless:
Signierte PDF’s, Libreoffice Dokumente, Worddokumente und Mails verarbeiten.
Ich weiß nicht wie man im Enviromentteil folgendes behandelt:

     USERMAP_UID: 1012
      USERMAP_GID: 100
      PAPERLESS_ADMIN_USER: THE-USER-You-Want
      PAPERLESS_ADMIN_PASSWORD: DEIN-Passwort-FÜR-DEN-USER_

hier die Compose:


networks:
  internal:
    external: false

services:
  broker:
    image: redis:7
    restart: always
    volumes:
      -  ./redisdata:/data
    networks:
      - internal

  db:
    image: postgres:16
    restart: always
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless
    ports:
      - 5433:5432
    networks:
      - internal

  webserver:
    image: paperlessngx/paperless-ngx:latest
    restart: always
    depends_on:
      - db
      - broker
      - gotenberg
      - tika
    ports:
      - "13125: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
      - ./scripts:/usr/src/paperless/scripts
      - ./paperless-ngx-postprocessor:/usr/src/paperless-ngx-postprocessor
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
      USERMAP_UID: 1012
      USERMAP_GID: 100
      PAPERLESS_TIME_ZONE: Europe/Berlin
      PAPERLESS_ADMIN_USER: THE-USER-You-Want
      PAPERLESS_ADMIN_PASSWORD: DEIN-Passwort-FÜR-DEN-USER_
      PAPERLESS_OCR_LANGUAGE: deu+eng
      PAPERLESS WEBSERVER WORKERS: 2
      PAPERLESS_OCR_USER_ARGS: '{"invalidate_digital_signatures": true}'
      PAPERLESS THREADS PER WORKER: 2
      PAPERLESS_FILENAME_FORMAT: '{created_year}-{created_month}-{created_day}-{correspondent}-{asn}'
#      PAPERLESS_POST_CONSUME_SCRIPT: /usr/src/paperless-ngx-postprocessor/post_consume_script.sh
      PAPERLESS_TIKA_ENABLED: 1
      PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
      PAPERLESS_TIKA_ENDPOINT: http://tika:9998
      PNGX_POSTPROCESSOR_AUTH_TOKEN: cdc0aaaef0b55a51985f96635ecbacfc729d92f6
    networks:
       - internal

  gotenberg:
      image: docker.io/gotenberg/gotenberg:8.7
      restart: unless-stopped
      environment:
        CHROMIUM_DISABLE_ROUTES: 1
      command:
        - "gotenberg"
        - "--chromium-disable-javascript=true"
        - "--chromium-allow-list=file:///tmp/.*"
      networks:
        - internal

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

Kann das jemand mit mehr Ahnung als ich korrigieren?

Hi Juri,
meinem Verständnis nach brauchst Du keine der Variablen in der docker-compose.yaml Datei.
Aber für Dein Verständnis kann ich Dir folgendes sagen:
Um die richtigen Werte der UID (UserID) und der GID(GroupID) zu ermitteln, schaltest Du dich per SSH auf Deinen Server auf (systemv@ip-adresse) und gibst “id” ein. Dort stehen die Werte die Du brauchst z.B. uid=1000(systemv) gid=1000(systemv)

PAPERLESS_ADMIN_USER: THE-USER-You-Want
PAPERLESS_ADMIN_PASSWORD: DEIN-Passwort-FÜR-DEN-USER_
Beim ersten Anmelden vergibst Du normaler weise für den Nutzer “Administrator” ein Passwort.
Möchtest Du das vorher und vorallem anders festlegen dann gib bei ADMIN_USER: deinen_gewählten_Namen ein und auch bei ADMIN_PASSWORT: Dein_gewähltes_Passwort
Dann wären das dann deine Anmeldedaten.

Grüße
Der LinuxMintUser

1 „Gefällt mir“

Hi Juli,
ich habe mir die Sache noch einmal angeschaut. Du solltest Namen für Deine Container verwenden. Wenn die gesamte Sache intern auf einem Server läuft, brauchst Du keine extra Commandos für das Netzwerk angeben. Ich habe die alle mal aus gehasht. Andere unwichtige Sachen habe ich auch ausgehasht und die Ports mal angepasst:

services:
  broker:
    image: redis:7
    container_name: paperless-redis
    restart: always
    volumes:
      -  ./redisdata:/data
    ports:
    - 33679:3679  
#    networks:
#      - internal

  db:
    image: postgres:16
    container_name: paperless-postgres
    restart: always
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless
    ports:
      - 35433:5432
#    networks:
#      - internal

  gotenberg:
      image: docker.io/gotenberg/gotenberg:8.7
      container_name: paperless-gotenberg
      restart: always
      ports:
      - "33003:3000"
      environment:
        CHROMIUM_DISABLE_ROUTES: 1
      command:
        - "gotenberg"
        - "--chromium-disable-javascript=true"
        - "--chromium-allow-list=file:///tmp/.*"
 #     networks:
 #       - internal

  tika:
     image: ghcr.io/paperless-ngx/tika:latest
     container_name: paperless-tika
     restart: always
     ports:
      - "39998:9998"
 #    networks:
 #      - internal

  webserver:
    image: paperlessngx/paperless-ngx:latest
    container_name: paperless-ngx
    restart: always
    depends_on:
      - db
      - broker
      - gotenberg
      - tika
    ports:
      - "13125: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
      - ./scripts:/usr/src/paperless/scripts
      - ./paperless-ngx-postprocessor:/usr/src/paperless-ngx-postprocessor
    environment:
      PAPERLESS_REDIS: redis://broker:36379
      PAPERLESS_DBHOST: db
      PUID: 1000
      PGID: 1000
      USERMAP_UID: 1000
      USERMAP_GID: 1000
      PAPERLESS_TIME_ZONE: Europe/Berlin
      PAPERLESS_ADMIN_USER: Administrator
      PAPERLESS_ADMIN_PASSWORD: geheimesPasswort
      PAPERLESS_OCR_LANGUAGE: deu+eng
      PAPERLESS WEBSERVER WORKERS: 2
      PAPERLESS_OCR_USER_ARGS: '{"invalidate_digital_signatures": true}'
      PAPERLESS THREADS PER WORKER: 2
      PAPERLESS_FILENAME_FORMAT: '{created_year}-{created_month}-{created_day}-{correspondent}-{asn}'
#      PAPERLESS_POST_CONSUME_SCRIPT: /usr/src/paperless-ngx-postprocessor/post_consume_script.sh
      PAPERLESS_TIKA_ENABLED: 1
      PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:33003
      PAPERLESS_TIKA_ENDPOINT: http://tika:39998
      PNGX_POSTPROCESSOR_AUTH_TOKEN: cdc0aaaef0b55a51985f96635ecbacfc729d92f6
      restart: always

#    networks:
#       - internal
#networks:
#  internal:
#    external: false
1 „Gefällt mir“

vielen vielen Dank,
das werde ich dann mal probieren und hoffentlich meinen lw-server nicht shreddern.

leider klappt das nicht. ich geb das erst mal auf, eventuell kommt das ja später mal.

Hallo juri,

nun das hat mir keine Ruhe gelassen und ich habe mir die Sache noch einmal in Ruhe angeschaut und eine lauffähige Version fertig geschrieben. Nicht schön und immer noch verbesserungswürdig, aber lauffähig :slight_smile:

services:
  broker:
    image: docker.io/library/redis:7
    container_name: paperless-redis
    restart: always
    volumes:
      -  ./redisdata:/data
    ports:
    - 6379:6379  

  db:
    image: docker.io/library/postgres:16
    container_name: paperless-postgres
    restart: always
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless
    ports:
      - 35433:5432

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    container_name: paperless-ngx
    restart: always
    depends_on:
      - db
      - broker
      - gotenberg
      - tika
    ports:
      - 13125:8000
    volumes:
      - ./data:/usr/src/paperless/data
      - ./media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
      - ./scripts:/usr/src/paperless/scripts
#      - ./paperless-ngx-postprocessor:/usr/src/paperless-ngx-postprocessor
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
#     PUID: 1000
#     PGID: 1000
#     USERMAP_UID: 1000
#     USERMAP_GID: 1000
      PAPERLESS_TIME_ZONE: Europe/Berlin
      PAPERLESS_ADMIN_USER: Administrator
      PAPERLESS_ADMIN_PASSWORD: Passwort
      PAPERLESS_OCR_LANGUAGE: deu+eng
      PAPERLESS WEBSERVER WORKERS: 2
#     PAPERLESS_OCR_USER_ARGS: '{"invalidate_digital_signatures": true}'
#     PAPERLESS THREADS PER WORKER: 2
#     PAPERLESS_FILENAME_FORMAT: '{created_year}-{created_month}-{created_day}-{correspondent}-{asn}'
#      PAPERLESS_POST_CONSUME_SCRIPT: /usr/src/paperless-ngx-postprocessor/post_consume_script.sh
      PAPERLESS_TIKA_ENABLED: 1
      PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:33003
      PAPERLESS_TIKA_ENDPOINT: http://tika:39998
#      PNGX_POSTPROCESSOR_AUTH_TOKEN: cdc0aaaef0b55a51985f96635ecbacfc729d92f6
      restart: always

  gotenberg:
      image: docker.io/gotenberg/gotenberg:8.7
      container_name: paperless-gotenberg
      restart: always
      ports:
      - 33003:3000
      environment:
        CHROMIUM_DISABLE_ROUTES: 1
      command:
        - gotenberg
        - --chromium-disable-javascript=true
#        - "--chromium-allow-list=file:///tmp/.*"

  tika:
     image: ghcr.io/paperless-ngx/tika:latest
     container_name: paperless-tika
     restart: always
     ports:
      - 39998:9998

Erstmal viel Spaß - ich werde die Sache noch optimieren und hübsch machen.

!!! Bitte nicht vergessen Benutzer,Passwort etc. anzupassen…

Grüße LinuxMintUser

großartig <3
hübsch und optimiert wird dann upgradable sein oder muss ich dann neu installieren?
vielen Dank

das wird aber gebraucht, um digital signierte PDF’s zu verarbeiten. der hash muss also wieder weg nehme ich an

um es sauber hinzukriegen müsstest Du es erst deinstallieren (LibreWorkspace Module)
dann löschen (unter Addon Verwaltung) und das Image völlig neu zusammenbauen…

ja das hab ich schon gemacht, hat ja eh nicht geklappt. wenn ich aber jetzt neu installiere und du danach alles “hübsch und optimiert” machst, muss ich dann nochmal neu installieren?

# PAPERLESS_OCR_USER_ARGS: '{"invalidate_digital_signatures": true}'

ja, einige Sachen waren für meine Tests erstmal irrelevant,
die PUID und GUID auch wieder rein nehmen
Aber wie gesagt, “schöner Wohnen” kommt später und alle Variablen werden wir dann in eine .env Datei schreiben.

Bis nächste Woche
Viel Spaß
LinuxMintUser

danke, ich freu mich