PostresQL 13 update - webserver-1 wird beendet

Hallo zusammen,

ich bin am verzweifeln. Wahrscheinlich habe ich irgendwann mal ein Update gemacht und mich danach nicht richtig gekümmert, ob alles läuft.

Was ist vorhanden:

Ich habe Paperless-ngx auf meinen Synology NAS installiert. Das habe ich damals mithilfe der Masterclass gemacht. Es lief auch lange sehr gut. Nur irgendwann konnte ich nicht mehr darauf zugreifen. Ich vermute, dass es ein Update war.

Mangels Zeit konnte ich mich nicht sofort darum kümmern und komme erst jetzt dazu.

Problem:

Aus den Logs konnte ich lesen, dass PostreSQL mindestens die Version 14 benötigt, aber nur die Version 13.23 gefunden wurde.

Ich habe auch schon versucht, die Daten zu exportieren

sudo docker-compose exec webserver document_exporter …/export

Da der Webserver aber nicht läuft, geht das nicht.

Frage:

Kann mir jemand helfen, den Container oder das Programm ohne Datenverlust upzudaten?

Hier noch ein Teil meiner docker-compose.yml:

version: "3.4"
services:
  broker:
    image: docker.io/library/redis:7.0
    restart: unless-stopped
    volumes:
      - redisdata:/data

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

  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:

Falls erforderlich kann ich auch die komplette Log Datei zur Verfügung stellen. Die ist allerdings für das Forum zu groß.

Vielen Dank und ein schönes Wochenende

Sebastian

Aus dem Kopf weiß ich gerade nicht seit welcher Version genau, daher die Bitte. Suche im Internetab welcher Version die PostgreSQL Version größer 14 sein müsste.
Dann setze im Docker Composer File eine Version vorher als Image Tag und rolle das aus. Dann kannst Du ein document_exporter machen.

Habe es gerade gefunden. 2.18.4 von Paperless kannst Du nehmen und damit den Export machen.

Ändere beim Webserver image latest auf 2.18.4 und versuche dann einen export. lasse diese Version so lange aktiv bist du die Umstellung PostgreSQL auf Version 17 vorgenommen hast. Eine Anleitung findest du von Stefan hier:

https://www.digitalisierung-mit-kopf.de/blogs/anleitungen/datenbank-von-paperless-ngx-so-gelingt-das-update-z-b-postgres-13-zu-postgres-15

Nimm Version 17

Hallo,

Danke für die Antwort. Es laufen jetzt alle 3 Container.

Leider funktioniert der Export wie in der Anleitung genannt nicht:

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.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.12/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.12/site-packages/django/core/management/base.py", line 416, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 457, in execute
    self.check(**check_kwargs)
  File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 492, in check
    all_issues = checks.run_checks(
                 ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/django/core/checks/registry.py", line 89, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/paperless/src/documents/checks.py", line 26, in changed_password_check
    .first()
     ^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 1104, in first
    for obj in queryset[:1]:
               ~~~~~~~~^^^^
  File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 384, in __iter__
    self._fetch_all()
  File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 1949, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 91, in __iter__
    results = compiler.execute_sql(
              ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/compiler.py", line 1621, in execute_sql
    cursor = self.connection.cursor()
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 320, in cursor
    return self._cursor()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 296, in _cursor
    self.ensure_connection()
  File "/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 279, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 258, in connect
    self.init_connection_state()
  File "/usr/local/lib/python3.12/site-packages/django/db/backends/postgresql/base.py", line 398, in init_connection_state
    super().init_connection_state()
  File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 225, in init_connection_state
    self.check_database_version_supported()
  File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 201, in check_database_version_supported
    raise NotSupportedError(
django.db.utils.NotSupportedError: PostgreSQL 14 or later is required (found 13.23).

Scheint so als ob er schon eine neuere Version will. Kann ich das einfach in der yml ändern? Ich glaube nicht.

Viele Grüße
Sebastian

Stoppe Paperless sudo docker compose down

Ändere in der docker-compose.yml

webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:2.18.4
    restart: unless-stopped

Starte wieder Paperless sudo docker compose up -d

Das habe ich gemacht. Ich finde da keinen Fehler:

 webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:2.18.4
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - 8000:8000

Wenn ich jetzt den Export ausführe kommt nichts:

Sebastian@itbtsynas:/volume1/docker/paperless-ngx/config$ sudo docker-compose exec webserver document_exporter …/export
Sebastian@itbtsynas:/volume1/docker/paperless-ngx/config$

Es sind auch keine Dateien im Ordner.

hast du sudo docker compose exec … probiert

Probiere mal die 2.18.0 von paperless

@RKuehne Ich habe immer den Befehl verwendet :sudo docker-compose exec webserver document_exporter …/export

@CoolTux Das bringt leider auch nichts.

Du hast aber die Datenbankversion gelassen nehme ich mal.
Startet das PostgreSQL ohne Fehler?
Ähm bitte nicht in irgendein Containermanager schauen ob der Container grün ist. Schau bitte richtig in die Logausgabe von PostgreSQL Container rein.

In welchem Verzeichnis finde ich die Log Datei?

Bei der Suche nach dem Log habe ich festgestellt, dass er wieder den Container beendet und startet wie es ihm gefällt. Mir ist aber nicht klar, ab wann bzw. mit welcher Paperless Version das aufgetreten ist.

Gibt kein Verzeichnis.

sudo docker logs paperless-ngs-db

Also den Containernamen halt. Kann man auch sehen mit

sudo docker container ps

Bevor du dir deine Installation „kaputt reparierst“, kann ich dir unseren Support-Service anbieten:

Das Problem mit dem Update der Datenbank habe ich schon für einige von euch behoben, wir schaffen das in einem einzigen Termin (siehe oben).

Hallo,

@CoolTux @RKuehne Danke für eure Unterstützung bis hierhin. Mir wird das ganze zu komplex, sodass ich mir jetzt einen termin gebucht habe.

Ich habe mir jetzt einen Termin “gekauft”. Zumal ich noch das Problem habe, dass ich in den Update Fehler des heutigen Videos gerasselt bin. Es lief und ich habe vergessen, Updates einzurichten.

Viele Grüße

Sebastian

Sebastian@itbtsynas:/volume1/docker/paperless-ngx/config$ sudo docker-compose exec webserver document_exporter …/export
Sebastian@itbtsynas:/volume1/docker/paperless-ngx/config$

da ist ein punkt zuviel drin ^^ falls es noch niemand aufgefallen sein sollte.

”../export” wäre korrekt

Die Info wieviele Dokumente eingelesen sind fehlt leider um abschätzen zu können ob es nicht einfacher, günstiger und schneller gewesen wäre Tabula Rasa zu machen und laut MC neu aufzusetzen mit PGSQL 17 und der latest PNGX Version usw.

Das ist mir tatsächlich nicht aufgefallen. Ich habe es aber öfter versucht und auch jetzt mit definitiv nur 2 Punkten funktioniert es nicht.

Aber danke trotzdem für den Hinweis

Update: Wir haben das Problem gerade im Termin gelöst (und noch ein paar andere Dinge geradegezogen).

:tada:

Ich hab nochmal nachgeguckt auf meiner DS918+ mit DSM 7.3 steht im Taskplaner folgender Befehl.

cd /volume2/docker/paperless-ngx/ && sudo -s docker-compose exec -T webserver document_exporter -z ../export

Zwei Punkte sind richtig (heißt: Verzeichnis darüber). Ein Punkt hieße: Gleiches Verzeichnis. Drei Punkte gibts nicht :wink:

Nachtrag: Der document_exporter ist „gefährlich“, siehe mein neuestes Video. Eine Inkonsistenz und er bricht ab (und du kriegst es ggf. nicht mal mit)
Als zweiter Backup-Weg ist das OK, als Haupt-Backup rate ich schwer davon ab.

@Stefan

ich möchte von meinem Proxmox LXC Paperless-ngx eine Kopie auf mein nas legen. (Rsync) auf meinem LXC gibt es ein Verzeichnis /volume1/docker/paperless-ngx auf meinem NAS das Verzeichnis /volume1/datensicherung. Was genau muss ich auf dem LXC machen das das gesamte Verzeichnis paperless-ngx vom LXC auf mein NAS kopiert und aktuell gehalten wird. Ich weiß das ich paperless-ngx stoppen sollte aber wie es dann weiter geht habe ich so meine Probleme. Kannst du mir da weiter helfen ?