Ist dein Container auf "restart: - unless stopped eingestellt" (oder eine andere Neustart Regel) ? Ggfs hat er auch beim erstinitialisieren einen Timeout von der DB bekommen und dann sofort geendet und falls du keine Neustart Verhalten definiert hast könnte er dann ausgeblieben sein. (Habe ich mit einem anderen Container mal so erlebt)
Paperless-ngx in Docker
-
igomyway -
September 28, 2025 at 6:02 PM -
Thread is Resolved
-
-
Vielleicht "always" eintragen?
-
Moin,
ich habe nun auch mein DXP2800 erhalten und bin dabei von meinem DS218+ "umzuziehen". Derzeit hänge ich an paperless-ngx... Ich habe das komplette Verzeichnis aus dem Docker Ordner auf mein Ugreen NAS kopiert. Paperless habe ich über Portainer installiert und das Deployment klappt auch. Allerdings werden alle meine Dokumente, Tags, etc. nicht angezeigt. Meine Vermutung das dies mit der DB zusammenhängt. Beim Deployment habe ich darauf geachtet das es die gleich postgres Version ist. Trotzdem erhalte ich folgende Fehlermeldung:
FATAL: role "paperlessuser" does not exist
Die Credentials sind in der yaml aber identisch zu denen in der yaml auf meiner Synology. Habt ihr eine Idee?
Code
Display Moreservices: redis: image: redis:8 command: - /bin/sh - -c - redis-server --requirepass redispass container_name: PaperlessNGX-REDIS hostname: paper-redis security_opt: - no-new-privileges:true read_only: true user: 999:10 healthcheck: test: ["CMD-SHELL", "redis-cli ping || exit 1"] volumes: - /volume1/docker/paperlessngx/redis:/data:rw environment: TZ: Europe/Berlin restart: on-failure:5 db: image: postgres:16 container_name: PaperlessNGX-DB hostname: paper-db user: 999:10 security_opt: - no-new-privileges:true healthcheck: test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "paperlessuser"] timeout: 45s interval: 10s retries: 10 volumes: - /volume1/docker/paperlessngx/db:/var/lib/postgresql:rw environment: POSTGRES_DB: paperless POSTGRES_USER: paperless POSTGRES_PASSWORD: paperless restart: on-failure:5 gotenberg: image: gotenberg/gotenberg:latest container_name: PaperlessNGX-GOTENBERG hostname: gotenberg security_opt: - no-new-privileges:true user: 999:10 command: - "gotenberg" - "--chromium-disable-javascript=true" - "--chromium-allow-list=file:///tmp/.*" restart: on-failure:5 tika: image: docker.io/apache/tika:latest container_name: PaperlessNGX-TIKA hostname: tika security_opt: - no-new-privileges:true user: 999:10 restart: on-failure:5 paperless: image: ghcr.io/paperless-ngx/paperless-ngx:latest container_name: PaperlessNGX hostname: paperless-ngx security_opt: - no-new-privileges:true healthcheck: test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"] interval: 30s timeout: 10s retries: 5 ports: - 8777:8000 volumes: - /volume1/docker/paperlessngx/data:/usr/src/paperless/data:rw - /volume1/docker/paperlessngx/media:/usr/src/paperless/media:rw - /volume1/docker/paperlessngx/export:/usr/src/paperless/export:rw - /volume1/docker/paperlessngx/consume:/usr/src/paperless/consume:rw - /volume1/docker/paperlessngx/trash:/usr/src/paperless/trash:rw environment: PAPERLESS_REDIS: redis://:redispass@paper-redis:6379 PAPERLESS_DBENGINE: postgresql PAPERLESS_DBHOST: paper-db PAPERLESS_DBNAME: paperless PAPERLESS_DBUSER: paperless PAPERLESS_DBPASS: paperless PAPERLESS_EMPTY_TRASH_DIR: ../trash PAPERLESS_FILENAME_FORMAT: '{{ correspondent }}/{{ created_year }}/{{ document_type }}/{{ title }}' PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD: 6 PAPERLESS_TASK_WORKERS: 1 USERMAP_UID: 999 USERMAP_GID: 10 PAPERLESS_SECRET_KEY: MeinSecretKey PAPERLESS_TIME_ZONE: Europe/Berlin PAPERLESS_ADMIN_USER: SteFry PAPERLESS_ADMIN_PASSWORD: xxx PAPERLESS_URL: https://xxx.synology.me PAPERLESS_CSRF_TRUSTED_ORIGINS: https://xxx.synology.me PAPERLESS_OCR_LANGUAGE: deu+eng PAPERLESS_TIKA_ENABLED: 1 PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 PAPERLESS_TIKA_ENDPOINT: http://tika:9998 restart: on-failure:5 depends_on: db: condition: service_healthy redis: condition: service_healthy tika: condition: service_started gotenberg: condition: service_started -
Das kann so auch nicht funktionieren.
healthcheck: test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "paperlessuser"]
Der Healthcheck probiert eine Verbindung mit dem User paperlessuser zu erstellen. Dein User ist aber nur paperless. Das kann auch vorher nicht funktioniert haben. paperlessuser ist in der Vorlage nur der Hinweis, dass du da deinen eigenen DB User einträgst.
-
Ansonsten kommentiere doch mal den Healthcheck aus, der ist ja nur optional. Wenns dann geht kannst du dich daran machen den zu reparieren. Ansonsten könnte es noch mit Filerechten bei der Postgres DB zutun haben. Bei mir war das beim Umzug von QNAP nach Ugreen DXP2800 ein Problem. Ich habe dann einfach mit dem document exporter ein komplettes backup gemacht und dieses dann mit dem document importer auf dem Ziel eingespielt. So lief es dann einwandfrei.
-
Er kann den Healthcheck nicht einfach entfernen/auskommentieren. Also nicht nur.... Bei ihm ist das als Bedingung für seinen Paperless Container eingetragen. Dann müsste er das auch entfernen.
-
Danke für eure Rückmeldungen. Die Healthchecks habe ich auskommentiert. Nun schlägt aber schon das Deployment fehl bzw. kann der Stack nicht erstellt werden. Der DB Container wird erstellt und läuft kurz auch. (siehe LogDatei) Aber der reguläre Paperless Container wird nicht erstellt. Nach ca. einer Minute sind dann alle Container wieder weg.
Code
Display MoreThe files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale "en_US.utf8". The default database encoding has accordingly been set to "UTF8". The default text search configuration will be set to "english". Data page checksums are disabled. fixing permissions on existing directory /var/lib/postgresql/data ... ok creating subdirectories ... ok selecting dynamic shared memory implementation ... posix selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting default time zone ... Etc/UTC creating configuration files ... ok running bootstrap script ... ok performing post-bootstrap initialization ... ok syncing data to disk ... ok initdb: warning: enabling "trust" authentication for local connections initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using: pg_ctl -D /var/lib/postgresql/data -l logfile start waiting for server to start....2025-11-04 14:57:00.786 UTC [36] LOG: starting PostgreSQL 16.10 (Debian 16.10-1.pgdg13+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 14.2.0-19) 14.2.0, 64-bit 2025-11-04 14:57:00.842 UTC [36] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2025-11-04 14:57:01.022 UTC [39] LOG: database system was shut down at 2025-11-04 14:56:32 UTC 2025-11-04 14:57:01.148 UTC [36] LOG: database system is ready to accept connections done server started CREATE DATABASE /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* waiting for server to shut down...2025-11-04 14:57:01.874 UTC [36] LOG: received fast shutdown request .2025-11-04 14:57:01.935 UTC [36] LOG: aborting any active transactions 2025-11-04 14:57:01.940 UTC [36] LOG: background worker "logical replication launcher" (PID 42) exited with exit code 1 2025-11-04 14:57:01.941 UTC [37] LOG: shutting down 2025-11-04 14:57:01.985 UTC [37] LOG: checkpoint starting: shutdown immediate .......2025-11-04 14:57:09.232 UTC [37] LOG: checkpoint complete: wrote 926 buffers (5.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.515 s, sync=6.288 s, total=7.291 s; sync files=301, longest=0.425 s, average=0.021 s; distance=4273 kB, estimate=4273 kB; lsn=0/191F0E0, redo lsn=0/191F0E0 2025-11-04 14:57:09.240 UTC [36] LOG: database system is shut down done server stopped PostgreSQL init process complete; ready for start up. 2025-11-04 14:57:09.549 UTC [1] LOG: starting PostgreSQL 16.10 (Debian 16.10-1.pgdg13+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 14.2.0-19) 14.2.0, 64-bit 2025-11-04 14:57:09.550 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 2025-11-04 14:57:09.550 UTC [1] LOG: listening on IPv6 address "::", port 5432 2025-11-04 14:57:09.686 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2025-11-04 14:57:09.797 UTC [52] LOG: database system was shut down at 2025-11-04 14:57:09 UTC 2025-11-04 14:57:09.877 UTC [1] LOG: database system is ready to accept connections -
@GreenHorn86 Warum kann er das nicht? Vielleicht wegen dem hier?
restart: on-failure:5Oder welche Querverbindung ist hier im Spiel?
-
depends_on: db: condition: service_healthy
Tommes Diese Verbindung meinte ich. Wenn der Healthcheck entfernt wird, dann sollte er auch das entfernen.
-
@GreenHorn86 Warum kann er das nicht? Vielleicht wegen dem hier?
restart: on-failure:5Oder welche Querverbindung ist hier im Spiel?
Habe es nach einer Anleitung auf meinem Synology installiert gehabt.
Nach dem auskommentieren von "depends_on" db startet es zwar, aber es werden wieder keine Dokumente, Tags, etc. angezeigt.
-
Prüf doch mal die DB, ob da überhaupt was drin ist. Sieht dann ja nicht so aus. Ich würde es nochmal neu machen. Hast du den Owner der Daten geprüft? Ansonsten würde ich dir eher empfehlen die DB per Dump zu übertragen oder wie JohannesB geschrieben hat per Export/Import. Wieso gibst du überhaupt den User 999:10 an? 999 ist der default User bei PostgreSQL. Ich gebe da nie einen User an, dann kann man halt nicht einfach so auf die Dateien zugreifen, aber mal ehrlich, wofür sollte ich an die Dateien ran wollen. Das kann ich sonst auch per sudo machen.
-
Moin,
ich kann dir das hier empfehlen:
Paperless-ngx, Teil 8: Exportfunktion nutzenPaperless-ngx läuft rund und macht, was es soll? Prima! Dann wird es Zeit, sich über Backup-Strategien Gedanken zu machen. Schließlich wurde viel Arbeit in den…digital-cleaning.deAuf der Syno machst du einen sauberen Export, entweder mittels Aufgabenplaner oder Shell. Dann installierst du PaperlessNGX z.B. mittels Tommes sein Script auf der Ugreen. HeadsUp, die UID und GID sind bei Syno und Ugreen unterschiedlich, ggf auch die Ports.
Wenn Paperless dann läuft, machst du einen sauberen Import. Dann ist es am Ende völlig egal, welche DB oder welches Setup du nutzt. Habe ich jetzt mehrfach getestet, funzt völlig Problemlos. Paperless empfiehlt, den Export und Import von der selben Version zu machen, aber selbst unterschiedliche PL Versionen funktionierten bei mir:
Administration - Paperless-ngx
WBR,
deltapapa
-
Er kann den Healthcheck nicht einfach entfernen/auskommentieren. Also nicht nur.... Bei ihm ist das als Bedingung für seinen Paperless Container eingetragen. Dann müsste er das auch entfernen.
Oh du hast Recht, dass hatte ich übersehen
Ich weiß nicht ob man die ganzen healthchecks braucht. Ich habe noch eine sehr alte Version des Compose Files wo es das alles noch nicht gab. Läuft auch so. Hat wahrscheinlich irgendwelche Vorteile wenn es korrekt läuft mit den Checks.Was mir noch bei deiner docker-compose.yml aufgefallen ist:
Hast du deinen Domaindienst noch laufen oder wie klappt das mit der URL? (Ernstgemeinte Frage ich habe bisher sowas noch nicht hinbekommen und rufe stumpf über die IP Adresse den Dienst auf)
Ich kann sehr empfehlen der PaperlessNGX Anleitung zu folgen. Ich kann aber ja nochmal kurz zusammenfassen wie ich den PaperlessNXG Service nach den DB Problemen umgezogen habe:
1. Auf dem neuen NAS die Verzeichnisse gelöscht, welche ich aus dem Backup schon wiederhergestellt hatte, was aber ja aufgrund der Dateirechte der Postgres DB nicht recht geklappt hatte. (Wahrscheinlich mit mehr Wissen hätte man es noch hinbekommen können, aber das war mir leider nicht möglich)
2. Auf dem alten NAS Paperless starten docker compose up -d
3. Backup erstellen docker exec paperlessngx document_exporter ../export
4. Backup per rsync, scp oder sonst wie zum neuen NAS schicken. (Ich habe ein Tar Archiv aus dem ./export/ Ordner gemacht und das manuell rübergeschoben weil mein Zielverzeichnis nur mit sudo beschreibbar war.)
5. Nun sollte dort die docker-compose.yml und der Ordner ./export dort liegen. Wenn man das compose File auch gelöscht hat muss man es dort wieder hin machen.
6. Den Stack einmal starten docker compose up -d . Ich habe hier das -d weggelassen um zu sehen ob die Container auch korrekt hochfahren und initialisieren. Aber noch nicht auf der Paperless Webseite irgendwas eintragen oder Anmeldeversuche machen. Die DB muss frisch bleiben.
7. Backup importieren docker exec paperlessngx document_importer ../export und warten bis der Import durchgelaufen ist.
8. Webseite aufrufen. (Es sollte jetzt kein Dialog für den Adminuser mehr kommen)
9. Mit den alten Logindaten einloggen und freuen (hoffentlich

Du musst wohl statt paperlessngx -> PaperlessNGX in den Befehlen schreiben weil dein Containername so definiert ist.
container_name: PaperlessNGX
Um die Sache mit dem Healthcheck zu beheben musst du entweder:
1. Den Healthcheck auskommentieren und die Abhängigkeit der DB vom Healthcheck auch auskommentieren:
YAML# healthcheck: # test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "paperlessuser"] # timeout: 45s # interval: 10s # retries: 10Und unten:
YAMLdepends_on: db: # condition: service_healthy redis: condition: service_healthy tika: condition: service_started gotenberg: condition: service_startedNicht alles von den Abhängigkeiten sondern nur die condition: service_healthy
2. Oder aber du änderst den healthcheck:
YAMLhealthcheck: test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "paperless"] timeout: 45s interval: 10s retries: 10-U gibt den User an und da du bei environment: gesagt hast:
... muss dein User mit dem der Healthcheck gemacht wird auch paperless heißen.
Und wenn du sagst das da keine Dokumente sind dann konnte er die DB nicht richtig lesen oder die ist leer wie @GreenHorn86 gesagt hat.
Edit: ich sehe grade deltapapa hat ein schönes Video zur Erklärung gepostet da war mein Text noch nicht fertig. Mach das doch mal. -
Vielen Dank euch für eueren Input. Habe es nun per Export & Import gelöst.
QuoteHast du deinen Domaindienst noch laufen oder wie klappt das mit der URL? (Ernstgemeinte Frage ich habe bisher sowas noch nicht hinbekommen und rufe stumpf über die IP Adresse den Dienst auf)
Ja der lief noch. Da Ugreen derzeit noch keine eigene Domain (ähnlich wie synology.me) unterstützt, habe ich mir nun eine besorgt.
-
Hi jungs,
gibts eine schöne und verständliche Anleitung für Paperless für das Ugreen NAS?
Möchte halt nur die Internen Tools nutzen und nicht noch sowas wie Portainer -
woop, warum kann ich meinen versehentlich geschriebenen Beitrag nicht löschen oder bin ich blind?

-
Must Du einen Admin darum bitten, daß er es löscht.
-
niemand?
-
Moin IceKillFX57,
Schau mal hier: Sehr gute Quelle
Du musst dir nur die entsprechende Datenbank aussuchen und in Docker einfügen.
Beste Grüße,
Stefan
-
Du musst dir nur die entsprechende Datenbank aussuchen und in Docker einfügen.
Beste Grüße,
Stefan
Was meinst du mit Datenbank aussuchen?^^
-
Participate now!
Join our community with over 10,000 members!
Register yourself now for free to get full access to all content, graphics, downloads and other exclusive features!