|
|
||
|---|---|---|
| .. | ||
| backend | ||
| frontend | ||
| regeln | ||
| docker-compose-unraid.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| entrypoint.sh | ||
| README.md | ||
Dateiverwaltung v2.0.3
Dokumenten-Management-System für automatische Verarbeitung, Sortierung und Benennung von Dokumenten.
Features
- Mail-Abruf: Automatischer Abruf von Attachments aus IMAP-Postfächern
- Grobsortierung: Dateien nach Typ verschieben (PDF, Bilder, ZUGFeRD, Signiert)
- PDF-Verarbeitung: Text-Extraktion und OCR für gescannte Dokumente
- ZUGFeRD-Erkennung: Automatische Erkennung von ZUGFeRD-Rechnungen
- Regel-Engine: Flexible Regeln für Erkennung und automatische Benennung
- Zeitpläne: Automatische Ausführung per Scheduler
Deployment mit Portainer
1. Image bauen oder pullen
Option A: Image aus tar laden
docker load -i dateiverwaltung-image.tar
Option B: Image selbst bauen
docker build -t dateiverwaltung:latest .
2. Container in Portainer erstellen
Neuen Container erstellen mit folgenden Einstellungen:
Image: dateiverwaltung:latest
Port Mapping:
| Host | Container |
|---|---|
| 8080 | 8000 |
Volumes:
| Host | Container | Beschreibung |
|---|---|---|
/mnt/user/... |
/mnt/user/... |
Zugriff auf NAS-Ordner |
Environment Variables:
| Variable | Beschreibung | Beispiel |
|---|---|---|
DATABASE_URL |
Datenbank-Verbindung (MariaDB/MySQL) | mysql+pymysql://user:pass@host/db |
TZ |
Zeitzone | Europe/Berlin |
PUID |
User-ID für Dateiberechtigungen | 1003 |
PGID |
Group-ID für Dateiberechtigungen | 100 |
Wichtig für Unraid/NAS: PUID und PGID sollten auf den Benutzer gesetzt werden, der Zugriff auf die gemounteten Ordner hat. So werden Dateien mit den richtigen Berechtigungen erstellt.
# Benutzer-ID herausfinden:
id <benutzername>
# Beispiel: uid=1003(deep) gid=100(users)
Beispiel DATABASE_URL Formate:
# MariaDB/MySQL
mysql+pymysql://benutzer:passwort@192.168.1.100:3306/dateiverwaltung
# SQLite (nur für Tests)
sqlite:///dateiverwaltung.db
3. Datenbank vorbereiten
Bei MariaDB/MySQL die Datenbank vorher erstellen:
CREATE DATABASE dateiverwaltung CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'dateiverwaltung'@'%' IDENTIFIED BY 'sicheres_passwort';
GRANT ALL PRIVILEGES ON dateiverwaltung.* TO 'dateiverwaltung'@'%';
FLUSH PRIVILEGES;
Die Tabellen werden beim ersten Start automatisch erstellt.
4. Container starten
Nach dem Start ist die Web-Oberfläche erreichbar unter:
http://<server-ip>:8080
Docker Compose (Alternative)
version: '3.8'
services:
dateiverwaltung:
image: dateiverwaltung:latest
container_name: dateiverwaltung
restart: unless-stopped
ports:
- "8080:8000"
volumes:
- /mnt:/mnt
environment:
- TZ=Europe/Berlin
- DATABASE_URL=mysql+pymysql://user:pass@db-host/dateiverwaltung
Konfiguration
Alle Einstellungen werden in der Datenbank gespeichert:
- Postfächer: IMAP-Server, Zugangsdaten, Filter
- Quell-Ordner: Pfade, Dateitypen, ZUGFeRD/Signiert-Behandlung
- Sortier-Regeln: Erkennungsmuster, Extraktion, Benennungsschema
- Zeitpläne: Automatische Ausführung
Module
Mail-Fetcher
Holt Attachments aus IMAP-Postfächern:
- Filter nach Dateitypen und Größe
- Nur ungelesene oder alle Mails
- Alle IMAP-Ordner durchsuchen
Grobsortierung
Sortiert Dateien nach Typ:
- Konfigurierbare Dateitypen
- ZUGFeRD-Erkennung
- Signierte PDF-Erkennung
- Optional: Direkt verschieben ohne Regeln
PDF-Processor
- Text-Extraktion mit pdfplumber/pypdf
- OCR mit ocrmypdf + Tesseract (deutsch)
- ZUGFeRD-Erkennung via factur-x
Sortier-Regeln
- Keyword-basierte Erkennung
- Regex für Feldextraktion (Datum, Betrag, Nummer)
- Flexibles Benennungsschema
Benennungsschema Beispiele
# Rechnungen
{datum} - {firma} - Rechnung {nummer}.pdf
-> 2026-02-01 - Amazon - Rechnung 123456.pdf
# Mit Betrag
{datum} - {firma} - {betrag} EUR.pdf
-> 2026-02-01 - Amazon - 49.99 EUR.pdf
Systemanforderungen
- Docker oder Python 3.11+
- MariaDB/MySQL (empfohlen) oder SQLite
- Für OCR: tesseract-ocr, ocrmypdf