Paperless-ngx HowTo: Paperless-ngx an MariaDB und phpMyAdmin binden

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.574
Punkte
314
Die Standardinstallation von Paperless-ngx beinhaltet neben dem Schlüssel-Werte-Datenbanksystem Redis auch das relationale Datenbanksystem PostgreSQL (kurz Postgres). Alternativ dazu kann als relationales Datenbanksystem auch MariaDB ab Version 10.4 oder höher genutzt werden, worauf sich die nachfolgende Anleitung bezieht. Dabei wird MariaDB zusammen mit phpMyAdmin, einer Webanwendung zur Verwaltung von MariaDB, in einem separaten Docker-Compose-File bzw. Portainer-Stack, unabhängig von Paperless-ngx eingerichtet. Unter anderem ermöglicht das Abkoppeln des Datenbanksystems von Paperless-ngx, dass sich im späteren Verlauf weitere datenbankgestützte Anwendungen mit der zentral eingerichteten MariaDB-Datenbank verbinden und durch phpMyAdmin benutzerfreundlich administriert werden können.

- Einrichtung von MariaDB und phpMyAdmin​

  • Melde dich als Administrator am DSM deines Synology NAS an.
  • Öffne die File Station und navigiere zum Ordner /docker
  • Erstelle im Docker-Ordner einen neuen Ordner mit dem Namen /mariadb
    (Achte darauf, nur Kleinbuchstaben und keine Großbuchstaben zu verwenden)
    1719327361674.png
  • Wechsel im Portainer nach Enviroment - Stacks und klicke auf die Schaltfläche + Add stack, um einen neuen Stack anzulegen.
  • Gib dem Stack einen eindeutigen Namen wie z.B. mariadb
    (Achte darauf, nur Kleinbuchstaben und keine Großbuchstaben zu verwenden)
  • Passe den nachfolgenden Stack ggf. an (beachte dazu auch die nachfolgenden Erläuterungen)
    YAML:
    version: "3.0"
    services:
      mariadb:
        image: mariadb:11.3
        container_name: MariaDB
        restart: unless-stopped
        healthcheck:
          test: ["CMD", "healthcheck.sh", "--su-mysql", "--connect", "--innodb_initialized"]
          interval: 30s
          timeout: 30s
          retries: 3
        volumes:
          - /volume1/docker/mariadb:/var/lib/mysql:rw
        environment:
          - MYSQL_ROOT_PASSWORD=123456
          - TZ=Europe/Berlin
          - PUID=1026 # User ID of your Synology NAS Docker administrator
          - PGID=100 # Group ID of your Synology NAS Docker administrator
        ports:
          - 3306:3306
    
      phpmyadmin:
        image: phpmyadmin:latest
        container_name: phpMyAdmin
        restart: unless-stopped
        environment:
          - PMA_PORT=3306
          - PMA_HOST=MariaDB # Name of the MariaDB container
        ports:
    - 2500:80

Erläuterungen zu MariaDB:​

  • Passe unter services:mariadb: volumes: ggf. den Pfad zum persistenten MariaDB Verzeichnis an.
  • Passe unter services:mariadb: enviroment: das root Passwort [ MYSQL_ROOT_PASSWORD ] an.
  • Passe unter services: mariadb: enviroment: ggf. die Timezone [ TZ ] an.
  • Passe unter services: mariadb: enviroment: ggf. die Benutzer-ID [ PUID ] sowie die Gruppen-ID [ PGID ] deines Administrators an, welcher Zugriff auf Docker hat.
    Zur Ermittlung der [ PUID ] und [ PGID ] meldet man sich als Administrator über ein Terminal an seinem Synology NAS an und gibt den Befehl id ein
    Bash:
    tommes@Synology-NAS:~$ id
    uid=1026(tommes) gid=100(users) groups=100(users),101(administrators)

Erläuterungen zu phpMyAdmin:​

  • Passe unter services: phpmyadmin: enviroment: ggf. den Namen [ PMA_HOST ] des MariaDB Container-Namens an, wie unter services: mariadb: [ container_name ] angegeben.
  • Öffne nun einen Browser und gib http://synology-nas-ip:2500 ein. Log dich mit dem Benutzernamen root und dem MariaDB Passwort ein.

- Einrichtung von Paperless-ngx​

  • Melde dich als Administrator am DSM deines Synology NAS an.
  • Öffne die File Station und navigiere zum Ordner /docker
  • Erstelle im Docker-Ordner einen neuen Ordner mit dem Namen /paperless-ngx
    (Achte darauf, nur Kleinbuchstaben und keine Großbuchstaben zu verwenden)
  • Erstelle innerhalb des Ordners /paperless-ngx sechs weitere Unterordner mit den Namen /config , /consume , /data , /export , /media sowie /redis (siehe Screenshot)
    1719326996261.png
  • Verbinde dich mit phpMyAdmin (http://synology-nas-ip:2500) und leg ein neues Benutzerkonto mit dem Namen paperless an und vergib ein Passwort.
    Hake des Weiteren unter dem Punkt Datenbank für Benutzerkonto die beiden Kontrollkästchen an (siehe Screenshot)
    1719327168514.png
  • Klicke anschließend am Ende der Seite auf Okay.
  • Wechsel im Portainer nach Enviroment - Stacks und klicke auf die Schaltfläche + Add stack, um einen neuen Stack anzulegen.
  • Gib dem Stack einen eindeutigen Namen wie z.B. paperless-ngx
    (Achte darauf, nur Kleinbuchstaben und keine Großbuchstaben zu verwenden)
  • Passe den nachfolgenden Stack ggf. an (beachte dazu auch die nachfolgenden Erläuterungen)
    YAML:
    version: "3.0"
    services:
      broker:
        image: docker.io/library/redis:7
        container_name: Paperless-ngx-Redis
        restart: unless-stopped
        healthcheck:
          test: ["CMD", "redis-cli", "ping"]
          interval: 30s
          timeout: 10s
          retries: 5
        volumes:
          - /volume1/docker/paperless-ngx/redis:/data
    
      webserver:
        image: ghcr.io/paperless-ngx/paperless-ngx:latest
        container_name: Paperless-ngx
        restart: unless-stopped
        depends_on:
          - broker
        ports:
          - 8100:8000
        healthcheck:
          test: ["CMD", "curl", "-f", "http://localhost:8000"]
          interval: 30s
          timeout: 10s
          retries: 5
        volumes:
          - /volume1/docker/paperless-ngx/data:/usr/src/paperless/data
          - /volume1/docker/paperless-ngx/export:/usr/src/paperless/export
          - /volume1/docker/paperless-ngx/media:/usr/src/paperless/media
          - /volume1/docker/paperless-ngx/consume:/usr/src/paperless/consume
        environment:
          # User settings
          USERMAP_UID: 1026
          USERMAP_GID: 100
          PAPERLESS_ADMIN_USER: tommes
          PAPERLESS_ADMIN_PASSWORD: abcdef
          # Redis settings
          PAPERLESS_REDIS: redis://broker:6379
          # Database settings
          PAPERLESS_DBENGINE: mariadb
          PAPERLESS_DBHOST: 192.168.178.10 # IP address of the Synology NAS
          PAPERLESS_DBNAME: paperless
          PAPERLESS_DBUSER: paperless
          PAPERLESS_DBPASS: 123456
          PAPERLESS_DBPORT: 3306
          # OCR language
          PAPERLESS_OCR_LANGUAGE: deu+eng
          # OCR standard filename format
          PAPERLESS_FILENAME_FORMAT: '{correspondent}/{document_type}/{title}'
          # OCR processing digitally signed PDF documents
          PAPERLESS_OCR_USER_ARGS: '{"invalidate_digital_signatures": true,"continue_on_soft_render_error": true}'

Erläuterungen zu Paperless-ngx:​

  • Passe unter services: broker: volumes: ggf. den Pfad zum persistenten Redis Verzeichnis an.
  • Passe unter services: webserver: volumes: ggf. die Pfade zu den persitenten Paperless-NGX Verzeichnissen an.
  • Passe unter services: webserver: enviroment: ggf. die Benutzer-ID [ PUID ] sowie die Gruppen-ID [ PGID ] deines Administrators an, welcher Zugriff auf Docker hat.
  • Passe unter services: webserver: enviroment: den Namen des Datenbank-Benutzers [ PAPERLESS-DBUSER ] sowie das Passwort [ PAPERLESS_DBPASS ] und ggf. den Namen [ PAPERLESS_DBNAME ] der Datenbank an.
  • Passe unter services: webserver: enviroment: den Namen [ PAPERLESS_ADMIN_USER ] sowie das Passwort [ PAPERLESS_ADMIN_PASSWORD ] an.
  • Passe unter services: webserver: enviroment: ggf. die Timezone [ PAPERLESS_TIME_ZONE ] an.
  • Passe unter services: webserver: enviroment: die zu verwendende OCR Sprache [ PAPERLESS_OCR_LANGUAGE ] an.
  • Verbinde dich mit Paperless-ngx (http://synology-nas-ip:8100) und meld dich mit deinem Benutzernamen [ PAPERLESS_ADMIN_USER ] sowie dem zugehörigen Passwort [ PAPERLESS_ADMIN_PASSWORD ] an.

- Paperless-ngx Datenbank sichern, wiederherstellen und Speicherort aufräumen​

  • Datenbank-Dump der Paperless-ngx Datenbank erstellen​

    Bash:
    #!/bin/bash
    # Datenbank-Dump-File der Paperless-ngx Datenbank erstellen
    # Syntax :
    # docker exec [MARIADB_CONTAINER_NAME] mariadb-dump --user=[PAPERLESS_DBUSER] --password=[PAPERLESS_DBPASS] [DATABASE] > /[DUMPFILE_PATH]/$(date +%Y-%m-%d_%H-%M)_[FILENAME].sql
    
    # Beispiel :
    docker exec MariaDB mariadb-dump --user=paperless --password=abcdef paperless > /volume1/docker/paperless-ngx/export/$(date +%Y-%m-%d_%H-%M)_Paperless-ngx-Dump.sql
  • Datenbank-Dump der Paperless-ngx Datenbank wiederherstellen​

    Hinweis: Der Benutzer (paperless) sowie die Datenbank (paperless) müssen bereits im Vorfeld über phpMyAdmin erstellt worden sein.
    Bash:
    #!/bin/bash
    # Datenbank-Dump-File der Paperless-ngx Datenbank wiederherstellen
    # Syntax :
    # docker exec -i [MARIADB-CONTAINER-NAME] mariadb --user=[PAPERLESS_DBUSER] --password=[PAPERLESS_DBPASS] [DATABASE] < /[DUMPFILE_PATH]/$(date +%Y-%m-%d_%H-%M)_[FILENAME].sql
    
    # Beispiel :
    docker exec -i MariaDB mariadb --user=paperless --password=abcdef paperless < /volume1/docker/paperless-ngx/export/2024-06-01_19-00_Paperless-NGX_MariaDB_Dump.sql
  • Gespeicherte Datenbank-Dump-Files löschen, die älter als x Tage sind​

    Bash:
    #!/bin/bash
    # Gespeicherte Datenbank-Dump-Files löschen, die älter als x Tage sind
    # Syntax :
    # find /[DUMPFILE_PATH]/ -name "*.sql" -mtime +[DAYS] -exec rm {} \;
    
    # Beispiel :
    find /volume1/docker/paperless-ngx/export/ -name "*.sql" -mtime +7 -exec rm {} \;

    Erläuterungen zum den Scripten:​

    • Ersetzte den Wert [MARIADB_CONTAINER_NAME] mit dem Namen deines MariaDB Containers.
    • Ersetzte den Wert [PAPERLESS_DBUSER] mit dem Benutzernamen deines Paperless-ngx Datenbankbenutzers.
    • Ersetzte den Wert [PAPERLESS_DBPASS] mit dem Passwort deines Paperless-ngx Datenbankbenutzer.
    • Ersetzte den Wert [DUMPFILE_PATH] mit dem Pfad, wo das Dump-File gespeichert werden soll.
    • Ersetzte den Wert [FILENAME] mit dem Dateinamen des Dump-Files.
    • Ersetzte den Wert [DAYS] mit einem Zahlenwert in Tagen, ab wann ältere Dump-Files automatisch gelöscht werden sollen.

Viel Spaß damit

Tommes
 
Zuletzt bearbeitet:

Tommes

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

Update des Eingangs-Thread!

Ich habe am Ende dieses HowTo den Abschnitt "Paperless-ngx Datenbank sichern, wiederherstellen und Speicherort aufräumen" hinzugefügt!

Weiterhin viel Spaß mit diesem HowTo

Tommes
 
  • Like
Reaktionen: Scoma

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.574
Punkte
314
Passt zwar nicht so wirklich hier rein, da dieses KowTo auf MariaDB und nicht auf PostgreSQL aufbaut, aber okay… kann ja auch nicht schaden. Von daher danke für den Link.
 

metec

Benutzer
Mitglied seit
16. Aug 2024
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Vielen Dank @Tommes für dieses super HowTo!

Ich habe bei meiner config noch tika+gotenberg ergänzt und im consume-ordner Unterordner wie z.B. "auto" erstellt.
Zusätzlich habe ich folgende Befehle hinzugefügt:

YAML:
      PAPERLESS_CONSUMER_RECURSIVE: true
      # Tags aus Unterordnern im Scaninput-Ordner generieren:
      PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS: true

Nun will er mir aber aus den Unterordnern keine .docx Dateien sondern nur noch .pdf lesen.
Weis jemand was ich hier falsch mache?

Danke um LG
Nicolai
 

metec

Benutzer
Mitglied seit
16. Aug 2024
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Habe es hinbekommen.
Bei deinem Beispiel ist ein kleiner Fehler, es muss lauten:

Bash:
find /volume1/docker/paperless-ngx/export/ -name "*.sql" -mtime +7 -exec rm {} \;

  • Gespeicherte Datenbank-Dump-Files löschen, die älter als x Tage sind

  • # Beispiel :
    find /volume1/docker/paperless-ngx/export/ -name "*.sql" -mtime +7 -exec rm {} ;
 

metec

Benutzer
Mitglied seit
16. Aug 2024
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Hat jemand eine Idee wie ich den Mail Anhang : "RL_123456.pdf" automatisch in "Rechnung_123456.pdf" umbennen kann?
LG
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.574
Punkte
314
  • Like
Reaktionen: metec

metec

Benutzer
Mitglied seit
16. Aug 2024
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Merci :)
Weißt du zufällig wie ich das mit dem Umbennen lösen kann?
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.574
Punkte
314
Automatisch umbenennen? Wo genau? Innerhalb von Paperless-ngx oder per Shell-Script?
 

metec

Benutzer
Mitglied seit
16. Aug 2024
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Beim Importieren aus dem Mail-Anhang. Versehe beim Thunderbird die Rechnungen mit dem Schlagwort "Rechnung". Thunderbird verschiebt diese Mails in meinen Mail-Ordner "ppl-eingang". Von dort holt sich Paperless die Mails.
Aber ein Lieferant nennt die Rechnungen "RL_123pdf.". Paperless übernimmt dies natürlich als Titel.
Klar ich könnte es manuell in "REchnung_123.pdf" ändern aber wenn Paperless dies automatisch machen könnte wäre das edel :).
 

metec

Benutzer
Mitglied seit
16. Aug 2024
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
@Hellraiser123 danke damit habe ich es schon versucht, aber es will noch nicht so ganz.
Habe bei Auslöser->Dateinamen filtern->*RL*_*.pdf angegeben. Bei Aktion->Zuordnung->Titel zuweisen->Rechnung_*.pdf

Nun erhalte ich eine Datei mit Titel: Rechnung_*.pdf
Die Nummer fehlt.
 

Hellraiser123

Benutzer
Sehr erfahren
Mitglied seit
31. Jul 2024
Beiträge
764
Punkte für Reaktionen
411
Punkte
139
Ich hab mal jetzt genauer geguckt. Die Workflows können leider nur fest definierte Platzhalter verwenden. Die sind auch auf der Seite beschrieben. Ich glaube im Moment kann man das mit Paperless nicht abbilden. Die Hooks sind dafür wohl auch nicht zu gebrauchen.
 
  • Like
Reaktionen: Tommes und metec

Scoma

Benutzer
Mitglied seit
05. Feb 2024
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen, könnt ihr mir sagen, wie ich die bestehende Paperless ngx Datenbank sqlite in mariadb migrieren könnte? Ich habe paperless über portainer auf meine synology installiert. ich habe es zwar geschafft, paperless neu aufzusetzen mit einer mariadb (im paperless stack) jedoch habe ich es nicht geschafft, die paperless_dump.sql (alte datenbank mit sqlite3 erstellt) zu migrieren. VG

gehts evtl über document_exporter und importer, vgl. youtube sempervideo?
 
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