Update von 2.14.7 auf die aktuelle Version 2.20.15, ist etwas zu beachten?

Hallo an alle Top-User und Spezies,

ich bin in der letzten Zeit nicht dazu gekommen unsere Instanz up to Date zu halten. Nun hatte ich das Video zur Beta Version 3 gesehen und mal geschaut wo ich so “hangen” geblieben bin.

Ich habe noch 2.14.7, offiziell scheint es 2.20.15 zugeben. Kann ich einfach Updaten oder gibt es wichtige Dinge zu beachten.
Da ja doch einige Versionen dazwischen liegen.

Laut YAML laufen bei mir Redis auf 6.0 und Postgress auf 17.

Gruß

Ich habe nun versucht auf die letzte Version zu Upsaten und habe redis 8 und Postgres 18 genommen wie in der Beispiel docker-compose im Github angegeben.

Allerdings kommt dann ein Fehler auf:
paperless-webserver-1 | Waiting for Redis…
paperless-webserver-1 | Connected to Redis broker.
paperless-webserver-1 | Apply database migrations…
paperless-webserver-1 | Traceback (most recent call last):
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py“, line 279, in ensure_connection
paperless-webserver-1 | self.connect()
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py“, line 26, in inner
paperless-webserver-1 | return func(*args, **kwargs)
paperless-webserver-1 | ^^^^^^^^^^
paperless-webserver-1 | ^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py“, line 256, in connect
paperless-webserver-1 | self.connection = self.get_new_connection(conn_params)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py“, line 26, in inner
paperless-webserver-1 | return func(*args, **kwargs)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/backends/postgresql/base.py“, line 332, in get_new_connection
paperless-webserver-1 | connection = self.Database.connect(**conn_params)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | ^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/psycopg/connection.py“, line 98, in connect
paperless-webserver-1 | attempts = conninfo_attempts(params)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/psycopg/_conninfo_attempts.py“, line 50, in conninfo_attempts
paperless-webserver-1 | raise e.OperationalError(str(last_exc))
paperless-webserver-1 | psycopg.OperationalError: [Errno -2] Name or service not known
paperless-webserver-1 |
paperless-webserver-1 | The above exception was the direct cause of the following exception:
paperless-webserver-1 |
paperless-webserver-1 |
paperless-webserver-1 | Traceback (most recent call last):
paperless-webserver-1 | File „/usr/src/paperless/src/manage.py“, line 10, in
paperless-webserver-1 | execute_from_command_line(sys.argv)
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/core/management/init.py“, line 442, in execute_from_command_line
paperless-webserver-1 | utility.execute()
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/core/management/init.py“, line 436, in execute
paperless-webserver-1 | self.fetch_command(subcommand).run_from_argv(self.argv)
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/core/management/base.py“, line 413, in run_from_argv
paperless-webserver-1 | self.execute(*args, **cmd_options)
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/core/management/base.py“, line 459, in execute
paperless-webserver-1 | output = self.handle(*args, **options)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/core/management/base.py“, line 107, in wrapper
paperless-webserver-1 | res = handle_func(*args, **kwargs)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/core/management/commands/migrate.py“, line 118, in handle
paperless-webserver-1 | executor = MigrationExecutor(connection, self.migration_progress_callback)
paperless-webserver-1 |
paperless-webserver-1 | ^^^^^
paperless-webserver-1 | ^^^
paperless-webserver-1 | ^^^^^^
paperless-webserver-1 | ^^
paperless-webserver-1 | ^
paperless-webserver-1 | ^^
paperless-webserver-1 | ^
paperless-webserver-1 | ^^
paperless-webserver-1 | ^
paperless-webserver-1 | ^^
paperless-webserver-1 | ^
paperless-webserver-1 | ^^
paperless-webserver-1 | ^^^^^^
paperless-webserver-1 | ^^^^^^^^^^^^^
paperless-webserver-1 | ^^^^^
paperless-webserver-1 | ^^^^^
paperless-webserver-1 | ^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/migrations/executor.py“, line 18, in init
paperless-webserver-1 | self.loader = MigrationLoader(self.connection)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | ^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/migrations/loader.py“, line 58, in init
paperless-webserver-1 | self.build_graph()
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/migrations/loader.py“, line 235, in build_graph
paperless-webserver-1 | self.applied_migrations = recorder.applied_migrations()
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/migrations/recorder.py“, line 89, in applied_migrations
paperless-webserver-1 | if self.has_table():
paperless-webserver-1 | ^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/migrations/recorder.py“, line 63, in has_table
paperless-webserver-1 | with self.connection.cursor() as cursor:
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py“, line 26, in inner
paperless-webserver-1 | return func(*args, **kwargs)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py“, line 320, in cursor
paperless-webserver-1 | return self._cursor()
paperless-webserver-1 | ^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py“, line 296, in _cursor
paperless-webserver-1 | self.ensure_connection()
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py“, line 26, in inner
paperless-webserver-1 | return func(*args, **kwargs)
paperless-webserver-1 | ^^^^^^^^^^
paperless-webserver-1 | ^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py“, line 278, in ensure_connection
paperless-webserver-1 | with self.wrap_database_errors:
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | ^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/utils.py“, line 91, in exit
paperless-webserver-1 | raise dj_exc_value.with_traceback(traceback) from exc_value
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py“, line 279, in ensure_connection
paperless-webserver-1 | self.connect()
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py“, line 26, in inner
paperless-webserver-1 | return func(*args, **kwargs)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py“, line 256, in connect
paperless-webserver-1 | self.connection = self.get_new_connection(conn_params)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py“, line 26, in inner
paperless-webserver-1 | return func(*args, **kwargs)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/django/db/backends/postgresql/base.py“, line 332, in get_new_connection
paperless-webserver-1 | connection = self.Database.connect(**conn_params)
paperless-webserver-1 | ^^^^^^^^^^^^^^
paperless-webserver-1 | ^^^^^^^^
paperless-webserver-1 | ^^^^^^^^^
paperless-webserver-1 | ^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/psycopg/connection.py“, line 98, in connect
paperless-webserver-1 | attempts = conninfo_attempts(params)
paperless-webserver-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
paperless-webserver-1 | File „/usr/local/lib/python3.12/site-packages/psycopg/_conninfo_attempts.py“, line 50, in conninfo_attempts
paperless-webserver-1 | raise e.OperationalError(str(last_exc))
paperless-webserver-1 | django.db.utils.OperationalError: [Errno -2] Name or service not known

Installiert ist es auf einer Synology. Mit 6 und 17 hat es vorab funktioniert.

Bleib bei Postgres 17 und ändere lediglich Redis auf 8. Denke bitte daran immer eine Datensicherung vorher zu machen. Für den Umstieg von von Postgress 17 auf 18 solltest du ein Backup machen (Export) und Papperles komplett neu installieren (Import). Außerdem müsstest du den Pfad ändern.

Hier einige Hinweise für Umstieg auf Postgres 18. Dieses Video trifft auch für Version 17 zu 18 zu.

https://www.youtube.com/watch?v=rHTVQ3PH8kA&t=216s

Version 17

- /volume1/docker/paperless-ngx/pgdata:/var/lib/postgresql/data

Version 18

- /volume1/docker/paperless-ngx/pgdata:/var/lib/postgresql

Alles klar. Danke. Ich werde es mal ausprobieren.

Ich habe immer noch nicht ganz verstanden welche Backup Methode die bessere ist, muss aber auch gestehen das ich die Masterclass von Stefan nicht habe und somit nicht immer alles nachvollziehen kann.

Ich drücke mal die Daumen ob es dann nach der Umstellung geht. Wenn nicht heißt es auf die alte Postgres und Redis Version zurück.

Der Web Sever und PostgreSQL starten ganz Zeit neu. Redis Läuft stabil. Den Pfad habe ich in der Yaml geändert. Allerdings fährt er immer wieder rauf und runter. Wenn ich es richtig verstehe, dann versucht er eine Migration aber findet keine Daten.

Also irgendetwas muss ich falsche gemacht haben. Grundsätzlich habe ich mich an die Anleitung von Stefan gehalten die da ist.

Du hast den Path bei PostgreSQL geändert? Welche Version hast Du denn? Bist Du bei 17 geblieben? Dann war die Änderung des Paths falsch.

Nein, da ich 18 beim ersten up -d in der yaml hatte, habe ich es erstmal drin gelassen.

Yaml sieht so aus:

version: „3.4“
services:
broker:
image: docker.io/library/redis:8.0
restart: unless-stopped
volumes:
- redisdata:/data

db:
image: docker.io/library/postgres:18
restart: unless-stopped
volumes:
- pgdata:/var/lib/postgresql
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless

webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
ports:
- 8000:8000
healthcheck:
test: [„CMD“, „curl“, „-fs“, „-S“, „–max-time“, „2“, „http://localhost:8000“]
interval: 30s
timeout: 10s
retries: 5
volumes:
- ../data:/usr/src/paperless/data
- ../media:/usr/src/paperless/media
- ../export:/usr/src/paperless/export
- /volume1/scaninput:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db

volumes:
data:
media:
pgdata:
redisdata:

Was mich halt wunder ist, das das im Docker unter Umgebunsvariablen bei paperless-db-1
folgendes steht: /var/lib/postgresql/18/docker/

Update: Ich bin mal in das Verzeichnis: /var/lib/ gewandert und habe dort gesehen, das kein Ordner postgresql vorhanden ist, sollte der noch schon mindestens da sein. Oder wird der erst beim Start erzeugt?

Hoffentlich habe ich mir jetzt nicht alles zerschossen. Einen Export habe ich auf jeden Fall. Data und Media Ordner hatte ich dann nochmal separat gesichert.

/var/lib/postgresql ist korrekt für 18.
Aber Du kannst nicht einfach von 17 auf 18 gehen und dabei die 17er Datenbank Dateien verwenden. Du musst eine neue DB anlegen lassen und deswegen zuvor mittels document_export im Paperless Container dein ganzes Paperless wegsichern.
Lese bitte die Doku von Paperless dazu.

document_export habe ich gemacht. Ich kann nur nicht den Import machen, da der Webserver und die Datenbank ständig versuchen neu zu starten.

Es scheiter dann wohl eher das keine Datenbank vorhanden ist. Diese sollte ich laut Stefans Anleitung vorher auch löschen, was ich getan habe.

Wie es immer so ist, never change a running System, vor allem wenn man nur “Nutzer” ist und kein IT Spezi :smiley:

Wie genau hast Du denn die Datenbank gelöscht?
Aktuell hast Du dafür ein Docker Volume. Hattest Du das vorher auch?

mach mal als root

docker volume ls

Laut der Beschreibung: Datenbank von paperless-ngx - So gelingt das Update (z.B. Postgres 13 — Digitalisierung mit Kopf ab Punkt 5

root@:/# docker volume ls
DRIVER VOLUME NAME
local 4da80737cf70a946c9ef524ef85c851c3536b30149b47894740dcf6e19f3db1d
local 2030d5d9949dae1fa09faf6dc7e8f0583fb518fd07e6e72962779dfdd06f63ff
local paperless_pgdata
local paperless_redisdata

Dann musst Du bitte einmal im Log vom Datenbank Container schauen was da los ist.

Wo finde ich diesen? Unter docker/logs?

Dort sehe ich nichts was groß damit zu tun haben könnte.

Hast du morgen Abend Zeit? Dann können wir da mal zusammen drauf schauen wenn Du magst. Ich würde Dir dann eine Privatnachricht senden.

Ja, das wäre nett. Ich versuche nochmal selber was zu basteln und falls es nicht klappt melde ich mich.

1 „Gefällt mir“

Ich habe Dir eine Private Nachricht gesendet.

1 „Gefällt mir“