
Dokumentenmanagement
Voraussetzung (Meine Konfiguration)
- Proxmox
- LXC Ubuntu 22.04-3 Installation
- Docker
- Docker-Compose
- Portainer
Was ist Paperless?
Paperless soll einen möglichst papierlosen Alltag/Büro ermöglichen, in dem z. B Rechnungen, Dokumente, Handbücher, Anleitungen usw. als PDF, TXT, PNG, JPEG archiviert werden. Dabei ist es egal ob man diese per E-Mailanhang erhält oder selber einscannt. Paperless kann über einen beliebigen Webbrowser auf dem lokalen PC oder LAN genutzt werden. Dabei ist es möglich Netzwerkordner ein zu binden, in welche Dokumente direkt hinein gescannt oder kopiert werden, um von Paperless automatisch verarbeitet zu werden. Auch lässt sich Paperless mit IMAP E-Mailpostfächer verbinden. Über konfigurierbare Filter scannt Paperless die eintreffenden E-Mails und archiviert diese oder deren Anhänge.
Doumente lassen sich bestimmten vorab selbst definierten Kategorien zu weisen z. B Bank, Büroausgaben, Fahrkosten usw. Dabei lernt Paperless die Dokumente korrekt zu zuweise.
Paperless verarbeitet die Dokumente per OCR. Das heißt, dass alle Dokumente durchsuchbar werden. Suche ich nach einem Bestimmten Begriff/Name, kann Paperless sämtliche Dokumente danach durchsuchen. Das ermöglicht das schnelle Auffinden von Informationen.
Quellen/Ressourcen:
Installation unter Portainer
Wir öffnen die Paperless Github Seite:
Dort öffnet ihr die Datei docker-compose.portainer.yml:
Geht rechts oben auf den Button Copy raw file:
(Es ist wichtig das ihr die Datei als RAW kopiert!)
Original .yml Datei vom 14.08.2023
# 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: paperless
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
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
# 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: 1000
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:
Geht in Portainer in das Menü Stacks –> Add stacks –> Web editor und fügt dort die zuvor kopierte .yml Datei ein.
Den Anfangstext habe ich entfern, damit es etwas übersichtlicher ist.
Vergebt einen Namen z.B paperless-ngx.
Port:
„8010:8000“
Die 8010 dar nicht bereits durch einen anderen Container belegt sein. Ist dies der Fall, einfach einen beliebig freien fergeben. Port 8000 darf nicht geändert werden, dass ist der Container.
Pfad:
Hier muss ./export und ./consume angepasst werden.
Bei mir befindet sich Docker unter:
(Solltest du ein anderes Verzeichnis nutzen, dann pass den Pfad dementsprechend an.)
/var/lib/docker
und die Volumes (Verzeichnisse)
/var/lib/docker/volumes
Original:
- volumes:
– data:/usr/src/paperless/data
– media:/usr/src/paperless/media
– ./export:/usr/src/paperless/export
– ./consume:/usr/src/paperless/consume
Angepasst:
- volumes:
– data:/usr/src/paperless/data
– media:/usr/src/paperless/media
– /var/lib/docker/volumes/paperless-ngx/export:/usr/src/paperless/export
– /var/lib/docker/volumes/paperless-ngx/consume:/usr/src/paperless/consume
Nutzt man wie ich Proxmox mit einem LXC Container, gibt es nur den Benutzer root
Original:
USERMAP_UID: 1000
USERMAP_GID: 100
Anpassung LXC Container:
(Da Paperless bei mir nur über VPN aus dem Internet erreichbar sein wir, ist es kein Problem das hier das ganze unter root läuft.)
USERMAP_UID: 0
USERMAP_GID: 0
Konfiguration Anpassungen:
Details findet man hier für eine individuelle Anpassung:
https://docs.paperless-ngx.com/configuration/
Interessieren tut und hier nur der Bereich environment
Original:
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
Anpassungen:
(Das sind meine Anpassungen die jedoch zwingend erforderlich sind. Optionale Anpassungen könnt ihr anhand der Dokumentation einfügen. Alle Parameter werden einfach unter enviroment: eingefügt.)
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: dbPAPERLESS_SECRET_KEY: Dein Passwort
PAPERLESS_ADMIN_USER: Dein admin Name
PAPERLESS_ADMIN_PASSWORD: Das admin Passwort
PAPERLESS_OCR_LANGUAGE: deu für Deutsch
Seit ihr mit allem fertig, klickt auf Deploy the stack.
Geduld, dass kann eine Weile dauern!
Erreichbar ist Paperless nun über http://deine-ip:8010
Übersicht:
Stack:
Container:
Angepasste .yml Datei
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: paperless
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
- /var/lib/docker/volumes/paperless-ngx/export:/usr/src/paperless/export
- /var/lib/docker/volumes/paperless-ngx/consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_SECRET_KEY: 5chw€!zAu5$t477ungGroße@ng3s€henTr€ten
PAPERLESS_ADMIN_USER: admin
PAPERLESS_ADMIN_PASSWORD: $7arÜbernahm€D@n@chP0$7Mon47K€nn7
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: 0
USERMAP_GID: 0
# 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:
Fernzugriff (VPN)
Für den Fernzugriff nutze ich eine VPN Verbindung über WireGuard.
Moderen Router bringen VPN in der Regel schon von Haus aus mit.
Wer eine aktuelle FritzBox nutzt so wie, kann mit wenigen Klicks den integrierten WireGuard Server in betrieb nehmen.
Als App für den Zugriff auf Paperless nutze ich:
Paperless Mobile:
Direktdownload:
F-Droid:
https://f-droid.org/de/
(Hier muss jedoch die Erweiterung Droid-ify installiert werden.)
oder