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

myssv

Benutzer
Mitglied seit
27. Okt 2019
Beiträge
199
Punkte für Reaktionen
30
Punkte
28
Also step by step auf 14, 15 und 16.
Und zwischendurch immer schön den Container sichern.
 

myssv

Benutzer
Mitglied seit
27. Okt 2019
Beiträge
199
Punkte für Reaktionen
30
Punkte
28
Nee kannst direkt auf 16 gehen
Scheinbar nicht
PostgreSQL Database directory appears to contain a database; Skipping initialization
2023-11-30 17:31:16.891 UTC [1] FATAL: database files are incompatible with server
2023-11-30 17:31:16.891 UTC [1] DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.4 (Debian 15.4-2.pgdg120+1).
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Diese Warnung bekommst du auch, wenn du von 13 zuerst auf 14 und dann auf 15 wechselst. Das wird nicht funktionieren, ohne vorher einen Dump zu machen und den dann einzuspielen.

Oder man lässt einfach die aktuelle Version und hat seine Ruhe und es funktioniert trotzdem ohne Probleme.
 

myssv

Benutzer
Mitglied seit
27. Okt 2019
Beiträge
199
Punkte für Reaktionen
30
Punkte
28
na ja, 3 Versionen hinter der aktuellen Version ist schon etwas viel.

Mal sehen, ob ich irgendwo eine Anleitung finde, wie das mit dem Dump klappt.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Dazu gibt es auch mehrere Anleitungen hier.

Welche Verbesserungen hat denn Version 16 über Version 13?
 

myssv

Benutzer
Mitglied seit
27. Okt 2019
Beiträge
199
Punkte für Reaktionen
30
Punkte
28
Welche Verbesserungen hat denn Version 16 über Version 13?
Das weißt Du sicher besser als ich ;-)

Aus alter Erfahrung weiß ich, dass Hilfe meistens nur für die aktuellen Versionen gegeben wird. Da möchte ich dann halbwegs aktuell sein.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Wir reden von einer Datenbank. Da gibt es nicht mit jeder Major Version unzählige neue Features oder gar ein neues Layout. 😉

Und wenn wir hier von Hilfe für Paperless-ngx reden, so ist die unabhängig von der PostgreSQL-Version.
 

myssv

Benutzer
Mitglied seit
27. Okt 2019
Beiträge
199
Punkte für Reaktionen
30
Punkte
28
Wir reden von einer Datenbank.
Ich habe früher SQL Server administriert und da war die erste Option immer zuerst die aktuelle Version zu installieren, bevor es an den Second Level Support ging ...
 

myssv

Benutzer
Mitglied seit
27. Okt 2019
Beiträge
199
Punkte für Reaktionen
30
Punkte
28
Ich habe nun mal die Scripts von DrDeath aus dem anderen Beitrag ausgeführt.

Mein Dump ist nur 161 Byte groß. Kann das sein bei über 4000 Belegen?

Der Import scheitert dann mit folgender Meldung:
root@paperless:~# gunzip < /home/paperless/dump.gz | docker exec -i db psql -U postgres
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: role "postgres" does not exist

Ich werde jetzt erst mal eine Nacht drüber schlafen und mein Backup zurück holen.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Führst du das auf der DS aus? Frage wegen dem Pfad /home/..... Auf der DS wäre das ja /volume1/.....
Existiert bei dir auch der User postgres? Du musst die Zeilen schon anpassen und nicht nur Copy&Paste machen.
 

myssv

Benutzer
Mitglied seit
27. Okt 2019
Beiträge
199
Punkte für Reaktionen
30
Punkte
28
Ich nutze paperless unter Debian auf einem Proxmox!

Das sind meine angepassten Scripts:

docker exec -t db pg_dumpall -c -U postgres | gzip > /home/paperless/dump.gz

docker stop db
cd /data/paperless/postgresql/
mv _data/ data.old/
mkdir _data
docker start db
gunzip < /home/paperless/dump.gz | docker exec -i db psql -U postgres

Ich sehe aber gerade, der User heißt paperless ...

Wie Du schon sagst: Ich muss die Zeilen schon anpassen .......
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Du könntest beim pg_dumpall das | gzip weglassen und die Datei einfach dump.sql nennen. Dann könntest du dir die Datei auch angucken, ob der Export soweit richtig aussieht.
 

myssv

Benutzer
Mitglied seit
27. Okt 2019
Beiträge
199
Punkte für Reaktionen
30
Punkte
28
So, ich konnte nicht schlafen ....

Der Import lief sauber durch, aber nun startet der Webserver nicht mehr.

Folgendes steht im Log:

Paperless-ngx docker container starting...
Creating directory /tmp/paperless
Adjusting permissions of paperless files. This may take a while.
Waiting for PostgreSQL to start...
Waiting for Redis...
Connected to Redis broker.
Apply database migrations...
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 289, in ensure_connection
self.connect()
File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 270, in connect
self.connection = self.get_new_connection(conn_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 275, in get_new_connection
connection = self.Database.connect(**conn_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
psycopg2.OperationalError: connection to server at "db" (172.20.0.2), port 5432 failed: FATAL: password authentication failed for user "paperless"
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/paperless/src/manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.11/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.11/site-packages/django/core/management/__init__.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 412, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 458, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 106, in wrapper
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 117, in handle
executor = MigrationExecutor(connection, self.migration_progress_callback)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/migrations/executor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/migrations/loader.py", line 58, in __init__
self.build_graph()
File "/usr/local/lib/python3.11/site-packages/django/db/migrations/loader.py", line 235, in build_graph
self.applied_migrations = recorder.applied_migrations()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 81, in applied_migrations
if self.has_table():
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 57, in has_table
with self.connection.cursor() as cursor:
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 330, in cursor
return self._cursor()
^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 306, in _cursor
self.ensure_connection()
File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 288, in ensure_connection
with self.wrap_database_errors:
File "/usr/local/lib/python3.11/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.11/site-packages/django/db/backends/base/base.py", line 289, in ensure_connection
self.connect()
File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 270, in connect
self.connection = self.get_new_connection(conn_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 275, in get_new_connection
connection = self.Database.connect(**conn_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
django.db.utils.OperationalError: connection to server at "db" (172.20.0.2), port 5432 failed: FATAL: password authentication failed for user "paperless"

An dem User habe ich nix geändert. "paperless" ist user und password.

Ich habe nach dieser Hilfe installiert:
https://www.schreiners-it.de/proxmox/paperless-ngx-im-lxc-container-installieren/
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Was genau hast du denn ausgeführt? Existiert jetzt noch überhaupt ein User mit dem Namen Paperless? Schwer zu sagen ohne zu wissen was du genau gemacht hast.

PS: Was ich aber auf keinen Fall empfehlen würde, ist dass du docker als nicht root User ohne sudo ausführen kannst. Docker läuft als root und jeder, der das ohne Passwort ausführen kann, kann. dadurch sich einen Container erstellen und mit den richtigen Mountpfaden alles auf deinem System machen was er will.....
 

myssv

Benutzer
Mitglied seit
27. Okt 2019
Beiträge
199
Punkte für Reaktionen
30
Punkte
28
Ich habe es so gemacht:

docker exec -t db pg_dumpall -c -U paperless | gzip > /home/paperless/dump.gz

Docker-Compose.yml anpassen und Update ausführen

docker stop db
cd /data/paperless/postgresql/
mv _data/ data.old/
mkdir _data
docker start db
gunzip < /home/paperless/dump.gz | docker exec -i db psql -U paperless

Mein normaler User "paperless" konnte "sudo" nicht ausführen. Da ich das auf die schnelle nicht beheben konnte, habe ich es als root gemacht. Nun sollte es auch als user paperless gehen. Danke für den Hinweis.

Der Import lief auch sauber durch!

Das ist meine yml-Datei

version: "3.4"
services:
broker:
image: docker.io/library/redis:7
container_name: broker
restart: unless-stopped
volumes:
- /data/paperless/redis/_data:/data

db:
image: docker.io/library/postgres:13
container_name: db
restart: unless-stopped
volumes:
- /data/paperless/postgresql/_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless

webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: webserver
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/paperless/consume:/usr/src/paperless/consume
- /data/paperless/data:/usr/src/paperless/data
- /data/paperless/media:/usr/src/paperless/media
- /data/paperless/export:/usr/src/paperless/export
environment:
PAPERLESS_ADMIN_USER: paperless
PAPERLESS_ADMIN_PASSWORD: paperless
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_TIKA_ENABLED: true
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
PAPERLESS_OCR_LANGUAGE: deu
PAPERLESS_TIME_ZONE: Europe/Berlin
USERMAP_UID: 1001
USERMAP_GID: 1001

gotenberg:
image: docker.io/gotenberg/gotenberg:latest
container_name: gotenberg
restart: unless-stopped
command:
- "gotenberg"
- "--chromium-disable-routes=true"
- "--chromium-allow-list=file:///tmp/.*"

tika:
image: ghcr.io/paperless-ngx/tika:latest
container_name: tika
restart: unless-stopped
Kann das sein, dass ihm das Userpasswort "paperless" nicht stark genug ist?
 


 

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