Webserver startet nicht mehr nach Änderung einer Umgebundvariable

Hallo paperless Gemeinde,

ich habe folgende Config:

  • paperless auf einen PI im Portainer aufgesetzt.
  • ie Verzeichnisse: paperless-webserver, paperless-db und paperless-broker laufen auf einer Synology NAS mittel NFS im PI gemountet.

Der Pi dient also nur als “Zwischenhändler” für die Daten.

Ein Zugriff von innerhalb meines LANs war über die IP mit Port möglich und über eine synology.me Domain (mit Reverseproxy) von ausserhalb.

Wichtig: Das System lief bereits !!!

so…nun zu meinem Problem:

Als ich heute von ausserhalb zugreifen wollte, kam die Webseite “Verboten CsRF-Authentifizierung fehlgeschlagen”.

Test innerhalb des LANs…erfolgreich!

Nach Recherche im Netz laß ich, das man hier ein Umgebungsvariable “PAPERLESS_URL” setzen muss.

Ich also zum Portainer und unter “ENV” die Variable gesetzt.

Container neu gestartet …und nix mehr ging !

Variable wieder raus genommen….brachte auch nicht den gewünschten Erfolg.

Nach einer Suche hier im Forum stieß ich auf nen Artikel, daß dies mit den Benutzerrechten zusammen hängen soll….aber mein System llief doch schon ???

ich also ins Log geguckt:

Waiting for Redis…

Connected to Redis broker.

[init-redis-wait] Redis ready

Connected to PostgreSQL

[init-db-wait] Database is ready

[init-migrations] Apply database migrations…

Traceback (most recent call last):

File „/usr/src/paperless/src/manage.py“, line 10, in 

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 460, in execute

output = self.handle(*args, **options)

         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File „/usr/local/lib/python3.12/site-packages/django/core/management/base.py“, line 107, in wrapper

res = handle_func(*args, **kwargs)

      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File „/usr/local/lib/python3.12/site-packages/django/core/management/commands/migrate.py“, line 114, in handle

executor = MigrationExecutor(connection, self.migration_progress_callback)

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File „/usr/local/lib/python3.12/site-packages/django/db/migrations/executor.py“, line 18, in init

self.loader = MigrationLoader(self.connection)

              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File „/usr/local/lib/python3.12/site-packages/django/db/migrations/loader.py“, line 58, in init

self.build_graph()

File „/usr/local/lib/python3.12/site-packages/django/db/migrations/loader.py“, line 235, in build_graph

self.applied_migrations = recorder.applied_migrations()

                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File „/usr/local/lib/python3.12/site-packages/django/db/migrations/recorder.py“, line 89, in applied_migrations

if self.has_table():

   ^^^^^^^^^^^^^^^^

File „/usr/local/lib/python3.12/site-packages/django/db/migrations/recorder.py“, line 63, in has_table

with self.connection.cursor() as 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.20).

s6-rc: warning: unable to start service init-migrations: command exited 1

/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.

/run/s6/basedir/scripts/rc.init: fatal: stopping the container.

[init-start] paperless-ngx docker container starting…

[init-start] paperless-ngx docker container starting init as root

[env-init] Checking for environment from files

[env-init] No *_FILE environment found

[init-redis-wait] Waiting for Redis to report ready

[init-db-wait] Waiting for postgresql to report ready

[init-db-wait] Waiting for PostgreSQL to start…

[init-tesseract-langs] Checking if additional teseract languages needed

[init-tesseract-langs] No additional installs requested

[init-user] No UID changes for paperless

[init-user] No GID changes for paperless

[init-folders] Running with root privileges, adjusting directories and permissions

Der Contaier selbst steht auf “starting” und somit ist das hier ne endlos schleife.

Was ich jetzt nicht verstehe:

Warum geht das nicht mehr, da ich ja alles wieder so hergestellt habe wie es vorher war.

und….

Warum will er jetzt auf einmal postgres 14 (lt. Log) ??? lief doch vorher mit 13.

→ sollte ich auch dieses updaten müssen…wie mache ich das ? Was ist mit einer Backuperstellung ? ist die noch möglich ?

Ziel sollte es sein, daß ich von ausserhalb auch auf mein paperless komme.

Gibt es noch Hilfe und Hoffnung meine Daten nicht zu verlieren für mich ???

Vielen Dank schon jetzt für Eure Antworten.

Gruß

Peter

Er scheint eine neue Paperless Version nach dem “Neustart” genommen zu haben und diese verlangt nun PostgreSQL ab Version 15. Die alte 14er wird nicht mehr unterstützt.

Im übrigen auch so ein Grund wieso ich nicht verstehe warum bei allen Beispielen der latest Tag für die Images verwendet wird. Du weißt nie welche Version gerade verwendet wird und er läd dann einfach so eine neue runter.

ok…inzwischen hab ich postgres auf 18 upgedatet und redis auf 8.

soweit so gut….

aber nach wie vor:

django.db.utils.OperationalError: [Errno -2] Name or service not known
s6-rc: warning: unable to start service init-migrations: command exited 1
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
[init-start] paperless-ngx docker container starting…
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
[init-start] paperless-ngx docker container starting init as root
[env-init] Checking for environment from files
[env-init] No *_FILE environment found

Die vorherige Fehlermeldung, daß er Postgres14 haben will ist weg.

Und Du hast das ganze Update auch brav mit export und import über paperless gemacht?

Sind Deine abhängigen Container alle oben? Also redis und postgresql?

Hab ich was verpasst? Dachte Postgres 13 wird nicht mehr unterstützt?

Kannst du die alten Stande wiederherstellen?
Dann könnte man in der Docker Compose die richtige version zur DB und Webserver eintragen und probieren ob Paperless starten.

Kann auch 13 sein, sorry.

erstmal danke für den Support !!!

hmmm…leider nein…
Ich habe mir das Paperless installiert und dann es eigentlich aus den Augen verloren mit Updates/Backups. Den Docker im-oder Exporter habe ich da nicht verwendet…leider.
Alles was ich noch habe ist ne Kopie des Ordners Paperless auf meinem NAS. Dieser beinhaltet den Broker, die DB und den Webserver.

Idee war: Ich kopiere mir den Verzeichnisstruktur und installiere dann paperless neu. Alles wie damals bei der Urinstallation. Dann sollte er eigentlich auch die DB wiederfinden…..Klappte anscheinend nicht so wie gewünscht. :wink: Im Übrigen bin ich jetzt wieder bei die Version 2.15.2 (!!!). redis 7 und postgres 13

Inzwischen habe ich auch wieder paperless mit dieser Version ins Laufen gebracht. Aber ein Update wird nötig sein, vorausgesetzt ich krieg das Teil wieder zum Laufen.

Was aber jetzt passiert ist, daß er beim ersten start zwar meine Daten erkennt, diese aber innerhalb 5 Sekunden “löscht” und mir ne leere Datenbank anzeigt.

Mit anderen Worten: Die DB ist noch existend, aber anscheinend nicht brauchbar.

Meine Frage nun….krieg ich das wieder zum Laufen ?

Sind die Dokumente noch im Media Ordner vorhanden ?

Wenn ja einmal sichern.

Ansonsten fürchte ich bleibt nur noch ein clean-install und die gesicherten Dateien neu einlesen.

Vielleicht kennt jemand noch ne Möglichkeit, ich fürchte aber die Wahrscheinlichkeit ist verschwindend gering.

ja…im Media Ordner ist noch alles vorhanden.

sind ja “nur” 1900 Dokumente…die alle nochmals zu taggen und die Korresponden anzulegen, Speicherpfade und Felder….…

Du kannst ganz bestimmt den alten Zustand noch mal herstellen. Zeig mal bitte Dein compose file.

das hier läuft soweit:

services:
broker:
image: Docker Hub Container Image Library | App Containerization
restart: unless-stopped
volumes:
- /home/nfs/public/paperless/paperless-broker/data:/data
db:
image: Docker Hub Container Image Library | App Containerization
restart: unless-stopped
volumes:
- /home/nfs/public/paperless/paperless-db/data:/var/lib/postgresql
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless
webserver:
image: Package paperless-ngx · GitHub
restart: unless-stopped
depends_on:
- db
- broker
ports:
- 8010:8000
volumes:
- /home/nfs/public/paperless/paperless-webserver/data:/usr/src/paperless/data
- /home/nfs/public/paperless/paperless-webserver/media:/usr/src/paperless/media
- /home/nfs/public/paperless/paperless-webserver/export:/usr/src/paperless/export
- /home/nfs/public/paperless/paperless-webserver/consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_SECRET_KEY: xxxxxxxxx
PAPERLESS_ADMIN_USER: admin
PAPERLESS_ADMIN_PASSWORD: xxxxxx
PAPERLESS_OCR_LANGUAGE: deu
USERMAP_UID: 1000
USERMAP_GID: 100
volumes:
data:
media:
pgdata:
redisdata:

Hab auch noch ein export-file gefunden….anscheinend hab ich damals doch was in der Richtung gemacht….:wink:

Wie schon geschrieben…paperless läuft mit dem compose-file….bin gerade über dem import….
klappt aber im moment auch nicht so wie es sollte….
konnte aus dem /export-Ordner das alles importieren. (document-importer ../export)
Alerdings zeigt er mir nix an ….
Auch nach Neustart nicht.
fehlt da noch was ?

Das yaml bitte einmal in Code Tags setzen, so ist das nicht lesbar.

Je mehr Du übrigens jetzt rumexperimentierst um so mehr geht kaputt. Hast Du noch die alte Datenstruktur plus korrekter Datenbank?

ich hab mir halt die 4 Verzeichnisse vom paperless-Webserver komplett kopiert (siehe auch die Einbindung im yml-File).

services:
broker:
image: 

restart: unless-stopped
volumes:
- /home/nfs/public/paperless/paperless-broker/data:/data
db:
image: 

restart: unless-stopped
volumes:
- /home/nfs/public/paperless/paperless-db/data:/var/lib/postgresql
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless
webserver:
image: 

restart: unless-stopped
depends_on:
- db
- broker
ports:
- 8010:8000
volumes:
- /home/nfs/public/paperless/paperless-webserver/data:/usr/src/paperless/data
- /home/nfs/public/paperless/paperless-webserver/media:/usr/src/paperless/media
- /home/nfs/public/paperless/paperless-webserver/export:/usr/src/paperless/export
- /home/nfs/public/paperless/paperless-webserver/consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_SECRET_KEY: xxxxx
PAPERLESS_ADMIN_USER: admin
PAPERLESS_ADMIN_PASSWORD: xxxx
PAPERLESS_OCR_LANGUAGE: deu
USERMAP_UID: 1000
USERMAP_GID: 100
volumes:
data:
media:
pgdata:
redisdata:


Mit dem Rumprobieren…das ist mir schon klar.

Hab ja die Daten noch.

Kann mann die Daten auch ohne den vorherigen Exporter wieder importieren ?
Weil dann hätte ich Stand von Montag….

Geht mit Sicherheit am schnellsten wenn der Export dann sauber war und der Import nicht Rum tickt.

Kannst du den Export auf nem anderen Gerät mal importieren Ehe man alles löscht?

Hast denn überhaupt nen richtigen Export im Ordner Export ?

Also entweder bin ich blind oder ich sehe deine Images nicht. Du musst im Grunde nichts weiter tun wie bei der db das Image Tag auf :13 zu stellen und bei paperless das Tag auf die Version die Du vorher hattest. Eigentlich nicht so kompliziert denke ich.

das war ja genau mein ansatz…..
Kopie des Paperlessverzeichnisses und dann einfach wieder rüberkopiert.

Wie auch schon vorher geschrieben….für nen Moment erscheinen bei mir z.B. die Seitenzahlen und dann ist alles weg.

und ich hab 0 Dokumente. :frowning:

das scheint er zu “verschlucken”…

redis steht auf 7 postgres auf 13 und paperles auf 2.15.2

Das ist schwierig Dir da zu helfen.

Es ist immer gut zu wissen welche der 3 Container nicht starten und wie dann die Logs der Container ausschauen.

bleibt alsoo unterm strich nur ne Neuinstallation und das mediaverzeichnis, wo die pdf´s liegen nochmal neu einzulesen. Einhergehend nochmals Tags anlegen, benutzerdefinierte Felder usw….
Ein Haufen arbeit, aber wenns dann geht…ok.

dann binde ich aber auch gleich tika und gotenberg mit ein. :wink:

gibt es zufällig ne docker-compose.yml-Datei ?

Man kann schon die Ordner verschieben bzw. wiederherstellen und dann die yaml Datei erneut ausführen.
Dann funktioniert das auch, aber dazu müssen alle Ordner im Paperless-Verzeichnis den gleichen Sicherungsstand haben.
Die angegeben Versionen in der docker-compose müssen zu den Versionen passen die im Ordner gespeichert wurden.

Wenn du das hinbekommst sollte dein Paperless auch wieder laufen. Hast du schon zu viel an den Ordnern und Images rumgemurkst sehe ich da leider schwarz.

Deshalb ALLE relevanten Ordner in einem Verzeichnis anlegen und regelmäßige Snapshots und Sicherungen machen. Je nachdem wie Paperless genutzt wird bedeutet das tägliche Sicherungen.
Je nach Typ deiner Synology kann die das, automatisch.

Gibt schon fertige docker-compose Vorlagen, die musst du dann nach deiner speziellen Umgebung anpassen.