Hallo Bernd,
Nun letztlich mache ich nicht so viel mit Docker. Daher hielt ich es auch für sinnvoll, mit den Boardmitteln zu arbeiten. Und da es hierfür auch die passende Anleitung gab, habe ich mich hierfür entschieden.
Bei Portainer müsste ich ja erstmal schauen, wie ich das auf die Synology aufspiele, dann Anleitung anpassen etc.
Dass es der Umgebung nicht egal ist, wo welcher Ordner liegt, ist mir schon klar. Ich wollte damit sagen, dass ich es aus Gründen der Ordnung im Dockerordner beim Projekt sehe. Für mich wäre es aber im Prinzip egal, wo ich es auf den Host speichere.
Ja bei Host meine ich in dem Zusammenhand das DS923+. Es ist im SHR konfiguriert, mit einer Platte Ausfallsicherheit. Die meisten relevanten Daten habe ich auch auf dem Client als Synchronisation.
Zudem gibt es einen Backupjob (seit DSM 7.2) als vollständiges System auf ein weiteres NAS. Davor Ordner und Pakete separat. Und die wichtigsten Daten gehen dann noch mal auf ein extra Medium.
Jep so wäre es geplant, dass alles (yml, env und Daten) in einem Projekt sind. So kann ich vorausgesetzt das System ist offline von der Theorie her kopieren. Hier steht aber noch Beschäftigung an. Startet derzeit auch erst mit Paperless.
Bevor ich es voll einsetze, spiele ich aber noch HDD Crash und stelle alles aus dem Backup wieder her. Halt mit 10 Dokumenten oder so.
Ja, die Synology hat die 192.168.168.11. Wie gesagt mangels wissen habe ich zunächst per Konsole auf dem Host nach Script gesucht.
Habe es aber wie geschrieben später gefunden.
- Sprich per SSH auf die Synology. → ssh daniel@192.168.168.11
- Hier die Docker ID ausgelesen → sudo docker ps -a
- Auf Docker aufgeschaltet → sudo docker exec -it 67ddd4ca6dc2 /bin/bash
- Ordner Scripts/ und /usr/scr/paperless/scripts/ mit Berechtigungen aufgelistet → ls -la /usr/src/paperless/scripts/
Ergebnis Scripts mit den *.sh ist auf dem Host & im Docker im angegebenen Ordner.
Habe nun auch noch mal das “:ro” entfernt, nicht das er, was im Ordner schreiben muss und es deswegen nicht geht. Auch im pre-consume.sh habe ich den absoluten Pfad zum remove-blank-pages.sh mit /usr/src/paperless/scripts/remove-blank-pages.sh angegeben.
So weit kommt er gemäß Meldung aber nicht.
Die KI habe ich als Ideengeber genutzt. Bis dato ist die Dockerumgebung ja nur ein Spielzeug. Wobei es hier ja viele interessante Möglichkeiten gibt. Daher beschäftige ich mich ja derzeit damit.
Und da das NAS eh läuft, macht die halt am meisten Sinn. Und letztlich muss jeder mal anfangen. Stand jetzt ist es ja auch nicht schlimm, wenn ich es kaputt mache. Neu deployen und gut ist.
IT technisch habe ich schon meiner Erfahrungen. Linux und eben Docker, aber nur als interessierter Einsteiger.
Könnte ich prüfen, ob die Berechtigungen stimmen? Paperless wird ja über die UID 1026 ausgeführt (mein Benutzer) im Docker selbst scheint aber der Root (1000) verwendet zu werden. Wobei beide Admin Berechtigungen haben.
Und laut Auflistung die Dateien (*.SH) auch beide zu lesen und auszuführen sind (auf dem Hoste oder im Docker). Zumindest so weit ich es verstehe.
Theoretisch könnte ich das ganze auch neu aufbauen. Bin halt nur noch Anfänger. Falls dies einfacher ist.
Ziel ist ja oben beschrieben und ob es nun paperless oder paperless-ngx heißt, die yml und env nochmal in einem config-Ordner sind ist für mich egal.
Über Ansatzpunkte würde ich mich weiter freuen. Wobei Skript lassen neuen Scanner kaufen oder beim Scannen halt entsprechend wählen ob Duplex genutzt werden soll sicher Lösungen wären.
Ich würde es aber gern ohne diese Einschränkung lösen.
Hallo Bernd,
hier gab es wohl noch eine Überschneidung. Hatte anfangs nur 50 % der Nachricht gesehen. Wie geschrieben bin ich über die SSH Sitzung auf die bash der Console gekommen. Dass es auch einfach über die Oberfläche geht war mir nicht klar. Liefert aber im Prinzip das gleiche Ergebnis:
root@344ff74f8d0f:/usr/src/paperless/src# ls -la ..//
total 4
drwxr-xr-x 1 paperless 1000 120 Apr 17 13:30 .
drwxr-xr-x 1 root root 18 Jan 31 15:59 ..
drwx------ 1 paperless 1000 0 Jan 31 16:01 .gnupg
drwxr-xr-x 1 paperless users 30 Apr 17 13:31 consume
drwxr-xr-x 1 paperless users 170 Apr 17 13:31 data
drwxr-xr-x 1 paperless users 0 Apr 16 09:20 export
-rw-r--r-- 1 paperless 1000 1351 Jan 31 15:58 gunicorn.conf.py
drwxr-xr-x 1 paperless users 38 Apr 17 13:31 media
drwxr-xr-x 1 paperless users 70 Apr 17 11:13 scripts
drwxr-xr-x 1 paperless 1000 250 Jan 31 15:58 src
drwxr-xr-x 1 paperless 1000 302 Jan 31 16:01 static
Skript hatte ich vorab schon angepasst. Sogar zur Sicherheit ohne :ro
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
- /volume1/docker/paperless-ngx/scripts:/usr/src/paperless/scripts
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_PRE_CONSUME_SCRIPT: /usr/src/paperless/scripts/pre-consume.sh
Habe es nun zur Sicherheit in beiden Dateien eingetragen.
Auch den Path in der pre-consume.sh hatte ich schon angepasst, weil mir auch noch die Idee kam das dies ein Fehler werden könnt. Soweit kommt die Verarbeitung aber nicht.
Bezüglich Kenntnisse. IT (Windows, Netzwerk etc. ja) Linux / Docker interessierter Einsteiger. Funktionierte zuletzt leider immer noch nicht. Starte es nachher noch mal neu mit dem env Eintrag. Wobei es ja nur doppelt gemoppelt ist. Die ENV wird ja nur beim ersten Mal hergenommen oder nicht zum reroll. NA ja sicher ist sicher.
Hallo Bernd,
So bin derzeit zwar unterwegs Kind abholen. Gestartet hatte ich aber vorab noch mal.
Diesmal per vpn vom Handy. Sollte aber keinen Unterschied machen
Kommt leider immer noch der Fehler.
Handbuch-Elitex.pdf
Handbuch-Elitex.pdf: Error while executing pre-consume script: [Errno 2] No such file or directory: ‘/usr/src/paperless/scripts/pre-consume.sh’
Da die Daten definitiv da sind. Wie prüfe ich die Berechtigung? Sonst könnte ich später auch gern die einzelnen Daten zum Download bereitstellen. Gibt es hier ggf. Auch private Nachrichten.
Edit wegen der Version ist mit Absicht so gemacht, damit ich nicht in problemen bei den Abhängigkeiten komme. kann es aber mal mit :latest testen
edit2
Also habe jetzt mal Tabularasa gemacht. Sprich:
- alle Container / Projekt und images gelöscht.
- neues Projekt erstellt (Name ohne -nxg)
- Struktur neu aufgebaut
- einfache Passwörter drin gelassen
- Pfade angepasst und -ngx entfernt
- Step 1 überall :latest angegeben → Führt zu einem Startproblem
- Nur paperless auf lastest
- diesmal gleich mit dem Script erstellt
- Lande im gleichen Problem. System startet Verarbeitung, meldet:
- Scan_250417182114.pdf: Error while executing pre-consume script: [Errno 2] No such file or directory: ‘/usr/src/paperless/scripts/pre-consume.sh’
- Habe es mit einer Druckertestseite getestet.
Host:
Daniel@ds923plus:/volume1/docker/paperless/scripts$ ls -la
total 8
drwxrwxrwx+ 1 Daniel users 70 Apr 17 16:43 .
drwxrwxrwx+ 1 Daniel users 144 Apr 17 16:45 ..
-rwxrwxrwx 1 Daniel users 91 Apr 17 16:41 pre-consume.sh
-rwxrwxrwx 1 Daniel users 728 Apr 17 16:41 remove-blank-pages.sh
Daniel@ds923plus:/volume1/docker/paperless/scripts$
Docker:
root@c8eea1103b34:/usr/src/paperless/src# cd /usr/src/paperless/scripts/
root@c8eea1103b34:/usr/src/paperless/scripts# ls -la
total 8
drwxr-xr-x 1 paperless users 70 Apr 17 14:43 .
drwxr-xr-x 1 paperless 1000 88 Apr 17 15:20 ..
-rwxrwxrwx 1 paperless users 91 Apr 17 14:41 pre-consume.sh
-rwxrwxrwx 1 paperless users 728 Apr 17 14:41 remove-blank-pages.sh
docker-composer.yml
services:
broker:
image: redis:7.4.2
container_name: paperless-ngx-redis
restart: unless-stopped
volumes:
- /volume1/docker/paperless/redis:/data
db:
image: postgres:17.4
container_name: paperless-ngx-db
restart: unless-stopped
volumes:
- /volume1/docker/paperless/db:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperlessdb
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: paperless-ngx
restart: unless-stopped
depends_on:
- db
- broker
- gotenberg
- tika
ports:
- "8888:8000"
volumes:
- /volume1/docker/paperless/data:/usr/src/paperless/data
- /volume1/docker/paperless/media:/usr/src/paperless/media
- /volume1/docker/paperless/export:/usr/src/paperless/export
- /volume1/docker/paperless/consume:/usr/src/paperless/consume
- /volume1/docker/paperless/scripts:/usr/src/paperless/scripts
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_PRE_CONSUME_SCRIPT: /usr/src/paperless/scripts/pre-consume.sh
gotenberg:
image: docker.io/gotenberg/gotenberg:8
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:2.9.2.1
container_name: paperless-ngx-tika
restart: unless-stopped
docker-compose.env
USERMAP_UID=1026
USERMAP_GID=100
PAPERLESS_TIME_ZONE=Europe/Berlin
PAPERLESS_OCR_LANGUAGE=deu+eng
PAPERLESS_SECRET_KEY=Paper2025
PAPERLESS_ADMIN_USER=admin
PAPERLESS_ADMIN_PASSWORD=admin
PAPERLESS_DBNAME=paperlessdb
PAPERLESS_DBUSER=admin
PAPERLESS_DBPASS=admin
#PAPERLESS_URL=https://paperless.example.com
PAPERLESS_PRE_CONSUME_SCRIPT=/usr/src/paperless/scripts/pre-consume.sh
pre-consum.sh
#!/bin/sh
set -x
# Remove blank pages
/usr/src/paperless/scripts/remove-blank-pages.sh
remove-blank-pages.sh → Wobei er nicht soweit kommt.
#!/bin/bash
set -e -o pipefail
export LC_ALL=C
#IN="$1"
IN="$DOCUMENT_WORKING_PATH"
PAGES=$(pdfinfo "$IN" | grep ^Pages: | tr -dc '0-9')
THRESHOLD=0.002
non_blank() {
for i in $(seq 1 $PAGES) ; do
PERCENT=$(gs -o - -dFirstPage=${i} -dLastPage=${i} -sDEVICE=inkcov "${IN}" | grep CMYK | nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3 + $4;} END { printf "%.5f\n", sum } ')
if awk "BEGIN { exit !($PERCENT > $THRESHOLD) }"; then
echo $i
else
>&2 echo Color-sum is $PERCENT: will remove blank page $i of $IN
fi
done
}
NON_BLANK=$(non_blank)
if [ -n "$NON_BLANK" ]; then
NON_BLANK=$(echo $NON_BLANK | tr ' ' ",")
qpdf "$IN" --replace-input --pages . $NON_BLANK --
fi
Noch jemand ne Idee?
by HarryP: Zusammenführung Mehrfachpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)