Dokumenten-Management mit Paperless-NGX

Die Original legt er jetzt in \media\documents\originals. Ich muss das irgendwie mit meinem Drive Ordner synchronsieren damit ich auch gut mobil drauf
Realisiert unter DSM der Synology/Aufgabenplaner/Erstellen/Geplante Aufgabe ==> Aufgabeneinstellung

Code:
rsync -arvuP --delete /volume1/paperless/media/documents/originals/ /volume1/homes/USER/Drive/dokumente
 
Warum legt Paperless die Dateien überhaupt zweimal ab. Einmal in "originals" und einmal in "archive"??
Weil Paperless zwischen der Orginalversion und der durch Paperless bearbeiteten Version (OCR, Seitenbegradigungen, Bildverbesserungen) unterscheidet. Der Aufbewahrungsmodus lässt sich einstellen:

Code:
PAPERLESS_OCR_SKIP_ARCHIVE_FILE=<mode>

Siehe https://docs.paperless-ngx.com/configuration/#ocr

Letzt Frag für heute - du hast sicherlich noch was anderes zu tun als mir Consolen Legastheniker zu helfen. Könnte ich in grob gleicher Weise (anderer Port, anderes Share usw.) eine zweite Paperlessinstanz auf der NAS anlegen - falls meine Frau auch auf den Geschmack kommt???

Klar geht das, ich hab' auch zwei komplett getrennte Instanzen auf der Synology laufen. Du brauchst halt einen zweiten Share ( z.B. /volume1/paperless2) in dem du exakt das gleiche machst wie bei der ersten Instanz, jedoch mit angepassten Pfaden. Du musst allerdings zusätzlich dafur sorgen, dass der Webserver der zweiten Instanz unter einem eigenen Port erreichbar ist. Dazu in der docker-compose.yml im Bereich 'webserver' das Mapping des externen auf den intern Port anpassen, z.B. auf:

ports:
- "8010:8000"

Die zweite Instanz ist dann unter der <IP-Adresse>:8010 erreichbar.
 
Zuletzt bearbeitet:
Realisiert unter DSM der Synology/Aufgabenplaner/Erstellen/Geplante Aufgabe ==> Aufgabeneinstellung

Code:
rsync -arvuP --delete /volume1/paperless/media/documents/originals/ /volume1/homes/USER/Drive/dokumente
...damit Duplizierst Du aber die Dateien. Wenn sichergestellt ist, dass die Dateien im Zielverzeichnis nur gelesen werden, kannst Du das Zielverzeichnis auch gleich als Volume einbinden:

Code:
volumes:

- /volume1/homes/USER/Drive/dokumente:/usr/src/paperless/media

Ich habe das ähnlich gemacht, weil ich die Dokumente in meinem normalen Dateibereich meines Users haben wollte. Man darf sie dann dort halt keinesfalls umbenennen / verschieben / ändern...
 
Zuletzt bearbeitet:
Ich habe das ähnlich gemacht, weil ich die Dokumente in meinem normalen Dateibereich meines Users haben wollte. Man darf sie dann dort halt keinesfalls umbenennen / verschieben / ändern.
Genau das war auch mein Wunsch - die Dokumente im User Bereich zu haben. Nur hätte Paperless dann unter User/Dokumente erst media dann documente dann archive und originals angelegt. Zuviele Ordner.

Würdest du eher die Originale oder die Archive in den User Bereich mappen???
 
eventuell kann man auch darüber nachdenken nur 1 Instanz zu machen und zwei / 3 User anlegen:

- User1: Admin
- User2: Er
- User3: Sie


Dann schaut man sich mal den Parameter Paperless_consumer_subdir_as_tag an

PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=<bool>
Set the names of subdirectories as tags for consumed files. E.g. <CONSUMPTION_DIR>/foo/bar/file.pdf will add the tags "foo" and "bar" to the consumed file. Paperless will create any tags that don't exist yet.

This is useful for sorting documents with certain tags such as car or todo prior to consumption. These folders won't be deleted.

PAPERLESS_CONSUMER_RECURSIVE must be enabled for this to work.

Defaults to false.

==================================

Denkbar wäre dann :

consume/user1
consume/user2

Dann wird user1 als Tag vergeben und User 2


Es müsste doch dann möglich sein den Content zu trennen da jedes Dokument einen Eigentümer (user1/user2) hat.

Wenn also User1 im Tag ist, dann owner auf User1 usw.

Vorteile:

- Die Korrespondenten, Dokumenttypen und tags müssen nur 1 x gepflegt werden

- es muss nur 1 System gepflegt werden

Nachteil:

- anfangs etwas höhere Einarbeitung

Im Archivfolder kann man dann ggf zwei Speicherpfade anlegen , einer für User1, einer für User2


Das mit den Speicherpfaden sollte funktionieren:

https://docs.paperless-ngx.com/advanced_usage/#file-name-handling

  • {owner_username}: Username of document owner, if any, or "none"
 
Zuletzt bearbeitet:
ja wäre eine Idee aber mit meinen Kenntnissen nicht allein umsetzbar und ich sehe weitere Nachteile.

Gerade das Tagen, Korrespondenten und Dokumententypen werden sich zwischen mir und meiner Frau deutlich unterscheiden. Hier agieren zwei Gehirne mit unterschiedlichen Logiken.
Die Tags User 1 und User2 könnte man umsetzen ob gewollt oder ungewollt. Nicht sonderlich zuverlässig.

Wenn müsste Paperless eine saubere User Verwaltung integrieren - zumindest sehe ich da noch keine - bin aber auch neu in dem Thema....
 
Paperless + Devonthink ist für mich eine erstmal geniale Kombination ..
Klingt für mich etwas doppelt gemoppelt. Vorteil ist wohl der Zugriff von überall und die Bearbeitbarkeit.

und

Realisiert unter DSM der Synology/Aufgabenplaner/Erstellen/Geplante Aufgabe ==> Aufgabeneinstellung

Code:
rsync -arvuP --delete /volume1/paperless/media/documents/originals/ /volume1/homes/USER/Drive/dokumente
...damit Duplizierst Du aber die Dateien. Wenn sichergestellt ist, dass die Dateien im Zielverzeichnis nur gelesen werden, kannst Du das Zielverzeichnis auch gleich als Volume einbinden:

diese Lösung entpuppt sich für mich immer vorteilhafter. Dadurch, dass ich die Dateien dupliziert in meinem Synology Drive habe kann ich auch von überall drauf zugreifen. Versehentliche Änderungen werden im nächsten Aufgabenlauf wieder auf original Zustand gebracht und ich komme gar nicht in die Gefahr das Dokumentenverzeichnis von Paperless zu ruinieren. Super!!!
 
Hallo zusammen,

zwar läuft meine Paperless Installation auf meiner Synology - aber die Performance ist doch übersichtlich. Da ich auch zwei Instanzen drauf habe (für mich und meine Frau) kommt die Synology doch ein wenig an ihre Grenzen.

Ich will nochmal versuchen meine ursprüngliche Lösung (MiniPC mit Proxmox und Daten auf der Synology) umzusetzen.
Allerdings habe ich das Setup ein wenig geändet.
  1. Zum einen hab ich mal meinen Nachbarn dazu gezogen - hat auf der Console mehr drauf als ich
  2. Proxmox => VM => Ubuntu Server mit Docker, Docker Compose und Portainer - das läuft auch schon alles
Jetzt bin ich aber hängen geblieben an der stelle die Yaml für die Paperless installation richtig zu schreiben.

Unter Portainer habe ich die Volumen aus der Synology per NFS eingebunden. Kurz dazu ein Container erstellt und über die Console die Schreibrechte geprüft - läuft. Dann verschwindet auch "unused" bei den Volumes in Portainer.

Aber wenn ich über Stack versuche Paperless zu installieren werden die Volumes weiterhin als unused geführt und auch nicht verwendet. Paperless startet zwar aber nutzt die Volumes nicht.

Bei der Installation unten wir der Stack nicht installiert. Fehlermeldung: Volumes existieren bereits, wurden aber nicht von Docker-Compose erstellt. Ich solle EXTERNAL: true verwenden. Aber egal wo ich das hinschreib er will es nicht.

Ne gute Idee für mich???

Code:
version: "3.4"
services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - redisdata:/data
  db:
    image: docker.io/library/postgres:13
    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:
      - 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/paperless-andreas_data/_data:/usr/src/paperless/data
      - /var/lib/docker/volumes/paperless-andreas_media/_data:/usr/src/paperless/media
      - /var/lib/docker/volumes/paperless-andreas_export/_data:/usr/src/paperless/export
      - /var/lib/docker/volumes/paperless-andreas_consume/_data:/usr/src/paperless/consume
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
      PAPERLESS_SECRET_KEY: saidfosa28249284jsfla
      PAPERLESS_ADMIN_USER: Peter
      PAPERLESS_ADMIN_PASSWORD: blablabla
      PAPERLESS_OCR_LANGUAGE: deu
      USERMAP_UID: 1000
      USERMAP_GID: 100
volumes:
  data:
  media:
  pgdata:
  redisdata:
 
...du hast eine bunte Mischung aus bind mounts und volumes.
https://learning-ocean.com/tutorials/docker-compose/docker-compose-bind-mount

Wenn Du bei bind mounts bleiben willst (meine Empfehlung) kommentiere mal die letzten fünf Zeilen aus:

Code:
# volumes:
#  data:
#  media:
#  pgdata:
#  redisdata:

Ersetze dann die Zeilen
Code:
- redisdata:/data
- pgdata:/var/lib/postgresql/data

durch
Code:
- /pfad/zum/speicherort/redisdata:/data
- /pfad/zum/speicherort/pgdata:/var/lib/postgresql/data

Da du aber ohnehin alles am Standardspeicherort in /var/lib/docker/volumes speicherst, hättest Du auch beim normalen Volume-Schema (- volumename: /pfad/im/container) bleiben können. Mit bind mounts packt man sich die Speicherorte an andere Stellen im Dateisystem. Ich will z.B. sowohl die Datenbanken als auch die Dokumente in Ordnern in dedizierten Shares und nicht in /var/lib/docker haben...

Bzgl. Synology: Was für eine hast Du denn? Meine DS620slim ist mit ihrem popeligen Celeron-Zweikerner und 8 GB RAM mit über 3000 Dokumenten in der Datenbank absolut ausreichend flott - und da läuft zusätzlich noch eine zweite Paperless-Instanz, eine VM, ein Pi-Hole und Plex im Hintergrund. Ok, die ist komplett mit SSDs bestückt, aber das sollte nicht so den Unterschied ausmachen. Lediglich das OCR nach dem Scannen dauert etwas, aber da sich die Jobs selbständig abarbeiten ist mir das ziemlich egal...
 
Zuletzt bearbeitet:
Hallo, am Ende will ich die Daten auf meiner Synology haben. Das Brain auf dem MiniPC die Daten auf der Synology. Wie gesagt in Portainer sind die Shares der Synology per NFS eingebunden. Wie würdest du die Verknüpfung zu Paperless in die Yaml schreiben?
 
...na, da wo ich oben '/pfad/zum/speicherort' reingeschrieben habe bzw wo du '/var/lib/docker/volumes/paperless-andreas_*' drinstehen hast halt den Pfad zum Mountpoint vom NFS reischreiben. Das ist ein Pfad im lokalen Dateisystem! Das Problem bei NFS: Die User-IDs zwischen beiden Systemen müssen übereinstimmen bzw. die Schreib/Leserechte müssen gegeben sein. Weshalb ich ja ursprünglich auch den Mount per CIFS empfohlen habe. Performancemässig halte ich es für nicht so geschickt, die Datenbanken auf ein NFS-Mount zu legen...
 
Na ja, ich kann die unter Portainer auch als CIFS einrichten- das ist mir eigentlich egal. Wenn es besser ist und einfacher nehm ich das.
 
Moin moin,

so hab die Laufwerke mal als CIFS eingebunden und kurz mit einem Test Container geprüft ob ich drauf zugreifen kann - geht und auch das unused verschwindet.

Aber mit der Yaml für Paperless klappt das immer noch nicht. Die Volumes bleiben auf unused und der consume Ordner wird ignoriert.
Irgendwo fehlt noch was
1693622450423.png


1693622557343.png
 
Code:
version: "3.4"
services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - /var/lib/docker/volumes/paperless-andreas_redisdata/_data:/data
  db:
    image: docker.io/library/postgres:13
    restart: unless-stopped
    volumes:
      - /var/lib/docker/volumes/paperless-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
    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/paperless-andreas_data/_data:/usr/src/paperless/data
      - /var/lib/docker/volumes/paperless-andreas_media/_data:/usr/src/paperless/media
      - /var/lib/docker/volumes/paperless-andreas_export/_data:/usr/src/paperless/export
      - /var/lib/docker/volumes/paperless-andreas_consume/_data:/usr/src/paperless/consume
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
      PAPERLESS_SECRET_KEY: saidfosa28249284jsfla
      PAPERLESS_ADMIN_USER: andreas
      PAPERLESS_ADMIN_PASSWORD: blabla
      PAPERLESS_OCR_LANGUAGE: deu
      USERMAP_UID: 1000
      USERMAP_GID: 100
#volumes:
#  data:
#  media:
#  pgdata:
#  redisdata:
 
So ich bin weiter gekommen. Mit folgender Konfiguration wird der Stack ausgeführt und Laufwerke auf der NAS angesprochen (unsued verschwindet und Paperless legt in Data weitere Verzeichnisse an. Nur komme ich jetzt nicht auf die Weboberfläche von Paperless

http://192.168.2.32:8001/
 
Code:
version: "3.4"
services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - redisdata:/data
  db:
    image: docker.io/library/postgres:13
    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:
      - 8001: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
    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: saidfosa28249284jsfla
      PAPERLESS_ADMIN_USER: andreas
      PAPERLESS_ADMIN_PASSWORD: blabla
      PAPERLESS_OCR_LANGUAGE: deu+eng
      USERMAP_UID: 1000
      USERMAP_GID: 100

  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:
  redisdata:
  pgdata:
  media:
  export:
  consume:
 
Zurück
Oben Unten