Paperless NGX Permissions DB Folder

gw67

Benutzer
Registriert
22. März 2025
Beiträge
3
Reaktionspunkte
2
Punkte
3
Hallo zusammen,

Ich habe paperlessngx mit folgenden Dateien installiert.

USERMAP_UID=1026
USERMAP_GID=100
PAPERLESS_TIME_ZONE=Europe/Berlin
PAPERLESS_OCR_LANGUAGE=deu+eng
PAPERLESS_SECRET_KEY=Nasenbaer-2025
PAPERLESS_ADMIN_USER: guido
PAPERLESS_ADMIN_PASSWORD: XXXXXXX

#PAPERLESS_URL=https://paperless.example.com

Die UID und GID hatte ich mir per Putty ausgelesen.
guido@Nas_Wip_25:/$ id
uid=1026(guido) gid=100(users) groups=100(users),101(administrators)


Meine compose Datei.

services:
broker:
image: redis
container_name: paperless-ngx-redis
restart: unless-stopped
volumes:
- /volume1/docker/paperless-ngx/redis:/data
db:
image: postgres
container_name: paperless-ngx-db
restart: unless-stopped
volumes:
- /volume1/docker/paperless-ngx/db:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: "XXXXXXXX"
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: paperless-ngx
restart: unless-stopped
depends_on:
- db
- broker
- gotenberg
- tika
ports:
- "8000:8000"
volumes:
- /volume1/docker/paperless-ngx/data:/usr/src/paperless/data
- /volume1/docker/paperless-ngx/media:/usr/src/paperless/media
- /volume1/docker/paperless-ngx/export:/usr/src/paperless/export
- /volume1/docker/paperless-ngx/consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
PAPERLESS_DBNAME: paperless
PAPERLESS_DBUSER: paperless
PAPERLESS_DBPASS: "XXXXXXXX"
gotenberg:
image: docker.io/gotenberg/gotenberg
container_name: paperless-ngx-gotenberg
restart: unless-stopped
# The gotenberg chromium route is used to convert .eml files. We do not
# want to allow external content like tracking pixels or even javascript.
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
tika:
image: docker.io/apache/tika:latest
container_name: paperless-ngx-tika
restart: unless-stopped


Ordner Struktur angelegt.
1742666688909.png

Projekt angelegt.
1742666734161.png
Container laufen.
1742666761373.png

Danach läuft auch alles und ich habe eine Dokumente hochgeladen. Nach einiger Zeit bekomme ich ein 500 wenn ich die Seite aufrufe.

Im redis log sehe ich dann folgende Meldung.

1742666909004.png


Starte ich nur den Redis Container neu läuft es wieder einige Zeit.

Die Berechtigungen auf den db Folder sehen so aus.

1742667061261.png

Ändere ich die Berechtigung auf den DB Folder so das users und everyone schreibrecht habe läuft das ganze ohne Probleme durch. Was aber natürchlich keine Option ist das so zu betreiben.

1742667132330.png


durch einen Neustart des db containers werden die Berechtigungen auf den db Folder wieder zurückgesetzt und es läuft wieder nur für kurze Zeit.

Was mache ich denn falsch? Wo ist mein Denkfehler?

Hier noch mal die Berechtigungen laut Console. So läuft es immer nur kurz.

1742667324534.png

Gebe ich users und everyone wieder Schreibrechte läuft es durch.

1742667457303.png
 
Woher kommts, dass du und der User aus diesem Thread den gleichen Secret Key für die DB haben?:unsure:

gleiche Anleitung oder gleicher User?
 
Gleiche Anleitung. Ich habe nur einen Post erstellt. Ich habe aber auch nach anderen Anleitungen installiert. Auch mit portainer. Das oben beschriebene Problem habe ich aber immer.
 
  • Like
Reaktionen: Kachelkaiser
Und auch hier der gleiche Fehler was postgres angeht. Beim Update, welches auch postgres hochzieht ist die Datenbank nicht mehr verfügbar. Der Ersteller des Videos mit seinem Halbwissen gehört geschlagen….
 
Zuletzt bearbeitet:
Wieso bist du mit 2 verschiedenen Usern hier im Forum unterwegs?
Und 2 Posts zum gleichen Thema?
Absolutes NoGo!!!

Edit: Ok, mein Fehler, aber die Anleitung muss ja selten dämlich sein.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: gw67
@ctrlaltdelete ist wohl nicht der gleicher User, aber vor ein paar Tagen hat ein youtuber die Welt mit einem neuen Anleitungsvideo beglückt. Ich vermute mal, da kommen in den nächsten Tagen noch mehr Leute hier ins Forum, so ganz astrein ist die Anleitung wohl nicht. Spätestens beim Update postgres 17 auf postgres 18 wird es lustig.
 
  • Like
Reaktionen: ctrlaltdelete
Wo kommt den der 999 Schrott her?
 
Danke, ist mir noch nie aufgefallen, da ich nie die Berechtigungen des DB Ordners prüfen musste.
 
Ich würde alles löschen, auch die Ordner und sauber neu aufsetzen.
 
Dem stimme ich zu. Würde nur ergänzen. Bitte nach einer anderen Anleitung. Eine die auch ordentlich und richtig ist
 
Vielen Dank für eure Anworten. Ich habe es nun nach dieser Anleitung installiert. https://mariushosting.com/synology-install-paperless-ngx-with-office-files-support/
So läuft es auch. Allerding habe ich Portforwarding am Router nicht eingerichtet. Einen Zugriff von extern möchte ich nicht. Wenn ich von extern auf meine Daten möchte dann mache ich das per VPN. Nun werde ich mich mit dem Thema Backup/Restore bzw. Migration auf eine andere Platform beschäftigen. Ich muss ja in der Lage sein das ganze wiederherzustellen im Falle eines logischen bzw. physikalischen Fehlers. z.b. Restore auf einen Pi oder eine VM.

So habe ich das auch mit meiner Homeassistant Instanz gemacht. Die läuft produktiv auf einem Pi mi HAOS. Am Pi sind 2 USB Dongle aktiv. Einer für zigbee und einer mit Homematic Protokoll. Ich habe nun zum Testen auf dem Synology NAS eine VM erstellt. Auf dieser läuft nun eine Testinstanz vom Homeassistant. Zum Test habe nun die Pi abgeschaltet und das Backup auf die Synology aufgestielt. Die 2 USB Dongle habe ich über einen USB Hub an die Sanology gesteckt. Und alles funktioniert. Es ist immer ein gutes Gefühl ein getestest Fallback zu haben.

Mit Paperlessngx möchte ich einfach schneller etwas in meinen Dokumenten finden. Und nicht durch alle Aktenordner wühlen. Wie gesagt ohne Zugriff von extern. Meine Backups bringe ich eh. Regelmäßig in ein Schließfach bei der Sparkasse.

Habt ihr ein gutes Backup / Restore Konzept was ich nachlesen könnte?
 
  • Like
Reaktionen: ctrlaltdelete
Zuletzt bearbeitet:
  • Like
Reaktionen: gw67
Für meine Installation mit Maria DB habe ich folgendes Script im Aufgabenplaner genutzt:
Code:
#!/bin/bash

# Define the directory for paperless-ngx export
EXPORT_DIR="/volume2/docker/paperlessngx/export"
BACKUP_DIR="/volume2/docker/paperlessngx/backup"
ARCHIVE_NAME="paperlessngx_backup_$(date +%Y-%m-%d_%H-%M-%S)"

# Anzahl Tage, fuer die Backupdateien aufgehoben werden
keepdays="30"

# Empty the export directory before starting
echo "Emptying existing export..."
rm -rf "$EXPORT_DIR/*"

# alte Backups loeschen
find $BACKUP_DIR -name paperlessngx_backup* -mtime +$keepdays -exec rm '{}' \;
find $BACKUP_DIR -name *.sql -mtime +$keepdays -exec rm '{}' \;

# Run the paperlessngx export command
echo "Exporting data..."
docker-compose exec -it PaperlessNGX manage.py document_exporter ../export -d -f -z -zn $ARCHIVE_NAME

# von UVZ export nach backup verschieben
mv /volume2/docker/paperlessngx/export/paperless* /volume2/docker/paperlessngx/backup
chown 0:0 /volume2/docker/paperlessngx/backup/paperlessngx_backup*

# MariaDB Datenbank paperless backupen
docker exec -i PaperlessNGX-DB mariadb-dump -u 'paperlessuser' -p'paperlesspass' --lock-tables 'paperless' > /volume2/docker/paperlessngx/backup/$ARCHIVE_NAME.sql

echo "Backup completed successfully!"

Edit: Was aber so leider nicht mehr funktioniert!!!
 
Zuletzt bearbeitet:
@gw67 Ich habe mal mit AI-Hilfe etwas neues gebastelt für Postgres DB:
Anpassungen die du machen musst:
BACKUP_DIR="/volume3/Backup/paperless"
MEDIA_DIR="/volume1/docker/paperlessngx/media"
DB_CONTAINER="PaperlessNGX-DB"
DB_NAME="paperless"
DB_USER="paperlessuser"
DB_PASS="paperlesspass"

und dann jeweils als .sh Datei speichern:

paperless_backup_pg.sh
Bash:
#!/bin/bash
set -euo pipefail

# === KONFIGURATION ===
BACKUP_DIR="[COLOR=rgb(209, 72, 65)]/volume3/Backup/paperless[/COLOR]"
MEDIA_DIR="[COLOR=rgb(209, 72, 65)]/volume2/docker/paperlessngx/media[/COLOR]"
DB_CONTAINER="paperless-db"
DB_NAME="paperless"
DB_USER="paperlessuser"
DB_PASS="paperlesspass"
DATE="$(date +%Y-%m-%d_%H-%M-%S)"
ARCHIVE_NAME="paperless_backup_$DATE"
LOG_FILE="$BACKUP_DIR/backup_log.txt"
KEEPDAYS=30

mkdir -p "$BACKUP_DIR"

{
echo "===== 📦 PaperlessNGX PostgreSQL Backup – $DATE ====="

# 🧹 Alte Backups löschen
echo "🧹 Alte Backups (> $KEEPDAYS Tage)..."
find "$BACKUP_DIR" -name '*.tar.gz' -mtime +"$KEEPDAYS" -exec rm '{}' \;
find "$BACKUP_DIR" -name '*.sql' -mtime +"$KEEPDAYS" -exec rm '{}' \;

# 💾 PostgreSQL sichern
echo "💾 PostgreSQL Dump..."
docker exec -e PGPASSWORD="$DB_PASS" "$DB_CONTAINER" pg_dump -U "$DB_USER" "$DB_NAME" > "$BACKUP_DIR/${ARCHIVE_NAME}.sql"

# 🗃️ Medienverzeichnis sichern
echo "🗃️ Archiviere media-Verzeichnis..."
tar -czf "$BACKUP_DIR/${ARCHIVE_NAME}_media.tar.gz" -C "$MEDIA_DIR" .

echo "✅ Backup abgeschlossen: $ARCHIVE_NAME"
echo
} >> "$LOG_FILE" 2>&1

paperless_restore_pg.sh
Bash:
#!/bin/bash
set -euo pipefail

# === KONFIGURATION ===
BACKUP_DIR="/volume3/Backup/paperless"
MEDIA_DIR="/volume2/docker/paperlessngx/media"
DB_CONTAINER="paperless-db"
DB_NAME="paperless"
DB_USER="paperlessuser"
DB_PASS="paperlesspass"

if [ -z "${1:-}" ]; then
  echo "❗ Bitte gib das Backup-Datum an (Format: YYYY-MM-DD_HH-MM-SS)"
  echo "➡️ Beispiel: sh restore_paperless_pg.sh 2025-03-23_14-25-17"
  exit 1
fi

RESTORE_DATE="$1"
SQL_FILE="$BACKUP_DIR/paperless_backup_${RESTORE_DATE}.sql"
MEDIA_ARCHIVE="$BACKUP_DIR/paperless_backup_${RESTORE_DATE}_media.tar.gz"

echo "===== 🔁 PostgreSQL-Wiederherstellung: $RESTORE_DATE ====="

# 🔄 PostgreSQL wiederherstellen
if [[ -f "$SQL_FILE" ]]; then
    echo "💾 Spiele Datenbank zurück..."
    docker exec -e PGPASSWORD="$DB_PASS" -i "$DB_CONTAINER" psql -U "$DB_USER" "$DB_NAME" < "$SQL_FILE"
else
    echo "❌ SQL-Datei nicht gefunden: $SQL_FILE"
    exit 1
fi

# 🔄 Medien zurückspielen
if [[ -f "$MEDIA_ARCHIVE" ]]; then
    echo "🗂️ Stelle media-Verzeichnis wieder her..."
    rm -rf "$MEDIA_DIR"/*
    tar -xzf "$MEDIA_ARCHIVE" -C "$MEDIA_DIR"
else
    echo "❌ Media-Archiv nicht gefunden: $MEDIA_ARCHIVE"
    exit 1
fi

echo "✅ Wiederherstellung abgeschlossen!"

Und wenn du es manuell über ein Menü nutzen willst:

paperless_menu_pg.sh
Bash:
#!/bin/bash
set -euo pipefail

# === KONFIGURATION ===
BACKUP_SCRIPT="/volume3/Backup/paperless/paperless_backup_pg.sh"
RESTORE_SCRIPT="/volume3/Backup/paperless/restore_paperless_pg.sh"
BACKUP_DIR="/volume3/Backup/paperless"
LOG_FILE="$BACKUP_DIR/backup_log.txt"

while true; do
  clear
  echo "🔧 PaperlessNGX PostgreSQL Backup-Menü"
  echo "======================================="
  echo "1️⃣  Backup jetzt starten"
  echo "2️⃣  Restore durchführen"
  echo "3️⃣  Letzten Backup-Log anzeigen"
  echo "4️⃣  Verfügbare Backups anzeigen"
  echo "5️⃣  Beenden"
  echo "======================================="
  read -rp "Auswahl (1-5): " CHOICE

  case "$CHOICE" in
    1)
      echo "🚀 Starte Backup..."
      sh "$BACKUP_SCRIPT"
      read -rp "Drücke [Enter] um fortzufahren..."
      ;;
    2)
      echo "📦 Verfügbare Backups:"
      ls -1 "$BACKUP_DIR" | grep _media.tar.gz | sed 's/_media.tar.gz//' | sed 's/paperless_backup_//'
      read -rp "❓ Datum eingeben für Restore (Format: YYYY-MM-DD_HH-MM-SS): " DATE
      sh "$RESTORE_SCRIPT" "$DATE"
      read -rp "Drücke [Enter] um fortzufahren..."
      ;;
    3)
      echo "📜 Letzter Log-Eintrag:"
      tail -n 40 "$LOG_FILE"
      read -rp "Drücke [Enter] um fortzufahren..."
      ;;
    4)
      echo "📁 Backups gefunden:"
      ls -lh "$BACKUP_DIR" | grep -E '\.sql$|\.tar\.gz$'
      read -rp "Drücke [Enter] um fortzufahren..."
      ;;
    5)
      echo "👋 Auf Wiedersehen!"
      exit 0
      ;;
    *)
      echo "❌ Ungültige Auswahl."
      sleep 1
      ;;
  esac
done

Falls die .sh Scripte nicht laufen, evtl. ausführbar machen:
chmod +x /volume3/Backup/paperless/paperless_backup_pg.sh
chmod +x /volume3/Backup/paperless/paperless_restore_pg.sh
chmod +x /volume3/Backup/paperless/paperless_menu.sh
 

Anhänge

  • 1742738366554.png
    1742738366554.png
    110,7 KB · Aufrufe: 2
  • 1742738447038.png
    1742738447038.png
    137,7 KB · Aufrufe: 2
  • 1742738466740.png
    1742738466740.png
    123,5 KB · Aufrufe: 2
  • 1742738509454.png
    1742738509454.png
    75 KB · Aufrufe: 2
Zuletzt bearbeitet:
  • Like
Reaktionen: gw67 und JohneDoe

Additional post fields

 

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