docker.dateiverwaltung/INSTALLATION.md
data 21e1ffe9e2 Version 1.1: Dateimanager mit 3-Panel Layout
Neue Features:
- 3-Panel Dateimanager (Ordnerbaum, Dateiliste, Vorschau)
- Separates Vorschau-Fenster für zweiten Monitor
- Resize-Handles für flexible Panel-Größen (horizontal & vertikal)
- Vorschau-Panel ausblendbar wenn externes Fenster aktiv
- Natürliche Sortierung (Sonderzeichen → Zahlen → Buchstaben)
- PDF-Vorschau mit Fit-to-Page
- Email-Attachment Abruf erweitert

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 12:51:40 +01:00

489 lines
12 KiB
Markdown

# Dateiverwaltung - Installation & Deployment
**Version 1.1**
## Übersicht
Diese Anleitung beschreibt die Installation der Dateiverwaltung mit Docker und Portainer.
### Neue Features in Version 1.1
- **Dateimanager mit 3-Panel Layout** (Ordnerbaum, Dateiliste, Vorschau)
- **Separates Vorschau-Fenster** - öffnet auf zweitem Monitor
- **Resize-Handles** für flexible Panel-Größen (auch im vertikalen Modus)
- **Vorschau-Panel ausblendbar** wenn externes Fenster aktiv
- **Natürliche Sortierung** (Sonderzeichen → Zahlen → Buchstaben)
- **PDF-Vorschau** mit Fit-to-Page (erste Seite komplett sichtbar)
---
## 1. Voraussetzungen
- Docker & Docker Compose installiert
- Portainer (optional, für Web-UI Verwaltung)
- Zugriff auf die Ordner, die verwaltet werden sollen
---
## 2. Image erstellen
### Option A: tar.gz erstellen und in Portainer hochladen
1. **Auf deinem Rechner - Archiv erstellen:**
```bash
cd /pfad/zum/projekt/docker.dateiverwaltung
tar -czvf dateiverwaltung.tar.gz *
```
2. **In Portainer:**
- **Images** → **Build image**
- **Name:** `dateiverwaltung:latest`
- **Build method:** Upload
- **Select file:** Die erstellte `dateiverwaltung.tar.gz` hochladen
- **Build the image** klicken
3. Warten bis "Successfully built" erscheint
### Option B: Auf dem Server bauen (einfacher)
```bash
# Projektordner erstellen
mkdir -p /opt/dateiverwaltung
cd /opt/dateiverwaltung
# Dateien kopieren (oder git clone)
# Alle Projektdateien hierhin kopieren
# Image bauen
docker build -t dateiverwaltung:latest .
```
### Option C: Mit Docker Compose bauen
```bash
cd /opt/dateiverwaltung
docker compose build
```
Das Image heißt dann `dockerdateiverwaltung-dateiverwaltung` (oder je nach Ordnername).
---
## 3. Schnellstart mit Docker Compose
### 2.1 Repository klonen oder Dateien kopieren
```bash
git clone <repository-url> /opt/dateiverwaltung
cd /opt/dateiverwaltung
```
### 2.2 Umgebungsvariablen konfigurieren
Erstelle eine `.env` Datei:
```bash
cp .env.example .env
nano .env
```
### 2.3 Container starten
```bash
docker compose up -d
```
Die Anwendung ist dann unter `http://localhost:8000` erreichbar.
---
## 4. Installation mit Portainer
### 4.1 Image bauen (falls noch nicht geschehen)
**Methode 1: Direkt auf dem Server**
```bash
cd /opt/dateiverwaltung
docker build -t dateiverwaltung:latest .
```
**Methode 2: In Portainer**
1. **Images****Build image**
2. Name: `dateiverwaltung:latest`
3. Upload: Projektdateien als tar.gz hochladen
```bash
# Auf deinem PC/Server:
cd /pfad/zum/projekt
tar -czvf dateiverwaltung.tar.gz .
# Diese Datei dann in Portainer hochladen
```
4. **Build the image** klicken
### 4.2 Stack erstellen
1. Öffne Portainer → **Stacks****Add Stack**
2. Name: `dateiverwaltung`
3. Wähle **Web editor** und füge folgende Konfiguration ein:
```yaml
services:
dateiverwaltung:
# WICHTIG: Entweder "image" ODER "build" verwenden, nicht beides!
# Option 1: Bereits gebautes Image verwenden
image: dateiverwaltung:latest
# Option 2: Image beim Deploy bauen (Projektdateien müssen auf Server liegen)
# build:
# context: /opt/dateiverwaltung
# dockerfile: Dockerfile
container_name: dateiverwaltung
restart: unless-stopped
ports:
- "${PORT:-8000}:8000"
volumes:
# Persistente Daten (Datenbank) - WICHTIG!
- ${DATA_PATH:-/opt/dateiverwaltung/data}:/app/data
# Quell-Ordner: Hier liegen die zu sortierenden Dateien
- ${INBOX_PATH:-/mnt/inbox}:/mnt/inbox
# Ziel-Ordner: Hierhin werden sortierte Dateien verschoben
- ${ARCHIV_PATH:-/mnt/archiv}:/mnt/archiv
# OCR-Backup Ordner (für Original-PDFs vor OCR)
- ${BACKUP_PATH:-/mnt/backup}:/mnt/backup
# Optional: Zusätzliche Ordner einbinden
# - /mnt/nas/dokumente:/mnt/dokumente
# - /mnt/scans:/mnt/scans
environment:
- TZ=${TIMEZONE:-Europe/Berlin}
- DATABASE_URL=sqlite:////app/data/dateiverwaltung.db
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
```
### 4.4 Environment Variables in Portainer
Scrolle runter zu **Environment variables** und füge folgende Variablen hinzu:
| Variable | Beschreibung | Beispielwert |
|----------|--------------|--------------|
| `PORT` | Port für Web-UI | `8000` |
| `TIMEZONE` | Zeitzone | `Europe/Berlin` |
| `DATA_PATH` | Pfad für Datenbank (persistent!) | `/opt/dateiverwaltung/data` |
| `INBOX_PATH` | Ordner mit unsortieren Dateien | `/home/user/Dokumente/Inbox` |
| `ARCHIV_PATH` | Zielordner für sortierte Dateien | `/home/user/Dokumente/Archiv` |
| `BACKUP_PATH` | Backup-Ordner für PDFs vor OCR | `/home/user/Dokumente/Backup` |
### 4.5 Deploy Stack
Klicke auf **Deploy the stack**.
---
## 5. Komplette Schritt-für-Schritt Anleitung (Portainer)
### Schritt 1: Projektdateien auf Server kopieren
```bash
# Auf dem Server
mkdir -p /opt/dateiverwaltung
cd /opt/dateiverwaltung
# Projektdateien hierhin kopieren (z.B. per SCP, SFTP, Git)
# scp -r /lokaler/pfad/* user@server:/opt/dateiverwaltung/
```
### Schritt 2: Image bauen
```bash
cd /opt/dateiverwaltung
docker build -t dateiverwaltung:latest .
```
Warte bis "Successfully built" erscheint.
### Schritt 3: Datenordner erstellen
```bash
# Ordner für Datenbank erstellen
mkdir -p /opt/dateiverwaltung/data
# Ordner für Dateien (falls nicht vorhanden)
mkdir -p /mnt/inbox /mnt/archiv /mnt/backup
```
### Schritt 4: Stack in Portainer erstellen
1. Portainer öffnen → **Stacks****Add Stack**
2. Name: `dateiverwaltung`
3. Web editor → Diesen YAML-Code einfügen:
```yaml
services:
dateiverwaltung:
image: dateiverwaltung:latest
container_name: dateiverwaltung
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- /opt/dateiverwaltung/data:/app/data
- /mnt/inbox:/mnt/inbox
- /mnt/archiv:/mnt/archiv
- /mnt/backup:/mnt/backup
environment:
- TZ=Europe/Berlin
- DATABASE_URL=sqlite:////app/data/dateiverwaltung.db
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
```
4. **Deploy the stack** klicken
### Schritt 5: Anwendung öffnen
- URL: `http://<server-ip>:8000`
- Dateimanager: `http://<server-ip>:8000/browser`
---
## 6. Ordner-Struktur
### Empfohlene Struktur auf dem Host:
```
/home/user/Dokumente/
├── Inbox/ # Unsortierte Dateien (Quell-Ordner)
│ ├── mail-anhänge/ # z.B. von Mail-Abruf
│ └── scans/ # z.B. vom Scanner
├── Archiv/ # Sortierte Dateien (Ziel-Ordner)
│ ├── rechnungen/
│ ├── verträge/
│ └── sonstiges/
└── Backup/ # Original-PDFs vor OCR
```
### Im Container sichtbar als:
```
/mnt/
├── inbox/ → Host: /home/user/Dokumente/Inbox
├── archiv/ → Host: /home/user/Dokumente/Archiv
└── backup/ → Host: /home/user/Dokumente/Backup
```
---
## 7. Erstmalige Einrichtung nach Start
### 5.1 Web-UI öffnen
Öffne `http://<server-ip>:8000`
### 5.2 Quell-Ordner hinzufügen
1. Klicke auf **+ Hinzufügen** bei "Quell-Ordner"
2. Konfiguriere:
- **Name:** z.B. "Mail-Inbox"
- **Quell-Pfad:** `/mnt/inbox` (wie im Container gemountet)
- **Ziel-Ordner:** `/mnt/archiv`
- **Dateitypen:** PDF, JPG, PNG, etc.
### 5.3 Regeln erstellen
#### Schnell-Regeln (Grob-Sortierung nach Typ):
1. Klicke auf **+ Schnell-Regel**
2. Wähle z.B. "E-Rechnungen (ZUGFeRD)" → Unterordner: `e-rechnungen`
3. Wähle "Bilder" → Unterordner: `bilder`
#### Fein-Regeln (nach Inhalt):
1. Klicke auf **+ Hinzufügen** bei "Fein-Regeln"
2. Konfiguriere Keywords und Dateinamen-Schema
### 5.4 OCR-Backup aktivieren (empfohlen)
1. Aktiviere "Backup vor OCR-Einbettung erstellen"
2. Wähle Backup-Ordner: `/mnt/backup`
---
## 8. Persistente Daten
### Diese Daten werden gespeichert:
| Pfad im Container | Inhalt | Wichtig? |
|-------------------|--------|----------|
| `/app/data/dateiverwaltung.db` | SQLite-Datenbank mit allen Einstellungen | **JA** |
| `/app/data/` | Logs und temporäre Dateien | Ja |
### Backup der Einstellungen:
```bash
# Datenbank sichern
docker cp dateiverwaltung:/app/data/dateiverwaltung.db ./backup/
# Oder Volume-Pfad direkt sichern
cp /opt/dateiverwaltung/data/dateiverwaltung.db ./backup/
```
---
## 9. Beispiel: Komplette docker-compose.yml
```yaml
version: '3.8'
services:
dateiverwaltung:
build: .
container_name: dateiverwaltung
restart: unless-stopped
ports:
- "8000:8000"
volumes:
# Datenbank (WICHTIG: Persistent!)
- ./data:/app/data
# === ANPASSEN: Deine Ordner ===
# Inbox: Hier landen unsortierte Dateien
- /home/benutzer/Dokumente/Inbox:/mnt/inbox
# Archiv: Hierhin werden Dateien sortiert
- /home/benutzer/Dokumente/Archiv:/mnt/archiv
# Backup: Original-PDFs vor OCR
- /home/benutzer/Dokumente/Backup:/mnt/backup
# NAS-Ordner (optional)
- /mnt/nas/scans:/mnt/scans
environment:
- TZ=Europe/Berlin
- DATABASE_URL=sqlite:////app/data/dateiverwaltung.db
```
---
## 10. Dateimanager (Dual-Pane Browser)
Die Anwendung enthält einen separaten Dateimanager unter `/browser`:
- **URL:** `http://<server-ip>:8000/browser`
- **Features:**
- Dual-Pane Layout (Ordner links, Vorschau rechts)
- Dateien umbenennen, verschieben, löschen
- PDF/Bild-Vorschau ohne Dateisperrung
- Kann auf separatem Monitor geöffnet werden
**Tipp:** Öffne den Link in einem neuen Fenster für Multi-Monitor-Setup.
---
## 11. Troubleshooting
### Container startet nicht
```bash
# Logs prüfen
docker logs dateiverwaltung
# Container neu bauen
docker compose build --no-cache
docker compose up -d
```
### Dateien können nicht gelesen/geschrieben werden
```bash
# Berechtigungen prüfen
ls -la /home/benutzer/Dokumente/Inbox/
# Container-User prüfen (läuft als root)
docker exec dateiverwaltung id
# Berechtigungen setzen
chmod -R 755 /home/benutzer/Dokumente/
```
### Datenbank zurücksetzen
```bash
# Alle Einstellungen löschen
docker exec dateiverwaltung rm /app/data/dateiverwaltung.db
docker restart dateiverwaltung
```
---
## 12. Updates
```bash
# Neueste Version holen
git pull
# Container neu bauen und starten
docker compose build
docker compose up -d
```
---
## 13. Portainer Stack Template (Copy & Paste)
Für schnelles Deployment in Portainer, kopiere diesen Stack:
```yaml
version: '3.8'
services:
dateiverwaltung:
build:
context: /opt/dateiverwaltung
container_name: dateiverwaltung
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- dateiverwaltung_data:/app/data
- /mnt/inbox:/mnt/inbox
- /mnt/archiv:/mnt/archiv
- /mnt/backup:/mnt/backup
environment:
- TZ=Europe/Berlin
- DATABASE_URL=sqlite:////app/data/dateiverwaltung.db
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
dateiverwaltung_data:
```
**Nach Deploy:**
1. Web-UI öffnen: `http://<ip>:8000`
2. Quell-Ordner hinzufügen: `/mnt/inbox``/mnt/archiv`
3. Regeln erstellen
4. Fertig!
---
## Zusammenfassung der wichtigsten Pfade
| Was | Pfad im Container | Host-Pfad (anpassen!) |
|-----|-------------------|----------------------|
| Datenbank | `/app/data/` | `./data` oder Volume |
| Inbox (Quelle) | `/mnt/inbox` | `/home/user/Inbox` |
| Archiv (Ziel) | `/mnt/archiv` | `/home/user/Archiv` |
| OCR-Backup | `/mnt/backup` | `/home/user/Backup` |