Paperless-ngx Paperless-ngx – DMS via Docker auf dem NAS

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.655
Punkte für Reaktionen
1.548
Punkte
314
Rückt mal ein Stück, denn es gesellt sich jemand neues in die Reihen dieses Threads!

Ich schlender’ zurzeit noch ziemlich unbefangen durch das Tal der Ahnungslosen Docker Nutzer und bin auf meinem Weg über Paperless-NXG gestolpert. Na gut, dachte ich mir, schauen wir mal, was das hiesige Forum alles so zu diesem Thema zu erzählen hat. Ich musste ziemlich schnell feststellen, das es u.a. zum Thema Datenbanken doch viele unterschiedliche Meinungen gibt, unterm Strich hat sich für mich aber herauskristallisiert, das sich eine MariaDB Datenbank wohl am besten eignen würde.

Da ich eh noch ganz am Anfang meiner Reise stehe, würde ich mir so eine MariaDB Datenbank, zusammen mit phpMyAdmin gerne als eigenständige Container vorhalten. Da sich meine Welt aktuell auf Portainer und Docker-Compose beschränkt, habe ich mir aus diversen Vorschlägen etwas passendes zusammengefrickelt. Das Ergebnis sieht so aus und scheint auch zu funktionieren, da ich mich über phpMyAdmin mit der Datenbank verbinden kann.

YAML:
version: '3.0'
services:
    mariadb:
        image: mariadb:11.3
        container_name: MariaDB
        restart: unless-stopped
        volumes:
            - /volume1/docker/mariadb:/var/lib/mysql:rw
        environment:
            - MYSQL_ROOT_PASSWORD=[GEHEIM]
            - TZ=Europe/Berlin
            - PGID=100
            - PUID=1026
        ports:
            - 3306:3306

    phpmyadmin:
        image: phpmyadmin:latest
        container_name: phpMyAdmin
        restart: unless-stopped
        environment:
            - PMA_PORT=3306
            - PMA_HOST=MariaDB
        ports:
            - 2500:80

Mein Problem ist nun, wie ich dem Paperless-NGX Stack sage, das er die MariaDB mit Inhalten füllen soll. Leider funktioniert das bei mir nicht, da in den Logs immer sowas ausgeworfen wird...
[...]
Waiting for MariaDB to start...
Attempt 1 failed! Trying again in 5 seconds...
/sbin/docker-prepare.sh: line 41: MariaDB: Name or service not known
/sbin/docker-prepare.sh: line 41: /dev/tcp/MariaDB/3306: Invalid argument
Attempt 2 failed! Trying again in 5 seconds...
...
..
.
Unable to connect to database.
... und ich weiß verdammt noch nicht, was ich übersehe? Könnte mich daher freundlicherweise jemand an die Hand nehmen und mir erklären, was genau ich falsch mache? Das wäre wirklich toll. Hier noch mein Docker-Compose File für Paperless-NGX

YAML:
version: '3.0'
services:
  broker:
    image: docker.io/library/redis:7
    container_name: Paperless-NGX-Redis
    restart: unless-stopped
    volumes:
      - /volume1/docker/paperlessngx/redis:/data

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    container_name: Paperless-NGX
    restart: unless-stopped
    depends_on:
      - broker
    ports:
      - 8100:8000
    volumes:
      - /volume1/docker/paperlessngx/data:/usr/src/paperless/data
      - /volume1/docker/paperlessngx/media:/usr/src/paperless/media
      - /volume1/docker/paperlessngx/export:/usr/src/paperless/export
      - /volume1/docker/paperlessngx/consume:/usr/src/paperless/consume
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBENGINE: mariadb
      PAPERLESS_DBHOST: MariaDB
      PAPERLESS_DBNAME: paperless
      PAPERLESS_DBUSER: paperless
      PAPERLESS_DBPASS: [AUCH-GEHEIM]
      PAPERLESS_DBPORT: 3306
      PAPERLESS_TIME_ZONE: Europe/Berlin
      PAPERLESS_OCR_LANGUAGE: deu+eng
      USERMAP_UID: 1026
      USERMAP_GID: 100

BTW: Ich habe über phpMyAdmin bereits einen neuen Benutzer/Datenbank mit dem Namen paperless erstellt, aber das bringt mich auch nicht weiter.

Tommes
 
Zuletzt bearbeitet:

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
15.029
Punkte für Reaktionen
5.400
Punkte
564
Sind die Container im gleichen Bridge-Netz? Per default schiebt Docker die per Deploy über Docker Compose immer in eigene Netze und da funzt dann keine Kommunikation
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.655
Punkte für Reaktionen
1.548
Punkte
314
@plang.pl
Du meinst das hier unter dem Punkt IP Addess, richtig?

1715184889838.png
1715184903276.png


Wie kann ich das ändern/anpassen?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
15.029
Punkte für Reaktionen
5.400
Punkte
564
Du musst im Docker Compose Script den Punkt Networks ergänzen und da halt jeweils das Gleiche eintragen.
Wenn du unter Portainer im Bereich "Networks" links kuckst, dann müsstest du sehen, dass es unterschiedliche Netze gibt bzw. siehst du im Container Manager, in welchem Netz die Container sind oder halt, wenn du den Container in Portainer bearbeitest.
Ich würde also in jedem der Compose folgendes unten anfügen:
YAML:
networks:
  sql:
    external: true

Zudem bei jedem Container den Parameter
YAML:
    networks:
      - sql
mitgeben. Ich bin mir gerade nicht sicher, ob man da vorher ein Bridge Netzwerk in Portainer mit dem Namen sql anlegen muss. Schaden kanns nicht.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.655
Punkte für Reaktionen
1.548
Punkte
314
Auweia... da hab ich wieder was losgebrochen.

Mein MariaDB/phpMyAdmin Stack sieht jetzt so aus...
YAML:
version: '3.0'
services:
    mariadb:
        image: mariadb:11.3
        container_name: MariaDB
        restart: unless-stopped
        volumes:
            - /volume1/docker/mariadb:/var/lib/mysql:rw
        environment:
            - MYSQL_ROOT_PASSWORD=[GEHEIM]
            - TZ=Europe/Berlin
            - PGID=100
            - PUID=1026
        ports:
            - 3306:3306
        networks:
            sql:
                external: true

    phpmyadmin:
        image: phpmyadmin:latest
        container_name: phpMyAdmin
        restart: unless-stopped
        environment:
            - PMA_PORT=3306
            - PMA_HOST=MariaDB
        ports:
            - 2500:80
        networks:
            - sql

Als Antwort erhalte ich...
failed to pull images of the stack: validating /data/compose/18/docker-compose.yml: services.mariadb.networks.sql Additional property external is not allowed

Unter Networks habe ich, bis auf die Standard Einträge bridge, host, none keine weiteren Einträge. Also versucht, ein neues Bridge Netzwerk zu erstellen, was mit gleicher Fehlermeldung quittiert wird.

Wobei... ich habe grad keine Ahnung, was ich da tue und vielleicht sollte ich mich zunächst weiter einlesen, bevor das hier noch eskaliert.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
15.029
Punkte für Reaktionen
5.400
Punkte
564
Da ist was falsch...
So müsste das aussehen:

YAML:
version: '3.0'
services:
    mariadb:
        image: mariadb:11.3
        container_name: MariaDB
        restart: unless-stopped
        volumes:
            - /volume1/docker/mariadb:/var/lib/mysql:rw
        environment:
            - MYSQL_ROOT_PASSWORD=[GEHEIM]
            - TZ=Europe/Berlin
            - PGID=100
            - PUID=1026
        ports:
            - 3306:3306
        networks:
            - sql

    phpmyadmin:
        image: phpmyadmin:latest
        container_name: phpMyAdmin
        restart: unless-stopped
        environment:
            - PMA_PORT=3306
            - PMA_HOST=MariaDB
        ports:
            - 2500:80
        networks:
            - sql
networks:
    sql:
       external: true

Zumindest denke ich das. Aber ich mach das auch nur alle heilige Zeit mal. Aber eigentlich erstellt Docker für den deploy über Docker Compose ein eigenes Bridge Netz und schiebt da alle Container, die die YAML "erzeugt" rein.
Wenn du also 2 YAMLs hast, werden zwei Netze erstellt. Und in einem der beiden Netze ist dann mariadb + phpmyadmin und im anderen ist paperless. Deshalb kann auch phpmyadmin auf die DB zugreifen und paperless nicht.
Wenn du nun alles in eine YAML schreibst und den Part mit Networks komplett weglässt, müsste es folglich gehen.

Und falls die Container im default-Bridge Netz sind: Da geht das nicht mit dem gegenseitigen Zugriffen. Da müsste man explizit nen Link zwischen den Containern setzen. Das ist aber Legacy und sollte man nicht machen. In einem selbst angelegten Bridge Netzwerk können die Container hingegen miteinander reden.


EDIT: Irgendwie krieg ich die Einrückungen mit dem Code-Block nicht richtig gebacken...
EDIT2: Bei Problemen mit der Einrückung mal da einfügen: https://yamlchecker.com/

EDIT3: Man kann natürlich auch die Container manuell (also nicht via YAML) anlegen und die dabei ins richtige Netz packen. Oder mal versuchen, ob der Container Manager ein Verschieben der Container in ein anderes Netz zulässt, der Portainer kann das nämlich nicht (bei per Docker-Compose deployten Containern)
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Tommes

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.655
Punkte für Reaktionen
1.548
Punkte
314
Vielen Dank für deine Erläuterungen.
Mir ist zwar bereits aufgefallen, dass jeder Stack ein eigenes Netz erhält, hatte aber nicht auf dem Sender, das sich Container untereinander zunächst nicht unterhalten können. Aber mit dieser Information kann ich meine Suche spezifizieren und weitere Tests durchführen.

Ich erstelle jetzt mal einen Container, indem nur MariaDB läuft und dann einen weiteren in dem phpMyAdmin läuft und verweise dabei mit diesem Schalter...
PMA_HOST=172.30.0.xxx
... auf die MariaDB. Vielleicht klappt das ja. Ansonsten werde ich mich weiter einlesen, da ich schon gerne eine eigene, zentrale MariaDB Instanz hätte, wo alles zusammen läuft. Aber das müssen wir jetzt nicht weiter diskutieren, da es hier nicht wirklich hingehört. Nichts desto trotz, werde ich berichten, sobald ich eine Lösung gefunden habe.

Tommes
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
853
Punkte
154
Wieso exposed du nicht die Ports und gehst über syno-ip:port auf den Dienst? Dann ist es auch egal in welchem Netz die sind
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.655
Punkte für Reaktionen
1.548
Punkte
314

Ha... geht doch. GEHT DOCH!​

Ich habe jetzt einen separaten Stack für MariaDB erstellt und den Container ausgerollt. Im Portainer wurde mir unter Networks dann ein neues Bridge-Netzwerk erstellt
1715188944537.png

Danach habe ich einen weiteren Stack für phpMyAdmin erstellt und habe mit dem Schalter....
PMA_HOST=192.168.16.1
... einen Verweis auf die MariaDB gelegt. Nach dem deployen des Stacks konnte ich mich mit phpMyAdmin an der MariaDB anmelden und habe gleich mal einen neuen Benutzer/Datenbank mit dem Namen paperless angelegt.

Als Nächstes also einen weiteren Stack für Paperless-NGX erstellt, wobei ich mit dem Schalter...
PAPERLESS_DBHOST: 192.168.16.1
... ebenfalls einen Verweis auf die MariaDB gelegt habe. Deployed... und zack... Container läuft und ich kann die Webseite von Paperless-NGX aufrufen.

Hammer 💪


Tommes
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.655
Punkte für Reaktionen
1.548
Punkte
314

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
853
Punkte
154
Das ist ja nicht schlimm. So lernt man es immerhin:)
Das war nur ein Vorschlag der sogar am einfachsten wär. Du exposed ja in deiner Compose für die DB 3306 als Port. Dann kannst du von über all mit der Host IP (deine DS) und dem Port Zugreifen. Da können die Container auch in verschiedenen Compose Dateien bzw. Portainer Stacks sein.
 
  • Like
Reaktionen: Tommes

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.655
Punkte für Reaktionen
1.548
Punkte
314
Ja das stimmt. An diese Möglichkeit habe ich in der Tat noch nicht gedacht und werde das morgen gleich mal ausprobieren, denn für heute ist Schluss.

Das Schlimme an den ganzen Anleitungen und YAML Files, die man im Netz als auch hier so findet ist, das einmal der Name des Datenbank-Containers verwendet wird, ein anderes mal, so wie @plang.pl weiter oben beschrieben hat, indem man den Namen bzw. die IP der Bridge auswählt, oder aber die IP des Host-Systems, also der Synology NAS auf dem Docker läuft. Das das für Verwirrung sorgt, ist offensichtlich. Aber gut… jetzt habe ich es ja verstanden und mein System nimmt langsam Formen an. Ich werde noch weitere Tests mit den Stacks durchführen bis ich ein für mich optimales Setup gefunden habe und mich außerdem noch mit dem Thema Datenbank-Dump beschäftigen, bevor ich damit anfange, mich intensiver mit Paperless-NGX zu beschäftigen.

Aber für den Moment bin ich schon mal einen großen Schritt weiter. Vielen Dank
 
  • Like
Reaktionen: Jesse69 und alexhell

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
853
Punkte
154
Wenn die Services im selben Stack/Compose drin sind, dann kannst du immer den Servicenamen verwenden. Also nicht Container Namen, sondern das eine Ebene höher was direkt unter Services kommt. Bei dir mariadb und phpmyadmin. Wenn sie im selben Netzwerk sind, dann den Containernamen und über host-ip:port geht es immer. Wenn sie im selben Stack sind, ist es nicht zwingend notwendig die Ports zu exposen. Außer du willst natürlich die Ports selber festlegen
 
  • Like
Reaktionen: Tommes

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.655
Punkte für Reaktionen
1.548
Punkte
314
Kurzes Update.
Nachdem ich heute Morgen nochmal alle betreffenden Container gelöscht, die Docker-Compose Files ein wenig optimiert und den PMA_HOST Wert von der Bridge IP auf die Synology NAS IP geändert habe, lief nach dem deployen alles so, wie ich es mir vorstelle. Klasse. Ich bin voll stolz auf mich :giggle:

Jetzt sind mir noch zwei Dinge aufgefallen, die in der Anleitung von @Monacum (Post #232) beschrieben sind. Und zwar geht es um die beiden Dateien docker-compose.yml und docker-compose.env. Vermutlich kann ich mir das Anlegen des YAML Files schenken, weil ich dafür in Portainer ja einen Stack angelegt habe. Sehe ich das richtig, Oder muss die Datei in jedem Fall dort abgelegt werden?

Macht es am Ende mehr Sinn, sich ein separates .env zu befüllen, worauf im YAML File verweisen wird, oder kann man das alles auch direkt im YAML File angeben, wo ja auch bereits die PAPERLESS_ Datenbank Verbindungsdaten eingetragen sind. Scheinbar funktioniert ja beides. Würden unter Verwendung eines .env Files die Datenbank Verbindungsdaten ebenfalls darin abgelegt werden, oder gehören diese Dinge definitiv ins YAML-Files.

Sorry für die vielleicht dummen Fragen. Vielleicht steht das auch bereits in einen der hier angesiedelten Threads. Teilweise ist es jedoch sehr mühselig sich die passenden Informationen rauszufiltern, wenn man nicht zwangsläufig weiß, wonach genau man suchen soll.

Tommes
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
15.029
Punkte für Reaktionen
5.400
Punkte
564
  • Like
Reaktionen: Tommes

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
853
Punkte
154
Es macht eventuell Sinn auch im Portainer env files zu nutzen. Aber die musst du nicht im Filesystem anlegen sondern über die UI gibt es da was. Mann muss es dann über stack.env oder so ähnlich einbinden. Wegen dem simm: Wenn bestimmte Werte in mehrfach vorkommen, dann muss man nur eine Stelle ändern.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.179
Punkte für Reaktionen
1.012
Punkte
224

Paperless-ngx v2.8.3

Repository: paperless-ngx/paperless-ngx · Tag: v2.8.3 · Commit: 43a6e39 · Released by: github-actions[bot]

paperless-ngx 2.8.3​

Bug Fixes​

Documentation​

  • Chore(docs): Update the sample Compose file to latest database @stumpylog(#6639)
 
  • Like
Reaktionen: unsicher

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
Hast du dir mal die Anleitung und die Parameter angesehen?
Du meinst den Eintrag bez. PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD=<num>, also Schwellwert: Seiten rotieren in den Einstellungen?

Was habt ihr denn da eingestellt?

Wie verhält es sich dabei mit den bereits eingelesenen Dokumenten? Kann da noch etwas verändert werden oder bezieht sich dass dann nur auf die neuen?

Schade nur, dass man die Dokumente selbst anscheinend nur um jeweils 90° drehen kann. Wenn man diese sowieso tagt könnte man da auch eine "Feineinstellung" vornehmen...
 
Zuletzt bearbeitet:


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat