Paperless-ngx auf Synology-DiskStations
Paperless-ngx – Ein Sammelthread für ein DMS via Docker auf dem NAS
Aktuelle Version von Paperless-ngx
Features
- Enhancement: require totp code for obtain auth token by @shamoon in #8936
Bug Fixes
- Enhancement: require totp code for obtain auth token by @shamoon in #8936
- Fix: reflect doc links in bulk modify custom fields by @shamoon in #8962
- Fix: also ensure symmetric doc link removal on bulk edit by @shamoon in #8963
Was ist Paperless-ngx?
Paperless-ngx ist ein Fork von Paperless-ng, einem Dokumentenmanagementsystem (DMS), welches als Container unter Docker/Container Manager (ab DSM 7.2) läuft. Zusammen mit einem Scanner könnt ihr euer Büro zu Hause papierlos machen und findet über Schlagwörter schnell die Dokumente, die ihr sucht. Eigentlich können gescannte Dokumente auch nummeriert werden, sodass ihr sie auch im Original schnell wiederfindet, wenn ihr sie doch mal brauchen solltet.
Ist Paperless-ngx überhaupt etwas für mich?
Das kann man natürlich immer nur für sich selbst beantworten. Manche Personen greifen lieber direkt auf ihre Dokumente in den Ordnern zu, für diejenigen ist vielleicht synOCR besser geeignet. Wer Paperless-ngx nutzen möchte, sollte die gesamte Verwaltung von dem Programm machen lassen und Änderungen nur über die Oberfläche vornehmen. Die Dateien lassen sich trotzdem ohne große Probleme aus der Ordnerstruktur heraus kopieren oder über die Oberfläche herunterladen.
Wer noch weitere Gedanken zur Entscheidung braucht, dem sei der Thread Paperless-ngx: Ein kurzer Erfahrungsbericht sowie ein erstes Resümee von Tommes empfohlen. Dort wird über viele Fragen diskutiert, die immer mal wieder hier im Forum aufkommen, weil Paperless-ngx schon eine feine Sache, aber nicht für jede Arbeitsweise geeignet ist. Solche Fragen sollte man jedenfalls klären, bevor man die ersten 1000 Dokumente verarbeitet 😉
Wie installiere ich Paperless-ngx?
Wie so oft bei Docker gibt es hier unterschiedliche Herangehensweisen. Man kann für die Verwaltung aller seiner Container andere Containerdienste wie Portainer verwenden oder auch den Container-Manager vom Synology selbst; allerdings verwende ich selbst ausschließlich die Konfigurationsdateien im YML-Format. Deswegen beachtet bitte, dass beispielsweise Anleitungen von Magnus auf seiner Seite Magnus Hosting ein wenig anders aussehen als das, was ihr hier seht.
Ordner und Konfigurationsdatei erstellen
Geht zu Eurem Docker-Ordner (meistens: /volume1/docker
) und erstellt einen Unterordner /paperlessngx
und innerhalb des Ordners noch die Ordner:
- config
- consume
- data
- export
- exportpostgres
- media
- pgdata
- redis
Hier werden die Daten außerhalb des Containers gespeichert, das ermöglicht Euch, bei Problemen im Zweifelsfalle den ganzen Ordner wieder zu kopieren und nach Eingabe der Befehle unten dort weiterarbeiten zu können.
Dann wenden wir uns der Konfigurationsdatei zu. Die Macher von Paperless-ngx haben dazu auf der GitHub-Seite bereits mehrere Beispiele veröffentlicht. Im Zweifelsfalle nehmt einfach eine der vorhandenen Dateien, man kann diese jederzeit nachträglich an seine Bedürfnisse anpassen. Erstellt werden
- docker-compose.yml
- docker-compose.env
Und zwar im Ordner config
. Die env-Datei kann man auch anders benennen, dann muss die entsprechende Zeile in der yml halt anpassen. Für die yml-Datei nutze ich folgende Einstellungen:
version: "3.6"
services:
broker:
container_name: redis
image: redis:latest
restart: unless-stopped
volumes:
- ../redis:/data
db:
container_name: postgres
image: postgres:15
restart: unless-stopped
volumes:
- ../pgdata:/var/lib/postgresql/data
- /volume1/docker/paperlessngx/exportpostgres:/var/lib/postgresql/data/backup
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless
webserver:
container_name: paperlessngx
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
ports:
- 34343: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
- ../export:/usr/src/paperless/export
- ../consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
volumes:
data:
media:
pgdata:
redisdata:
Sehr wichtig ist es hier, die Version der Datenbank festzuschreiben, wenn ihr Postgres verwendet. Solltet ihr die Version hier nicht festlegen, zumindest auf die Hauptversion, dann wird es bei einem Wechsel auf die nächste Hauptversion, nach meiner Anleitung wäre das Version 16, dazu kommen, dass die Datenbank nicht mehr erreichbar ist. Da müsst ihr wirklich aufpassen. Im schlimmsten Fall zerschießt ihr euch die komplette Datenbank. Und wenn ihr dann keine Sicherung habt, dann könnt ihr die ganze Installation neu aufsetzen. Auch bei Paperless gilt, Backup ist Trumpf!
Einrichtung via Terminal bzw. Aufgabenplaner
Die nächsten Schritte nehmt Ihr im Terminal (macOS) bzw. der Konsole (Windows) vor via SSH (Systemsteuerung → Terminal/SSH, orange) oder ihr nutzt einfach den Aufgabenplaner unter DSM. Den findet Ihr unter Systemsteuerung → Aufgabenplaner, rot. Folgende Befehle bitte dort eingeben, sudo erfordert das Admin-Passwort oder Ihr loggt Euch direkt als root ein. Die Konfiguration habe ich selbst über das Terminal/Konsole gemacht.
- cd /volume1/docker/paperlessngx/config
- sudo docker-compose pull
- sudo docker-compose run --rm webserver createsuperuser
- sudo docker-compose up -d
Folgendes machen die Befehle dabei:
- Navigiert in das entsprechende Verzeichnis (cd → «change directory»)
- „Pullt“ das/die entsprechenden Images, lädt also hier Paperless, redis und PostgreSQL in der festgelegten Version herunter.
- Erstellt einen Admin – das habe ich nicht über den Aufgabenplaner ausgeführt, da fehlt die entsprechende Eingabemöglichkeit!
- Startet die Container
Wenn alles geklappt hat, findet Ihr nach der Anleitung oben Paperless unter http://domain:34343
. Den Port 34343 könnt Ihr logischerweise anpassen.