Spun out mDMS strategy + tooling from m/otto into its own repo on 2026-05-15. Migrated: - docs/strategy.md (was: m/otto:docs/mdms-strategy.md) - infra/paperless/ (config + audit + migrate scripts) - infra/samba-canon/ (Canon MB5100 SMB1 bridge container) History in m/otto: issues #429–#438. Going forward, all mDMS issues file here. Sibling m/paperless (separate repo) remains the bare Docker Compose for Paperless-ngx itself.
13 KiB
mDMS: Dokumentenmanagement-Strategie
Aktueller Stand (nach Cleanup 2026-04-06)
Paperless-ngx (mDock)
- 129 Dokumente (PDFs), Storage Path aktiv
- 41 Correspondents — bereinigt (OCR-Duplikate gemergt, Müll entfernt)
- 13 Document Types — Rechnung, Vertrag, Bescheid, Bescheinigung, Brief, Mitteilung, Abrechnung, Protokoll, Urkunde, Vollmacht, Gutachten, Angebot, Medizinisch
- 16 Tags — hierarchisch: Kategorie (Steuer, Versicherung, Gesundheit, Wohnung, Arbeit, Finanzen, Erbschaft, Gewährleistung, Anleitung) + Status (offen, wichtig, Frist) + Kontext (Windscheid33, Paul)
- 1 Storage Path:
{created_year}/{document_type}/{created} - {correspondent} - {title} - Dateien strukturiert:
2024/Rechnung/2024-03-15 - DAK - Beitragsrechnung.pdf - API-User:
mAi - Docker Compose:
~/paperless/auf mDock, NFS-Mount/mnt/paperlessvon TrueNAS (mPool/paperless)
Was bereinigt wurde
- 68 Webp-Preview-Dokumente gelöscht (keine Originale, nur schlechte Vorschaubilder)
- 51 → 41 Correspondents (OCR-Duplikate gemergt: Hogan Lovells, Matthias Siebels, Ammerländer, Schubert, eprimo, Helios, Paul Siebels, Versorgungswerk etc.)
- 39 → 13 Document Types (Merge-Mapping umgesetzt)
- 172 → 16 Tags (Noise gelöscht, Kategorie-Mapping vor Löschung durchgeführt)
- 13 kaputte SynoResource-Dateien aus Consume gelöscht
- 126 orphaned flat-PDFs aus Originals gelöscht
- 43 Dokumententitel bereinigt (Nummern → beschreibende Titel)
- 5 Birthday-Datumsfehler korrigiert (1987-02-22 → korrekte Dokumentdaten)
mDocs (Gitea-Repo m/mDocs) — MIGRATION PENDING
- 72 Dateien, 60 MB (Steuer, Versicherungen, Windscheid33)
- Wird in Paperless inbox migriert, Repo danach löschen
TrueNAS (mtruenas)
- Dataset
mPool/paperlessexistiert bereits - NFS-Export nach mDock (192.168.178.0/24)
- SMB-Share
mStashals Referenz für mdms-Share
Entscheidungen
1. Storage Path Format
Format: {created_year}/{document_type}/{created} - {correspondent} - {title}.pdf ✓ Bestätigt
Beispiele:
2024/Rechnung/2024-03-15 - DAK - Beitragsrechnung Q1.pdf
2024/Bescheid/2024-01-20 - Finanzamt - Grundsteuerbescheid.pdf
2023/Vertrag/2023-06-01 - Vodafone - GigaTV Vertragsverlängerung.pdf
2025/Abrechnung/2025-01-31 - Hogan Lovells - Gehaltsabrechnung Januar.pdf
Warum dieses Format:
- Jahr als Top-Level: Chronologisches Browsen, ganzen Jahrgang für Steuerberater kopierbar
- Typ als zweite Ebene: "Zeig mir alle Rechnungen 2024" =
2024/Rechnung/ - Datum + Correspondent + Titel im Dateinamen: Sortierbar, durchsuchbar, kontextreich
- Max 2 Ordnerebenen: Nicht zu tief, Finder/Explorer-freundlich
- Navigierbar ohne Paperless: Reiner Dateibrowser funktioniert
Verworfene Alternativen:
{correspondent}/{year}/...— zu viele sparse Ordner, schlecht für zeitliche Navigation{year}-{month}/...— zu granular, monatliche Ordner für oft nur 1-2 Dokumente- Flach:
{created}-{correspondent}-{title}.pdf— bei 500+ Dokumenten unbrauchbar
2. Dataset-Struktur: mPool/mdms
/mnt/mPool/mdms/
├── paperless/ # Paperless storage (originals, archive, thumbnails)
│ ├── documents/
│ │ ├── originals/ # Originaldateien
│ │ └── archive/ # OCR-Versionen
│ └── ...
├── inbox/ # Paperless consume — Auto-Import
│ # mScan-App, Drag-and-Drop, SFTP
├── templates/ # Vertragsvorlagen, Formulare, Muster
│ # Nicht in Paperless — statische Referenzdokumente
├── archive/ # Dokumente die nicht in Paperless passen:
│ # Große Dateien (CAD, Pläne), Sammlungen, Binaries
└── export/ # Paperless-Exporte, Backups, Snapshots
3. Dokumenten-Routing
| Dokument | Ziel | Begründung |
|---|---|---|
| Rechnungen, Bescheide, Briefe | Paperless (inbox/) | OCR + AI-Klassifikation + Suche |
| Verträge, Urkunden | Paperless | Langzeitarchiv mit Volltextsuche |
| Steuerunterlagen | Paperless + Tag "Steuer" | Filterbar für Steuerberater-Export |
| Gehaltsabrechnungen | Paperless + Tag "Arbeit" | Chronologisch abrufbar |
| Arztbriefe, Befunde | Paperless + Tag "Gesundheit" | Suchbar, datiert |
| Phone-Scans (mScan) | inbox/ → Paperless auto-import | Scannen → fertig |
| Vertragsvorlagen, Formulare | templates/ | Keine OCR nötig, statische Referenz |
| Baupläne, CAD, große Dateien | archive/ | Zu groß/speziell für Paperless |
| Fotos von Dokumenten | Paperless | OCR funktioniert auch auf Fotos |
Nicht in mDMS:
- Fotos generell → Immich
- Bücher, eBooks → Calibre (mCalibre)
- Arbeitsrechtliche Dokumente (HL) → mWork-Vault (Obsidian, nicht mDMS)
4. Paperless Taxonomy — Aufräumen
Document Types (39 → 15)
Reduziert auf sinnvolle, stabile Kategorien:
| Behalten | Zusammenführen aus |
|---|---|
| Rechnung | Rechnung, Invoice, Beitragsrechnung |
| Vertrag | (neu — für Verträge, Verlängerungen) |
| Bescheid | Bescheid, Beitragsbescheid, Versicherungsbescheid |
| Bescheinigung | Bescheinigung, Lohnsteuerbescheinigung, Spendenbescheinigung |
| Brief | Brief, Anschreiben, Korrespondenz |
| Mitteilung | Mitteilung, Benachrichtigung, Information, Erinnerung |
| Abrechnung | Abrechnung, Entgeltabrechnung |
| Protokoll | Protokoll |
| Urkunde | Urkunde |
| Vollmacht | Vollmacht |
| Gutachten | Gutachten, Befund |
| Angebot | Angebot |
| Energieausweis | Energieausweis |
| Schadenmeldung | Schadenmeldung, Schadenanzeige |
| Medizinisch | Arbeitsunfähigkeitsbescheinigung, Aufklärungsbogen |
Entfernen: Empfehlung, Preisanpassungsschreiben, Kündigungsbestätigung, Eintragungsbekanntmachung, Auftragsbestätigung, Testament (→ Tag), Einladung (→ Brief)
Tags (172 → ~25 manuell kuratierte)
Die meisten Auto-Tags sind Noise. Ziel: wenige, stabile Kategorie-Tags + manuelle Pflege.
Kategorie-Tags (Pflicht, einer pro Dokument):
| Tag | Für |
|---|---|
Steuer |
Alles steuerrelevante |
Versicherung |
Policen, Schäden, Beiträge |
Gesundheit |
Arzt, Krankenhaus, Krankenkasse |
Wohnung |
Miete, Eigentum, Nebenkosten, WEG |
Arbeit |
Gehalt, Arbeitgeber, Kammer |
Finanzen |
Bank, Kredit, Altersvorsorge |
Erbschaft |
Testament, Nachlassangelegenheiten |
Gewährleistung |
Kaufbelege mit Garantie, Reklamationen |
Anleitung |
Bedienungsanleitungen, Handbücher, Datenblätter |
Aktions-Tags (optional):
| Tag | Bedeutung |
|---|---|
wichtig |
Aufbewahrungspflichtig, Schlüsseldokument |
Frist |
Hat eine Frist — regelmäßig prüfen |
offen |
Noch Handlung erforderlich |
Kontext-Tags (sparsam, bei Bedarf):
| Tag | Für |
|---|---|
Windscheid33 |
Immobilie Windscheidstr. 33 |
Paul |
Dokumente bzgl. Paul Siebels |
Löschen:
- Jahres-Tags ("2022", "2025") — redundant mit created-Datum
- Personen-Tags ("Matthias Siebels") — gehört als Correspondent
- Ultra-granulare Tags ("Finger", "Hand", "Shimano", "Oral-B") — kein Nutzen
- Duplikate ("Rechtsanwalt" + "Rechtsanwälte" + "Rechtsanwaltschaft")
Correspondents (51 → ~30)
OCR-Duplikate zusammenführen:
- "Hogan Lovells International LLP" + "Hogan Lovells lnternational LLP" → Hogan Lovells
- "HELIÜS Klinikurn Duisburg" + "Helios Klinikum Duisburg" → Helios Klinikum Duisburg
- "Herr Matthias Siebels" + "Herrn Matthias Siebels" + "Matthias Siebels" + "Herrn Rechtsanwalt Matthias Siebels" → Matthias Siebels (eigene Dokumente)
- "Ammerländer Versicherung VVaG" + "Ammerländer Versicherung WaG" → Ammerländer Versicherung
- "SCHUBERT GmbH" + "Schubert GmbH Haus- und Grundbesitzverwaltung" → Schubert Hausverwaltung
- "Dr. figegeberH lcankenkas*" → identifizieren oder löschen (OCR-Müll)
- "Dr/Heikö Gemmel" → Dr. Heiko Gemmel
- "eprimo CmbH" + "eprimo GmbH" → eprimo
- "lndula Shopsystem GmbH" → Indula Shopsystem
5. SMB-Share
Ja — mdms als SMB-Share wie mStash.
Konfiguration auf TrueNAS:
- Share-Name:
mdms - Dataset:
mPool/mdms - User:
m(wie mStash) - Mount auf mBreeze/mPebble:
~/mDMS(LaunchAgent, analog zu mStash)
Nutzen:
~/mDMS/inbox/für Drag-and-Drop-Import (Paperless consumed automatisch)~/mDMS/templates/für schnellen Zugriff auf Vorlagen~/mDMS/paperless/documents/originals/für Dateibrowser-Navigation (via Storage Path)~/mDMS/archive/für große Dateien
6. Vertrauliche Dokumente
Kein separates Verschlüsselungssystem nötig. ✓ Bestätigt
- Alles läuft auf HomeServer (mforge/mtruenas), nur via Tailscale erreichbar
- SMB mit User-Auth + Paperless-Login reichen aus
7. Obsidian-Integration
Der Storage Path soll als Teil eines Obsidian-Vaults nutzbar sein. Das bedeutet:
mdms/paperless/documents/originals/(oderarchive/) via SMB als Vault-Ordner einbinden- Obsidian zeigt die Ordnerstruktur (
2024/Rechnung/...) direkt im Dateibrowser - PDFs sind in Obsidian inline-viewbar und verlinkbar (
![[2024-03-15 - DAK - Beitragsrechnung.pdf]]) - Keine Sonderzeichen in Dateinamen die Obsidian-Links brechen (Spaces sind ok)
Umsetzung:
- Option A: Symlink
~/m2/mDMS/→~/mDMS/paperless/documents/originals/im Obsidian-Vault - Option B: Separater Mini-Vault nur für Dokumente
- Option C: mdms als Unterordner im Hauptvault (m2)
Empfehlung: Option A (Symlink) — kein Daten-Overhead, Vault bleibt schlank, Dokumente sind trotzdem verlinkbar. Braucht nur einen Symlink pro Maschine.
8. E-Mail-Inbox
docs@msbls.de — Alias auf mail@msbls.de (Hostinger).
Paperless pollt mail@msbls.de via IMAP und konsumiert Anhänge aus Emails an docs@msbls.de:
- IMAP:
imap.hostinger.com:993(SSL/TLS), User:mail@msbls.de - Mail-Regel: Filter
To: docs@msbls.de, nur Attachments, Action: als gelesen markieren - Correspondent wird automatisch vom Absender übernommen
- Titel vom Dateinamen
Workflow: Dokument als PDF an docs@msbls.de weiterleiten → Paperless importiert automatisch.
Paperless-AI Konfiguration
Paperless-AI (Port 3077) soll die Klassifikation übernehmen. Konfigurieren mit:
- Auto-assign correspondent basierend auf OCR-Text (Absender-Erkennung)
- Auto-assign document type aus den 15 reduzierten Typen
- Auto-assign 1-2 Kategorie-Tags aus der Kurzliste
- Nicht: Auto-generierte Freitext-Tags (das erzeugt das aktuelle Chaos)
Migration: Schritt für Schritt
Phase 1: TrueNAS Setup ✓ DONE
Dataset(LZ4, 1.24 TiB frei)mPool/mdmserstelltUnterordner angelegt(paperless, inbox, templates, archive, export)NFS-Export(id:8, 192.168.178.0/24), Mount auf mDock als/mnt/mdmsSMB-Share(id:3, UsermDMSm)
Phase 2: Paperless Migration ✓ DONE
Paperless auf mDock gestopptMedia, data, ai kopiert; pgdata als lokales Docker Volume (NFS-Ownership inkompatibel mit Postgres uid 999)consume → inbox kopiertSynoResource-Dateien gelöschtNFS-Mount(fstab via Proxmox agent)/mnt/mdmsauf mDockDocker Compose aktualisiert(~/paperless/docker-compose.yml)Storage Path konfiguriertPaperless verifiziert— 129 Docs, alle Metadaten intakt
Hinweis: pgdata lebt als Docker Volume paperless_pgdata auf mDock (nicht auf NFS). DB-Backup über pg_dump in mdms/export/ planen.
Phase 3: Cleanup ✓ DONE
Paperless Correspondents zusammenführen→ 51 → 41Document Types reduzieren→ 39 → 13Tags aufräumen→ 172 → 16 (hierarchisch: Kategorie + Status + Kontext)- Paperless-AI mit neuer Taxonomy konfigurieren (TODO)
Phase 4: mDocs Migration
- mDocs-Repo klonen, alle PDFs nach mdms/inbox/ kopieren
- Paperless konsumiert und klassifiziert automatisch
- Manuell verifizieren: Correspondents, Types, Tags korrekt?
- mDocs-Repo auf Gitea löschen
Phase 5: Client-Setup
- SMB-Mount auf mBreeze:
~/mDMS(LaunchAgent wie mStash) - SMB-Mount auf mPebble:
~/mDMS - mScan-App auf mdms/inbox/ konfigurieren (falls SFTP/SMB-Upload möglich)
Offene Punkte
- Paperless Admin-Credentials — mAi-User auf Paperless angelegt
- Paperless Cleanup — Correspondents, Types, Tags bereinigt
- Storage Path konfiguriert und Dateien umbenannt
- Webp-Previews gelöscht, SynoResource-Müll bereinigt
- TrueNAS Dataset
mPool/mdmserstellt (NFS id:8, SMBmDMSid:3) - Paperless media auf mdms/paperless umgestellt (Docker Compose aktualisiert)
- SMB-Share
mDMSeingerichtet auf TrueNAS - mDocs-Migration: 69 PDFs in Paperless inbox, consumption läuft
- docs@msbls.de — E-Mail-Inbox für Paperless (IMAP-Polling, Alias auf mail@msbls.de, Regel filtert auf To: docs@msbls.de)
- Paperless-AI mit neuer Taxonomy konfigurieren
- Regelmäßiger Export/Backup-Job (Paperless → mdms/export/)
m docCLI-Subcommand für Paperless-Zugriff? (search, list, tag)- Obsidian-Vault Symlink-Setup auf mBreeze/mPebble