Wie Dokumente ins System kommen
Paperless-ngx kennt mehrere Wege wie Dokumente ins Archiv gelangen. Im Einsatz sind zwei davon: ein Konsumenten-Ordner den der Scanner direkt beschreiben kann, und ein IMAP-Abruf der ein E-Mail-Postfach überwacht und Anhänge automatisch importiert.
Dokument-Quellen Weg 1: Scanner (eSCL/AirScan) Brother Scanner → consume/-Ordner (bind-mount) Paperless erkennt neue Dateien → OCR → Archiv Weg 2: E-Mail IMAP Rechnung per E-Mail erhalten → an Paperless-Adresse weiterleiten → E-Mail landet in IMAP-Subfolder INBOX.paperless → Paperless-Scheduler fragt IMAP ab → PDF-Anhang → OCR → Archiv → E-Mail wird als gelesen markiert / gelöscht Paperless auf Server2 (10.0.1.82) Stack: Paperless-ngx + PostgreSQL 15 + Redis Port: 8000 → Nginx → paperless.local
Docker Compose auf Server2
services: paperless: image: ghcr.io/paperless-ngx/paperless-ngx:latest container_name: paperless restart: unless-stopped ports: - "10.0.1.82:8000:8000" depends_on: - paperless-db - paperless-redis 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://paperless-redis:6379 PAPERLESS_DBHOST: paperless-db PAPERLESS_DBNAME: paperless PAPERLESS_DBUSER: paperless PAPERLESS_DBPASS: sicheres-passwort PAPERLESS_URL: https://paperless.local PAPERLESS_SECRET_KEY: langer-zufaelliger-string PAPERLESS_OCR_LANGUAGE: deu+eng PAPERLESS_TIME_ZONE: Europe/Berlin USERMAP_UID: "1000" USERMAP_GID: "1000" paperless-db: image: postgres:15 container_name: paperless-db restart: unless-stopped environment: POSTGRES_DB: paperless POSTGRES_USER: paperless POSTGRES_PASSWORD: sicheres-passwort volumes: - ./pgdata:/var/lib/postgresql/data paperless-redis: image: redis:7-alpine container_name: paperless-redis restart: unless-stopped volumes: - ./redisdata:/data
mkdir -p /opt/paperless
cd /opt/paperless
docker compose up -d
docker compose logs -f paperless
# Admin-User anlegen
docker compose exec paperless python3 manage.py createsuperuser
paperless.local via Reverse Proxy
server { listen 443 ssl; server_name paperless.local; ssl_certificate /etc/nginx/certs/homelab.pem; ssl_certificate_key /etc/nginx/certs/homelab-key.pem; # Für große Dokument-Uploads client_max_body_size 50M; location / { proxy_pass http://10.0.1.82:8000; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 300; } }
Subfolder beim Hoster anlegen
Paperless überwacht ein IMAP-Postfach und importiert E-Mail-Anhänge. Damit nicht jede E-Mail importiert wird, legt man einen dedizierten Subfolder an und leitet nur gewünschte Mails dorthin weiter. Bei Dovecot-basierten Hostern (sehr verbreitet bei deutschen Hostern) gibt es eine Besonderheit beim Subfolder-Pfad — dazu mehr in Abschnitt 06.
paperless → als Unterordner von INBOX.
paperless verschieben.
Oder: manuell Rechnungs-Mails in den Ordner ziehen.
— IMAP-Server (z.B.
imap.example.de)— Port: 995 (bei Dovecot kann das IMAP über SSL sein, nicht POP3!)
— Benutzername: vollständige E-Mail-Adresse
— Passwort: E-Mail-Passwort
Ausgehende IMAP-Verbindung erlauben
Paperless auf Server2 muss aktiv das IMAP-Postfach beim Hoster abfragen — das ist ausgehender Traffic von LAN nach WAN. Die Standard-Policy LAN-to-WAN erlaubt das normalerweise bereits, aber wenn nur bestimmte Ports erlaubt sind oder die Policy zu restriktiv ist, braucht man eine spezifische Regel.
# Adressobjekt für Server2 config firewall address edit "Server2" set subnet 10.0.1.82 255.255.255.255 next end # Custom Service für IMAP SSL Port 995 config firewall service custom edit "IMAP-SSL-995" set protocol TCP set tcp-portrange 995 next end # Firewall Policy: Server2 → IMAP-Server config firewall policy edit 0 set name "Paperless-IMAP" set srcintf "lan" set dstintf "wan" set srcaddr "Server2" set dstaddr "all" set service "IMAP-SSL-995" set action accept set nat enable next end
Direkt auf Server2 testen ob Port 995 erreichbar ist:
nc -zv imap.example.de 995
Ausgabe "Connection succeeded" → Firewall erlaubt die Verbindung.
Dann mit openssl den Server-Banner prüfen:
openssl s_client -connect imap.example.de:995
Der Dovecot-Subfolder-Fallstrick
In Paperless unter Settings → Mail Rules einen neuen Account anlegen, dann eine Mail Rule für den Subfolder. Hier lauert der wichtigste Fallstrick:
Bei Dovecot-basierten IMAP-Servern (sehr verbreitet bei deutschen Hostern)
werden Subfolder-Pfade mit einem Punkt getrennt, nicht mit einem Slash.
Falsch: INBOX/paperless
Richtig: INBOX.paperless
Mit dem falschen Trennzeichen findet Paperless den Ordner nicht und überspringt
den Account still ohne Fehlermeldung — die Logs zeigen nur "no mails found".
| Feld | Wert | Notiz |
|---|---|---|
| IMAP Server | imap.example.de | Hoster-spezifisch |
| Port | 995 | IMAP mit SSL — nicht POP3! |
| Sicherheit | SSL/TLS | |
| Benutzername | vollständige E-Mail-Adresse | |
| Ordner | INBOX.paperless | Punkt, nicht Slash! |
| Aktion | Mark as read / Delete | nach Import |
Server, Port, Credentials eintragen, Verbindung testen.
— Account: der gerade angelegte
— Folder:
INBOX.paperless (mit Punkt!)— Action: Consume attachments
— After consumption: Mark as read (oder Delete)
paperless-Ordner verschieben.
Paperless prüft standardmäßig alle 10 Minuten — oder manuell anstoßen:docker compose exec paperless python3 manage.py mail_fetcher
Port 995 ist offiziell POP3S — aber Dovecot kann auf diesem Port auch IMAP betreiben.
Das openssl s_client-Banner zeigt +OK Dovecot ready
was nach POP3 aussieht, aber IMAP funktioniert trotzdem wenn man
in Paperless IMAP als Protokoll wählt.
Wer unsicher ist: einfach IMAP wählen und testen — es klappt.
Brother Scanner via eSCL / AirScan
Moderne Brother-Scanner unterstützen das eSCL-Protokoll (auch AirScan genannt). Damit kann der Scanner direkt in den Paperless-Konsumenten-Ordner scannen — kein Treiber auf dem Server nötig, keine spezielle Software.
# Option 1: Samba-Share auf den consume/-Ordner # Dann am Scanner als Scan-to-SMB-Ziel eintragen # Option 2: Scanner scannt direkt über eSCL # Paperless consume-Ordner via bind-mount: # ./consume:/usr/src/paperless/consume (in docker-compose) # # eSCL-fähiges Tool auf dem Server: sudo apt install sane-utils # Scanner-IP prüfen scanimage -L
Viele Brother-Scanner können direkt an eine E-Mail-Adresse scannen.
Wenn das Scan-Ziel auf die Paperless-IMAP-Adresse zeigt und die Mail
automatisch in den paperless-Subfolder einsortiert wird,
ist keine weitere Konfiguration nötig — IMAP-Integration übernimmt den Rest.
Was schiefgehen kann
INBOX/paperless statt INBOX.paperless).
openssl s_client -connect imap.server.de:995
verifizieren, dann IMAP-Befehle manuell eingeben:A LOGIN user@domain.de passwortA LIST "" "*"Die Ausgabe zeigt alle verfügbaren Ordner mit exakten Pfadnamen.
PAPERLESS_OCR_LANGUAGE in der docker-compose.yml prüfen.
Für deutsche Dokumente: deu+eng setzen.
Nur eng (Standard) erkennt Umlaute und deutschsprachigen Text deutlich schlechter.
client_max_body_size 50M setzen und Nginx neu laden:
docker exec nginx nginx -s reload.