QNAP Containter Station: paperless-ngx per Docker einrichten

Frank

New member
Hallo zusammen,



ich möchte bei meinem QNAP NAS mir paperless-ngx mittels der Container Station erstellen. Ich habe dazu in einem anderen Forum praktisch den gleichen thread erstellt, aber leider keine Antwort erhalten. Ich habe dort auch gesehen, dass es dazu bereits einen thread gibt und das Aufsetzen und Starten sehr einfach zu sein scheint. 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 PAPERLESS_MEDIA_ROOT 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?


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 inorder 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. Thisfolder also contains the SQLite database, if you use it.
  • paperless_pgdata: Exists only if you use PostgreSQL andcontains the database.
  • paperless_dbdata: Exists only if you use MariaDB and containsthe 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
 
Eintrag Hostname bleibt leer und Netzwerkmodus bei NAT.

Ich würde hier einen Hostname eintragen und den Netzwerkmodus auf bridged setzen.
Dann brauchst Du auch den "Mist" mit Portweiterleitungen usw. nicht machen.
Dein Container mit Paperless erhält dann von Deinem DHCP-Server (Router) eine IP in Deinem lokalen Netz und kann über diese angesprochen werden.

Zum Rest kann ich nur sagen, dass ich Paperless nicht kenne, aber was Du zu den Konfigurationen geschrieben hast macht auf mich den Eindruck, dass es passt. Auch das mit den Dateinamen ergibt für mich Sinn.
 
Danke für die Rückmeldung und die von dir investierte Zeit alles durchzulesen. Du hast absolut Recht, dass ich mir mit dem Netzwerkmodus bridge die Portweiterleitung sparen kann und ehrlich gesagt, hatte ich darüber nicht so wirklich nachgedacht.

Hättest du eventuell eine Idee, wie ich die korrekten Ordner herausfinde? Ich möchte die wichtigen Daten außerhalb vom Container haben, damit beim Absturz usw. die Daten erhalten bleiben und ich da auch rankommen kann. Nun steht bei der Dokumentation unter Configuration -> paths and folders u.a.
PAPERLESS_MEDIA_ROOT=<path>
This is where your documents and thumbnails are stored.
[...]
Defaults to "../media/", relative to the "src" directory.
Hier lese ich nur raus, dass es irgendeinen Pfad /src/???/media/ gibt, oder liegt hier schon ein Missverständnis vor? Bei Administration steht dagegen wieder folgendes:

[...]
  • Backup the docker volumes. These usually reside within /var/lib/docker/volumes on the host and you need to be root inorder to access them.
Paperless uses 4 volumes:
  • paperless_media: This is where your documents are stored.
[...]
Dies verstehe ich nun so, dass irgendwo im Container ein Ordner paperless_media existiert. Der angebene Pfad darüber bezieht sich ja nur auf den host, also mein NAS, wo der Container läuft. Womöglich habe ich da etwas komplett missverstanden, aber für mein aktuelles Verständnis widersprechen sich die beiden Angaben und beide Angaben helfen mir auch nicht den absoluten Pfad herauszubekommen. Hier wäre ich für Anregungen dankbar, was ich noch machen könnte, um das herauszubekommen oder wie man da generell vorgeht. Natürlich sind weiter Hinweise zu den anderen Punkten herzlich willkommen, schließlich dient dies für mich nur exemplarisch im Umgang mit der Container Station und dem Aufsetzen von Dockern.
 
Also bezüglich den Ordnern habe ich keine Lösung gefunden, mich aber an die bei github bereitgestellten yml-Dateien gehalten und dort die Ordnerstruktur übernommen.

Dann gab es Probleme bei der Verbindung mit der MariaDB, hier lag mein Fehler darin, dass ich das Protokoll https/http und nicht nur die reine URL bei PAPERLESS_DBHOST angegeben habe. Jedenfalls erhalte ich keine Fehlermeldung mehr bezüglich MariaDB, aber folgendes:
Code:
Paperless-ngx docker container starting...
Creating directory /tmp/paperless
Adjusting permissions of paperless files. This may take a while.
Waiting for MariaDB to start...
Waiting for Redis...
Redis ping #0 failed.
Error: Error 99 connecting to localhost:6379. Cannot assign requested address..
Waiting 5s
Redis ping #1 failed.
Error: Error 99 connecting to localhost:6379. Cannot assign requested address..
Waiting 5s
Redis ping #2 failed.
Error: Error 99 connecting to localhost:6379. Cannot assign requested address..
Waiting 5s
Redis ping #3 failed.
Error: Error 99 connecting to localhost:6379. Cannot assign requested address..
Waiting 5s
Redis ping #4 failed.
Error: Error 99 connecting to localhost:6379. Cannot assign requested address..
Waiting 5s
Failed to connect to redis using environment variable PAPERLESS_REDIS.

Klar, die Variable PAPERLESS_REDIS habe ich nicht eingestellt, wobei ich dachte, dass es sich bei Redis auch nur um eine Datenbank handelt, und er dann halt MariaDB nimmt, aber scheinbar liegt die Stärke von Redis daran im Arbeitsspeicher effizient zu laufen und wird dennoch benötigt... Irgendwie lese ich immer, dass man einfach nur den doccer runterladen und installierne muss und bei den meisten scheint es zu klappen...

Wenn Redis nur für den laufenden Betrieb verwendet wird, so meine Überlegungen, muss ich mich nicht um Backups kümmern oder darum, dass irgendwelche Ordner Host verwendet werden. Prinzipiell müsste ich mich um die Ports kümmern, es sei denn ich verwende anstatt nat nun bridge. Wenn ich also nur auf bridge einstelle und ansonsten keinerlei Änderungen vornehme, erhalte ich folgendes, sobald ich versuche mit mit Redis zu verbinden, um per Webinterface Einstellungen vorzunehmen:
Code:
1:M 28 Jul 2023 09:28:06.401 * Ready to accept connections
1:M 28 Jul 2023 09:28:44.823 # Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection aborted.

Bin ich falsch herangegangen? Muss ich mich bei Redis doch um irgendwelche Einstellungen kümmern? Ich bin auf einen Blog-Eintrag gestoßen (welcher sich auf Synology anstatt Qnap bezieht), wo auch nur erwähnt wird, Redis-Image herunterladen, Standardeinstellungen belassen, installieren. Ich habe auch den Dokumentationsteil redis on docker gefunden, allerdings scheinen die davon auszugehen, dass das image installiert ist und zeigen nun, wie man per Webinterface eine Redis-Datenbank erstellt. 😔
 
Zuletzt bearbeitet:
Ich verstehe es leider nicht. In deinem ersten Post sprichst du von dem anderen Forum. In diesem Forum gibt es ein Posting von mir wo ich mein laufende Compose Datei bereitgestellt habe. Warum nimmst du die nicht einfach, passt die Ordner an deine Struktur an und gut ist?
 
Wie ich beschrieben habe, möchte ich das ganze verstehen, was ich da mache und einsetze. paperless-ngx ist da nur ein praktisches Beispiel für mich. Klar kann ich irgendetwas übernehmen, und hoffen, dass es dann nachhaltig klappt, aber das ist nicht mein Ziel. Durch das kleinschrittige Vorgehen, konnte ich schon einige Missverständnisse meinerseits aufklären und durch das Selbermachen habe ich auch die Chance auf Lernerfolge.

Vielleicht ist die Variante das per Compose Datei zu machen wirklich besser, aber auch da wäre mein Ziel diese zu verstehen und da sind mir durchaus ein paar Punkte unklar, zudem hat die Übernahme auch nicht bei allen problemlos geklappt. Ich vermute stark, dass ich damit dann auch nur auf nervige Probleme stoßen werde, insbesondere da ich manches anders machen und somit anpassen würde.

Wenn ich nicht wieder einen größeren Denkfehler habe, müsste die von mir aufgezeigte Variante doch funktionieren. Da sie nicht funktioniert, habe ich vermutlich irgendwo etwas falsch gemacht und folglich etwas nicht (richtig) verstanden. Versteh mich nicht falsch, keiner von euch soll/muss mir hier Einzelunterricht geben und ich beschwere mich auch nicht, wenn keiner reagiert oder sich diesen textlastigen thread antun möchte.

Eine Nachfrage hätte ich aber noch: wäre aus deiner Sicht die Vorgehensweise über Composer Datei besser, um den ganzen Prozess und die Zusammenhänge zu verstehen? Dann könnte ich auch umschwenken und versuchen selbst zu solch einer Compose Datei zu kommen. Dies würde aber auch nur auf einen ähnlichen Thread wie diesen hier hinauslaufen, wo ich beschreibe wie ich das ganze verstehe, damit mir andere womögliche Denkfehler oder Missverständnisse aufzeigen können.
 
Zuletzt bearbeitet:
Hallo,
da es mir so aehnlich geht wie dir, wollte ich Fragen ob du es schlussendlich geschafft hast Paperless wie von dir gewünscht zu konfigurieren.

Würde mich über eine Rückmeldung freuen.
FG
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.614
Beiträge
55.175
Mitglieder
5.463
Neuestes Mitglied
Stefano
Zurück
Oben