Installation biffo

Die Installation von biffo sollte ohne große Abhängigkeiten von statten gehen. Für die Verwendung bzw. dessen Nutzung sind im Vorfeld einige Voraussetzungen zu schaffen. Im Folgenden wird beschrieben wie eine „einfache“ Installation lauffähig ist. Das Beispiel beruht auf einer CentOS 7 Version bei der im Vorfeld noch ein „yum update“ durchgeführt wurde. Die Installation erfolgte unter dem Benutzer „root“, daher entfällt das vorgesetzte „sudo“.

Folgende Komponenten werden in dieser Beschreibung verwendet:
– yum-utils
– Tesseract 4.x
– wget
– Java 17
– Tomcat 7 (oder vergleichbar)
– PostgreSQL >= 9.x
– OpenSearch 2.x

Installation Tesseract 4.x

Leider ist in dem aktuellen CentOS Repos nur die Version 3.x verfügbar. Nachdem biffo nicht mit 3.x getestet wurde, sollte daher die Version 4.x installiert werden.

Version 4.x wurde von dem Entwickler Alexander Pozdnyakov auf einem Open-Suse Repos bereitgestellt. Dieses Repository wird über folgende Befehle eingebunden:

Falls yum-utils noch nicht vorhanden sind:

yum install yum-utils

Repository hinzufügen:

yum-config-manager --add-repo https://download.opensuse.org/repositories/home:/Alexander_Pozdnyakov/CentOS_7/

Hinzufügen des Repository-Keys:

rpm --import https://build.opensuse.org/projects/home:Alexander_Pozdnyakov/signing_keys/download?kind=gpg

Update der lokalen Installation mittels yum update:

yum update

Installation Tesseract mittels yum install:

yum install tesseract

Wichtig ist hierbei das es sich um Version 4.x handelt. Die Aufforderung kann in diesem Fall mit „y“ bestätigt werden.

Installation passendes Language-Pack mittels yum install:

yum install tesseract-langpack-deu

Nach der Installation sollte überprüft werden, ob Tesseract auch gestartet werden kann:

tesseract

Zum Abschluss sollte auch überprüft werden, an welcher Stelle die Installation und das Daten-Verzeichnis abgelegt wurden. Die Werte sind wichtig für die anschließende Konfiguration.

cd /
find * | grep tessdata

Installation Java >=17

Leider gestaltet sich die Installation von Java nicht mehr so einfach. Durch den Verzicht auf ein RPM seitens Oracle, muss man sich mit einigen Handgriffen beschäftigen.

Falls wget noch nicht installiert sein sollte:

yum install wget

Im Beispiel wird als Installationsort der Ordner /opt verwendet.

cd /opt

Download der Java Binaries von java.net:

wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz

Entpacken des Archivs:

tar xvf openjdk-17.0.2_linux-x64_bin.tar.gz

Kopieren des JDK’s an einen allgemeinen Ort:

mv jdk-17.0.2/ /opt/jdk-17/

Installation Tomcat > 7.x

Download des Tomcat-Application Servers mittels wget.

wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.99/bin/apache-tomcat-7.0.99.tar.gz

Entpacken des Archivs:

tar xvf apache-tomcat-7.0.99.tar.gz

User, Gruppe und entsp. Rechte hinzufügen:

groupadd tomcat
useradd -g tomcat tomcat
chown -R tomcat:tomcat apache-tomcat-7.0.99

Erstellung tomcat.service Datei im Verzeichnis /etc/systemd/system

Diese Datei wird entsp. dem Verzeichnis indem sich der entpackte Tomcat Server befindet angepasst.

Der Service kann dann über systemctl enable tomcat.service eingetragen und über den Befehl systemctl auch gestartet werden.

[Unit]
Description=Tomcat
After=syslog.target network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
WorkingDirectory=/opt/apache-tomcat-7.0.99
Environment="JAVA_HOME=/opt/jdk-17"
Environment="CATALINA_HOME=/opt/apache-tomcat-7.0.99"
Environment="CATALINA_OPTS=-Xms1024M -server"
ExecStart=/opt/apache-tomcat-7.0.99/bin/startup.sh
ExecStop=/opt/apache-tomcat-7.0.99/bin/shutdown.sh
[Install]
WantedBy=multi-user.target

Innerhalb der Datei server.xml müssen noch die Parameter „ maxHttpHeaderSize=“65536“ “ und „ maxPostSize=“4194304“ “ gesetzt werden. Anderenfalls, kann es Probleme bei großen PDF Dokumenten während der Anzeige, Bearbeitung, etc. … geben.

Die Datei server.xml befindet sich im Verzeichnis conf des entpackten Tomcat-Archivs.

Bevor getestet wird ob der Tomcat erreichbar ist, sollte die Firewall-Regeln für den notwendigen Port 8080 geöffnet werden:

firewall-cmd --zone=public --add-port=8080/tcp

Wenn man die Regel nicht bei jedem Server-Neustart erneut eingeben möchte, so sollte die Regel mit einem „–permanent“ versehen werden:

firewall-cmd --zone=public --add-port=8080/tcp --permanent

Der Service wird mittels dem Befehl systemctl dem System bekannt gemacht und kann auch direkt gestartet werden.

systemctl enable tomcat.service
systemctl start tomcat.service

Der Zugriffstest kann dann mit einem normalen WebBrowser erfolgen:

BefehlInfo
systemctl enable tomcat.serviceBekanntmachen des Tomcat-Dienstes
systemctl status tomcat.serviceZeigt den aktuellen Zustand des Dienstes an.
systemctl start tomcat.serviceStarten des Tomcat-Servers
systemctl stop tomcat.serviceStopp des Tomcat-Dienstes

Installation PostgresSQL

Die Installation der notwendigen PostgreSQL Datenbank erfolgt einfach vom System heraus.

yum install postgresql-server

Anmerkung: In dem Beispiel wird die im CentOS hinterlegte Version 9.2.x verwendet. Es sind auch neuere Versionen möglich.

Um die Datenbank in den Betrieb zu bekommen, müssen noch folgende Befehle ausgeführt werden:

postgresql-setup initdb

In der Datei pg_hba.conf muss der Authentifizierungsmethode noch auf „trust“ umgeschaltet werden. Anderenfalls ist kein Login seitens unserer Applikation möglich.

Die Datei „pg_hba.conf“ befindet sich im Verzeichnis:

cd /var/lib/pgsql/data

Die Datenbank kann nach einer Bereitstellung des des Dienstes:

systemctl enable postgresql.service

über

systemctl start postgresql.service

gestartet werden.

Ob die PostgreSQL Installation korrekt durchgeführt wurde, kann über den Befehl:

systemctl status postgresql.service

getestet werden.

Die Rückgabe sollte in etwas wie folgt aussehen:

biffo benötigt eine existierende Datenbank und einen passenden Benutzer. Beides wird mit der psql Shell durchgeführt.

su postgres

Danach öffnet sich die zugeordnete Shell und der Befehl psql öffnet eine Shell zur Datenbank.

psql

Der Befehl create database dms ertellt dann die Datenbank, die für die spätere Konfiguration notwendig ist.

create database dms;

Wie bereits erwähnt, erfolgt die Installation sowohl mittels root aber auch mit dem default postgres user (DB-Admin). Daher sollte direkt das Passwort des PostgreSQL Users geändert werden:

\password

Die Shell kann über \q mit anschliessendem exit verlassen werden.

Installation OpenSearch

Für das Suchen und Finden von Dokumenten, wird Open-Search verwendet.

Download des OpenSearch Servers mittels wget:

cd /opt
wget https://artifacts.opensearch.org/releases/core/opensearch/2.0.1/opensearch-min-2.0.1-linux-x64.tar.gz

Das entpacken erfolgt wie bisher mittels tar:

tar -xvzf opensearch-min-2.0.1-linux-x64.tar.gz

In dem entpackten Verzeichnis, wird auch direkt der Server ausgeführt. Dieses beinhaltet auch das Verzeichnis für die bzw. den Index:

cd opensearch-2.0.1
mkdir data

User, Gruppe und Rechte hinzufügen:

groupadd opensearch
useradd -g opensearch opensearch
chown -R opensearch:opensearch /opt/opensearch-2.0.1

Erstellung opensearch.service Datei im Verzeichnis /etc/systemd/system

Diese Datei wird entsp. dem Verzeichnis indem sich der entpackte Opensearch Server befindet angepasst. Die folgende Konfiguration als Service wurde unter Anpassungen der Ordner aus dem Internet übernommen.

[Unit]
Description=Opensearch
Documentation=https://opensearch.org/docs/latest
Requires=network.target remote-fs.target
After=network.target remote-fs.target
ConditionPathExists=/opt/opensearch-2.0.1
ConditionPathExists=/opt/opensearch-2.0.1/data
[Service]
User=opensearch
Group=opensearch
WorkingDirectory=/opt/opensearch-2.0.1
ExecStart=/opt/opensearch-2.0.1/bin/opensearch
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65535
# Specifies the maximum number of processes
LimitNPROC=4096
# Specifies the maximum size of virtual memory
LimitAS=infinity
# Specifies the maximum file size
LimitFSIZE=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0
# SIGTERM signal is used to stop the Java process
KillSignal=SIGTERM
# Send the signal only to the JVM rather than its control group
KillMode=process
# Java process is never killed
SendSIGKILL=no
# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143
# Allow a slow startup before the systemd notifier module kicks in to extend the timeout
TimeoutStartSec=75
[Install]
WantedBy=multi-user.target

Das Eintragen als Service erfolgt analog wie beim Tomcat-Server mittels systemctl. Allerdings mit dem neu erzeugten Service-File.

BefehlInfo
systemctl enable opensearch.serviceBekanntmachen des Opensearch Services
systemctl status opensearch.serviceZeigt den aktuellen Zustand des Dienstes an.
systemctl start opensearch.serviceStarten des Opensearch-Servers
systemctl stop opensearch.serviceStopp des Opensearch-Dienstes

Installation und Konfiguration DMS-Applikation

Nachdem die Voraussetzungen für den Betrieb geschaffen wurden, muss die Datei DmsWeb.war in das webapps Verzeichnis des Tomcat-Servers kopiert werden.

Das Deploy-Verzeichnis befindet sich innerhalb des Tomcat-Servers:

cd /opt/apache-tomcat-7.0.99/webapps/

Nachdem die Datei „DmsWeb.war“ in das Verzeichnis kopiert wurde, kann über einen Browser mittels der URL: http://<SERVER-IP>:<SERVER-PORT>/DmsWeb auf die Applikation zugegriffen werden:

Der Username und das Passwort lauten: setup/setup

Im Anschluss öffnet sich folgendes Fenster für die Datenbankkonfiguration:

Folgende Parameter werden nun eingetragen (Die Konfiguration entspricht meiner Installation und muss daher angepasst werden):

NameWert
Datenbank URL:jdbc:postgresql://localhost/dms
Datenbank Benutzer:postgres
Datenbank Password:123456
Datenbankparameter (Beispiel)
ButtonFunktionBeschreibung
AbbrechenAbbruch (Rückgängig falls Edit-Modus) ansonsten Edit-Modus verlassen.
Konfiguration speichernKonfiguration speichern, Tabellen anlegen und Parameter schreiben.
Konfiguration testenTestet die eingegeben Parameterwerte auf deren Korrektheit
Konfiguration editierenWechselt in den Edit-Modus
Konfiguration Re-InitialisierenVerlässt den Konfigurationsmodus und führt einen komplett Refresh der Verbindungen, etc. durch. Es erfolgt ein Redirect zum Login-Fenster.
PostgreSQL Konfiguration – Buttons

Über einen Druck auf de Button „Konfiguration testen“ werden die eingegeben Parameter überprüft.

Der rote Balken liefert die Fehlermeldung, dass die jeweiligen Tabellen noch nicht vorhanden sind. Die Tabelle „DMS-Table Status“ zeigt einen Überblick um welche Tabellen es sich handelt. Die Konfiguration der Zugriffsparameter ist aber soweit OK. Anderenfalls, wäre die Tabelle „DMS-Table Status“ nicht angezeigt worden.

Ein Druck auf „Konfiguration speichern“ generiert die Tabellen und setzt die ersten Konfigurationsparameter.

Über einen „Abbrechen“ und „Konfiguration Re-Initialisieren“ wird die Web-Applikation neu initiert und man kann sich mit dem generierten Admin-Account neu anmelden und das Setup abschliessen.

Der Default Admin Account lautet: admin/admin

Um die Konfiguration zu vervollständigen, muss in den Menu-Eintrag „Config“ gesprungen werden.

Die Einstellungen gliedern sich in vier relevante Bereiche:

Name/BereichBeschreibung
PostgreSQLFestlegung der PostgreSQL Datenbank und der Tabellenstruktur
OpensearchKonfiguration des OpenSearch-Servers für die Suche
DmsConfigParameter Verzeichnisse und ImportTypen
Tesseract-OCRFestlegung der lokal installierten Tessersact OCR Engine

Bereich „PostgreSQL“

Hierbei handelt es sich 1:1 um das oben beschriebene Datenbank-Setup Fenster. Bei Bedarf kann aus einer laufenden Umgebung zu einer neuen Datenbank gewechselt werden. Wichtig hierbei, alle Parameter müssen erneut eingegben werden. Sollte es sich um eine bereits konfigurierte Umgebung handeln, so werden die Einstellungen aus den jeweiligen Tabellen geladen.

Bereich „Opensearch“

Opensearch wird verwendet um die Dokumente zu indizieren und liefert einen Suchindex für die gezielte Suche nach Dokumenteninhalten. Hierzu wird mittels der Konfiguration ein Index innerhalb des Opensearch-Server erzeugt.

NameWert
OpenSearch URL:http://localhost:9200
OpenSearch Index:dms
OpenSearch Benutzer:admin (z.Zt. noch nicht veränderbar -> siehe Releaseplanung)
OpenSearch Password:admin (z.Zt. noch nicht veränderbar -> siehe Releaseplanung)
Opensearch Parameters
ButtonFunktionBeschreibung
AbbrechenAbbruch (Rückgängig falls Edit-Modus) ansonsten Edit-Modus verlassen.
Konfiguration speichernKonfiguration speichern und Index anlegen.
Konfiguration testenTestet die eingegeben Parameterwerte auf deren Korrektheit
Konfiguration editierenWechselt in den Edit-Modus
Opensearch Konfiguration – Buttons

Um den Index anzulegen muss in den Edit-Modus gewechselt und danach die Konfiguration einfach gespeichert werden. Der grüne Balken symbolisiert das der Index erfolgreich erstellt wurde.

Ein Druck auf „Konfiguration testen“ zeigt ob die angegebenen Werte des Opensearch-Servers verwendet werden können.

Solle ein gelber Balken erscheinen, so wurde unter den angegebenen Werten bereits ein Index gefunden. Ob dieser Index mit denen für biffo übereinstimmt, wird nicht überprüft. Im Zweifel bitte einen neuen Namen eingeben und den Index neu erzeugen.

Bereich „DmsConfig“

biffo serialisiert die Dokumente nicht 1:1 in der Datenbank, sondern legt die eingelesenen Dokumente auf Dateiebene ab. Hierzu werden diverse Ablagemöglichkeiten (Verzeichnisse) benötigt.

ParameterBeschreibung
DataFolder:In diesem Verzeichnis werden die Dokumente nach der erfolgreichen Verarbeitung abgelegt. Hierzu wird eine Struktur mit dem Aufbau ../data/YYYYMMDD erstellt. Der Zeitstempel richtet sich nach dem Zeitpunkt der Ver- bzw. Bearbeitung.
ImportFolder:Der primäre Import-Ordner. In diesem Ordner werden Dokumente (siehe ImportImageTypes) aus Servern oder mittels Web-Upload verarbeitet und bei erfolgreichem Abschluß in den DataFolder überführt.
Dokumente die per „cp“ abgelegt wurden, werden nicht erkannt.
TempFolder:Ordner der während der einzelnen Verarbeitungsschritte als Zwischenablage verwendet wird.
ArchiveFolder:Wenn gewünscht, wird nach der Verarbeitung ein ZIP-File mit dem bereitgestellten Dokument erzeugt.
ModuleFolder:Bei Verwendung von API-Modulen, werden diese in diesem Verzeichnis abgelegt.
ImportImageTypes:Unterstützte Import-Image Typen (Derzeit keine Bearbeitung möglich)

Sämtliche Ordner/Verzeichnisse müssen von dem Applikation-Server beschrieben werden können. Es empfiehlt sich dennoch diese Ordner nicht innerhalb des „Tomcat“-Server abzulegen, sondern außerhalb und dem „tomcat“-User dann die Owner Rechte zuzuweisen.

cd /opt
mkdir dms
mkdir dms/data
mkdir dms/import
mkdir dms/temp
mkdir dms/archive
mkdir dms/api
chown -R tomcat:tomcat dms

Die Ordnerstruktur sollte wie folgt aussehen:

Die Werte der erstellten Verzeichnisse werden dann analog zu der obigen Parameterstruktur eingetragen (Edit-Modus) und dann abschließend gespeichert.

Sollte ein Verzeichnis nicht existent sein und/oder keine Berechtigung vorliegen, so erfolgt ein Hinweis an der entsprechenden Stelle.

Bereich „Tesseract-OCR“

Für den Import von Bildern und Dokumenten (pdf, jpg, tiff) wird eine OCR Engine benötigt. biffo setzt hierbei auf die quelloffene Software Tesseract. Das System ermöglicht eine Umwandlung und Texterkennung mit anschließender Überführung in ein suchbares PDF. Diverse Dokumentenscanner liefern zwar eine OCR Erkennung mit, diese geschieht im Regelfall aber außerhalb irgendwo in einer Cloud-Applikation.

ParameterBeschreibung
Installationsverzeichnis:In welchem Verzeichnis befindet sich die Tesseract Anwendung
Datenverzeichnis:Verzeichnis mit den Lanugage-Packs. Hierüber kann auch auf ein anderes Pack (z.B. FAST) gewechselt werden
Programmname:Der Befehl bzw. die Anwendung selbst.
Sprache:Welches Language-Pack soll verwendet werden. Derzeit nur Deutsch und Englisch
OCR Engine mode:OCR Mode von Tesseract (bitte die Tesseract Dokumentation konsultieren)
Page segmentation modes:Der Modus wie Tesseract die Quell-Datei verarbeitet (bitte die Tesseract Dokumentation konsultieren).
DPI:Mit welcher Auflösung werden z.B. Bilder in ein Tiff-Dokument konvertiert. Je höher die Auflösung, desto langsamer wird die Umwandlung und die Dateigröße wächst erheblich mit.
ButtonFunktionBeschreibung
AbbrechenAbbruch (Rückgängig falls Edit-Modus) ansonsten Edit-Modus verlassen.
Konfiguration speichernKonfiguration speichern und Index anlegen.
Konfiguration testenTestet die eingegeben Parameterwerte auf deren Korrektheit und versucht das Programm Tesseract zu starten.
Konfiguration editierenWechselt in den Edit-Modus
Tesseract Konfiguration – Buttons

Nachdem die Einträge vollzogen wurden, kann die Konfiguration getestet und gespeichert werden.

Bereich „Variablen“

Dieser Bereich zeigt die gespeicherten Parameter (u.A. Password im Quelltext) und sollte nur auf Anweisung modifiziert werden. Daher an dieser Stelle keine Erklärungen.

Erstes Dokument importieren

Wenn alle Einstellungen vollzogen wurden, kann versucht werden das erste Dokument in biffo zu importieren.

Aufgrund der nicht vorhandenen Verzeichnisse, muss erstmalig der „Default PDF Importer“ per Hand gestartet werden. Dieses geschieht im Mneü „Administration“ und dort unter dem Reiter „Importers“.

Ein Druck auf den grünen „Startknopf“, startet den Web-Importer. Für den Fall das der Button weiterhin auf der Farbe grün verweilt, bitte mit F5 die Seite aktualisieren. Der Button sollte dann auf die Farbe rot gewechselt haben.

Anschließend kann im Menü „Home“ der „Default PDF Importer“ verwendet werden. Entweder über einen Druck auf „Select Files“ mittels Filedialog ein Dokument auswählen oder per D&D ein Dokument auf den Importer ziehen.

Nach Selektion bzw. D&D erfolgt der Start der Default-Verarbeitungskette.

Nach Beendigung der Prozesskette ohne Fehlermeldung (grüner Balken), ist das Dokument erfolgreich in das System importiert worden.

Hiermit endet die erstmalige Installation.

Weitere Informationen befinden sich in Nutzung biffo.