Upgrade von paperless-ngx v2 auf v3: Schritt für Schritt erklärt

Hallo und erstmal Danke für das Video.

Ich habe es mir angeschaut und muss sagen, das es gut beschrieben ist.

Ich hänge noch bei der Version 2.20.15 und schiebe eine Weile schon das Update vor mir her.

Nach dem Video habe ich aber auch noch ein paar Fragen.

Zum einen finde ich in meiner Masterclass keinen V 3 config Download. Edit: erledigt, habsjetzt gefunden

Jetzt aus meiner Sicht die größten Baustellen.

-redis: habe ich noch die 7.0 drauf und schon oben gelesen, wie man das Thema angehen soll.

-postgres: habe ich noch die Version 17 und in der compose.yml im Video stand die 18 drin.

-gotenberg: habe ich die Version 8.7 und im Video keine andere Version gesehen.

-tika: habe ich die Version 3.3.1.0 drauf

Jetzt meine Frage: wie würde jetzt am besten der Ablauf aussehen?

Erst postgres updaten und vor dem Update auf die V3 den redis Eintrag ersetzen oder redis erst nach dem Update rausschmeissen.

Bräuchte da mal einen „Fahrplan“

Und noch ne Anmerkung zur Masterclass: Ich habe anfänglich das Einbinden meines GMail Accounts geschoben und leider vor Ewigkeiten festgestellt, das das Video nicht mehr aktuell ist. Gibt es einen aktuellen Workflow den ich mir nach dem Update auf die Version 3 vornehmen kann, da der Speicherplatz so langsam die 90 % Marke kratzt.

Auf jeden Fall danke für alle Antworten.

Am besten machst du erst das update auf die 3.xx version und wenn du das geschafft hast das PgSQL Update auf 18.
Die Reihenfolge ist eigentlich egal solange du nicht alles auf einmal machst und kein volles Backup hast.

ABER vorher immer nen kompletten Export machen.
Wenn dein Export schon Fehler auswirft musst du dich erst darum kümmern.

aus REDIS wird VALKEY im zuge des Updates auf die 3.xx … REDIS wird auch nicht mehr offiziell unterstützt und flog schon aus der original YML bei Paperless-NGX auf GitHub.
Du musst die dump.db vor dem Wechsel zu VALKEY löschen… dazu am besten den Mount von redis in der config setzen…

volumes:

  • /volume2/docker/paperless-ngx3/redisdata:/data

Also bleiben die Datenbankinhalte grundsätzlich erhalten beim Upgrade der Paperless Version? Verstehe das jetzt mit dem Exporter/Importer. Ich werde es wie von Dir beschrieben durchgehen, Du mit der V3 zufrieden bist.Danke

Zu allerest ein Backup mit dem Exporter machen. Wenn der Exporter Fehlerfrei durchgelaufen ist dann
docker-compose.yml und docker-compose.env anpassen für Version 3
Achte in der docker-compose.yml auf broker: das Volume anpassen

- redisdata:/data (ALT)
denn du kannst nur sehr sehr schwer die dump Datei bei dieser Konfiguration löschen. Die Musst du aber löschen damit Valkey und Paperless läuft.
Ändere das Volume auf

- ../redisdata:/data oder - /volume1/docker/paperless-ngx/redisdata:/data
in deiner docker-compose.yml (damit wird redisdata auch unter docker/paperless-ngx abgelegt)
Jetzt das Update auf 3.2.1 von Paperless machen.
Wenn alles läuft dann mache ein neues Backup (Exporter) für die Version 3.2.1
Gotenberg kannst du auf 8.36 setzen
Tika auf 3.3.1.0 lassen

postgres 17 ist ersteinmal auch noch aktuell. Ich würde erst zu einem späteren Zeitpunkt auf die Version 18 umstellen.

Bei Gmail brauchst du ein App-Passwort damit du es in Paperless einbinden kannst.
Willst du mit Paperless auf ein neues Gerät umziehen (90% Marke krazt)?
Schau dir ersteinmal in Ruhe die Version 3 von Paperless an.

Wenn du dann die Zeit findest in Ruhe auf postgres 18 umzustellen.

Ich hoffe ich habe es jetzt richtig verstanden.

Ich ändere meinen Eintrag von

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

auf

services:
  broker:
    image: docker.io/library/redis:7.0
    restart: unless-stopped
    volumes:
      - /volume1/docker/paperless-ngx/redisdata:/data

Oder muss hier auch dann die Anpassung für valky rein? Sprich:

services:
  broker:
    image: docker.io/library/redis:7.0
    restart: unless-stopped
    volumes:
      - /volume1/docker/paperless-ngx/redisdata:/data

    image: docker.io/valkey/valkey:9-alpine
    restart: unless-stopped
    volumes:
      - redisdata:/data

Aber die Zeile

   environment:
      PAPERLESS_REDIS: redis://broker:6379

muss hier nicht noch angefasst werden???

Mit den 90% meinte ich den Mailaccount. Heißt ich habe noch Luft, aber auch nicht so lange. Hatte gedacht ich brauch statt dem App Kennwort die ganze

      PAPERLESS_OAUTH_CALLBACK_BASE_URL: https://<deine-paperlessurl>.synology.me:38000
      PAPERLESS_GMAIL_OAUTH_CLIENT_ID: <Deine Client ID>
      PAPERLESS_GMAIL_OAUTH_CLIENT_SECRET: <Dein Client Secret>

OAUTH Geschichte. Oder ist das mittlerweile hinfällig geworden?

Und danke für die Geduld.:wink:

P.S.: Backup läuft schon mal

services:
  broker:
    image: docker.io/valkey/valkey:9-alpine
    restart: unless-stopped
    volumes:
      - /volume1/docker/paperless-ngx/redisdata:/data

mehr muss dafür nicht geändert werden.
Gmail: Wenn du nur ein privates Email Konto hast würde das App-Passwort reichen.
Bei manchen Google-Konten (besonders Google Workspace / Business) sind sie schon gar nicht mehr verfügbar und du musst PAPERLESS_GMAIL_OAUTH benutzen

Okay vielen Dank.

Update läuft noch und der Webserver ist noch nicht erreichbar, da im Hintergrund noch folgende Meldung auftaucht:

paperless-webserver-1  | [2026-09-29 20:23:03,756] [INFO] [paperless.migrations] SHA-256 checksum progress: 6500/10840 (59%)
paperless-db-1         | 2026-09-29 18:23:20.032 UTC [73] WARNING:  database "paperless" has a collation version mismatch
paperless-db-1         | 2026-09-29 18:23:20.032 UTC [73] DETAIL:  The database was created using collation version 2.36, but the operating system provides version 2.41.

Ich warte noch mal bis der auf 100 % kommt. Update habe ich erstmal nur auf 3.1 angeschoben.

So Update ist durch und ich komme zumindest ran. im Hintergrund tickern noch die Meldungen

paperless-db-1         | 2026-09-29 19:13:18.162 UTC [316] HINT:  Rebuild all objects in this database that use the default collation and run ALTER DATABASE paperless REFRESH COLLATION VERSION, or build PostgreSQL with the right library version.
paperless-db-1         | 2026-09-29 19:13:18.173 UTC [317] WARNING:  database "paperless" has a collation version mismatch
paperless-db-1         | 2026-09-29 19:13:18.173 UTC [317] DETAIL:  The database was created using collation version 2.36, but the operating system provides version 2.41.
paperless-db-1         | 2026-09-29 19:13:18.173 UTC [317] HINT:  Rebuild all objects in this database that use the default collation and run ALTER DATABASE paperless REFRESH COLLATION VERSION, or build PostgreSQL with the right library version.
paperless-db-1         | 2026-09-29 19:13:18.313 UTC [318] WARNING:  database "paperless" has a collation version mismatch
paperless-db-1         | 2026-09-29 19:13:18.313 UTC [318] DETAIL:  The database was created using collation version 2.36, but the operating system provides version 2.41.

Nächster Step wäre dann erstmal den Exporter bemühen, dann Update auf 3.2.1, dann Exporter, dann Gotenberg und dann irgendwann die postgres Geschichte.

Die Frage wäre dann nur ob mann zum o.g. Fehler noch irgendwie vorher oder so aktiv werden sollte/muss.

Dankeschön

in der docker-compose.yml hast du auch unter webserver PAERLESS_DBENERGIE hinzugefügt

environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_DBENGINE: postgresql

und wenn du dann auf 3.2.1 anhebst dann ändere gleichzeitig gotenberg auf 8.36

Wegen deiner Meldung schreibe bitte einmal @CoolTux an. Will jetzt nichts falsches sagen ob sich seine Antwort weiter oben auch auf dich bezieht.

Ist genau das Problem. Kann man mit meinem Vorgehen dann „reparieren“

@Bassman Ja es bleiben grundsätzlich die Datenbankinhalte erhalten. Bei Paperless Update’s reicht es
sudo docker compose pull
sudo docker compose up -d

Sollte irgendetwas in der docker-compose.env und docker-compose.yml durch ein Update angepasst werden müssen so wirst du dies hier im Forum bzw. über Stefan erfahren. Auch hat CoolTux die änderungen in den Updates immer super Aufbereitet und eine Kurze Erklärung dazu gegeben.

Ihr seid so gut zu mir :slight_smile: Wirklich ein klasse Forum hier. Danke für Eure freundliche Unterstützung,

Dann kann ja jetzt nichts schiefgehen und ich werde in einer ruhigen Stunde mit genug Muße das Projekt mal angehen und berichten.

Ich habe die gleichen Meldungen wie lukabeli.
Wenn ich nun die Anleitung abarbeiten möchte bekomme ich schon beim Schritt 1 eine Fehlermeldung:

Bin ich da im falschen Pfad oder an was könnte das liegen?

Hier wären noch die Fehlermeldungen:

Gruss Thomas

Wenn ich das richtig sehe ist u.U. der Datenbank-Name nicht der richtige wie in deiner YML…
Poste mal den DB Zweig deiner YML

Die zweite Meldung sagt ja quasi er findet die DB nicht als paperless-db-1 …

es scheint jetzt geklappt zu haben ich habe beim Befehl mal „paperless-db-1“ durch „config-db-1“ ersetzt und dann kam ich in die DB rein und es scheint nun zu klappen.

Hier wäre aber trotzdem der Ausschnitt aus der yml Datei

Es empfiehlt sich in der Tat vorher einmal zu schauen wie seine Container benamt sind.

sudo docker container ls

Sollte alle aktuell laufenden Container anzeigen. Da kann man dann den Namen oder ID zum betreten oder ausführen eines Befehls im Container finden.

Ja genau so sieht mein Eintrag auch aus.

GMail klappt jetzt übrigens auch ohne Probleme. Dankeschön.

@CoolTux

Verzeiht mir, aber mir gehts da wie tom459, mein yml Eintrag sieht so aus

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

und zum Befehl

sudo docker container ls

kommt bei mir

 paperless-db-1
784e67d8e343   valkey/valkey:9-alpine  

und wenn ich dann den ersten Befehl eingebe, kommt

docker exec -it paperless-db psql -U paperless -d paperless
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/paperless-db/json": dial unix /var/run/docker.sock: connect: permission denied

Ich verstehe es nicht… Oder hätte ich Paperless vorher runterfahren sollen?

Also wenn ich das richtig sehe, dann heißt Dein Container paperless-db-1. Dein docker exec machst Du aber auf paperless-db. Da fehlt noch die -1 im Namen vom Container. Und vor dem docker Kommando fehlt noch das sudo. Die Fehlermeldung sagt nämlich das Du nicht berechtigt bist.

Ich bin mir nicht ganz sicher aber überprüfe doch bitte mal deine docker-compose.yml. Hast du alles richtig eingerückt. Denn bei mir beginnt image: unter dem Doppelpunkt von db:
Prüfe das bitte nocheinmal

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

Na ich glaube das lag am nicht so vernünftigen einfügen.

@CoolTux

Ja sudo war das eigentlich Problem, hatte das mit und ohne -1 getestet.

Habe die Schritte mal gemacht und erhalte bei 3. immer die Meldung

paperless=# REINDEX DATABASE paperless;
ALTER DATABASE paperless REFRESH COLLATION VERSION;
WARNING:  database "paperless" has a collation version mismatch
DETAIL:  The database was created using collation version 2.36, but the operating system provides version 2.41.
HINT:  Rebuild all objects in this database that use the default collation and run ALTER DATABASE paperless REFRESH COLLATION VERSION, or build PostgreSQL with the right library version.

Die Meldung wiederholt sich immer nach einigen Sekunden.

Nachtrag:

Ich war zu ungeduldig

REINDEX
paperless=# ALTER DATABASE paperless REFRESH COLLATION VERSION;
NOTICE:  changing version from 2.36 to 2.41
ALTER DATABASE
paperless=# \q