Paperless weboberfläche nicht erreichbar, Postgre Update

Hi zusammen,

leider funktioniert seit Sonntag mein Paperless nicht mehr. Ich habe rausgefunden das wohl über watchtower Paperless ein Update bekommen hat, aber nun meine postgre version 13 ist. Somit muss ich wohl, soweit ich in erfahrung gebracht habe, auf version 16 Updaten. Nun habe ich es 2 Tage ohne erfolg versucht. Paperless läuft bei mir in einem Proxmox LXC ( Gottseidank da ich es super schnell Wiederherstellen kann, BAckup aber leider das gleiche Datum wie das Update hat ). Paperless wurde mit Portainer Stack Installiert. Nun, gibt es hier jemanden der mir bei dem Update helfen kann??

Hi,

Welche Version war denn vor dem Update installiert?
Die Version stellst du im Stack beim Weserver ein, änderst :latest in die Version z,B. :2.17.1

Dann Paperless neu starten, sollte wie vorher funktionieren.
Danach das Backup ausführen, es muss ohne Fehler durchlaufen!

Hi,

Keine Ahnung welche Version vorher war. Da ich watchdoc nutze wird es aber wohl einfach die vorletzte Version gewesen sein. Wenn das nun so klappt, also im Stack die Version auf die vorige, dann update Stack und paperless starten, wie mache ich dann das Update korrekt? Also die postgres auf Version 16, wenn ich portainer nutze?

Edit 19:35 Uhr:
So nach deinem Tipp habe ich die Release Notes mal durchgeschaut, also das 2.17.1 war das letzre bevor postgres Update notwendig wurde. Habe nun im Stack unter webserver latest rausgenommen und in 2.17.1 geändert. Nun komme ich wieder auf mein Paperless. DANKE!! Hat dieses " zurücksetzen" jetzt einen Nachteil? Wenn nicht würde ich den lxc jetzt mal mit der 2.17.1 sichern. Und dann mal mit Hilfe versuchen postgres auf Version 16 zu bekommen und danach paperless auf den aktuellen Stand bringen.

Mach erst mal den Export nach der Anleitung von Stefan:

Das musst du per ssh machen, mit Portainer geht das nicht.
Und der Export muss ohne Fehler durchlaufen, vorher wird nix gelöscht!!

Danach den Stack stoppen, Paperless Ordner sichern!
Du löscht die Ordner nach Anleitung und erstellst sie neu, wenn du den Ordner pgdata nicht hast heist er evtl db, das ist der Ordner von der Datenbank.
Consume Ordner sollte auch leer sein!

Danach den Stack anpassen, die Datenbank auf Postgres Version 17 umschreiben, den Stack recreaten und re-pull aktivieren.
Nach ein paar Minuten kannste dich im Normalfall anmelden, was du nicht tust!

Den Import ausführen, wenn alles ok ist kannste dich mit dem alten Benutzerund Passwort anmelden.

Hi,

Ja diese Anleitung habenich auch gesehen. Nur gibt es ja Dinge die mit Portainer anders sind soweit ch weis. In der Shell muss der Befehl doch innerhalb von Docker ausgefühet werden oder?

Nee, du navigierst in den Ordner wo Paperless läuft, dort den sudo export befehl ausführen.

Ob du mit einem Stack oder docker-compose arbeitest ist im Prinzip egal.
Je nach Stack-Vorlage hast du hat mehr oder weniger Fuktionen, ne andere Datenbank oder unterschiedleiche Ordnernamen in Paperless.

Hi,
also da ist ja das Problem: Wenn Paperless mit Portainer erstellt wurde, verwaltet Portainer die compose.yaml soweit ich das verstanden habe. Also per SSH komme ich da nicht hin. Und der Befehl sudo docker-compose exec webserver document_exporter ../export funktioniert nur wenn mit einer docker compose.yml lokal gearbeitet wird.

Korrekt!

Dann speicher mal den Inhalt von deinem Stack in eine docker-compose.yml Datei und specher die Datei im Paperless verzeichnis.
Wenn deine Thorie stimmt, sollte der Export dann funktionieren.

Ich behaupte daß die docker-compose nur für die Erstellung der Container und für die einstellungen benötigt wird. Natürlich auch für Änderungen.
Wenn Paperless läuft kann man die docker-compose löschen und der Export wird trotzdem funktionieren.
Wenn du Portainer nutzt kannst du Einstellungen auch ausserhalb vom Stack vornehmen, macht keinen Sinn, aber geht.

Man möge mich bitte korrigieren wenn es nicht stimmt!!

Danke dir erstmal für deine Hilfe. Das Problem ist, es gibt unzählige Anleitungen die Beschreiben wie man das Postgres Update hinbekommt. Nur Checke ich die Ordner Struktur nicht. Gebe ich den Befehl docker-compose exec webserver document_exporter ../export ein scheibt er mir in der Shell: root@DockerPortainerPaperlessNGX:~# docker-compose exec webserver document_exporter ../export
no configuration file provided: not found

Mal mit Sudo ( obwhol ich ja als Root schon angemeldet bin:
root@DockerPortainerPaperlessNGX:~# sudo docker-compose exec webserver document_exporter ../export
no configuration file provided: not found

Ich habe Paperless mit Portainer in einem LXC auf Proxmox. Für die SSH Eingaben nutze ich die Console vom LXC..

Überall steht geschrieben, diesen Befehl aus dem Ort ausführen wo Paperless liegt…tja..wo liegt es dann wenn ich es über einen Stack mit Portainer erstellt habe??
Ich habe es damals nach dieser Anleitung aufgesetzt:

Hallo,
wenn es so wie im Video gemacht wurde, dann müsste der Befehl wie folgt lauten:

docker exec paperless-ngx-webserver-1 bash -c „document_exporter ../export -p“

Hi,
danke dir für deine Antwort. Werde ich nachher Probieren, sollte der Bedehl funktionieren wie wären die weiteren Schritte / Befehle??

Gruß
Mark

Dein Paperless läuft nicht in Portainer!
Portainer ist ein Programm/Container wo dir die installierten Docker-Container, Volumes, Images usw anzeigt.
Wo Paperless installiert ist kannst du im Stack rauslesen
Beisiel:

Kansnt auch mal deinen Stack posten, Passwörter usw rauslöchen.

Folgende Funktion ausführen:
image

Inhalt vom Stack einfügen.

Hier der Link zur originalen Docu.
https://docs.paperless-ngx.com/administration/#exporter

Ich empfehle:

docker compose exec -T webserver document_exporter -z ../export

Hier wird alles nach export extrahiert als ZIP-File.

Wenn du das -z weglässt hast du deine ganzen Dateien lose in Export liegen.

Achtung die ZIP muss nach /export extrahiert werden zum import.

Achja ganz vergessen.
Je nachdem welches System du nutzt musst du auch ggf.

docker-compose exec -T webserver document_exporter -z ../export

So hier der Inhalt vom Stack:

version: "3.4"
services:
  broker:
    image: docker.io/library/redis:7
    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: paperless

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - "8010: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
      - ./consume:/usr/src/paperless/consume
    environment:
      PAPERLESS_OCR_LANGUAGE: deu
      PAPERLESS_ADMIN_PASSWORD: xxxxxxx
      PAPERLESS_ADMIN_USER: xxxx
      PAPERLESS_SECRET_KEY: xxxxx
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
# The UID and GID of the user used to run paperless in the container. Set this
# to your UID and GID on the host so that you have write access to the
# consumption directory.
      USERMAP_UID: 0
      USERMAP_GID: 0
# Additional languages to install for text recognition, separated by a
# whitespace. Note that this is
# different from PAPERLESS_OCR_LANGUAGE (default=eng), which defines the
# language used for OCR.
# The container installs English, German, Italian, Spanish and French by
# default.
# See https://packages.debian.org/search?keywords=tesseract-ocr-&searchon=names&suite=buster
# for available languages.
      #PAPERLESS_OCR_LANGUAGES: tur ces
# Adjust this key if you plan to make paperless available publicly. It should
# be a very long sequence of random characters. You don't need to remember it.
      #PAPERLESS_SECRET_KEY: change-me
# Use this variable to set a timezone for the Paperless Docker containers. If not specified, defaults to UTC.
      PAPERLESS_TIME_ZONE: Europe/Berlin
# The default language to use for OCR. Set this to the language most of your
# documents are written in.
      #PAPERLESS_OCR_LANGUAGE: eng

volumes:
  data:
  media:
  pgdata:
  redisdata:

So einfach ist es dann nicht. Ich habe ja schon auch geschaut wo die Ordner sein sollen. Gebe ich in der Shell ein: cd /usr/src/paperless schreibt er no file or Dorectory.
root@DockerPortainerPaperlessNGX:/usr/src# cd /paperless
-bash: cd: /paperless: No such file or directory

Habe dann nun mal die Tipps bzw. die Befehle ausprobiert:
root@DockerPortainerPaperlessNGX:~# docker compose exec -T webserver document_exporter -z ../export
unknown shorthand flag: ‚T‘ in -T
See ‚docker --help‘.

root@DockerPortainerPaperlessNGX:~# docker-compose exec -T webserver document_exporter -z ../export
no configuration file provided: not found

root@DockerPortainerPaperlessNGX:~# docker exec paperless-ngx-webserver-1 bash -c „document_exporter ../export -p“
Error response from daemon: No such container: paperless-ngx-webserver-1

Keiner der Befehle funktioniert leider.

Hast da was gelöscht?

Das ist natürlich Käse…

Deine Dokumente und die Datenbank ist nicht im Verzeichnis angelegt wo die normalen Export Befehle greifen.
Falls der Export doch noch gelingt würde ich die Volumes umstellen.
So wurden früher Container installiert,

So,

also die Orte sind laut Stack ja:
local paperlessngx_data
local paperlessngx_media
local paperlessngx_pgdata
local paperlessngx_redisdata

Mal per Shell gesucht und folgende Orte gefunden:

  • paperlessngx_data → Konfigurationsdaten vom Webserver
  • paperlessngx_media → **deine Dokumente (PDFs, Bilder …)
  • paperlessngx_pgdata → Datenbank (Postgres)
  • paperlessngx_redisdata → Redis (Cache, temporär, nicht kritisch)

Ort:
root@DockerPortainerPaperlessNGX:/var/lib/docker/volumes# ls
metadata.db paperlessngx_data paperlessngx_media paperlessngx_pgdata paperlessngx_redisdata portainer_data

Bei Proxmox bin ich leider raus. :neutral_face:

Hi,

wobei ich glaube es ist kein Proxmox spezifisches Problem da ich Daten ja nicht aus dem Proxmox LCX rauskopiere etc. Meine Paperless heißßst ja paperlessngx. Somit muss ich die Befehle natürlich entsprechend „anpassen“. Dieser Befehl zb. lief durch:
sudo docker exec -it paperlessngx-webserver-1 bash -c „document_exporter -z /export/“

Problem nur: Kann den Import nicht durchführen, denke die sachen sind gezippt…habe den Ordner nicht gefunden wo es abgelegt wurde…alles sehr ärgerlich.

Einfach -z weglassen, dann wird der Export nicht gezippt.

Ich denke man kann auch bei Proxmox Volumes und Ordner angeben auf die man dann zugreifen kann.
Das würd die Sache vereinfachen, dann könntest auch den Export sichern für den Ernstfall

So,
also bin jetzt bis zum Schritt Import.
Habe mit diesen Befehl den Export gestartet:
sudo docker exec -it paperlessngx-webserver-1 bash -c „document_exporter /export/“
System check identified some issues:

WARNINGS:
?: PostgreSQL 13 is deprecated and will not be supported in a future Paperless-ngx release.
HINT: Upgrade to PostgreSQL 14 or newer.
No passphrase was given, sensitive fields will be in plaintext
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 283/283 [00:10<00:00, 26.82it/s]

Lief glaube ich wie man sieht durch.
Dann Paperless gestoppt: Im Stack alle 3 Instanzen ( Broker-1, db-1 und webserver-1 ).
Dann die Ordner pgdata,data und media gelöscht
Postgress Version von 13 auf 17 im Stack editor geändert, Paperless Version wieder auf Latest und exploy the Stack gewählt.
Nun startet paperless mit postgress 17 und der letzten Paperless verion ( komme ins Webinterface ). Nun klappt aber der Import der datenbank nicht:
root@DockerPortainerPaperlessNGX:~# sudo docker exec -it paperlessngx-webserver-1 bash -c „document_importer /export/“
CommandError: That path doesn’t exist

Sooo es ist vollbracht.
Habe es letztlich mit KI und dem " Vorwissen auch von hier " gelöst.
Das Problem war wohl, das der Export mit dem Befehl zb.
sudo docker exec -it paperless-ngx-webserver-1 bash -c „document_exporter -z /export/“
in einem Bereich gespeichert wird, der nach löschen der Ordner pgdata,data und Media wohl auch nicht mehr da ist ( so Temporär oder so ).
Also habe ich folgende Schritte durchgeführt:
Ordner im Container angelegt: sudo docker exec -it paperlessngx-webserver-1 bash -c „mkdir -p /tmp/paperless_export/“
Export erledigt: sudo docker exec -it paperlessngx-webserver-1 bash -c „document_exporter /tmp/paperless_export/“
Backup auf dem Host kopiert: sudo docker cp paperlessngx-webserver-1:/tmp/paperless_export/ /opt/paperless-backup/
Container gestoppt
Container entfernt ( sonst können die Volumes nicht gelöscht werden ):sudo docker rm paperlessngx-webserver-1 paperlessngx-postgres-1 paperlessngx-redis-1
Volumes gelöscht: sudo docker volume rm paperlessngx_data paperlessngx_media paperlessngx_pgdata paperlessngx_redisdata
In Portainer unter Stack im Editor die yaml angepastt: postgress:17 paperless version:latest
Dann Update Stack, solange Warten bis alle 3 Instanzen grün sind ( running )
Backup zurück in den container: sudo docker cp /opt/paperless-backup/paperless_export/ paperlessngx-webserver-1:/tmp/
Import durchgeführt: sudo docker exec -it paperlessngx-webserver-1 bash -c „document_importer /tmp/paperless_export/“
Letzte Aufräumarbeiten ( Backups löschen ):
Im Container
sudo docker exec -it paperlessngx-webserver-1 bash -c „rm -rf /tmp/paperless_export/“

Auf dem Host (falls gewünscht)

rm -rf /opt/paperless-backup/

So läuft nun Paperless mit aktueller 2.18 und postgress Version 17 wieder.

Danke nochmal allen die geholfen haben