Warnung: Wenn dies ein Ordner ist, wird der gesamte Inhalt einschließlich Unterordner und Dokumente gelöscht.
Definieren Sie pfadbasierte Zugriffsregeln für Bereiche Ihres Wikis. Regeln werden in der Reihenfolge ausgewertet. Die erste Übereinstimmung gewinnt.
Erstellen und verwalten Sie Backups Ihrer Wiki-Daten. Backups umfassen alle Dokumente, Bilder und Konfigurationsdateien.
Paperless-ngx ist ein selbst gehostetes Dokumentenmanagementsystem (DMS) zur Digitalisierung, OCR-Erkennung, Verschlagwortung und Archivierung von Dokumenten. Redis dient als Message-Broker, PostgreSQL als Datenbank, Gotenberg zur PDF-Konvertierung und Tika zur Text-/Metadatenextraktion.
Keine.
Tip
Optional
Wenn Paperless-ngx auch von außerhalb des Heimnetzes erreichbar sein soll, werden zusätzlich folgende Komponenten benötigt:
mkdir /paperlessngx
mkdir /paperlessngx/redis
mkdir /paperlessngx/db
mkdir /paperlessngx/data
mkdir /paperlessngx/media
mkdir /paperlessngx/export
mkdir /paperlessngx/trash
mkdir /dokumente
mkdir /archiv
mkdir /scanner_ablage
Im Docker-Ordner folgende Verzeichnisstruktur anlegen:
paperlessngx
paperlessngx/redis
paperlessngx/db
paperlessngx/data
paperlessngx/media
paperlessngx/export
paperlessngx/trash
Note
/dokumente, /archiv und /scanner_ablage liegen außerhalb des paperlessngx-Ordners als eigenständige Host-Verzeichnisse (Originale, Archiv, Scanner-Ablage).
services:
redis:
image: redis:8
command:
- /bin/sh
- -c
- redis-server --requirepass <redis-passwort>
container_name: PaperlessNGX-REDIS
hostname: paper-redis
security_opt:
- no-new-privileges:true
read_only: true
user: 1000001:1000001
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
volumes:
# Für die Proxmox-VM verwenden
- /paperlessngx/redis:/data:rw
# Für die Synology verwenden
# Volume-Nummer ggf. anpassen
- /volume2/docker/paperlessngx/redis:/data:rw
environment:
TZ: Europe/Berlin
restart: always
db:
image: postgres:18
container_name: PaperlessNGX-DB
hostname: paper-db
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "<db-user>"]
timeout: 45s
interval: 10s
retries: 10
volumes:
# Für die Proxmox-VM verwenden
- /paperlessngx/db:/var/lib/postgresql:rw
# Für die Synology verwenden
# Volume-Nummer ggf. anpassen
- /volume2/docker/paperlessngx/db:/var/lib/postgresql:rw
environment:
POSTGRES_DB: <db-name>
POSTGRES_USER: <db-user>
POSTGRES_PASSWORD: <db-passwort>
restart: always
gotenberg:
image: gotenberg/gotenberg:latest
container_name: PaperlessNGX-GOTENBERG
hostname: gotenberg
security_opt:
- no-new-privileges:true
user: 1000001:1000001
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
healthcheck:
test: ["CMD", "curl", "--silent", "--fail", "http://localhost:3000/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
restart: always
tika:
image: docker.io/apache/tika:3.2.3.0
container_name: PaperlessNGX-TIKA
hostname: tika
security_opt:
- no-new-privileges:true
user: 1000001:1000001
healthcheck:
test: ["CMD-SHELL", "bash -c '</dev/tcp/localhost/9998' || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
restart: always
paperless:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: PaperlessNGX
hostname: paperless-ngx
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
ports:
- 8777:8000
volumes:
# Für die Proxmox-VM verwenden
- /paperlessngx/data:/usr/src/paperless/data:rw
- /paperlessngx/media:/usr/src/paperless/media:rw
- /dokumente:/usr/src/paperless/media/documents/originals
- /archiv:/usr/src/paperless/media/documents/archive
- /paperlessngx/export:/usr/src/paperless/export:rw
- /scanner_ablage:/usr/src/paperless/consume:rw
- /paperlessngx/trash:/usr/src/paperless/trash:rw
# Für die Synology verwenden
# Volume-Nummer ggf. anpassen
- /volume2/docker/paperlessngx/data:/usr/src/paperless/data:rw
- /volume2/docker/paperlessngx/media:/usr/src/paperless/media:rw
- /volume2/docker/dokumente:/usr/src/paperless/media/documents/originals
- /volume2/docker/archiv:/usr/src/paperless/media/documents/archive
- /volume2/docker/paperlessngx/export:/usr/src/paperless/export:rw
- /volume2/docker/scanner_ablage:/usr/src/paperless/consume:rw
- /volume2/docker/paperlessngx/trash:/usr/src/paperless/trash:rw
environment:
PAPERLESS_REDIS: redis://:<redis-passwort>@paper-redis:6379
PAPERLESS_DBENGINE: postgresql
PAPERLESS_DBHOST: paper-db
PAPERLESS_DBNAME: <db-name>
PAPERLESS_DBUSER: <db-user>
PAPERLESS_DBPASS: <db-passwort>
PAPERLESS_EMPTY_TRASH_DIR: ../trash
# PAPERLESS_FILENAME_FORMAT: '{{ created_year }}/{{ correspondent }}/{{ document_type }}/{{ title }}'
PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD: 6
PAPERLESS_TASK_WORKERS: 1
USERMAP_UID: 1000001
USERMAP_GID: 1000001
PAPERLESS_SECRET_KEY: <secret-key>
PAPERLESS_TIME_ZONE: Europe/Berlin
PAPERLESS_ADMIN_USER: <admin-user>
PAPERLESS_ADMIN_PASSWORD: <admin-passwort>
PAPERLESS_URL: https://subdomain.domain.tdl
PAPERLESS_CSRF_TRUSTED_ORIGINS: https://subdomain.domain.tdl
PAPERLESS_OCR_LANGUAGE: deu+eng
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
PAPERLESS_CONSUMER_ENABLE_POLLING: true
PAPERLESS_CONSUMER_POLLING: 60
restart: always
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
tika:
condition: service_healthy
gotenberg:
condition: service_healthy
Warning
Redis-Passwort, Datenbank-User/Datenbankname/Datenbank-Passwort, PAPERLESS_SECRET_KEY sowie Admin-User und Admin-Passwort sind im obigen Stack durch Platzhalter ersetzt — siehe Notizen.
paperlesshttp://<host-ip>:8777Note
Healthchecks: redis per redis-cli ping, db per pg_isready, gotenberg per curl auf /health (Port 3000), tika per TCP-Check auf Port 9998, paperless per curl auf Port 8000.
| Oberfläche | Service | Host-Pfad | Container-Pfad | Zweck |
|---|---|---|---|---|
| Proxmox-VM | redis | /paperlessngx/redis |
/data (rw) |
Redis-Persistenz |
| Proxmox-VM | db | /paperlessngx/db |
/var/lib/postgresql (rw) |
PostgreSQL-Datenbankdateien |
| Proxmox-VM | paperless | /paperlessngx/data |
/usr/src/paperless/data (rw) |
Paperless-Index und Konfiguration |
| Proxmox-VM | paperless | /paperlessngx/media |
/usr/src/paperless/media (rw) |
Verarbeitete Dokumente (Medien) |
| Proxmox-VM | paperless | /dokumente |
/usr/src/paperless/media/documents/originals |
Original-Dokumente |
| Proxmox-VM | paperless | /archiv |
/usr/src/paperless/media/documents/archive |
Archivierte Dokumente |
| Proxmox-VM | paperless | /paperlessngx/export |
/usr/src/paperless/export (rw) |
Export-Verzeichnis |
| Proxmox-VM | paperless | /scanner_ablage |
/usr/src/paperless/consume (rw) |
Scanner-Ablage (Consume-Ordner) |
| Proxmox-VM | paperless | /paperlessngx/trash |
/usr/src/paperless/trash (rw) |
Papierkorb |
| Synology | redis | /volume2/docker/paperlessngx/redis |
/data (rw) |
Redis-Persistenz |
| Synology | db | /volume2/docker/paperlessngx/db |
/var/lib/postgresql (rw) |
PostgreSQL-Datenbankdateien |
| Synology | paperless | /volume2/docker/paperlessngx/data |
/usr/src/paperless/data (rw) |
Paperless-Index und Konfiguration |
| Synology | paperless | /volume2/docker/paperlessngx/media |
/usr/src/paperless/media (rw) |
Verarbeitete Dokumente (Medien) |
| Synology | paperless | /volume2/docker/dokumente |
/usr/src/paperless/media/documents/originals |
Original-Dokumente |
| Synology | paperless | /volume2/docker/archiv |
/usr/src/paperless/media/documents/archive |
Archivierte Dokumente |
| Synology | paperless | /volume2/docker/paperlessngx/export |
/usr/src/paperless/export (rw) |
Export-Verzeichnis |
| Synology | paperless | /volume2/docker/scanner_ablage |
/usr/src/paperless/consume (rw) |
Scanner-Ablage (Consume-Ordner) |
| Synology | paperless | /volume2/docker/paperlessngx/trash |
/usr/src/paperless/trash (rw) |
Papierkorb |
| Variable | Wert | Bedeutung |
|---|---|---|
TZ |
Europe/Berlin | Zeitzone |
| Startbefehl | redis-server --requirepass <redis-passwort> |
Setzt das Redis-Passwort |
| Variable | Wert | Bedeutung |
|---|---|---|
POSTGRES_DB |
(siehe Notizen) | Name der Datenbank |
POSTGRES_USER |
(siehe Notizen) | Datenbank-Benutzer |
POSTGRES_PASSWORD |
(siehe Notizen) | Datenbank-Passwort |
| Variable | Wert | Bedeutung |
|---|---|---|
PAPERLESS_REDIS |
redis://:<redis-passwort>@paper-redis:6379 |
Verbindung zu Redis |
PAPERLESS_DBENGINE |
postgresql | Datenbank-Engine |
PAPERLESS_DBHOST |
paper-db | Hostname der Datenbank |
PAPERLESS_DBNAME |
(siehe Notizen) | Datenbankname |
PAPERLESS_DBUSER |
(siehe Notizen) | Datenbank-Benutzer |
PAPERLESS_DBPASS |
(siehe Notizen) | Datenbank-Passwort |
PAPERLESS_EMPTY_TRASH_DIR |
../trash |
Zielverzeichnis beim Leeren des Papierkorbs |
PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD |
6 | Schwellenwert für automatische Seitenrotation bei der OCR |
PAPERLESS_TASK_WORKERS |
1 | Anzahl der Task-Worker |
USERMAP_UID |
1000001 | Benutzer-ID für Dateiberechtigungen |
USERMAP_GID |
1000001 | Gruppen-ID für Dateiberechtigungen |
PAPERLESS_SECRET_KEY |
(siehe Notizen) | Django-Secret-Key der Instanz |
PAPERLESS_TIME_ZONE |
Europe/Berlin | Zeitzone |
PAPERLESS_ADMIN_USER |
(siehe Notizen) | Admin-Benutzername |
PAPERLESS_ADMIN_PASSWORD |
(siehe Notizen) | Admin-Passwort |
PAPERLESS_URL |
https://subdomain.domain.tdl |
Basis-URL der Instanz |
PAPERLESS_CSRF_TRUSTED_ORIGINS |
https://subdomain.domain.tdl |
Vertrauenswürdige Origin für CSRF-Schutz |
PAPERLESS_OCR_LANGUAGE |
deu+eng | OCR-Sprachen |
PAPERLESS_TIKA_ENABLED |
1 | Aktiviert Tika-Integration |
PAPERLESS_TIKA_GOTENBERG_ENDPOINT |
http://gotenberg:3000 |
Adresse des Gotenberg-Dienstes |
PAPERLESS_TIKA_ENDPOINT |
http://tika:9998 |
Adresse des Tika-Dienstes |
PAPERLESS_CONSUMER_ENABLE_POLLING |
true | Aktiviert Polling statt inotify für den Consume-Ordner |
PAPERLESS_CONSUMER_POLLING |
60 | Polling-Intervall in Sekunden |
Neustart-Verhalten: always (alle Services)