Paperless-NGX Docker/Portainer Raspberry / Dateien auf USB Stick ablegen

MikE_GRH

Ensign
Registriert
Dez. 2018
Beiträge
232
Hallo,

ich habe Paperless-NGX per Docker/Portainer auf einem Raspberry laufen.
Ziel ist es, dass die Daten von einem externen USB-Stick über den consume Ordner gelesen werden und dann aber auch auf selbigen abgelegt/archiviert werden.

Den ersten Teil habe ich hinbekommen -> Paperless überwacht den consume-Ordner auf dem USB Stick und liest die Daten automatisch ein.
Leider legt es die Daten nach der Verarbeitung weiterhin unter /usr/src/paperless/media/documents/ im originals bzw. archive Ordner ab.

Ich würde die Daten aber gerne ebenfalls auf dem USB-Stick ablegen.
Eigentlich dachte ich, dafür wäre der Export Ordner da, welchen ich im Stack unter volumes: angegeben habe

Hier mein Stack-Code:

Code:
# Docker Compose file for running paperless from the Docker Hub.
# This file contains everything paperless needs to run.
# Paperless supports amd64, arm and arm64 hardware.
#
# All compose files of paperless configure paperless in the following way:
#
# - Paperless is (re)started on system boot, if it was running before shutdown.
# - Docker volumes for storing data are managed by Docker.
# - Folders for importing and exporting files are created in the same directory
#   as this file and mounted to the correct folders inside the container.
# - Paperless listens on port 8010.
#
# In addition to that, this Docker Compose file adds the following optional
# configurations:
#
# - Instead of SQLite (default), PostgreSQL is used as the database server.
#
# To install and update paperless with this file, do the following:
#
# - Open portainer Stacks list and click 'Add stack'
# - Paste the contents of this file and assign a name, e.g. 'Paperless'
# - Click 'Deploy the stack' and wait for it to be deployed
# - Open the list of containers, select paperless_webserver_1
# - Click 'Console' and then 'Connect' to open the command line inside the container
# - Run 'python3 manage.py createsuperuser' to create a user
# - Exit the console
#
# For more extensive installation and update instructions, refer to the
# documentation.

version: "3.4"
services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - redisdata:/data

  db:
    image: docker.io/library/postgres:15
    restart: unless-stopped
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: 1

  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
      - /mnt/sda1/paperless/export:/usr/src/paperless/export
      - /mnt/sda1/paperless/consume:/usr/src/paperless/consume
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
      PAPERLESS_SECRET_KEY: 1
      PAPERLESS_ADMIN_USER: admin
      PAPERLESS_ADMIN_PASSWORD: 1
      PAPERLESS_OCR_LANGUAGE: deu
# 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: 1001
      USERMAP_GID: 100
# 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: America/Los_Angeles
# 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:


Vorweg: Ich bin absoluter Docker Neuling, also bitte für Idioten erklären.

Frage:
Wie bekomme ich es hin, dass die Daten auf dem USB-Stick abgelegt werden?
 
Ich hoffe es sind keine wichtigen Dateien, weil die würde ich nicht auf einen USB-Stick speichern welcher permanent gelesen wird.
Lege mal den media Ordner auf den Stick gleich dem consume-Ordner.
 
  • Gefällt mir
Reaktionen: Der Lord und kamanu
@Nordwind2000

Aktuell liegt das Zeug auf der Raspberry SD-Card, was wahrscheinlich genau so schlecht ist, oder?

Ich habe jetzt folgendes geändert:

Code:
volumes:
      - data:/usr/src/paperless/data
      - media:/mnt/sda1/paperless/media
      - /mnt/sda1/paperless/export:/usr/src/paperless/export
      - /mnt/sda1/paperless/consume:/usr/src/paperless/consume

den Ordner Media habe ich auf dem Stick erstellt, aber leider kommt nichts an.
File landet wieder im Container unter: /usr/src/paperless/media/documents/originals
 
Die SD-Karte ist auch nicht wirklich besser. Vielleicht eine externe kleine Festplatte oder SSD. Beides hält definitiv mehr Schreib- und Lesevorgänge aus.

Was passiert, wenn du die Beschreibung data: und media: entfernst und den Mountpoint setzt?
 
Der Export Ordner ist für das anlegen eines Backup gedacht. Vielleicht kannst du auch nur das regelmäßig machen und den Rest auf der SD Karte lassen. Dann liegen die Daten zumindest auf zwei verschiedenen Datenspeichern.

Der Paperless Exporter füllt dir das Verzeichnis dann per Cronjob oder von Hand.

https://docs.paperless-ngx.com/administration/#exporter

Wenn möglich aber eine vernünftige Festplatte nutzen.
 
@Nordwind2000

Gleiches Ergebnis mit:

Code:
volumes:
      - /mnt/sda1/paperless/media
      - /mnt/sda1/paperless/export:/usr/src/paperless/export
      - /mnt/sda1/paperless/consume:/usr/src/paperless/consume


@nkler:
Das ist interessant, werde ich mir mal ansehen.
Dachte das Export-Verzeichnis ist für die Ablage nach der Bearbeitung.
 
  • Gefällt mir
Reaktionen: Nordwind2000
Bei den volumes ist links vom : dein lokaler Pfad. Den solltest du absolut angeben. Also zb /media. Rechts vom : ist der Pfad im Container. Den solltest du nur ändern, wenn du weißt, wie die Applikation darauf reagiert, weil sie hier vielleicht ja hardcoded nach den Daten sucht.

Edit: es sei denn, du hast vorher ein Docker Volume angelegt. Dann liegen die Daten von media dort, wo Docker die volumes generiert.
 
@nkler

wenn ich

Code:
docker compose exec -T webserver document_exporter ../export/

starten möchte, kommt die Fehlermeldung:

no configuration file provided: not found

Wahrscheinlich befinde ich mich im falschen Verzeichnis, oder?
Aber wie finde ich das richtige Verzeichnis?

Das Ganze läuft auf Dietpi.
 
Ich bekomme es nicht hin...
Hat hier niemand eine Idee, wie ich den export unter Dietpi/Portainer anstoßen kann?
 
Zum Ausführen des Exporters muss man sich in dem Verzeichnis befinden, wo sich die docker_compose.yml befindet.
 
  • Gefällt mir
Reaktionen: MikE_GRH
Zurück
Oben