Smart Home / Sicherheit

Papra auf ZimaOS installieren – die schlanke Alternative zu Paperless-ngx?

Wer seine Dokumente selbst verwalten und digitalisieren möchte, stößt früher oder später auf Lösungen wie Paperless-ngx. Eine interessante und deutlich schlankere Alternative ist Papra.

Papra lässt sich auch unter ZimaOS betreiben. Allerdings findet ihr die Anwendung aktuell nicht direkt im ZimaOS App Store. Wir installieren Papra deshalb als benutzerdefinierte App über Docker Compose.

In dieser Anleitung zeige ich euch Schritt für Schritt, wie die Installation funktioniert – inklusive eines wichtigen Berechtigungsproblems, über das ich bei meiner eigenen Installation unter ZimaOS gestolpert bin.

Was benötigen wir?

Für die Installation braucht ihr:

  • ein laufendes ZimaOS-System
  • Zugriff auf das ZimaOS-Terminal per SSH
  • eure lokale IP-Adresse von ZimaOS
  • einen Texteditor
  • eine Docker-Compose-YAML
  • wenige Minuten Zeit

Die Installation erfolgt komplett als Docker-Container.


1. SSH-Zugriff auf ZimaOS aktivieren

Für einige Schritte benötigen wir Zugriff auf das Terminal von ZimaOS.

Öffnet in ZimaOS die Einstellungen und aktiviert unter dem Entwicklermodus den SSH-Zugang.

Anschließend könnt ihr euch beispielsweise unter macOS oder Linux über das Terminal verbinden:

ssh  BENUTZERNAME@IP-ADRESSE

Beispiel:

ssh  daniel@192.168.178.52

Anschließend gebt ihr euer ZimaOS-Kennwort ein.

Hinweis: Bei der Eingabe des Kennworts werden im Terminal keine Zeichen oder Sternchen angezeigt. Das ist normal.


2. Papra-Verzeichnisse anlegen

Papra benötigt persistenten Speicher für seine Datenbank und Dokumente.

Auf meinem ZimaOS-System verwende ich dafür:

sudo  mkdir  -p  /DATA/AppData/papra/app-data/db
sudo  mkdir  -p  /DATA/AppData/papra/app-data/documents

Damit entsteht folgende Struktur:

/DATA/AppData/papra/
└──  app-data/
        ├──  db/
        └──  documents/

Der Ordner db wird für die Datenbank benötigt, während documents für die Dokumentdaten vorgesehen ist.

Sollte eure AppData-Struktur an einer anderen Stelle liegen, müsst ihr die Pfade entsprechend anpassen.


3. AUTH_SECRET für Papra erzeugen

Papra benötigt ein zufälliges AUTH_SECRET für die Authentifizierung.

ZimaOS ist als schlankes NAS-Betriebssystem aufgebaut. Auf meinem ZimaOS-System war das OpenSSL-Kommandozeilentool nicht vorhanden. Deshalb erzeugen wir das Secret direkt über /dev/urandom:

head  -c  48  /dev/urandom  |  od  -An  -tx1  |  tr  -d  '  \n';  echo

Anschließend erscheint eine lange zufällige Zeichenfolge.

Beispielsweise:

adaf7b448a87654ee4f864e5091047b77ba1110672af7f3cc6b2a0dd772e72e8397ab1d5a4202e4d

Wichtig: Das ist nur ein Beispiel. Verwendet nicht diesen Schlüssel, sondern erzeugt euer eigenes AUTH_SECRET.

Kopiert die erzeugte Zeichenfolge. Wir benötigen sie gleich für unsere YAML-Datei.


4. Docker-Compose-Datei erstellen

Jetzt erstellen wir die eigentliche Docker-Compose-Konfiguration.

Unter macOS könnt ihr dafür beispielsweise TextEdit verwenden.

Öffnet ein neues Dokument und wählt:

Format → In reinen Text umwandeln

Das ist wichtig, damit TextEdit keine formatierte Textdatei erzeugt.

Fügt anschließend folgende Konfiguration ein:

services:
    papra:
        image:  ghcr.io/papra-hq/papra:latest
        container_name:  papra
        hostname:  papra
        restart:  unless-stopped

        ports:
            -  "1221:1221"

        environment:
            TZ:  Europe/Berlin
            AUTH_SECRET:  "HIER_DEIN_SECRET_EINFUEGEN"
            APP_BASE_URL:  "http://DEINE-ZIMAOS-IP:1221"
            DOCUMENTS_OCR_LANGUAGES:  "deu,eng"

        volumes:
            -  /DATA/AppData/papra/app-data:/app/app-data

        user:  "1000:1000"

Jetzt müssen wir einige Werte anpassen.


5. AUTH_SECRET eintragen

Ersetzt:

AUTH_SECRET:  "HIER_DEIN_SECRET_EINFUEGEN"

durch das zuvor erzeugte Secret.

Beispiel:

AUTH_SECRET:  "EUER_EIGENES_LANGES_SECRET"

Verwendet für eure Installation unbedingt einen eigenen Schlüssel.


6. IP-Adresse von ZimaOS eintragen

Bei:

APP_BASE_URL:  "http://DEINE-ZIMAOS-IP:1221"

tragt ihr die lokale IP-Adresse eures ZimaOS-Systems ein.

Beispielsweise:

APP_BASE_URL:  "http://192.168.178.52:1221"

Papra wäre anschließend unter dieser Adresse erreichbar.


Warum Port 1221?

In unserer Konfiguration steht:

ports:
    -  "1221:1221"

Bei Docker gilt:

HOST-PORT  :  CONTAINER-PORT

Papra verwendet innerhalb des Containers Port 1221. Deshalb stellen wir diesen Port ebenfalls auf unserem ZimaOS-System bereit.

Sollte Port 1221 bei euch bereits von einer anderen Anwendung verwendet werden, könnt ihr beispielsweise Folgendes verwenden:

ports:
    -  "8122:1221"

Papra wäre dann über Port 8122 erreichbar.

Entsprechend müsstet ihr auch die APP_BASE_URL anpassen.


Was bedeutet restart: unless-stopped?

Die Zeile:

restart:  unless-stopped

legt die Neustart-Richtlinie des Docker-Containers fest.

Dadurch wird Papra beispielsweise nach einem Neustart des ZimaOS-Servers automatisch wieder gestartet.

Stoppt ihr den Container dagegen bewusst selbst, bleibt er gestoppt.

Für einen dauerhaft laufenden Dienst auf einem NAS ist diese Einstellung sehr praktisch.


OCR für Deutsch und Englisch

Mit:

DOCUMENTS_OCR_LANGUAGES:  "deu,eng"

legen wir die Sprachen für die OCR-Texterkennung fest.

Dabei steht:

deu  =  Deutsch
eng  =  Englisch

Wer andere Sprachen benötigt, muss die Konfiguration entsprechend anpassen.


Was bedeutet user: "1000:1000"?

Diese Zeile wird später noch wichtig:

user:  "1000:1000"

Damit läuft Papra innerhalb des Containers mit:

UID  1000
GID  1000

also nicht einfach als root.

Das ist grundsätzlich sinnvoll, führt unter ZimaOS allerdings zu einer Besonderheit bei den Berechtigungen unseres Datenverzeichnisses.

Dazu kommen wir gleich.


7. YAML-Datei richtig speichern

Unter TextEdit speichert ihr die Datei beispielsweise als:

docker-compose.yml

Achtet darauf, dass TextEdit daraus nicht:

docker-compose.yml.txt

macht.

Falls macOS fragt, ob ihr .txt oder .yml verwenden möchtet, wählt .yml verwenden.


8. Papra in ZimaOS importieren

Jetzt wechseln wir zurück zu ZimaOS.

Öffnet:

App Store → Benutzerdefinierte App installieren → Import → Docker Compose

Wählt eure zuvor erstellte:

docker-compose.yml

aus.

ZimaOS liest anschließend die Compose-Konfiguration ein und übernimmt unter anderem Container, Port, Umgebungsvariablen und Volume.

Danach startet ihr die Installation.

Je nach System kann es einen Moment dauern, bis der Container vollständig eingerichtet wurde.


Wichtig: Berechtigungsproblem unter ZimaOS

Bei meiner Installation trat an dieser Stelle ein Problem auf.

Papra startete immer wieder neu und die Weboberfläche war nicht erreichbar.

Der Grund war nicht Papra selbst, sondern die Berechtigung des Datenverzeichnisses.

ZimaOS hatte die zuvor angelegten Verzeichnisse als:

root:root

angelegt.

Das bedeutet:

root  :  root
  │            │
  │            └──  Gruppe
  └─────────  Benutzer/Eigentümer

Unser Papra-Container läuft dagegen aufgrund unserer Compose-Konfiguration als:

1000:1000

Papra konnte deshalb nicht in das Datenbankverzeichnis schreiben und seine SQLite-Datenbank nicht korrekt anlegen.


9. Berechtigungen korrigieren

Sollte Papra bei euch ebenfalls nicht starten, führt folgende Befehle aus:

sudo  chown  -R  1000:1000  /DATA/AppData/papra/app-data
sudo  chmod  -R  u+rwX  /DATA/AppData/papra/app-data

Anschließend starten wir den Container neu:

sudo  docker  restart  papra

Mit chown ändern wir Eigentümer und Gruppe des Datenverzeichnisses auf die UID/GID, unter der Papra läuft.

Danach konnte Papra auf meinem ZimaOS-System seine Datenbank korrekt erstellen und starten.


10. Papra-Container kontrollieren

Ob der Container läuft, könnt ihr über das ZimaOS-Interface oder im Terminal überprüfen:

sudo  docker  ps

Sollte Papra weiterhin nicht starten, sind die Container-Logs besonders hilfreich:

sudo  docker  logs  -f  papra

Die Live-Anzeige beendet ihr mit:

CTRL  +  C

Solltet ihr einen Fehler rund um:

db.sqlite

bzw. das Öffnen der lokalen Datenbank sehen, überprüft insbesondere die oben beschriebenen Berechtigungen.


11. Papra öffnen

Wenn der Container läuft, öffnet ihr Papra über:

http://DEINE-ZIMAOS-IP:1221

Beispielsweise:

http://192.168.178.52:1221

Jetzt könnt ihr euch registrieren, Papra einrichten und mit dem Import eurer Dokumente beginnen.


Papra oder Paperless-ngx?

Papra verfolgt einen etwas anderen Ansatz als Paperless-ngx und wirkt deutlich schlanker und moderner.

Wer ein umfangreiches Dokumentenmanagement benötigt, sollte sich Paperless-ngx ebenfalls ansehen. Wer dagegen eine übersichtliche Self-Hosted-Lösung für seine Dokumente sucht, für den kann Papra eine interessante Alternative sein.

Ich werde Papra auf meinem ZimaOS-System weiter ausprobieren und bin gespannt, wie sich das Projekt entwickelt.


Video zur Anleitung

Das komplette Tutorial mit allen Schritten findet ihr auch auf meinem YouTube-Kanal:

▶ Papra auf ZimaOS installieren – die schlanke Paperless-ngx Alternative?

Hier klicken, um den Inhalt von YouTube anzuzeigen.
Erfahre mehr in der Datenschutzerklärung von YouTube (opens in a new tab).

Weitere Videos rund um ZimaOS, Docker, NAS und Self-Hosting findet ihr ebenfalls auf meinem Kanal.

Hier klicken, um den Inhalt von YouTube anzuzeigen.
Erfahre mehr in der Datenschutzerklärung von YouTube (opens in a new tab).

Hinweis: Die Anleitung basiert auf meiner eigenen Installation und Konfiguration. Je nach ZimaOS- und Papra-Version können sich einzelne Schritte oder Einstellungen ändern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Please disable your adblocker or whitelist this site!

WordPress Cookie Hinweis von Real Cookie Banner