Der Schuhkarton voller Rechnungen. Die Ordner, die du seit Jahren nicht mehr aufgemacht hast. Das wichtige Dokument, das du letzte Woche gesucht hast.
Papier-Chaos kostet Zeit und Nerven. Cloud-Dienste speichern deine Verträge und Kontoauszüge auf fremden Servern; wer darauf zugreifen kann, regeln deren Bedingungen.
Auf einem eigenen VPS (Virtual Private Server, ein virtueller Server in einem Rechenzentrum) läuft Paperless-ngx mit OCR, automatischer Zuordnung und Volltextsuche. Die aktuellen Preise zeigt der VPS-Vergleich, sortiert nach Preis.
Voraussetzungen
Du brauchst:
- Einen VPS. Die Doku nennt keine RAM-Mindestwerte; laut FAQ läuft Paperless auch auf einem Raspberry Pi 3 B, Teile wie die OCR dann aber sehr langsam (laut Paperless-ngx-Doku, Stand: 08.11.2026). Eine Schätzung nach Dokumentenmenge liefert der Paperless-Rechner.
- Einen Linux-Server, z. B. Ubuntu. Paperless läuft nur unter Linux, Windows wird nicht unterstützt (laut Paperless-ngx-Doku, Stand: 08.11.2026).
- Docker & Docker Compose
- Optional: Domain für HTTPS
- Optional: Dokumentenscanner oder Smartphone
Anbieter im Überblick: Hetzner, Netcup; alle Tarife im VPS-Vergleich.
Du bist dir noch nicht sicher, ob du Paperless auf deinem NAS oder einem VPS installieren sollst? Unser Vergleich NAS vs VPS hilft bei der Entscheidung.
Server für Paperless gesucht?
Wie viel RAM und Speicher dein Archiv braucht, schätzt der Paperless-Rechner.
Paperless-Rechner öffnenSchritt 1: Paperless-ngx installieren
Wir nutzen Docker Compose mit PostgreSQL. Die Dateien stammen aus dem Projekt-Repository (laut Paperless-ngx-Repository, Stand: 08.11.2026); alternativ bietet die Setup-Seite ein Installationsskript (laut Paperless-ngx-Doku, Stand: 08.11.2026).
mkdir -p ~/paperless && cd ~/paperless
Compose-Datei, Env-Datei und .env herunterladen:
curl -O https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/docker-compose.postgres.yml
mv docker-compose.postgres.yml docker-compose.yml
curl -O https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/docker-compose.env
curl -O https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/.env
docker compose pull
Die .env setzt den Projektnamen paperless. Vor dem ersten Start ersetzt du beim Dienst webserver die Port-Zeile "8000:8000" durch "127.0.0.1:8000:8000": Sonst ist Port 8000 auf allen Schnittstellen offen, und Docker umgeht ufw (laut Docker-Doku, Stand: 08.11.2026). Wichtige Einstellungen passt du in docker-compose.env an:
nano docker-compose.env
# Setze:
PAPERLESS_TIME_ZONE=Europe/Berlin
PAPERLESS_OCR_LANGUAGE=deu+eng
PAPERLESS_SECRET_KEY=hier-den-erzeugten-wert-eintragen
PAPERLESS_OCR_LANGUAGE ist standardmäßig eng; Englisch, Deutsch, Italienisch, Spanisch und Französisch sind im Docker-Image bereits enthalten (laut Paperless-ngx-Doku, Stand: 08.11.2026). Den Secret Key erzeugst du im Terminal mit openssl rand -hex 32 und trägst den ausgegebenen Wert ein; Env-Dateien führen keine Shell-Befehle aus.
Schritt 2: Starten und Admin erstellen
Container starten:
docker compose up -d
Beim ersten Aufruf der Weboberfläche fordert Paperless dich auf, einen Superuser anzulegen (laut Paperless-ngx-Doku, Stand: 08.11.2026). Alternativ setzt du PAPERLESS_ADMIN_USER und PAPERLESS_ADMIN_PASSWORD in der Env-Datei (laut Paperless-ngx-Doku, Stand: 08.11.2026).
Dieser User ist dein Admin-Account.
Schritt 3: Erster Login
Port 8000 ist der Standard (laut Paperless-ngx-Doku, Stand: 08.11.2026). Weil der Port nur lokal gebunden ist, erreichst du ihn für die Ersteinrichtung per SSH-Tunnel: ssh -L 8000:127.0.0.1:8000 user@server, dann http://localhost:8000 im Browser. Danach HTTPS (Schritt 8).
- Mit deinem Admin-Account einloggen
- Dashboard erkunden
- Gängige OCR-Einstellungen lassen sich auch in der Weboberfläche setzen und haben dort Vorrang vor den Umgebungsvariablen (laut Paperless-ngx-Doku, Stand: 08.11.2026)
Schritt 4: Consume-Folder verstehen
Der Consume-Folder ist das Herzstück von Paperless:
Dateien, die du in diesen Ordner legst, verarbeitet Paperless automatisch: OCR, Indexierung, Zuordnung. Nach der Verarbeitung entfernt Paperless die Datei aus dem Consume-Ordner und legt sie in seinem eigenen Speicher ab; auf Mehrkernsystemen laufen mehrere Dokumente parallel (laut Paperless-ngx-Doku, Stand: 08.11.2026).
# Consume-Folder-Pfad (Standard)
~/paperless/consume/
# Oder im Container: /usr/src/paperless/consume/
Beispiel: Dokument manuell hinzufügen:
cp rechnung-beispiel.pdf ~/paperless/consume/
# Nach der Verarbeitung erscheint das Dokument in der Weboberfläche
Schritt 5: Scanner einrichten
Mehrere Optionen, Dokumente in den Consume-Folder zu bekommen:
Option A: Smartphone-App
Für gelegentliche Scans:
- Eine Scanner-App installieren, die PDFs exportiert. Apps mit direkter Paperless-Anbindung listet das Projekt-Wiki; sie stammen von Drittentwicklern, das Paperless-Team unterstützt sie nicht (laut Paperless-ngx-Wiki, Stand: 08.11.2026)
- Dokument fotografieren
- Als PDF exportieren
- Per SFTP auf den Server hochladen
Option B: Netzwerk-Scanner
Für regelmäßige Scans:
- Scanner mit SFTP-Upload konfigurieren, falls er das kann
- Ziel: ~/paperless/consume/
- SMB oder FTP nicht offen ins Internet stellen, sondern über ein VPN nutzen
Option C: E-Mail-Import
Für digitale Rechnungen – siehe nächster Abschnitt.
Schritt 6: E-Mail-Import einrichten (Optional)
Mail-Konten und Mail-Regeln legst du in der Weboberfläche an (Einstellungen → Mail), nicht über Umgebungsvariablen (laut Paperless-ngx-Doku, Stand: 08.11.2026). Die SMTP-Variablen wie PAPERLESS_EMAIL_HOST gehören zum Versand von E-Mails, nicht zum Abruf.
Standardmäßig ruft Paperless die Mails alle zehn Minuten ab. Das Intervall änderst du über PAPERLESS_EMAIL_TASK_CRON (laut Paperless-ngx-Doku, Stand: 08.11.2026), danach Container neu starten:
docker compose down && docker compose up -d
Was importiert wird, legen deine Mail-Regeln fest.
Warnung: Nutze ein dediziertes E-Mail-Konto für Paperless, nicht deine Haupt-Adresse!
Schritt 7: Automatische Zuordnung einrichten
Die automatische Zuordnung lernt aus Dokumenten, die du bereits zugeordnet hast:
1. Korrespondenten anlegen
Unter 'Manage' → 'Correspondents' häufige Absender anlegen (Telefonanbieter, Online-Shop, Versicherung)
2. Dokumententypen definieren
Unter 'Document Types': Rechnung, Vertrag, Kontoauszug, Steuer, etc.
3. Tags erstellen
Für Kategorien: 'Steuer 2026', 'Wichtig', 'Versicherung', etc.
4. Zuordnungsregeln definieren
Bei jedem Korrespondenten, Dokumenttyp oder Tag den Algorithmus „Auto“ wählen. Paperless lernt dann aus deinen Zuordnungen; Dokumente im Posteingang zählen dabei nicht, der Abgleich läuft standardmäßig einmal pro Stunde (laut Paperless-ngx-Doku, Stand: 08.11.2026).
Tipp: Laut Doku braucht die Zuordnung eine ausreichende Zahl zugeordneter Dokumente und auch Gegenbeispiele. Je mehr, desto zuverlässiger (laut Paperless-ngx-Doku, Stand: 08.11.2026).
Schritt 8: HTTPS einrichten (Empfohlen)
Für sicheren Zugriff von außen setzt du Caddy als Reverse Proxy davor. Hinter einem Reverse Proxy setzt du PAPERLESS_URL=https://paperless.deinedomain.de (ohne Slash am Ende) in der Env-Datei (laut Paperless-ngx-Doku, Stand: 08.11.2026).
Ergänze die docker-compose.yml:
services:
# ... bestehende Services (Port von webserver seit Schritt 1 nur lokal gebunden)
caddy:
image: caddy:2
restart: always
ports:
- 80:80
- 443:443
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
# im vorhandenen volumes:-Block ergänzen:
# caddy_data:
Caddyfile:
paperless.deinedomain.de {
reverse_proxy webserver:8000
}
Danach startest du mit docker compose up -d neu. Das lokale Binding aus Schritt 1 und caddy_data im vorhandenen volumes:-Block sind Hinweise von RackDiff, keine Vorgabe der Paperless-Doku.
Schritt 9: Backup einrichten (Wichtig!)
Sichern musst du die Volumes media und data sowie bei PostgreSQL die Datenbank (laut Paperless-ngx-Doku, Stand: 08.11.2026). Am einfachsten ist der eingebaute Export; vorher sollte keine Verarbeitung laufen:
cd ~/paperless
docker compose exec -T webserver document_exporter ../export
# Die Ausgabe landet im Ordner export neben der Compose-Datei
Backup-Script:
#!/bin/bash
BACKUP_DIR="/backup/paperless"
DATE=$(date +%Y%m%d)
mkdir -p "$BACKUP_DIR"
cd ~/paperless
# Dokumente und Metadaten exportieren
docker compose exec -T webserver document_exporter ../export
# PostgreSQL-Backup
docker compose exec -T db pg_dump -U paperless > "$BACKUP_DIR/db-$DATE.sql"
# Export archivieren
tar -czf "$BACKUP_DIR/export-$DATE.tar.gz" export
# Alte Backups löschen (30 Tage)
find "$BACKUP_DIR" -mtime +30 -delete
Warnung: Probiere die Wiederherstellung mindestens einmal aus. Ein Backup, das du nie zurückgespielt hast, ist ein Risiko. Die Archive liegen unverschlüsselt auf demselben Server; verschlüssele sie, etwa mit restic oder borgbackup, und übertrage sie an einen zweiten Standort.
Advanced: Weitere Konfiguration
Nützliche Einstellungen laut Konfigurationsseite (laut Paperless-ngx-Doku, Stand: 08.11.2026):
| Einstellung | Config | Beschreibung |
|---|---|---|
| OCR neu ausführen | PAPERLESS_OCR_MODE=redo | Alle Seiten neu per OCR, vorhandene Textebenen werden ersetzt; force rastert die Seiten |
| Format der Archivversion | PAPERLESS_OCR_OUTPUT_TYPE=pdfa | Standard pdfa; das Original bleibt erhalten |
| Speicher sparen | PAPERLESS_ARCHIVE_FILE_GENERATION=never | Nur das Original speichern; die Vorschau zeigt dann die Originaldatei |
| Mehr OCR-Sprachen | PAPERLESS_OCR_LANGUAGE=deu+eng+fra | Französisch ist im Image enthalten, weitere Sprachen über PAPERLESS_OCR_LANGUAGES |
| Barcode-Erkennung | PAPERLESS_CONSUMER_ENABLE_BARCODES=true | Trennt Dokumente an Trennseiten mit Barcode (Standard PATCHT), standardmäßig aus |
Zur Barcode-Trennung gibt es eine eigene Seite (laut Paperless-ngx-Doku, Stand: 08.11.2026).
Beispiel-Workflow: Steuererklärung
Ein möglicher Ablauf für die Steuererklärung:
- Tag 'Steuer 2026' anlegen
- Alle relevanten Dokumente scannen (Spendenbescheinigungen, Rechnungen, etc.)
- Steht der Tag auf Zuordnung „Auto“, kann Paperless ihn neuen Dokumenten zuordnen; prüfe die Zuordnung vor dem Export (laut Paperless-ngx-Doku, Stand: 08.11.2026)
- Am Jahresende: Filter 'Tag = Steuer 2026'
- Alle Dokumente exportieren oder direkt dem Steuerberater zeigen
- Nach Abschluss: Tag auf 'Steuer 2026 erledigt' ändern
Paperless verändert das Original nicht und legt für gescannte Dokumente eine Archivversion an (laut Paperless-ngx-Doku, Stand: 08.11.2026). Ob du Papieroriginale nach dem Scannen vernichten darfst, hängt von Aufbewahrungsvorschriften ab, für Unternehmen etwa § 147 AO (laut § 147 AO, Stand: 08.11.2026). Im Zweifel frag deine Steuerberatung.
OCR & Sprachen optimieren
Die Texterkennung ist das Herzstück von Paperless-ngx und ein wesentlicher Hebel für Rechenzeit und Trefferqualität. Paperless erkennt Text mit OCRmyPDF und Tesseract; gesteuert wird das über Umgebungsvariablen in der docker-compose.env (laut Paperless-ngx-Doku, Stand: 08.11.2026):
# Mehrere OCR-Sprachen (Deutsch + Englisch)
PAPERLESS_OCR_LANGUAGE=deu+eng
# Standard: OCR nur, wenn das Dokument noch keinen Text enthält
PAPERLESS_OCR_MODE=auto
# Format der Archivversion
PAPERLESS_OCR_OUTPUT_TYPE=pdfa
Im Standardmodus auto erkennt Paperless per pdftotext, ob ein Dokument schon Text enthält, und überspringt dann die OCR, etwa bei Rechnungen aus dem Online-Banking (laut Paperless-ngx-Doku, Stand: 08.11.2026). Zusätzliche Tesseract-Sprachen installierst du über PAPERLESS_OCR_LANGUAGES.
Speicherbedarf & Wartung
Paperless behält das Original und legt für gescannte oder bildbasierte Dokumente eine Archivversion an (laut Paperless-ngx-Doku, Stand: 08.11.2026). Der Speicherbedarf hängt von Scan-Auflösung, Dateityp und Archivversion ab. Eine Schätzung liefert der Paperless-Rechner; Tarife mit mehr Speicher findest du im VPS-Vergleich, sortiert nach Preis.
Für den laufenden Betrieb:
- Suchindex: Den Index prüft der Docker-Container bei jedem Start (
document_index reindex --if-needed) (laut Paperless-ngx-Doku, Stand: 08.11.2026). - Hintergrundaufgaben: Paperless nutzt Celery für Aufgaben wie OCR und E-Mail-Abruf (laut Paperless-ngx-Doku, Stand: 08.11.2026). Ein Blick ins Log (
docker compose logs -f) zeigt, was gerade läuft. - Updates: laufende Verarbeitung abwarten, Backup,
docker compose down,docker compose pull,docker compose up -d. Neue Datenbankmigrationen werden dabei automatisch angewendet (laut Paperless-ngx-Doku, Stand: 08.11.2026).
Mehrere Nutzer & Berechtigungen
Sobald mehr als eine Person das Archiv nutzt, lohnt sich die Benutzerverwaltung von Paperless-ngx. Unter Einstellungen → Benutzer & Gruppen legst du zusätzliche Nutzer und Gruppen an; jedes Objekt hat einen Eigentümer und Rechte zum Ansehen und Bearbeiten (laut Paperless-ngx-Doku, Stand: 08.11.2026).
Praktisch ist das für Familien oder kleine Teams. Dokumente haben eigene Berechtigungen und sind standardmäßig nur für ihren Eigentümer sichtbar. Rechte an einem Tag ändern nichts am Zugriff auf Dokumente mit diesem Tag (laut Paperless-ngx-Doku, Stand: 08.11.2026).
Wichtig: Vergib für jeden Nutzer ein eigenes Konto mit starkem Passwort. Die Zwei-Faktor-Authentifizierung aktiviert jede Person im Dialog „Mein Profil“, mit Wiederherstellungscodes (laut Paperless-ngx-Doku, Stand: 08.11.2026).
Fazit
Du hast jetzt ein Dokumenten-Management-System auf deinem eigenen Server. Scanne, finde, behalte die Kontrolle.
Auf demselben VPS kannst du zusätzlich Vaultwarden als Passwort-Manager, Immich für Fotos oder dein eigenes VPN betreiben. Aktuelle Preise zeigt der VPS-Vergleich.
Häufig gestellte Fragen
Wie lange dauert OCR?
Erkennt Paperless Handschrift?
Kann ich bestehende PDFs importieren?
Gibt es eine Mobile App?
Wie viel RAM und CPU braucht Paperless-ngx?
Was passiert mit dem Original-Dokument nach dem Scan?
Weitere Self-Hosting Guides
Bereit fürs papierlose Büro?
Wie viel RAM und Speicher dein Archiv braucht, schätzt der Paperless-Rechner.
Paperless-Rechner öffnen



