- PUID/PGID Unterstützung für Unraid/Docker hinzugefügt - Entrypoint-Skript für Benutzer-Wechsel - ZUGFeRD-Dateien werden jetzt direkt in Zielordner verschoben (kein extra zugferd/ Unterordner) - Dokumentation aktualisiert Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
160 lines
4 KiB
Markdown
Executable file
160 lines
4 KiB
Markdown
Executable file
# 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**
|
|
```bash
|
|
docker load -i dateiverwaltung-image.tar
|
|
```
|
|
|
|
**Option B: Image selbst bauen**
|
|
```bash
|
|
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.
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```sql
|
|
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)
|
|
|
|
```yaml
|
|
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
|