Dokumenten-Management mit Paperless-NGX

der Paperless Webserver hat nur kurz beim Starten die Portangaben

1693634339606.png


sobald der gestartet ist fehlt die Info
1693634383037.png


Habt ihr ne Idee, ich bin so kurz vor dem Ziel ;-)
 
Hallo zusammen,

komme leider immer noch nicht weiter obwohl das in Portainer eigentlich alles ziemlich logisch aussieht. Aber ich hab jetzt unzählige Varianten der yaml getestet - aber nie werden die Volumen auf used gesetzt bzw. startet der Webserver richtig. Bitte schaut nochmal drüber ob ihr was entdeckt. Manchmal fehlt hat irgendwo nur ein Haken.

Wenn man ein Ubuntu container erstellt kann man die Pfade per Drag an drop zusammenführen. Das klappt ausgezeichnet. Nur mit der Yaml von Paperless nicht.


Vielen Dank schonmal

vg Andreas

1693929487715.png


z.B.
1693929469353.png

Code:
version: "3.4"
services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - /var/lib/docker/volumes/andreas-redisdata/_data:/data
  db:
    image: docker.io/library/postgres:13
    restart: unless-stopped
    volumes:
      - /var/lib/docker/volumes/andreas-pgdata/_data:/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:
      - 8001:8000
    healthcheck:
      test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - /var/lib/docker/volumes/andreas-data/_data:/usr/src/paperless/data
      - /var/lib/docker/volumes/andreas-media/_data:/usr/src/paperless/media
      - /var/lib/docker/volumes/andreas-export/_data:/usr/src/paperless/export
      - /var/lib/docker/volumes/andreas-consume/_data:/usr/src/paperless/consume
    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
      PAPERLESS_SECRET_KEY: jfdifjf9089098423kfjsdlkf
      PAPERLESS_ADMIN_USER: andreas
      PAPERLESS_ADMIN_PASSWORD: blabla
      PAPERLESS_OCR_LANGUAGE: deu
      USERMAP_UID: 1000
      USERMAP_GID: 1000

  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
 
:kopfkratz: Spannend… seit einigen Wochen suchte ich auch nach einer Lösung für ein papierloses Büro, bin dann ebenfalls über Paperless-NGX gestolpert, welches jetzt in Docker-Compose auf meinem mit OpenMediaVault bestücktem Pi4 läuft.

albacom83, du hast die UserID und GruppenID jeweils auf 1000 gesetzt, hat der dahinterliegende User auch zugriffsrechte für die shares?

Gruß
whoami
 
Ja Paperless ist ein richtig gutes Tool. Hatte es schon auf meiner Synology unter Docker laufen als Test. Nur fand ich die Performance übersichtlich.
Jetzt soll es auf einen MiniPC. Ich bekomme nur nicht die Verbindung zwischen den Paperless Container und meiner Synology hin wo die Daten liegen sollen. Was die ID angeht hatte ich auch schon 1000 und 100 probiert. Ohne Erfolg.
Irgendwas mach ich falsch
 
Wie gesagt, der vorhandene User auf dem zugrundeliegenden System sollte auch zugriffsrechte auf die Shares haben.
 
Über eine shell mit dem Befehl „id“
https://manpages.ubuntu.com/manpages/trusty/man1/id.1.html
Ich habe für Paperless einen eigenen User eingerichtet, der entsprechend lese und schreibrechte auf die shares hat.
In einer shell über

id -u <username>
id -g <username>

die IDs rausgesucht und entsprechend in enviroment eingetragen.

Ist allerdings gerade nur eine Vermutung von mir, hab selbst einige Zeit gebastelt, bis das alles lief.

Gruß,
whoami
 
ja ich müsste aber in die Shell von Docker - sofern es die überhaupt git.
Ich glaub ich mach das jetzt anders.
Ich lass die Volumes über die yaml in Docker einrichten. Danach ne SMB Freigabe drauf und schauen ob ich ich die in meine Synology einbinden kann. Ich vermute alles andere funktionier eh nicht.
 
:kopfkratz: Spannend… seit einigen Wochen suchte ich auch nach einer Lösung für ein papierloses Büro,...
Hatte ich auch immer - um dann letztendlich bei "macOS Standard" zu landen: einfache Ordnerstruktur und Dokumente mit Tags versehen. Darüber ein paar intelligente Suchen - und fertig war mein "papierloses Büro" :)
Für private Zwecke mit relativ wenigen Dokumenten pro Woche super.
 
albacom83,
ich kenne jetzt Portainer nicht, gibt es dort nicht die Möglichkeit in einem log nachzusehen, wo der webserver beim Start abbricht?

jtetscher,
das wäre ja viel zu einfach… :D
Da fehlt der Bastelfaktor. Nebenbei kann ich jetzt einfach Dokumente in den Consume-Ordner schmeißen oder per Scanner dort ablegen lassen, und das ganze wird automatisch verarbeitet inkl. OCR und vergabe von Tags, Korespondent, …
Braucht etwas Anlernzeit für die ersten paar Dokumente.

Gruß
whoami
 
Nicht, dass das hier nicht schon öfters vorgekommen ist - aber stehe völlig auf dem Schlauch. Was ist deine Lösung
 
ja alles gut aber du hast doch geschrieben "Nebenbei kann ich jetzt einfach Dokumente in den Consume-Ordner schmeißen oder per Scanner dort ablegen lassen, und das ganze wird automatisch verarbeitet inkl. OCR und vergabe von Tags, Korespondent, …
Braucht etwas Anlernzeit für die ersten paar Dokumente."

wie machst du das???
 
:kopfkratz:
Ich kann nachher gerne mal mein Docker-Einstellungen zeigen, muss eh noch kurz an den Rechner. Ich denke aber, die sind nicht 1:1 übertragbar.
 
So hier jetzt meine Docker-Compose .yml und .env (wie gesagt Docker läuft auf einem Raspberry Pi 4, auf dem ein OpenMediaVault installiert ist, als Docker-Compose. Wird von OMV mit geliefert). Als Basis hab ich jeweils die yml und env genommen, die auf Github für Docker-Compose vorgeschlagen werden -> .yml .env
Entsprechend meinen wünschen angepasst:

YAML:
# 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.
#
# SQLite is used as the database. The SQLite file is stored in the data volume.
#
# In addition to that, this docker-compose file adds the following optional
# configurations:
#
# - 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

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - 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:
      - /srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/Docker/Paperless-NGX/paperless_data:/usr/src/paperless/data
      - /srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/Docker/Paperless-NGX/paperless_media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - /srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/scans:/usr/src/paperless/consume
      - /srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/Docker/Paperless-NGX/scripts:/scripts:ro
    env_file: Paperless-NGX.env
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      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:
  redisdata:
YAML:
# 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=1002
USERMAP_GID=100

# 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=deu

# 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
PAPERLESS_ADMIN_USER=<snip>
PAPERLESS_ADMIN_PASSWORD=<snip>
PAPERLESS_TASK_WORKERS=2
PAPERLESS_THREADS_PER_WORKER=2
PAPERLESS_TIME_ZONE=Europe/Berlin
#DOCUMENT_WORKING_PATH=/srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/Docker/Paperless-NGX/working
#DOCUMENT_SOURCE_PATH=/srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/Docker/Paperless-NGX/original
#PAPERLESS_PRE_CONSUME_SCRIPT=/scripts/pre-consume.sh

Hier mal ein Blick auf die Ordner, die Paperless benötigt:
Bash:
pi@BerryNAS:/srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/Docker/Paperless-NGX $ ls -la
total 44
drwxrwx---+ 8 pi       pi    4096 Aug 20 13:57 .
drwxrwsr-x+ 4 root     users 4096 Aug 18 21:30 ..
-rw-rw----  1 pi       pi    2604 Aug 20 13:57 Paperless-NGX.env
-rw-rw----  1 pi       pi    3323 Aug 14 20:39 Paperless-NGX.yml
-rw-rw-r--  1 Johannes users   31 Aug 13 15:22 env
drwxr-xr-x  2 scans    users 4096 Aug 13 15:43 export
drwxr-xr-x  2 scans    users 4096 Aug 15 18:29 original
drwxrwsr-x  4 scans    users 4096 Sep  5 22:50 paperless_data
drwxrwsr-x  3 scans    users 4096 Aug 27 13:41 paperless_media
drwxr-xr-x  2 scans    users 4096 Aug 14 21:09 scripts
drwxr-xr-x  2 scans    users 4096 Aug 15 18:22 working
pi@BerryNAS:/srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/Docker/Paperless-NGX $

Und hier, der User, über den der Docker-Container auf die Ordner zugreift:
Bash:
pi@BerryNAS:/srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/Docker/Paperless-NGX $ id -u scans
1002
pi@BerryNAS:/srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/Docker/Paperless-NGX $ id -g scans
100
pi@BerryNAS:/srv/dev-disk-by-uuid-15329437-2b46-4806-9cc9-9dc665058c48/Docker/Paperless-NGX $

Ausgelesen üfer ssh-Zugriff auf die Shell des OpenMediaVault-Unterbaus. Ich sag mal gleich dazu, ich durchdringe mental das Konzept Docker auch noch nicht wirklich... Weswegen ich auch schon viel basteln musste und viel try and error hatte...
Grundsätzlich verstehe ich Docker so (was auch bestimmt nicht komplett richtig ist), dass es ähnlich einer Virtualisierung nur einen bestimmten Dienst in einer abgeschotteten Umgebung laufen lässt. Bei uns eben den Paperless-Dienst. Der kann dort aber Grundsätzlich erst mal weder raus oder es kann irgendetwas zu ihm hineindringen. Nur über die Wege, die wir ihm über die Einstellungen öffnen. So darf Paperless als User "scans" (UID:1002,GIU:100) auf die Freigaben außerhalb von Docker zugreifen. Und über die IP des Raspberry auf Port 8000 kann ich au den Webserver von Paperless zugreifen.

Grüße
whoami

Nachtrag: Und der Ordner "scans" wird gleichzeitig über OpenMediaVault per SMB im lokalen Netz freigegeben, sodass jeder mit den zugangsdaten dort PDFs ablegen kann zum konsumieren, inkl. unserem MultiFunktionsDrucker...
 
Zurück
Oben Unten