paperless-ngx

  • Hallo zusammen,


    ich möchte bei mir paperless-ngx mittels der Container Station erstellen. Ich habe auch gesehen, dass es dazu bereits einen thread gibt und das Aufsetzen und Starten scheint sehr einfach zu sein. Nur ist mir immernoch nicht klar, wie man zu den einzelnen Konfigurationen kommt, insbesondere in Hinblick darauf, dass die Daten bei einem Neuaufsetzen des Doccers oder einem Umzug nicht verloren gehen. Nun zu meiner Bitte: Ich würde euch gerne beschreiben, wie ich vorgehen würde bzw. unklare Punkte notieren, und würde mich über Rückmeldungen und Hinweise freuen, ob ich dies so richtig verstanden habe, etwas falsch mache oder bestimmte Aspekte nicht berücksichtigt habe.


    Doccer einrichten

    Erstes Dialogfeld

    In der Container-Station habe ich nach dem entsprechenden doccer gesucht und mehrere gefunden, da paperlessngx/paperless-ngx nach dem Namen die offizielle Version ist, fällt die Wahl darauf. Nun startet das erste Dialogfeld. Befehl und Einstiegspunkt sind hier leer. Ich hatte unter Container - Hilfestellung für Anfänger mal gefragt, wie man auf die Werte kommt und es hießt, dass diese eigentlich vorgegeben werden. Natürlich gibt es zum Thema doccer auch eine kurze Dokumentation dazu, allerdings wird dort nur von .yml und .env Dateien geschrieben, welche (falls ich es richtig verstanden habe) Konfigurationsdateien darstellen, welche auch bei github zu finden sind. Dort konnte ich aber nichts finden, was ich bei dem Einstiegsdialog hätte eintragen können, weswegen ich zu den erweiterten Einstellungen gehen würde. Falls ich bereits jetzt einem Irrtum unterliege, bitte darauf hinweisen!

    Erweiterte Einstellungen

    Umgebung

    Dank des zuvor genannten threads und dem kleinen Hinweis in der Dokumentation:

    To be able to login, you will need a super user.

    weiß ich nun, dass ich den super user selbst anlegen muss und der nicht, wie von mir eigentlich erwartet, automatisch angelegt wird. Erst mit diesen beiden Hinweise geriet der Hosting & Security-Teil der Dokumentation in meinen Blick, wo ich herausfinden konnte, dass man mittels

    Code
    PAPERLESS_ADMIN_USER=<username>
    PAPERLESS_ADMIN_PASSWORD=<password>

    die entsprechenden Einträge setzen muss.


    Nun wird aber auch eine Datenbank verwendet und aus Bequemlichkeitsgründen würde ich entgegen der Empfehlung auf die Maria DB von qnap zurückgreifen. Also habe ich den Database-Dokumentationsteil nachgeschaut und mir die folgenden Einträge rausgesucht:

    Code
    PAPERLESS_DBENGINE=<engine_name>
    PAPERLESS_DBHOST=<hostname>
    PAPERLESS_DBPORT=<port>
    PAPERLESS_DBNAME=<name_db>
    PAPERLESS_DBUSER=<name_user>
    PAPERLESS_DBPASS=<password>

    Ich muss somit bei der Datenbank lediglich eine neue Datenbank <name_db> erstellen sowie einen Nutzer <name_user> mit allen Rechten auf diese und natürlich dem Passwort <password>. Den <port> habe ich gefunden, und unter <hostname> trage ich vermutlich die URL ein, über welche ich auch auf mein NAS zugreife (bitte sofort korrigieren, falls ich falsch liege).

    Da ich keinen Zugriff von außen plane, es also innerhalb des lokalen Netzwerkes läuft, gehe ich davon aus, dass ich mich mit Zertifikaten nicht auseinandersetzen muss, also Einträge wie PAPERLESS_DBSSLMODE oder PAPERLESS_DBSSLROOTCERT ignorieren kann. Falls dies doch empfehlenswert ist, würde ich mich über entsprechende Hinweise freuen.

    Ich hoffe, dass ich die anderen Einstellungen wie PAPERLESS_OCR_LANGUAGE=<lang> auch im laufenden Betrieb durchführen kann und die Spracheinstellung nicht für immer und ewig hier festgemacht werden muss. Ich habe allerdings unter dem file-name-handling-Dokumentationsteil gelesen, dass die Dateien durchnummeriert werden und diese etwas unschönen Dateienamen über PAPERLESS_FILENAME_FORMAT geändert werden kann, sogar so, dass diese in entsprechenden Unterordnern abgelegt werden. Würde ich dann z.B. unter PAPERLESS_FILENAME_FORMAT dann einfach den Wert {created_year}/{correspondent}/{created}-{title} eintragen? Oder muss ich etwas wegen den Sonderzeichen beachten?

    Netzwerk

    Hier muss ich die Portweiterleitungen eintragen, damit ich auch über die URL meines qnaps darauf zugreifen kann. Soweit ich es verstanden habe, muss ich zu jedemn freien Port vom Container einen Port vom host (meinem qnap) eintragen, d.h. ich muss zuerst herausbekommen, über welche Ports paperless überhaupt kommuniziert. Ich habe nur herausfinden können, dass er über Port 8000 kommuniziert und sonst keine weiteren Ports gefunden. Ich bin unsicher, ob etwas fehlt, da ich dies nur nebenbei im Fließtext gelesen habe und nicht als Übersicht. Falls ich richtig liege, muss ich nur Port 8000 vom Container auf z.B. Port 17101 weiterleiten. Also ein nahezu willkürlich gewählter Port, der noch nicht belegt ist, oder gibt es hier Regeln, die zu beachten wären?


    Eintrag Hostname bleibt leer und Netzwerkmodus bei NAT.

    Gerät

    Für mich an dieser STelle vermutlich uninteressant.

    Freigabeordner

    Jetzt wird es spannend. Da ich die Daten bei Container-Fehler/Verlust oder was auch immer nicht verlieren möchte und bei einem Neuaufsetzen nicht mühselig aus den Container exportieren möchte, muss ich dafür sorgen, dass die relevanten Daten außerhalb des Containers gelagert werden. Bei dem Paths-and-folders-Dokumentationsteil bin ich fündig geworden.


    Als relevant konnt ich den Eintrag PAPERLESS_MEDIA_ROOT=<path> identifizieren, da dort die Dokumente abgespeichert werden. Unsicher bin ich bei PAPERLESS_CONSUMPTION_DIR=<path>, vermutlich ist dies aber nur ein Ordner, wo Dokumente temporär bearbeitet oder analysiert werden (oder?). Es gibt auch noch PAPERLESS_DATA_DIR=<path> Allerdings habe ich weiter oben angegeben, das er auf die QNAP-Datenbank zugreifen soll, somit liegen dann doch dort alle relevanten Einträge, oder? Bei einem Neuaufsetzen des Containers oder einem Update, so meine naive Vorstellung, müsste ich nur den Ordner mit den Dokumenten und den Datenbankzugriff identisch halten. Falls mehr zu beachten ist, bitte ich drigend um Hinweise 8)


    Nun kann ich aber bei den Eintrag keine Umgebungsvariable eintragen, sonder muss angeben, dass ein bestimmter Ordner im Container auf einen Ordner außerhalb des Containers gemappt werden soll. Wie finde ich die heraus? In der Dokumentation steht bezüglich [tt]PAPERLESS_MEDIA_ROOT[/tt] nur:

    Defaults to "../media/", relative to the "src" directory.

    Wie komme ich jetzt auf /usr/src/paperless/media wie im zuvor genannten thread dargelegt? Abgesehen davon, dass man hier vermutlichnur absolute Pfade angeben kann, wäre ich bezüglich der Dokumentation eher auf src/media/ gekommen und hätte dann noch herausfinden müssen, wie der absolute Pfad ist, wobei ich auch nicht auf unix system resources (usr) gekommen wäre. Wie kriege ich den korrekten Pfad heraus?


    Update: Unter der Dokumentations zur Administration habe ich folgendes gelesen:

    Options available to docker installations:

    • Backup the docker volumes. These usually reside within /var/lib/docker/volumes on the host and you need to be root in order to access them.

    Paperless uses 4 volumes:

    • paperless_media: This is where your documents are stored.
    • paperless_data: This is where auxillary data is stored. This folder also contains the SQLite database, if you use it.
    • paperless_pgdata: Exists only if you use PostgreSQL and contains the database.
    • paperless_dbdata: Exists only if you use MariaDB and contains the database.

    Also muss ich nur die Ordner paperless_media und paperless_data entsprechend mappen, da ich MariaDB zwar nutze, diese sich aber außerhalb des Containers befindet. Ich bin allerdings irritiert, in dem anderen Dokumentationsteil wurde von einem Ordner media geschrieben und nun von paperless_media? :/ Was sind die korrekten Ordner und wie sehen die absoluten Pfade aus? Spätestens an dieser Stelle scheitere ich, da ich nicht weiß, wo ich nachschlagen könnte.



    Viele liebe Grüße

    Frank

  • Hallo zusammen,


    ich hatte schon befürchtet, dass es zuviel Text ist, allerdings wollte ich eben nicht einfach nur eine Lösung erhalten, sondern vorallem verstehen, wie es funktioniert. Falls doch noch jemand die Zeit findet, sich das durchzulesen und mir Feedback zu geben, insbesondere wo ich womöglich Denkfehler habe oder etwas übersehe, würde ich mich sehr freuen.


    Viele liebe Grüße

    Frank

  • Hallo zusammen,


    da ich keine Möglichkeit gefunden habe, meinen ersten Beitrag zu editieren, wollte ich nur daraufhinweisen, dass ich in einem anderen Forum ein thread mit exakt den gleichen Fragestellungen erstellt habe. Ich würde mich natürlich weiterhin sehr freuen, wenn sich jemand von euch doch noch die Zeit nehmen könnte und würde, um das ganze durchzugehen und mir Rückmeldung zu geben. Ich werde nach diesem Beitrag diesen thread nicht weiter pushen.


    Viele Grüße

    Frank