UPDATE: SeedDMS 4.3.13 auf einem QNAP TS-451 (TS-251) installieren

Eine Information vorab: Ich übernehme keine Haftung wenn aufgrund von Fehlern in meiner Anleitung irgendwelche Schäden an eurem NAS oder dessen Daten auftreten. Solche sind zwar nicht zu erwarten, aber wenn wir uns als Admin auf der Konsole des NAS bewegen kann man als unerfahrener Benutzer (als erfahrener Benutzer natürlich auch) diversen Schaden anrichten. Ich überlasse es daher jedem Leser selbst ob und wie er sein NAS System zerschießt. Ich selbst habe die Installation entsprechend dieser Anleitung durchgeführt, mein QNAP war dabei auf dem Stand einer frisch installierten Firmware 4.1.1. Es kann sein, daß unter anderen Firmware-Versionen die Standard-Konfiguration des QNAP und damit auch das Vorgehen für die Installation ein wenig abweicht.

Nachdem ich vor einiger Zeit auf meinem QNAP TS-219P+ SeedDMS installiert habe und der Blog-Eintrag dazu auf recht große und positive Resonanz gestoßen ist, wird es Zeit für ein Update.

Inzwischen gibt es nicht nur neue Firmware Updates (aktuell zum Zeitpunkt des Verfassens dieses Blog-Eintrags war Version 4.1.1) die ein paar Dinge vereinfachen in der Installation, sondern ich habe inzwischen auch den Schritt von einem 2-Bay System auf ein etwas potenteres 4-Bay NAS mit Intel CPU gemacht: das TS-451. Ich gehe davon aus das die folgende Anleitung für die meisten Intel-basierten QNAPs identisch funktionieren sollte, dennoch würde ich mich freuen wenn zukünftige Leser in Ihren Posts auch Ihr QNAP Model und die Firmware posten könnten, ich werde dies dann in der folgenden Liste ergänzen.

Erfolgreiche Installationen von SeedDMS mit QNAP Geräten

  • QNAP TS-451 / Firmware v4.1.1
  • QNAP TS-470 / Firmware v4.1.2
  • QNAP TS-269Pro / Firmware v4.1.2

Ich möchte hier nun den von mir verfolgten Ansatz vorstellen wie man das kostenfreie DMS (=Dokumenten Management System) „SeedDMS“ aus einem Intel-basierten NAS (=Network Attached Storage), im speziellen auf dem QNAP TS-451, installiert.

Voraussetzungen für die Installation

SeedDMS basiert auf PHP, das bringt der Apache Webserver der im QNAP NAS läuft bereits mit. Ebenfalls wird eine Datenbank benötigt, hier wird MySQL unterstützt. Auch diese Kann über das Webinterface des QNAP einfach aktiviert werden. Dazu einfach auf der Weboberfläche des QNAP auf „Systemsteuerung“ gehen, dort unter „Anwendungen“ auf „MySQL-Server“ klicken und verifizieren, dass die Checkbox „MySQL-Server aktivieren“ aktiviert ist.

Die Checkbox „TCP/IP-Netzwerk aktivieren“ muss, zumindest für SeedDMS, nicht aktiviert sein und aus Sicherheitsgründen würde ich den Zugriff auf die Datenbank auch nur von lokal zulassen, sprich die Checkbox deaktivieren.

Da SeedDMS Dokumente auch analysieren (Texte extrahieren) und Thumbnail-Ansichten davon erstellen muss, sind noch zusätzliche Pakete zu installieren, hierauf gehe ich im Detail in den folgenden Abschnitten ein.

Benötigt werden konkret die folgenden, zusätzlichen Pakete:

  • pdftotext: ein Tool, welches Bestandteil des xpdf Pakets ist, zum Extrahieren von Text aus PDF-Dokumenten, dies wird benötigt, damit SeedDMS auch Inhalte von PDF-Dateien für die Volltextsuche indizieren kann. Ohne pdftotext werden von PDF-Dateien nur die Dateinamen indiziert.
  • Catdoc und XLS2CSV: hiermit kann Text aus Word und Excel Dokumenten extrahiert werden. Auch diese beiden Kommandos werden für die Volltext-Suche benötigt
  • ImageMagick: für die Erstellung von Thumbnails (kleine Vorschaubilder in den Listenansichten) von Bildern wird das convert-Kommando von ImageMagick benötigt. Ohne dieses wird SeedDMS keine Vorschaubilder in der Weboberfläche anzeigen.
  • ghostscript: zur Erstellung von Thumbnails von PDD-Dateien

Dann benötigt SeedDMS aber auch noch ein paar andere Pakete, die nicht zum Standardumfang der QNAP Software gehören, wie diese installiert werden beschreibe ich im folgenden Abschnitt.

Schritt 1: Benötigte third party Pakete installieren

Die oben genannten Pakete zum Betrieb von SeedDMS mit all seinen Funktionen sind in der Standard Firmware von QNAP nicht installiert und müssen nachträglich installiert werden.
Da es sich jedoch nicht um selbständige Applikationen handelt, sind diese im App Center nicht zu finden und müssen über den Paketmanager installiert werden.

Paketmanager installieren

Als Paketmanager kommt bei QNAP Optware IPKG zum Einsatz.
Dieser kann sehr einfach in der Web-Oberfläche des QNAP im App Center installiert werden, einfach in der Suche des App Centers „IPKG“ eingeben und dann auf  „Zu QTS hin… +“ klicken.

(Weitere Infos dazu findet man hier: http://wiki.qnap.com/wiki/Install_Optware_IPKG)

Nach der Installation erscheint das Icon auf dem Dashboard des NAS Webinterfaces, damit öffnet man das ipkg Webinterface über welches man dann die gewünschten Pakete installieren kann. Ich bevorzuge jedoch den Weg über die Konsole, da wir eh auf der Konsole arbeiten müssen für die Einrichtung von SeedDMS und die Installation der Pakete dort schneller von der Hand geht.

Nun ist es also an der Zeit sich auf dem QNAP in der Konsole per SSH anzumelden (mit dem Admin Benutzer und seinem Passwort = identische Daten wie im Webinterface)

Ich nutze hierzu das kostenfreie Tool „Putty„, hat man sich erfolgreich an der Konsole angemeldet geht es an das Installieren der benötigten Pakete.

Installieren von PdfToText / xpdf

Will man auch PDF-Dokumente indizieren für die Volltextsuche in SeedDMS, so wird das Kommando pdftotext benötigt um Text aus PDF-Dokumenten zu extrahieren. Dieses ist Bestandteil des xpdf Pakets welches man mit ipkg installiert über den Konsolenbefehl:

Die Ausgabe in der Konsole sollte dann wie folgt aussehen:

Wichtig ist nur, dass am Ende „Successfully terminated“ ausgegeben wird. Ist das nicht der Fall, so ist xpdf nicht korrekt installiert und es wird auch keine Indizierung von PDF-Dokumenten möglich sein. Testen kann man die Installation indem man eine PDF Datei auf das NAS lädt und den Befehl „pdftotext -nopgbrk <Dateiname des pdf> -“ (wichtig ist das Minus am Ende, da sonst die Ausgabe in eine txt-Datei umgeleitet wird) ausführt. Als Beispiel hier zwei Kommandos mit denen man einfach eine PDF Datei von der QNAP Homepage runterlädt und dann den Text extrahiert:

Das Ergebnis dieser beiden Kommandos sollte ein Output von einer Menge Text auf der Konsole sein (der Inhalt des PDF-Dokuments eben). Wenn das klappt, sollte pdftotext erfolgreich installiert sein und muss nur noch in SeedDMS konfiguriert werden. Mehr dazu später.

Wichtig: das PDF-Dokument, welches zum Testen benutzt wird, muss unbedingt textuellen Inhalt haben und nicht nur eingebettete Bilder, sonst kann auch pdftotext keinen Text extrahieren. pdftotext ist KEIN OCR Programm, Texte in Bilddaten werden also nicht extrahiert und dementsprechend kann auch SeedDMS sie nicht in einer Suche berücksichtigen.

In aller Kürze dazu ein Exkurs: Für wen eine Texterkennung wichtig ist, der sollte sich einmal das Paket tesseract-ocr ansehen, dieses kann auch mittels IPKG installiert werden (die passenden Sprachpakete müssen separat installiert werden tesseract-ocr-lang-eng bzw. tesseract-ocr-lang-deu). Damit könnte SeedDMS mit minimalen Anpassungen auch eine OCR Erkennung durchführen, hierzu werde ich aber ggf. in einen separaten Beitrag aufsetzen, da dies den aktuellen Scope des Posts hier verlässt. Grob gesagt, tesseract-ocr erwartet Bilder als Input und speichert den erkannten Text dann in einer Text-Datei. In Zusammenspiel mit ImageMagick kann hier also auch eine völlig automatische OCR Erkennung realisiert werden, wie gut die Erkennungsrate ist kann ich jedoch nicht sagen, dafür fehlen mir die Erfahrungswerte. IPKG installiert die recht alte Version 2.x von tesseract-ocr, diese kann nur mit TIF-Bildern umgehen wie es scheint. Neuere Versionen sind in der Lage auch anderer Bildformate zu lesen. Wenn man dann ein lauffähiges tesseract hat, muss man noch SeedDMS in der settings.xml einen Eintrag erstellen für die Bild-Formate die man damit parsen möchte. Unbedingt vorher ein Repository in ipkg auswählen in dem eine neuere Version von imagemagick enthalten ist und ggf. die Version 3.x von tesseract-ocr. Bevor man sich jedoch auf dieses Abenteuer einlässt, sollte man erstmal SeedDMS ohne OCR Funktion vollständig und Fehlerfrei zum Laufen bekommen. Also zurück zum eigentlichen Thema.

CatDoc und XLS2CSV

Für die Indizierung von Word-Dokumenten benötigt SeedDMS ein Tool zur Extraktion wie catdoc, welches man auch über ipkg installieren kann:

Die Ausgabe sollte dann wie folgt aussehen:

Auch hier ist es wieder wichtig am Ende die Zeile „Successfully terminated“ zu sehen.

Excel-Dateien werden standardmäßig von SeedDMS mit „ssconvert“ umgewandelt zur Indizierung, dieses habe ich in ipkg jedoch nicht gefunden, dafür einen Hinweis in der Dokumenation von catdoc, dass für Excel Tabellen auch xls2csv genutzt werden kann. Das wurde mit catdoc bereits installiert, nun muss jedoch auch die Konfiuration von SeedDMS angepasst werden damit er diesen Kommandozeilen Aufruf nutzt (anstelle von dem ssconvert aufruf sollte es dann heißen „xls2csv -l -dUTF-8 %s“). Das kann im Admin Bereich in dem Feld „application/vnd.ms-excel:“ (unter den erweitereten Optionen zu finden). Mehr dazu später bei der Konfiguration von SeedDMS.

ImageMagick

Die Installation von ImageMagick ist optional und wird nur benötigt wenn man Vorschau Thumbnails generieren möchte für alle möglichen Dokumente.

Ich selbst bin mir noch nicht ganz schlüssig ob ich die Preview-Funktion auf dem QNAP nutzen möchte, die Gründe die gegen die Nutzung vom Thumbnails sprechen sind folgende:

  • SeedDMS speichert die Thumbnails als png-Dateien (mit einem hohen Qualitätsfaktor), für so kleine Dateien (100px/100px bzw 40px/40px) macht das aus meiner Sicht wenig Sinn. Ein mit ImageMagick generiertes Thumbnail mit 100px braucht hier (je nach Detailgrad) auf meinem QNAP ca. 30KB und mehr, wenn man nun bedenkt, dass die PDFs von denen ich Thumbnails generiere ca. 50-70KB haben ist das ein ziemlich mieses Verhältnis, gerade wenn man das hochrechnet auf viele Tausend Dateien ist der Speicherbedarf der hierdurch entsteht mit fast 40-60% des Originaldokumentes schon sehr hoch. Zudem kommt ja noch das zweite Thumbnail für die Listenansicht mit 40px/40px. Würde man hier umstellen auf jpg wäre das sicherlich deutlich geringer (eher 3-7kb pro Thumbnail nach meinen Tests), dann muss man jedoch auch den Previewer bzw. die Aufrufende Klasse anpassen, kein Hexenwerk aber man bewegt sich nicht mehr am Standard und muss es mit jedem neuen Release nachziehen. Um dieses ungünstige Verhältnis etwas zu verringern habe ich mich entschlossen wenigstens auf die zwei verschiedenen Größen für Thumbnails zu verzichten, dazu muss man einfach die Werte in der SeedDMS Konfiguration (conf/settings.xml) für „previewWidthList“ und „previewWidthDetail“ auf den gleichen Wert setzen.
  • Der Nutzen eines Thumbnails ist bei den meisten Formaten eher gering (ausser bei Bildsammlungen natürlich) da ich jedoch eher PDFs archiviere ist das für mich eher nebensächlich, muss man selbst entscheiden wie viel einem der Mehrverbrauch an Speicher wert ist, relevant wird es natürlich erst ab ein paar 10-Tausend Dateien im DMS, dann geht aber auch das ein oder anderer Giagbyte nur für die Thumbnails hops.

Optional: Wer Wert darauf legt auch TIF-Unterstützung in imagemagick zu haben, wird mit der Version 6.6.1-5 die mit den Standard-Einstellungen von ipkg installiert wird, nicht glücklich werden. Um eine neuere Version (6.6.9-1) zu installieren, muss vor dem Ausführen des install Befehls die Quellenliste von ipkg angepasst werden, dazu in der Datei „/share/CACHEDEV1_DATA/.qpkg/Optware/etc/ipkg.conf“ z.B. den Kommentar (das #-Zeichen) beim ersten src Eintrag entfernen. Aus

 wird dann

Anschließend muss die Paketliste von ipkg aktualisiert werden:

In kann nicht beurteilen wie verlässlich die o.g. Quelle für Pakete ist, sie ist jedoch im Standard config file von QNAP bereits enthalten, somit sollte es nicht der letzte Murks sein….bleibt zumindest zu hoffen. Generell sollte man ggf. nach der Installation von imagemagick die Zeile wieder auskommentieren und erneute ein ipkg update ausführen.

Damit Thumbnails generiert werden können von den einzelnen Dokumenten muss nun also ImageMagick installiert sein, dies kann man mit folgendem Aufruf installieren (hier werden dann ein paar mehr Abhängigkeiten direkt mit installiert für die verschiedenen Bildformate):

Auch hier wieder darauf achten, dass am Ende „Successfully terminated.“ steht.

Mit „/opt/bin/convert -version“ kann dann die Version von ImageMagick geprüft werden.

Aber das Generieren von Thumbnails für diverse Bildformate (jpg, gif, png, bmp) klappt damit schonmal, sofern 6.6.9 installiert wurde, sollte auch TIFF unterstützt werden.

Ghostscript

Wünscht man auch von PDFs Thumbnails zu erstellen, so muss hier noch ghostscript zu installiert werden.

Also noch ghostscript installieren mittels:

Der geneigte Leser weiss schon welcher Verweis jetzt kommt: Auch hier gilt, am Ende muss „Successfully terminated.“ in der Konsole stehen.

Damit hat man zumindest alles um auf der Kommandozeile mittels eines Kommandos wie „convert -resize 200×200 test.pdf[0] test.png“ die erste Seite eines PDF-Dokuments in ein PNG umzuwandeln und auf die Größe 200 x 200 Pixel einzupassen. Je nach Umgebung kann es sein das hier noch eine Warnung ausgegeben wird, es zählt aber nur das Ergebnis, sofern die PNG-Datei erstellt wurde und tatsächlich auch ein Thumbnail der ersten Seite des PDF darstellt, sollte es ok sein.

Wenn das Ganze dennoch im SeedDMS später nicht klappt, so lies sich das in meinem Fall dadurch beheben, dass in der php.ini höhere Werte für die Laufzeit von Scripten und speziell wohl auch eine Erhöhung des maximal von PHP nutzbaren Speichers erfolgte.

Die php.ini kann über die Admin-Oberfläche vom QNAP bequem editiert und gespeichert werden (unter „Systemsteuerung“ -> „Anwendungen“ -> „Webserver“ -> runter scrollen und im Bereich „php.ini bearbeiten“ auf den Button „Bearbeiten“ klicken. Dann die folgenden Werte anpassen:

Nach dem nun alle notwendigen Abhängigkeiten instaliert sind, kann man sich an die eigentliche Installation von SeedDMS machen

Sendmail konfigurieren für den E-Mail-Versand von SeedDMS

SeedDMS kann zu verschiedenen Events E-Mails versenden um einen Benutzer oder eine Gruppe von Benutzern zu benachrichtigen.

SeedDMS 4.x nutzt dazu die mail-Funktion von PHP, diese wiederum nutzt das lokale sendmail zum versenden von E-Mails. Also muss sendmail auf dem QNAP korrekt konfiguriert werden, was zum Glück sehr einfach über die Weboberfläche getan werden kann.

In den Systemeinstellungen muss dazu nur unter „Benachrichtigungen“ der SMTP-Server konfiguriert werden.

Man benötigt also die Daten zu einem externen, korrekt konfigurieren Mail-Server (kann auch Gmail, Yahoo oder sonst etwas sein).

Es muss also der Hostname unter „SMTP-Server“ eingetragen werden, sowie Port, E-Mail Adresse (Absender), Benutzername und Passwort eingetragen werden. Dann sollte man eine Testmail versenden, erst wenn das geklappt hat (beim ) und man die Testmail erhalten hat, ist der Mailversand und damit sendmail korrekt konfiguriert.

MySQL Datenbank für SeedDMS vorbereiten

SeedDMS speichert seinen Daten in einer SQL Datenbank. Da auf dem QNAP MySQL bereits vorinstalliert ist, sollten wir das auch nutzen. Dazu muss jedoch zuerst eine neue Datenbank angelegt werden sowie ein user für SeedDMS.

Da zu Begin ja bereits phpMyAdmin instaliert wurde, sollte man die neue Datenbank und den User darüber anlegen, es kann einfach im App Center aufgerufen werden. In der Standardkonfiguration ist der Benutzer „root“ und das Password „admin“.

Nachdem man sich im webinterface in phpMyAdmin angemeldet hat, klickt man auf den Reiter „Benutzer“. Auf der folgenden Seite dann auf „Benutzer hinzufügen“. In dem folgenden Formular tipt man in das Feld „Benutzername“ den neuen Namen „seeddms“. Unter „Host“ wählt man in der Dropdown-Liste „Lokal“. Und das Passwort lässt man am besten generieren mit einem Klick auf den Button „Generieren“. Das generierte Passwort notiert/kopiert man sich nun, es wird später in der settings.xml eingetragen.

Dann im Abschnitt „Datenbank für Benutzer“ noch den Haken setzen bei „

Nun ganz unten auf der Seite auf „Ok“ klicken. Die Datenbank und der Benutzer sollten nun angelegt sein.

Was den genauen Ablauf zum Anlegen von Datenbanken und Benutzern angeht, so verweise ich hier für weitere Fragen auf die Dokumentation von PhpMyAdmin.

Schritt 2: SeedDMS herunterladen und installieren

SeedDMS wird gehostet auf Sourceforge, ich beschreibe aktuelle die Installation von SeedDMS in der letzten Version des Major Relases 4, der Version 4.3.13. Die Version 5 ist zum Zeitpunkt noch in einem Pre-Release Stadium und daher für mich nicht interessant, da mir die Erhaltung meiner Daten wichtiger sind als die neusten Features des DMS 🙂

Ich installiere seedDMS im Verzeichnis /share/Web/seeddms damit beziehen sich alle folgenden Schritte auf dieses Verzeichnis, wenn es woanders installiert werden soll, müssen die Pfade entsprechend angepasst werden.

Mann hat zwei Möglichkeiten SeedDMS herunter zu laden, einmal in vier einzelnen Paketen oder als „quickstart“-Paket.

Ich habe mich in diesem Post zum Download des Quickstart Paketes entschlossen, was etwas komfortabler ist im Setup-Prozess.

Mittels wget kann man das Paket direkt auf das NAS von der Konsole aus hertunterladen, dazu legen wir zuerst das Verzeichnis „share/Web/seeddms“ an und laden dann das Archiv herunter:

Nun wird das Archiv im seeddms Verzeichnis entpackt:

Der Inhalt wird dann in ein Unterverzeichnis „seeddms43x“ entpackt, diese Untverzeichnis sollte dann wie folgt aussehen:

Das eigentliche, im Webserver öffentlich zugreifbare Verzeichnis ist das „www“ Verzeichnis (ist auch nur ein symbolische Link auf der Ordner „seeddms-4.3.13“.

Da nun die Verzeichnis-Struktur recht verschachtelt ist (wir befinden uns ja quais im Pfad „/share/Web/seeddms/seeddms43x/www“ wenn wir von dem für den Apache Server relvanten INhalten sprechen) habe ich mich entschieden ein weiteren symbolischen Link auf das www Verzeichnis direkt im http-root Verzeichnis des Webservers (/share/Web) anzulegen:

Damit haben wir also das www Verzichnis direkt im webserver root unter „dms“ erreichbar gemacht. Das heisst wir können das DMS später einfach mit der URL „https://<nas ip>:8081/dms“ aufrufen (anstelle des etwas unschönen Pfades „https://<nas ip>:8081/seeddms/seeddms43x/www“.

Einige der Dateien von SeedDMS sind scheinbar unter Windows erstellt worden und die Zeilenumbrüche sind auch noch Windows Zeilenumbrüche, ich habe daher rekursiv auf alle PHP dateien den Befehl dos2unix ausgeführt um alle Umbrüche zu konvertieren:

Zuletzt noch einmal alle Dateirechte setzen auf den neuen Dateien und Verzeichnisse, damit Dateien von SeedDMS auch geschrieben werden können (mein Ansatz ist vermutlich etwas radikal alles auf 755 zu setzen, aber ich wollte nicht mit trial und error rausfinden welche Rechte jeweils auf den einzelnen Ordnern und Dateien notwendig sind, rein theoretisch sollte es ja sogar reichen 700er Rechter zu sezten für den httpdusr mit dem Apache läuft):

Zuletzt würde ich noch das Verzeichnis /share/Web/seeddms (und dessen Unterverzeichnisse) vor Zugriffen über das Web schützen, dazu eine Datei mit dem Namen „.htaccess“ (Wichtig: vor dem Punkt darf nichts stehen, die Datei wird von Apache genau mit diesem Namen erwartet in der Standard Konfiguration) in eben diesem Ordner erstellen mit folgendem Inhalt:

Nun muss die Konfiguration von SeedDMS noch angepast werden, dazu sind zwei Dateien zu editieren.

Anpassung der zentralen settings.xml Datei

Die settings.xml ist, wenn obiger Anleitung befolgt wurde, unter /share/Web/dms/conf/settings.xml zu finden.

Dies ist die zentrale Konfigurationsdatei von SeedDMS. Hier müssen nun die Pfade angepasst werden damit SeedDMS weiss wo es Dateien, Suchdaten, Thumbnails und uploads findet und wo es selbst installiert ist.

  1. Dazu sind alle Vorkommen (es sollten 5 sein) von „/home/www-data/seeddms43x“ zu ersetzen durch „/share/Web/seeddms/seeddms43x„.
    Der Wert des Attributs httpRoot=“/seeddms/“ muss geändert werden in httpRoot=“/dms/“.
    Die betreffenden Zeilen in der Konfiguration sollten nun wie folgt aussehen (die Zeilenumbrüche können natürlich auch wegggelassen werden):



    Hinweis: Bitte unbedingt prüfen ob auch alle Pfade die oben eingetragen wurden auch exisieren. Ein paar Kommentare zeigten, das nicht immer alle Verzeichnisse existierten und es dann zu Fehlern kommt.
  2. Die Werte von dbPass, dbUser und dbDatabase sind anzupassen an die gewählten Werte der Datenbank also z.B. dbuser=“seeddms“ dbDatabase=“seeddms“ und das Passwort welches beim einrichten des Datenbankusers gewäht wurde in dbPass=“…“ eintragen. Als dbDriver wird mysql gewählt: dbDriver=“mysql“.
    Die betreffende Zeile in der Konfiguration sollte dann wie folgt aussehen (wobei bei dbPass natürlich das von euch gewählte Passwort für den MySQL Benutzers „seeddms“ eingetragen werden muss):
  3. Nun sind noch die Pfade auf die einzelnen converter einzutragen (die zum extrahieren des Textes aus Dokumenten benötigt werden). Ein Problem bei der QNAP Firmware scheint zu sein, dass Pakete die nachträglich per ipkg installiert wurden, noch nicht im Pfad des httpdusr liegen beim starten des Apache Dienstes. Somit reichen die in der Konfiguration aufgeführten converter Kommandos nicht aus, da sie keinen absoluten Pfad beinhalten. Zudem wird anstelle des Befehls „ssconvert“ der neu installierte Befehl „xls2csv“ für die Extrahierung von Text aus Excel-Tabellen konfiguriert. Von einem Leser bekam ich zudem noch den wertvollen Tip, dass SeedDMS offenbar keine Texte indiziert die nicht UTF-8 kodiert sind, daher muss bei den einzelnen Konvertern jeweils noch der UTF-8 Flag gesetzt werden.
    Der Bereich der Konverter sollte nach der Anpassung wie folgt aussehen:

    Die beiden Zeilen der Konverter für audio/mp3 und audio/mpeg kann man im übrigen einfach löschen, das Tool id3 ist auf dem QNAP nicht verfügbar und wird daher eh nicht ausgeführt werden (bzw. es wird immer einen Fehler geben). Ob jemand wirklich id3-tags aus MP3 indizieren möchte für die Suche, muss jeder selbst wissen. Mann kann z.B. mp3info installieren und dazu nutzen:

    Die Zeile für den converter sollte dann wie folgt aussehen:
  4. wer möchte kann noch den Wert language=“en_GB“ ändern in language=“de_DE“ um Deutsch als Standard-Sprache zu wählen.
  5. Zuletzt sollte man nur noch die Absenderadresse für den E-Mail Versand anpassen. Dazu den Wert von smtpSendFrom=“…“ auf eine valide, existierende E-Mail Adresse ändern. Die Werte für smtpServer und smtpPort sollten so belassen werden.

Anpassung des Preview Scripts:

Im Preview Script wird ebenfalls noch ein Aufruf auf den converter von imagemagick ausgeführt, dieser muss auch noch durch den abosluten Pfad ersetzt werden auf die converter binary.

Dazu die Datei „/share/Web/seeddms/seeddms43x/pear/SeedDMS/Preview/Previewer.php“ bearbeiten und alle vorkommen von „convert“ ersetzen durch „/opt/bin/convert“. Am einfachsten geht das mit sed in der Kommandozeile (kann in einem beliebigen Verzeichnis ausgeführt werden, da die zu ändernde Datei absolut referenziert wird in der Befehlszeile, bitte dennoch anschließend in der Datei noch einmal prüfen ob wirklich alle Vorkommen von „convert“ ersetzt wurden durch „/opt/bin/convert“):

Wer Thumbnails für Bitmap Dateien (.bmp) hinzufügen möchte, ergänzt unter der Zeile

noch die folgende Zeile ein:

Wer imagemagick in der neueren Version 6.6.9 installiert hat, kann nun noch Tiff Dateien hinzufügen zur Liste der Dateien für die ein Thumbnail generiert werden soll durch einfügen einer weiteren Zeile:

Anpassung der Upload Scripte in SeedDMS:

Beim Upload von Dateien gibt es in SeedDMS noch eine Unzulänglichkeit was die Bestimmung von MIME-Types angeht. SeedDMS vertraut hier auf den MIME-Type den der Browser des Benutzers übergibt, diese ist aber nicht unbedingt korrekt. Bei meinen Tests mit Firefox gab dieser z.B. für PDFs nie den korrekten MIME-Type „application/pdf“ an, dies führte dazu, das SeedDMS bei dem versuch den Text zu extrahieren für die Suche, keinen passenden converter fand und somit PDFs die mit dem Firefox hochgeladen wurden, nicht indiziert wurden.

Der folgende kleine Patch „überredet“ SeedDMS doch besser selbst den MIME-Type von neuen Dokumenten zu bestimmen und nicht dem Browser zu vertrauen (kann auch wieder an beliebiger Stelle im Filesystem ausgeführt werden):

Das wars, nun sollte SeedDMS fertig sein für das finale Setup, das Anlegen der Datenbanktabellen.

Damit man nun den Installer von SeedDMS starten kann, muss eine Dummy Datei mit dem Namen „ENABLE_INSTALL_TOOL“ im Verzeichnis „/share/Web/dms/conf“ angelegt werden, der Inhalt ist egal, die Datei muss nur da sein.

Ein einfacher touch Befehl reicht:

Dann ruft man im Browser die Url zu dem Installationsscript auf, die jedoch variiert je nachdem auf welchen Ports euer Webser läuft und ob https aktiv ist.

https://<eure nas-ip>:8081/dms/install/index.php

Nun sollte man die Startseite des installationsscriptes sehen, die zuerst prüft ob die Abhängigkeiten vorhanden sind ung ggf. Warnungen ausgibt. Wenn jedoch die obigen Schritte alls ausgeführt wurden, sollte keine Warnung kommen und auch nichts geändert werden müssen.

In meinem Fall sieht die Meldung wie folgt aus:

install_screen_1_seeddms

Wenn nun alles stimmt, muss man noch den Haken setzen bei „Create database tables“ (bzw. Datenbank Tabellen anlegen) um die Datenbank Tabellen initial anlegen zu lassen und dann auf Apply /  klicken.

Dann arbeitet das NAS einen kurzen Moment und es sollte folgende Meldung zu sehen sein:

install_screen_2_seeddms

Nun muss nur noch die zuvor erstelle Datei „ENABLE_INSTALL_TOOL“ gelöscht werden, dies kann direkt durch den Link „Lösche ENABLE_INSTALL_TOOL wenn möglich“ erledigt werden, wenn die Datei-Rechte wie oben beschrieben gesetzt wurden. Andernfalls muss man die Datei eben von Hand löschen.

Dann kann man sich mit Benutzer „admin“ und Password „admin“ am DMS anmelden über den Link der in der Abschlussmeldung zu sehen ist.

Das Admin Passwort sollte man natürlich zuerst mal ändern in etwas sichereres. Zudem sollte man die E-Mail Adresse des Administrators ändern auf eine existierende Adresse, damit Benachrichtigungen an den Administrator erfolgreich gesendet werden können. Zum ändern von Passwort und E-Mail Adresse einfach in SeedDMS oben recht im Drop-Down Menu auf „Mein Profil“ klicken, dann Passwort und E-Mail Adresse ändern und speichern.

Stopword Liste für Lucene anlegen

Wenn nun alles läuft sollte man noch eine stopword-Liste anlegen. Eine solche Liste enthält alle Wörter die von Lucene (der „search engine“ / die Suche die SeedDMS nutzt) NICHT indiziert werden sollen, weil sie so oder so in so gut wie jedem Dokument vorkommen und somit in einem Suchindex nur Platz verbrauchen aber wenig nutzen haben. Wann sucht man z.B. schon mal alle Dokumente in denen das Wort „und“ auftaucht? Eben, normalerweise nie.

Als Basis-Liste für eine deutsche Stopword-Liste könnte man folgende nehmen:

Die Stopwords schreibt man einfach in eine Text-Datei (pro Zeile ein Wort) und kopiert diese auf das NAS, z.b. unter ein neues Verzeichnis „/share/Web/seeddms/stopwords/“ die Datei habe ich „stopwords_de.txt“ benannt, ist aber eigentlich egal. Natürlich kann man sich auch weitaus umfangreichere Stopwords-Dateien aus dem Internet ziehen, wichtig ist nur das jedes Wort in eine Zeile steht (Komma-Separierte Listen gehen z.B. nicht) und das das Character Encoding stimmt.

Nun muss man in der Konfiguration (settings.xml) nur noch auf diese Datei verweisen (natürlich ist der Pfad und Name entsprechend der von euch gewählten Nomenklatur anzupassen) im bestehenden Knoten „edition“ muss dazu das Attribut „stopWordsFile“ angepasst/hnizugefügt werden mit dem konkreten Pfad auf eurer Stopwords-Datei:

Um zu prüfen ob die Liste gezogen wird, einfach den Volltext-Index neu bauen über die Admin Maske von SeedDMS (Vorsicht: dauert bei vielen Daten im DMS laaaange) und dann die Volltext-Index Info Seite in SeedDMS aufrufen. In der Liste sollten nun keine Zeilen auftauchen die mit „content:“ beginnen und dann ein Stopwort anzeigen. Natürlich muss für einen sinnvollen Test mindestens eine Datei im DMS liegen in der die Wörter auch enthalten sind und die inidziert werden kann.

Kleiner TIP noch wenn man nur leere Seiten im Browser angezeigt bekommt:

Ich hatte anfangs das Problem das manche Seiten bei SeedDMS einfach weiss blieben, Ursache war ein PHP Fehler im Script der bei der Standardeinstellung des Webserver bzw. der PHP Installation auf dem QNAPdazu führt das die Seite im zweifelsfrei komplett leer bleibt. Damit man wenigstens die Ursache des Fehlers sieht, sollte man in der php.ini Datei das Anzeigen von Fehlern aktivieren, dazu ist die Zeile

zu ändern in

Virtuellen Host einrichten im Apache

diese Schritt ist optional und kann auch genauso weg gelassen werden. Ich fand die URL zum Aufruf des DMS im Browser recht unschön, daher habe ich im Apache einen virtuellen Host konfiguriert.

Das ganze kann über die Web-Oberfläche vom QNAP gemacht werden. Dazu unter „Anwendungen“ -> „Webserver“ auf den Reiter „Virtueller Host“ klicken. Hier den Haken bei „Virtuelle Host aktivieren“ setzen. Anschließend auf „Einen virtuellen Host erstellen“ klicken. In der Maske dann einen Hostnamen vergeben z.B. „dms“ in der Liste der Ordnernamen dann den Ordner „dms“ auswählen. Als Protokoll würde ich „https“ empfehlen, kostet nix und macht die ganze Kiste etwas sicherer. Beim Port muss man überlegen was ggf. mit Firewalls die im Firmennetz im einsatz sind kollidieren könnte. Die Ports 443, 8080 und 8081 sind schon belegt von den QNAP  Standardeinstellungen. Ich habe mal port 8000 gewählt. Nachdem man die Einstellungen gespeichert hat, lauscht also der Apache auf den virtuellen Host auf Port 8000 mit SSL Verschlüsselung, dessen Basisverzeichnis unter „/share/Web/dms/“ liegt.

Bitte beachten: „dms“ ist der symlink auf das eigentliche Installationsverzeichnis den ich zuvor gesetzt habe.

Nun muss noch die Konfiguration des http-root von SeedDMS angepasst werden, da er sonst immer falsche URLs zusammenbauen würde.

Aktuell ist der Wert im Standard noch auf „/dms/“. Dieser muss nun geändert werden in „/“.

Das Ganze kann man einfach in der settings.xml machen, hierzu den Wert von „httpRoot“ ändern in „/“ (vorher  „/dms/“).

Nun kann man im Browser das DMS direkt unter der Adresse:

https://<hier nas ip oder hostname einsetzen>:8000

aufrufen. Der Aufruf über den vorherigen URL (also ohne den virtuellen Host) funktioniert dann nicht mehr, weil das SeedDms dann alle absoluten Link-Pfade immer nur mit dem Präfix „/“ aufbauen würde und unter diesem Pfad die Dateien nicht existieren im Web-Root des Standard Apache Hosts.

Idealerweuse trägt man nun im Netzinternen DNS-Server die IP Adresse des NAS unter dem hostnamen „dms“ ein. Dann kann man das dms auch über „https://dms:8000“ direkt aufrufen.

Schritt 3: Testen der Installation

Nachdem nun all obigen Schritte erledigt sind, sollte man eigentlich ein komplett funktionierendes SeedDMS haben.

Sowohl die Thumbnail-Generierung als auch die Volltext-Indizierung von Text, PDF, XLS und DOC Dokumenten sollte funktionieren, ebenso wie der Versand von E-Mail-Benachritigungen.

Um all dies zu testen, sollte man folgende Schritte durchspielen:

  1. Upload jeweils eines JPEG, GIF und einer PNG Datei um zu testen ob die Thumbnail-Generierung klappt
  2. Upload einer PDF Datei und anschliessendes anstarten der Indizierung (in SeedDMS: „Administration“ -> „Aktualisiere Volltextindex“) und anschließender Prüfung ob Wörter aus dem PDF im Volltext Index auftauchen („Administration“ -> „Volltext-Index Info“ -> hier sollte man nun einen Abschnitt „content“ sehen, in dem die Inidzierten Wörter aus dem PDF auftauchen müssen. Gibt es keinen Abschnitt „content“ so wurde auch kein Inhalt aus den Dokumenten extrahiert. Natürlich muss das PDF auch texte enthalten haben und nicht nur Grafiken.
  3. Nun sollte man den E-Mail-Versand testen, dazu in der Ordner-Ansicht auf den Link „Benachrichtigungen bearbeiten“ klicken und dann den Admnistrator Benutzer wählen und auf „Anlegen“ klicken. Wichtig ist natürlich, das vorher die E-Mail Adresse im Administrator Profil korrekt gesetzt wurde (siehe oben). Nun kann maan eine neue Datei in diesen Ordner hochladen und sollte daraufhin eine E-Mail Benachrichtigung erhalten.
  4. Die WebDAV Funktion von SeedDMS müsste nun auch laufen, jedoch sollte man hierzu beachten das die WebDAV Implementierung bei manchen Betriebssystemen nicht ganz so rund läuft, es kommt also Client-Seitig zu Problemen. Ich nutze daher z.B. unter Windows den kostenfreien Bitkinex Client, damit klappt auch eine WebDAv Verbindung über https ohne Probleme. Die URL für den WebDAV Zugriff auf SeedDMS lautet einfach „https://<ip adresse vom nas>:8081/dms/webdav“ (bzw. wenn man den virtuellen host wie oben beschrieben eingerichtet hat: „https://dms:8000/webdav“). In Bitkinex trägz man bei den Verbindungseinstellungen unter „Server“ dann als „Server address“ die IP (bzw. den DNS Namen) und den Port getrennt durch einen Doppelpunkt ein (ohne das Protokoll https://). Bei „Security“ wählt man „SSL“. Als user z.B. „admin“ oder einen anderen gültigen Benutzernamen von SeedDMS und dessen aktuelles Passwort. In dem Unterpunkt „Site Map“ trägt legt man nun einen neuen Pfad an, dazu als Path „/dms/webdav/index.php“ eintragen (bzw. beim virtuellen Host Ansatz „/webdav/index.php“) und als „Type“ wählt man „Directory (WebDAV-compliant). Klicken auf „add“ und dann auf „OK“ um das zu speichern. Damit sollte man nun Dateien hochladen und löschen können, sowie neue Verzeichnisse anlegen in SeedDMS.

das war’s! Glückwunsch, ihr SeedDMS läuft nun 🙂