Paperless-ngx in Docker

  • Ich greife das Thema erneut, oder wieder, auf. Die 2800er hatte ich erfolgreich geflasht und daher alles auf null. Meine aktuelle Lage beschreibe ich folgend (würde mich schon freuen über eine „rege“ Teilnahme :saint:). Fragt aber antworten kann schon mal dauern (Dienstag 2te OP angesagt. Der „Durchblick“ ist dann eingeschränkt im warsten Sinne).

    Zum Thema: Paperless-ngx installiert (Portainer/Docker), Anleitung von „der-hier-nicht-verlinkt-werden-darf“ genommen. Dortige Ordnerstruktur auf dem NAS angelegt, die YAML angepasst, Stack erstellt, Container laufen. Login in die GUI funktioniert, alles zuverlässig.

    Auf der GUI zum Testen angelegt:

    • Korrespondent: Amazon (Regex-Muster für verschiedene Schreibweisen)
    • Tags: Amazon, Bestellbestätigung, Gutschrift, Rechnung
    • Speicherpfad: Amazon Archiv → /volume2/archiv/Amazon
    • Arbeitsablauf: aktiv, Auslöser: Dokument aktualisiert (Korrespondent Amazon), Aktion: Titelzuweisung nach Schema {{ created_year }}.{{ created_month }}.{{ created_day }}_Amazon_Rechnung, Speicherpfad: Amazon Archiv.

    Testdokumente (PDFs) sowohl manuell als auch per Scanner in den consume-Ordner gelegt → Paperless holt ab, verarbeitet, zeigt sie in der GUI korrekt mit Korrespondent/Tags.

    Problem: Die Dokumente landen weiterhin im Standard-Media-Ordner auf Volume1 (NVMe) unter /volume1/docker/paperlessngx/media/documents. Der angegebene Speicherpfad /volume2/archiv/Amazon wird nicht genutzt.

    Zusatzinfos:

    • Aktuell nutze ich keine Jinja-Erweiterung. Falls das zwingend notwendig wäre, müsste ich das nachziehen.
    • Ich benötige keine Unterordner (z. B. Jahreszahlen). Eine einfache Ablage im Archivordner reicht mir, Volltextsuche genügt. Das betrifft momentan Amazon – bei anderen Korrespondenten könnte es wieder anders aussehen.
    • Falls relevant: Ich kann gerne meine verwendete YAML posten (wichtige Stellen natürlich geschwärzt).
  • Aktuell nutze ich keine Jinja-Erweiterung.

    Nichts für ungut, aber allein aus diesem Grund würde ich an deiner Stelle besser einen eigenen Thread aufmachen, weil es hier ja primär um Jinja Filter geht.

    EDIT sagt: Das Thema wurde zwischenzeitlich in einen eigenen Thread verschoben

    Problem: Die Dokumente landen weiterhin im Standard-Media-Ordner auf Volume1 (NVMe) unter /volume1/docker/paperlessngx/media/documents. Der angegebene Speicherpfad /volume2/archiv/Amazon wird nicht genutzt.

    Vermutlich musst du dich entscheiden, ob du entweder den kompletten Ordner ../media nach /volume2 verschieben möchtest, oder ob nur z.B. nur ../media/documents/originals oder ../media/documents/archive verschieben möchtest. Ich habe es bei mir z.B. so angegeben…

    Code
    - /volume2/Dokumente/Aktenarchiv:/usr/src/paperless/media/documents/originals:rw

    … wobei mir die Originalen PDF-Dateien wichtiger sind als sie archivierten bzw. OCR‘ten

    Speicherpfad: Amazon Archiv → /volume2/archiv/Amazon

    Der Speicherpfad innerhalb einer Regel ist immer relativ nicht absolut. Richtig wäre also /Amazon und nicht /volume2/archiv/Amazon


    Arbeitsablauf: aktiv, Auslöser: Dokument aktualisiert (Korrespondent Amazon), Aktion: Titelzuweisung nach Schema {{ created_year }}.{{ created_month }}.{{ created_day }}_Amazon_Rechnung, Speicherpfad: Amazon Archiv.

    Mal davon abgesehen, das ich eigentlich keine Arbeitsabläufe konfiguriert habe, würde ich dir empfehlen, den Punkt in der Datumsangabe durch einen Bindestrich zu ersetzten, da nach dem Punkt im Dateinamen i.d.R. die Dateierweiterung folgt.

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

    Edited 2 times, last by Tommes: Ein Beitrag von Tommes mit diesem Beitrag zusammengefügt. (September 28, 2025 at 8:11 PM).

  • Tommes, hab mir das mal alles durchgelesen. Noch nicht alles umgesetzt (siehe Degradierung NVMe und das Theater der WD HDDs). Am Rande erwähnt, ich denke echt darüber nach paperless mal auf die 224+ zu installieren (trotz synOCR). Reine Neugier um zu sehen was ist dort anders (ja klar nur das Volume1 mit den WD HDDs als RAID1 und als 8 TB). Trotzdem und gerade deshalb, weil man schon Zeit investiert hat in die 2800er soll und wird paperless auf der DXP raufkommen.

  • Ganz wie du magst. Nur macht es in meinen Augen keinen Unterschied, ob du Paperless-ngx auf einer DS oder auf einer DXP einrichtest. Das Ergebnis wird das Gleiche sein, zumal es hier ja erstmal nur um die Definition der Speicherpfade...

    Code
         volumes:
          - /volume1/docker/paperless-ngx/data:/usr/src/paperless/data:rw
          - /volume1/docker/paperless-ngx/media:/usr/src/paperless/media:rw
          - /volume1/docker/paperless-ngx/export:/usr/src/paperless/export:rw
          - /volume1/docker/paperless-ngx/consume:/usr/src/paperless/consume:rw

    ... geht und ob du einige davon umbiegen möchtest oder nicht. Alles andere läuft dann ja eh über die WebUI von Paperless-ngx. Aber gut... ich will dir da nicht reinreden. In meinen Augen machst du dir das Leben nur unnötig schwer.

    Ich habe bei mir z.B. den Ordner /usr/src/paperless/consume sowie den Ordner /usr/src/paperless/media/documents/originals umgebogen, was am Ende bei mir so aussieht...

    Code
        volumes:
          - /volume1/docker/paperless-ngx/data:/usr/src/paperless/data:rw
          - /volume1/docker/paperless-ngx/media:/usr/src/paperless/media:rw
          - /volume1/docker/paperless-ngx/export:/usr/src/paperless/export:rw
          # - /volume1/docker/paperless-ngx/consume:/usr/src/paperless/consume:rw
          - /volume2/Dokumente/Aktenarchiv/Posteingang:/usr/src/paperless/consume:rw
          - /volume2/Dokumente/Aktenarchiv:/usr/src/paperless/media/documents/originals:rw

    Mein Dokumentenscanner legt eingescannte Dokumente zunächst unter /volume2/Dokumente/Scaneingang/Brother_ADS1800W ab. Wenn ich mit dem Ergebnis des Scans zufrieden bin, verschiebe ich diese in den Ordner /volume2/Dokumente/Aktenarchiv/Posteingang wo sie dann durch Paperless-ngx konsumiert werden. Abgelegt werden die originalen PDF-Dokumente dann unter /volume2/Dokumente/Aktenarchiv, ergänzt durch den definierten Speicherort, der sich aus Speicherpfad, Korrespondent und Dokumenttyp zusammensetzt. Wie in einem anderen Thread bereits als Beispiel gezeigt:

    • /volume2/Dokumente/Aktenarchiv [ volumes: (definierter "originals" Pfad im YAML- bzw. Docker-Compose-File ]
      • Versicherungen [ Speicherpfad: Versicherungen/ ]
        • Allianz_Berufsunfaehigkeitsversicherung {{ correspondent }}
          • 2025-07-23_Allianz_BU_12345678_Beitragsrechnung.pdf {{ created_year }}-{{ created_month }}-{{ created_day }}_{{ document_type }}_{{ title }}

    Aber wie gesagt... tu was du für richtig hälst. Falls du Fragen hast, dann frag, ansonsten wünsche ich dir viel Erfolg bei deinem Vorhaben. Wann auch immer und auf welchem System auch immer.

    Tommes

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • Ich werfe hier mal eine neue Frage zum Thema rein

    Nachdem ich das Scannen zu SMB nun endlich zum laufen gebraucht habe, macht sich nun ein Problem beim Paperless Docker breit.

    Zur Grundlage habe ich hauptsächlich die Anleitung / Datei von Willi paperless.yaml (Variante ohne MacVlan) verwendet. In der offiziellen paperless yaml wurde die tage die DB zu Postgres 18 geändert. Scheinbar beißt sich da nun etwas mit neuen Pfaden oder so.

    Im Log der DB steht nur noch mkdir: cannot create directory ‘/var/lib/postgresql’: Permission denied

    Dachte nur, wenn es schon in der offiziellen Doku geändert wurde, dann muss man später nicht die DB upgraden und so… Das ist alles noch recht neu für mich

  • Ich werfe hier mal eine neue Frage zum Thema rein

    Nachdem ich das Scannen zu SMB nun endlich zum laufen gebraucht habe, macht sich nun ein Problem beim Paperless Docker breit.

    Zur Grundlage habe ich hauptsächlich die Anleitung / Datei von Willi paperless.yaml (Variante ohne MacVlan) verwendet. In der offiziellen paperless yaml wurde die tage die DB zu Postgres 18 geändert. Scheinbar beißt sich da nun etwas mit neuen Pfaden oder so.

    ...

    Nach mehreren Tests, würde ich das Problem auf Rechte bezüglich Docker zugriff auf die Freigegeben Ordner verorten. Beim Stack erstellt über Portainer läuft alles. Die neue Struktur "/18/docker/" wird unter "db" angelegt. Startet man den Stack dann neu, kann Postgres plötzlich nichts mehr machen in "db" und in den Logs steht das oben aufgeführte.

    Werde das ganz mit Postgres 17 erst mal betreiben, da ich gesehen habe das die Version 18 sehr sehr frisch aus dem letzen Monat erst ist. Es wird später bestimmt Wege zum Upgrade geben.

  • Da zwei Fragen/Anmerkungen zu:

    1. Hast du schon Daten in der DB? PostgreSQL kannst du nicht einfach durch eine neue Versionsangabe im Stack updaten.

    2. PostgreSQL 18 hat Änderungen an Pfaden und Env Variablen. Du kannst da also nicht einfach die 17 durch 18 austauschen. Die Änderungen kannst du auf der offiziellen Seite nachlesen. Da steht was du anpassen musst.

  • Zu 1. Es war alles clean. Ich hatte zuvor eine Testversion aufgesetzt um den Scanner ausgiebig zu testen. Danach alle Stacks, Container, Images und Verzeichnisse gelöscht. Wobei die Testversion auch einen anderen Namen generell genutzt hatte.

    Zu 2. Ja ich habe gesehen das :/var/lib/postgresql/data zu :/var/lib/postgresql geändert werden sollte, da die Struktur nun zu ORDNER/18/docker/geändert wurde. Lässt man das /data/ gibt es auch einen hilfreichen Eintrag im Log mit dem Hinweis.

  • Moin Tommes,

    darf ich einmal deinen ganzen Stack sehen? Dann kann ich das etwas leichter nachvollziehen. Oder hast du einen Stack aus der Filebase von hier genommen.

    Ich habe zur Zeit paperless auf der 918 mit MariaDB am laufen, da spart man sich das ganze PostgreSQL Update gefrickel. Jedoch habe ich da mit dem Aufgabenplaner meine Scan's in den consume Ordner geschoben. Da (schmerzlicherweise) Ugreen keinen Aufgabenplaner hat, muss ich das ja nun irgendwie anders machen. Daher gefällt mir deine Lösung sehr

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

  • Moin!

    Ich habe den Stack auf meinem GitHub Auftritt hinterlegt. Hier der Link *klick* Da ich selbst damals ein paar Probleme mit dem Healthcheck von Paperless-ngx hatte, habe ich diesen an entsprechender Stelle ( - webserver: ) zunächst entfernt. Gegebenenfalls kannst du dir den Healthcheck selbst wieder einbauen.

    Die Einsortierung der PDF-Dokumente ins Dateisystem habe ich u.a. mit sogenannten Jinja-Filtern umgesetzt. Ich habe diesbezüglich einen Thread dazu aufgemacht *klick*

    Was den Aufgabenplaner angeht. Wenn du nicht möchtest, das deine Scans direkt in den Consume Ordner landen, sondern nur indirekt, ginge das theoretisch auch ohne den Aufgabenplaner. Dazu müsstest du dich aber auf die Konsole der DXP aufschalten und könntest dir ein Paket mit dem Namen inotify-tools installieren. Nach entsprechender Einrichtung (siehe Link) würde Inotify einen bestimmten Ordner auf Veränderungen hin überwachen. Verbunden mit einem entsprechenden BASH Script könntest du anschließend die eingelaufenen Daten automatisch von A nach B schieben.

    Oder du erstellst dir einen cronjob, der ein entsprechendes BASH Skript startet um Dateien zeitgeseuert von A nach B zu verschieben. Dies geht bisher aber leider ebenfalls nur über die Konsole.

    Nur so als Idee.

    Tommes

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • This threads contains 149 more posts that have been hidden for guests.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!