Scanner im Browser
Funktioniert ohne Einrichtung. Für die Kamera braucht der Browser eine HTTPS-Verbindung.
Dokumentation
Von der ersten Installation bis zum Update. Die vollständige technische Referenz liegt im Repository auf GitLab.
Für den produktiven Betrieb benötigen Sie einen Linux-Server oder ein NAS, auf dem Docker läuft. Planen Sie Speicherplatz passend zur Dokumentenmenge ein und richten Sie regelmäßige externe Sicherungen ein.
Die Compose-Datei startet Digitalregal mit PostgreSQL und Meilisearch. Die Migration des Datenbankschemas wird beim Start automatisch ausgeführt.
git clone https://gitlab.com/digitalregal/digitalregal.git
cd digitalregal/deploy
cp .env.example .envBearbeiten Sie .env vor dem Start: Ersetzen Sie alle CHANGE_ME-Werte durch drei voneinander unabhängige, starke Geheimnisse für POSTGRES_PASSWORD, MEILI_MASTER_KEY und SECRET_KEY. Die Werte müssen dauerhaft sicher aufbewahrt werden; .env gehört nicht in ein öffentliches Repository.
openssl rand -hex 32Führen Sie den Befehl dreimal aus und verwenden Sie für jede Variable einen eigenen Wert.
docker compose up --build -dOhne Reverse Proxy ist die Oberfläche zunächst unter http://SERVER:8000 erreichbar. Für produktiven Internetzugriff setzen Sie DIGITALREGAL_DOMAIN in .env auf Ihren Hostnamen und starten mit dem Caddy-Profil:
docker compose --profile proxy up --build -dZeigen Sie die Domain per DNS auf den Server und geben Sie TCP 80/443 frei. Caddy stellt HTTPS bereit. Legen Sie das erste Instanz-Administratorkonto beim ersten Aufruf an. Status und Startfehler prüfen Sie mit docker compose ps und docker compose logs.
Alle Einstellungen für den Betrieb stehen in der .env-Datei. Jede Variable ist dort kommentiert. Wichtig für den Start sind vor allem:
Für den Betrieb im Internet gehört Digitalregal hinter einen Reverse Proxy mit HTTPS, zum Beispiel Caddy, Traefik oder nginx.
Funktioniert ohne Einrichtung. Für die Kamera braucht der Browser eine HTTPS-Verbindung.
Ein IMAP-Postfach je Regal in den Regal-Einstellungen hinterlegen. Unbekannte Absender landen in der Quarantäne.
Zugangsdaten pro Person in den Profileinstellungen erzeugen und Netzwerkscanner oder Dateimanager damit verbinden.
Persönliche API-Schlüssel in den Profileinstellungen. Die Beschreibung der Schnittstelle liegt im Repository.
Bestehende Ablagen lassen sich unter Einstellungen → Import übernehmen. Unterstützt werden ZIP-Archive mit Ordnerstruktur, ZIP-Archive mit CSV-Manifest und Backups aus paperless-ngx.
Jeder Import startet mit einem Trockenlauf. Er zeigt, wie viele Dateien übernommen werden, welche Duplikate erkannt wurden und ob Fehler auftreten. Erst danach wird tatsächlich importiert.
Das mitgelieferte Skript sichert einen PostgreSQL-Dump sowie die Volumes storage-hot und storage-archive. Führen Sie es im deploy-Verzeichnis aus; das Zielverzeichnis kann absolut angegeben werden:
cd /pfad/zu/digitalregal/deploy
./scripts/backup.sh /srv/backups/digitalregalDas Skript sichert nicht die .env-Datei, das intake-Volume (Dateien, die noch auf den Import warten), Meilisearch oder optionale Dienste wie Mail-Warteschlange und Caddy-Zertifikate. Sichern Sie benötigte Konfigurationen und Zusatzdaten gesondert. Bewahren Sie .env besonders geschützt auf: SECRET_KEY und die übrigen Zugangsdaten werden für den Betrieb und verschlüsselte Einstellungen benötigt.
Lagern Sie Backups verschlüsselt und getrennt vom Server und testen Sie regelmäßig eine Wiederherstellung. Der Suchindex wird nicht mitgesichert und kann aus der Datenbank neu aufgebaut werden.
Wiederherstellen können Sie ein solches Backup mit ./scripts/restore.sh /absoluter/pfad/zum/backup. Das Skript überschreibt die Datenbank und Dokument-Volumes am Zielserver und verlangt eine Bestätigung.
Zusätzlich gibt es unter Import & Export einen fachlichen Export aller Regale als ZIP mit aktiven Dokumentdateien, JSON-Metadaten und CSV-Manifest. Bei vorhandener Arbeitskopie (zum Beispiel einem OCR-PDF) wird diese statt des Archiv-Originals exportiert. Dieser Export ersetzt kein vollständiges Server-Backup.
Digitalregal kann alle Dateiinhalte verschlüsselt auf der Festplatte ablegen: Archiv-Originale, Arbeitskopien und Vorschaubilder. Jedes Regal erhält einen eigenen Schlüssel, sodass Bereiche kryptografisch voneinander getrennt sind. Aktiviert wird die Verschlüsselung, indem Sie in .env einen Master-Key setzen:
openssl rand -base64 32
# als DIGITALREGAL_ENCRYPTION_KEY in .env eintragenNeu angelegte Regale werden ab dann automatisch verschlüsselt; bestehende Regale und Dateien bleiben lesbar und können schrittweise nachgerüstet werden. Das Verschieben eines Dokuments in ein anderes Regal schlüsselt es intern auf den Zielschlüssel um, ohne die Datei neu hochladen zu müssen.
Wer maximale Sicherheit möchte, legt zusätzlich das Hot-Storage-Volume auf einen verschlüsselten Datenträger oder eine RAM-Disk: Temporärdateien der Verarbeitung (etwa OCR) liegen dort kurzzeitig unverschlüsselt.
Lesen Sie vor einer Aktualisierung die Hinweise zur Zielversion und erstellen Sie eine geprüfte Sicherung. Für ein festes Release tragen Sie dessen Versionsnummer (ohne v) als DIGITALREGAL_VERSION in .env ein. Danach:
docker compose pull
docker compose up -dBei einem lokalen Build verwenden Sie docker compose up --build -d statt pull. Compose führt den Dienst migrate vor API und Worker aus; prüfen Sie anschließend docker compose ps sowie die Protokolle von migrate, api und worker. Löschen Sie keine Volumes bei der Aktualisierung. Nach einer Schema-Migration können Sie nicht einfach zu einem älteren Image zurückkehren; im Fehlerfall stellen Sie die vorherige Sicherung wieder her.
docker compose up -d
./scripts/restore.sh /absoluter/pfad/zum/backupDas Restore-Skript stellt PostgreSQL und die beiden Dokument-Volumes wieder her und startet API und Worker erneut. Prüfen Sie Anmeldung, Dokumente und Suche, bevor Sie den DNS-Eintrag auf den neuen Host umstellen. Ein Suchindex-Neuaufbau kann erforderlich sein. intake-Dateien und optionale Dienstedaten müssen separat übertragen werden; sie sind nicht in diesem Skript enthalten.
Der Export enthält aktive Dokumente und unterstützte Metadaten. Wenn eine Arbeitskopie (zum Beispiel ein OCR-PDF) vorhanden ist, wird diese statt des Archiv-Originals exportiert. Benutzerkonten, Passwörter, Regalberechtigungen, Freigaben, Systemeinstellungen und der vollständige Änderungsverlauf werden nicht übertragen. Laden Sie Personen auf der neuen Instanz erneut ein, richten Sie Berechtigungen und Eingänge neu ein und prüfen Sie die importierten Dokumente, bevor Sie Ihr Online-Konto kündigen oder Daten löschen.
Fragen, Fehlerberichte und Wünsche gehören in die Issues auf GitLab. Kundinnen und Kunden des Unternehmenstarifs erhalten Support per E-Mail.