Paperless-ngx Paperless-ngx – DMS via Docker auf dem NAS

Caramlo

Benutzer
Mitglied seit
11. Mai 2019
Beiträge
224
Punkte für Reaktionen
64
Punkte
34
Ok, also doch erst der Export aller Dokumente. Ich hatte erwartet, dass es da einen einfacheren Weg gibt. Angenommen irgendwann kommt ein Upgrade auf Postgres 16-ff und man hat 1000 oder mehr Dokumente im Paperless, dann wird das aber eine ganz schön zeitraubende Angelegenheit für nix eigentlich, die Dokumente sind ja da! Das macht für mich keinen Sinn.
Muss der Media Ordner dann auch geleert werden? In welcher Reihenfolge erfolgt der Restore? Erst die Dokumente und dann die Datenbank?
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Das ist alles auch davon abhängig, nach welcher Anleitung du das ganze installiert hast.

Wenn die Datenbank und der Container unabhängig voneinander laufen, dann kannst du das auch unabhängig voneinander und ohne die Dokumente zu exportieren, updaten. Wenn das Ganze aber voneinander abhängig ist, geht das vermutlich nicht. Zum Update der Datenbank musst du die yaml-Datei anpassen; damit diese Änderungen wirksam werden, musst du aber den Container über docker-compose up neustarten. Wenn dann die Datenbank nicht passt, führte das bei mir zu ständigen Neustarts, sodass auch keine Backups eingespielt werden können.

Und bitte eins nicht vergessen: Für Paperless es alleine bringt das Update der Datenbank. Keinerlei Vorteile. Nicht von Version 13 auf 14, nicht von Version 14 auf 15 und ziemlich sicher auch nicht von Version 15 auf 16.
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.152
Punkte für Reaktionen
741
Punkte
154
Dies ganze Postgresql-Geraffel ist auch einer der Gründe neben anderen, warum ich meine Installation auf MariaDB umgestellt habe.

Selbst der MariaDB-Container ist schon ein paar mal upgedatet worden, das hat aber nichts an der Struktur geändert und dementsprechend waren auch keine Nebenerscheinungen u.a. an Paperless festzustellen.
 

Caramlo

Benutzer
Mitglied seit
11. Mai 2019
Beiträge
224
Punkte für Reaktionen
64
Punkte
34
Ich habe das Update jetzt durch. Hat alles gut geklappt. Danke für die Hilfe!
Prinzipiell müsste man doch eigentlich sogar die MariaDB direkt auf der Syno nutzen können oder?
Hat das schon einmal jemand probiert?

Edit: Hat sich erledigt! Hab's gefunden. :)
 
Zuletzt bearbeitet:

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.152
Punkte für Reaktionen
741
Punkte
154

Caramlo

Benutzer
Mitglied seit
11. Mai 2019
Beiträge
224
Punkte für Reaktionen
64
Punkte
34
Genau die meinte ich! (y):)
 

Jack83

Benutzer
Mitglied seit
27. Feb 2023
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Wenn ich mein Paperless Container aktuallisiere startet Paperless nicht mehr, im Log steht dann folgenes:

Running migrations:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py", line 357, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.IntegrityError: CHECK constraint failed: archive_serial_number
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/paperless/src/manage.py", line 11, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 402, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/core/management/commands/migrate.py", line 349, in handle
post_migrate_state = executor.migrate(
File "/usr/local/lib/python3.9/site-packages/django/db/migrations/executor.py", line 135, in migrate
state = self._migrate_all_forwards(
File "/usr/local/lib/python3.9/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards
state = self.apply_migration(
File "/usr/local/lib/python3.9/site-packages/django/db/migrations/executor.py", line 252, in apply_migration
state = migration.apply(state, schema_editor)
File "/usr/local/lib/python3.9/site-packages/django/db/migrations/migration.py", line 130, in apply
operation.database_forwards(
File "/usr/local/lib/python3.9/site-packages/django/db/migrations/operations/fields.py", line 235, in database_forwards
schema_editor.alter_field(from_model, from_field, to_field)
File "/usr/local/lib/python3.9/site-packages/django/db/backends/sqlite3/schema.py", line 174, in alter_field
super().alter_field(model, old_field, new_field, strict=strict)
File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/schema.py", line 788, in alter_field
self._alter_field(
File "/usr/local/lib/python3.9/site-packages/django/db/backends/sqlite3/schema.py", line 460, in _alter_field
self._remake_table(model, alter_field=(old_field, new_field))
File "/usr/local/lib/python3.9/site-packages/django/db/backends/sqlite3/schema.py", line 333, in _remake_table
self.execute(
File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/schema.py", line 199, in execute
cursor.execute(sql, params)
File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(
File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python3.9/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py", line 357, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: CHECK constraint failed: archive_serial_number
Applying documents.1029_alter_document_archive_serial_number...
Paperless-ngx docker container starting...
Creating directory /tmp/paperless
Adjusting permissions of paperless files. This may take a while.
Waiting for Redis...
Connected to Redis broker.
Apply database migrations...

Kann mir jemand den Grund erklären? Wäre echt dankbar
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Von welcher Version updatest du denn auf welche neue Version? Und nach welcher Anleitung hast du das ganze bei dir installiert?
 

Jack83

Benutzer
Mitglied seit
27. Feb 2023
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Ich habe Paperless über Stacks installiert, und versuche von Version Paperless-ngx 1.11.3 auf die Aktuelle zu kommen
 

Anhänge

  • paperless.txt
    1,8 KB · Aufrufe: 18

BUGEE

Benutzer
Mitglied seit
17. Feb 2020
Beiträge
137
Punkte für Reaktionen
11
Punkte
18
Hallo zusammen, ich bin auf der Suche nach Paperless-NGX auf diesen Thread gestoßen und habe mir einige Beiträge durchgelesen.

In Zukunft möchte ich Paperless-NGX nutzen und weiß aktuell nicht, welche Vorgehensweise die dümmste ist, da es ja wohl unterschiedliche Installationen gibt (Docker, Portainer Postgres etc.).

Auf meiner DS920+ habe ich in docker lediglich Vaultwarden am laufen. Ansonsten wird die DS nur für Photos und bisschen Videostreaming genutzt.

Backups bzw. Updates sollten problemlos funktionieren.

Welche Vorgehensweise ist zu empfehlen und was sind die Vor- und Nachteile der unterschiedlichen Installationen?
 

Verdi-Fan

Benutzer
Mitglied seit
06. Jan 2023
Beiträge
35
Punkte für Reaktionen
6
Punkte
14
Liebe Paperless-Freunde!
Ich habe heute eine Datei in Paperless-NGX eingestellt, die über 400 Seiten hat - offenbar keine gute Idee, denn die taucht nicht mehr auf oder wird möglicherweise jetzt tagelang "verarbeitet". Frage: Gibt es da eine natürliche Grenze oder ergibt sich die Grenze aus der Dauer, die Paperless braucht, um OCR durchzuführen?
Grüße
VF

P.S.: Eine Anleitung, wie man eine zweite Paperless-NGX Instanz realisiert, wäre großartig:
 

ebusynsyn

Benutzer
Sehr erfahren
Mitglied seit
01. Jun 2015
Beiträge
458
Punkte für Reaktionen
271
Punkte
119
@BUGEE

Ich habe eine seit längerem problemlos laufende Installation von Paperless_ngx.

Grundinstallation gemäss dieser Anleitung: https://mariushosting.com/how-to-install-paperless-ngx-on-your-synology-nas/

Ergänzt mit Inputs von hier:
https://www.digitalisierung-mit-kopf.de/blogs/anleitungen

Und auch hier habe ich noch ein paar Inputs geben lassen:
https://www.youtube.com/watch?v=xAsxWBRHRXM

Und letztendlich gibt es hier die offizielle Anleitung, die auch sehr hilfreich ist:
https://docs.paperless-ngx.com/
 
  • Like
Reaktionen: BUGEE

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ich habe mich nun auch mal daran versucht. Bin aber mehrmals gescheitert. In der Vergangenheit hatte ich das auch nie hinbekommen.
Habe es nun auf mehrere Varianten versucht. Weder mit der von Mariushosting noch mit der "originalen" Anleitung klappt es.
Erstmal konnte ich den Stack nicht deployen. Weder in Portainer noch via CLI. Portainer meldet There is an error in the yaml syntax: YAMLSyntaxError: All collection items must start at the same column. Ähnlich lautet der Fehler auf der Console. Hab dann Zeile für Zeile kopiert und die Leerzeichen am Anfang manuell gesetzt. Dann kam aber ein anderer Fehler. Environment must be a string oder so ähnlich. Letzten Endes habe ich nun davon die Schnauze voll gehabt und die Container allesamt via portainer manuell erstellt. Das klappt auch ohne Fehler in den Logs. Doch ich kann mich nicht am Webinterface anmelden. Ich habe die Variablen PAPERLESS_ADMIN_USER und PAPERLESS_ADMIN_PASSWORD gesetzt. Doch es klappt einfach nicht. Auch nicht mit admin/admin.
 
  • Like
Reaktionen: Verdi-Fan

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Erstelle mal einen neuen Admin über das Terminal mit

sudo docker-compose run --rm webserver createsuperuser

Danach musst du Benutzernamen und Passwort festlegen.
 
  • Like
Reaktionen: Verdi-Fan

kerbel

Benutzer
Mitglied seit
24. Nov 2013
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Guten Abend zusammen,
ich habe mich als Newbie bezüglich NAS seit Weihnachten mit paperless ngx beschäftigt und Wochen gebraucht, um das ans Laufen zu bekommen, hat dann aber geklappt nach der Anleitung von Mariushosting mit geringem ergänzenden Input von deployn.de, hufsky-living,codeberg und dem Forum hier. Also Installation mit Portainer und reverse proxy der Synology, wobei ich manchmal nur stumpf der Anleitung von Marius gefolgt bin, ohne genau zu wissen , was ich da eigentlich tue.
DS720). Eigentlich ist Paperless neben Calibre die ultimative Killeranwendung für ein NAS, wenn es nicht ab und zu nervige Schwierigkeiten gäbe .Die im vorigen Post beschriebenen Yaml-Syntax-Fehler gehören dazu.
Nebenbei bemerkt bin ich kein Freund von Kommandozeilen oder Terminals ,-MS-DOS 6.2- habe ich schon 1992 abgeschworen. Ich bevorzuge KlickiBunti.

Aus irgendwelchen Gründen habe ich mir vor einer guten Woche die Installation zerschossen. Die gut 300 Testdokumente sind zwar als Sicherung vorhanden, aber nicht als Export aus Paperless. Ich habe die Installation noch mal komplett aufgesetzt und habe jetzt zwei Probleme:
ich komme jetzt nicht mehr über die interne IP an Paperless heran, obwohl folgende Variablen in der YML-Datei, in den Dockereinstellungen und im Stack des Portainers gesetzt sind:
Zitat YAML
env_file: docker-compose.yml
environment:
PAPERLESS_URL: https://xy.myname.synology.me,http://xxx.yyy.zz:8777
PAPERLESS_ALLOWED_HOSTS: http://xxx.yyy.zz:8777,localhost,xy.myname.synology.me
PAPERLESS_CSRF_TRUSTED_ORIGINS: https://xy.myname.synology.me,http://192.xxx.yyy.zz:8777
Der externe Zugriff über den Proxy funktioniert.
Aus der Dokumentation heraus ist mir nicht klar, worin der Unterschied dieser Variablen liegt.
Die CSRF Variable mußte ich in der vorherigen Installation setzen, weil ich bei Zugriff über den Reverse-Proxy im Browser einen CSRF-Fehler hatte und ebenfalls nicht auf paperless zugreifen konnte. Was mache ich hierbei falsch?

Das zweite Problem betriff das Einlesen sowohl von neuen PDFs als auch von den bereits von Paperless in der Vorinstallation benannten und getaggten Dokumenten.
Meine Variable FILE FORMAT sieht so aus:
{correspondent}/{created_year}/{created}-{correspondent}-{document_type}-{tag_list}-{title}. Ich habe früher mal Tagspaces benutzt, wo die Tags Bestandteile des Dateinamens werden, was ich gut finde.

Beim Einlesen von neuen PDFs bricht das System den Versuch mit der Fehlermeldung ERROR 36 Filename too long ab, weil er alle Tags dranhängen will, die ich definiert habe. Dann wird der Einlesevorgang als
Dauerschleife wiederholt und immer wieder abgebrochen. Diese Dauerschleife kann nicht beendet werden, schießt man den Container ab, beginnt das ganze von vorn. Löscht man die Datei im Consumer-Ordner kommt die Fehlermeldung Datei nicht gefunden und eine andere Dauerschleife beginnt. Sowohl die Tags als auch die Dokumenttypen sind nicht automatisch zu setzen, sondern beinhalten wiederum bestimmte Worte oder Zeichenketten. Bild habe ich angefügt.Was kann man man da machen?

Als letztes die Frage, wie ich meine Testdokumente neu einlesen kann, ohne das diese neu benannt und getaggt werden?

Schöne Grüße aus Westfalen
 

Anhänge

  • 2023-03-05 20 16 07#Fehler.jpg
    2023-03-05 20 16 07#Fehler.jpg
    197,2 KB · Aufrufe: 9

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Statt neu aufzusetzen – bei einer funktionierenden Installation – würde ich eine regelmäßige Sicherung vorziehen, sodass du diese einfach bei Problemen wieder einspielen kannst. «Neu einlesen» ohne diese ganzen Probleme funktioniert nur über den Import der Dokumente und des Datenbank-Dumps, ansonsten geht das ganze Spiel wieder von vorne los.

Was die yaml-Dateien betrifft, so gibt es eine Vorlage auf Github, die funktioniert. Der Vorteil der Datei: Beim neuen Aufsetzen hat man einfach immer die gleichen Parameter. Warum Marius' Anleitung bei dir nicht funktioniert hat, kann ich mit den Infos nicht so direkt nachvollziehen.

Was den Zugriff betrifft: Firewall gecheckt?

Wenn du schreibst, dass du teilweise nicht weisst, was du da machst, solltest du die Installation vielleicht nicht über einen Reverse Proxy ins Internet stellen 😉
 
  • Like
Reaktionen: Verdi-Fan

kerbel

Benutzer
Mitglied seit
24. Nov 2013
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
#monacum.
wie gesagt , ich lerne noch. Was die Aussage angeht, das ich nicht weiß was ich tue, bezieht sich das auf den Inhalt und den Aufbau irgendwelcher Skripten, die zur Ausführung komm oder wieso kann ich Parameter in der Docker-Compose.yml, in den erweiteren Dockereigenschaften oder im Stack des Portainer einstellen.
ich habe an den Firewalleinstellungen nix geändert. Marius Anleitung hat ja funktioniert,beim ersten Mal ging es intern und nach einfügen der CSRF Variablen auch extern mit reverse Proxy als auch mit VPN über Interne IP., jetzt geht es nur extern, warum auch immer.

Das was mich im Moment aber nervt, ist das todrödeln beim Einlesen neuer Dateien mit Endlosschleife.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
wieso kann ich Parameter in der Docker-Compose.yml
Für Fragen zu den Parametern gibt es ja eine Anleitung der Beteiligten. Und wenn ich mich richtig erinnere, kann ich im Stack in Portainer diese Variablen genauso setzen. Unterschieden wird da auf beiden Seiten zwischen einer .yaml- und einer .env-Datei.

Das was mich im Moment aber nervt, ist das todrödeln beim Einlesen neuer Dateien mit Endlosschleife.
Was die bereits in deiner alten Installation eingelesenen Dokumente betrifft, so „kennt“ Paperless die nicht, wenn sie nicht in Datenbank und Paperless-Export auftauchen. Und dann musst du natürlich die ganze Arbeit – wenn die Tags nicht automatisch komplett richtig vergeben werden – nochmal machen.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Moin, ich habe hier und hier ein paar Screenshots hochgeladen für all die, die irgendwann auf DSM 7.2 aktualisieren wollen und sich jetzt schon mal ein kurzes Bild von der neuen Oberfläche für Docker machen wollen. Ich werde vermutlich kommende Woche die Zeit haben, das ganze mit noch mehr Informationen zu füllen und mal einen Container zum laufen zu kriegen.
 
  • Like
Reaktionen: Verdi-Fan

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
So ich hab es nun mittlerweile auch hinbekommen, das Ganze aufzusetzen. Ist jetzt erstmal im Testbetrieb.
@Verdi-Fan In diesem Video wird bei ca 1:50 kurz angedeutet, wie man eine zweite Instanz startet. Falls dir das hilft.
 
  • Like
Reaktionen: Verdi-Fan


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat