Alfresco ist ein Dokumentenmanagement System. Es ist zur Zeit Marktführer im Bereich der open source DMS (was wohl in erster Linie daran liegen dürfte, das es keine vernünftigen Wettbewerber gibt).

Durch die Zugriffsmöglichkeiten per verschiedener APIs (wie JCR/JSR-170 oder CMIS) kann man Alfresco auch als NoSQLDatenbank sehen.

erste Schritte #

Bei der Installation haben mir folgende Links geholfen

Installation #

Ich habe mir einen eigenen (virtuellen) 64-Bit Server mit 1GB Speicher aufgesetzt und dann das Alfresco Installationpaket heruntergeladen. Der Server hat ein Standard-Debian (Wheezy) System mit per tasksel installiertem Desktop-System (letzteres ist hilfreich, weil man so den graphischen Installer benutzen kann - war zwar wahrscheinlich nicht nötig, hat mich aber beruhigt). Die beeindruckende Größe des Paketes von 560MB hat eine einfache Erklärung: Das Paket bringt alle (und zwar ALLE) Komponenten mit, die Alfresco benötigt und installiert diese nach /opt/alfresco-4.2d. Dort sind dann also nicht nur Oracle Java (darf man das?), Tomcat, usw. sondern auch PostgreSQL, OpenOffice und - eh ichs vergesse - Alfresco installiert. Das hört sich ein bisschen nach Overkill an, hat aber den Vorteil, das das ganze Ding nach der Installation sofort lief. :-)

Die Alfresco Anleitung ist so geschrieben, das dort eigentlich alles steht, was man braucht. Sie ist aber dennoch keine Erste-Schritte-Anleitung. So fehlt z.B. die ganz triviale Aussage, was man nach der Installation nun machen kann. Das das Ding irgendwie im Web steht, war mir schon klar und das ein Tomcat auf verschiedenen Ports, darunter auch 8080 lauscht, hat mir dann netstat gesagt. Allerdings verrät die Tomcat Startseite auch nicht viel über die installierten Apps. LAnger Rede kurzer Sinn:

  • Unter http://localhost:8080/alfresco gelangt man in den sogenannten Alfresco Explorer, das ist die normale Weboberfläche für das Dokumentenmanagement und damit das eigentliche "Alfresco".
  • Unter http://localhost:8080/share gelangt man in Alfresco Share, mit dem ich mich noch nicht so beschäftigt habe. Wenn es es richtig verstanden habe, baut es auf dem Dokumentenmanagement auf und bietet webgestützte Kollaborationswerkzeuge für Benutzer wie Foren, Wikis, gemeinsame Sites und Projekte, wobei das Ganze ein bisschen Social-Site-mässig aufgebaut ist, man also Ströme mit Benutzeraktivitäten sehen, Beiträge "liken" kann etc.. (Nun genug des Buzzword-Bingo)

Suche #

Das Suchfeld im Alfresco Explorer erlaubt leider nur recht simple Suchanfragen. Wer eine Suche vertiefen will (also z.B. alle Bestellungen von Herrn Müller sucht), kann die Suchbegriffe mit "+" kennzeichnen (also "+bestellung +müller", sonst kommen alle Bestellungen von allen Kunden plus alle Dokumente von Herrn Müller).

Die zugrundeliegende API basiert auf Lucene als Volltext-Suchdatenbank und ist wesentlich leistungsfähiger. Scheinbar erlaubt das Suchfeld in "Alfresco Share" genauere Anfragen, aber netürlich kann man bei Zugriff über eigene Programme die komplette Suche nutzen.

Konfiguration #

Die zentrale Konfigurationsdatei ist

  /opt/alfresco-4.2d/tomcat/shared/classes/alfresco-global.properties

IMAP-Integration #

Auch hier erklärt die Anleitung alle Details, ohne vorher den grossen Zusammenhang darzustellen. Alfresco kann seine Dokumente per IMAP zur Verfügung stellen. Scheinbar kann es auch Dokumente aus einem vorhandenen Mailpostfach (POP oder IMAP) abholen und dann verwalten. Ob das alles reicht, um einen Mailserver komplett zu ersetzen, habe ich bisher noch nicht raus.

In der <tt>alfresco-global.properties</tt> habe ich folgendes angefügt:

  # -TB-
  imap.server.enabled=true
  imap.server.port=143
  imap.server.host=192.168.1.8

Außerdem muss man noch oben in der Datei einen Eintrag einstellen:

  alfresco.host=alfresco

Macht man dies nicht, holt er sich seinen Hostnamen selbst, was bei mir dazu führte, das die Links in den EMails immer auf "localhost" zeigten anstatt auf meinen LAN-internen "alfresco"-Server.

Dann Alfresco neu starten und warten. Der IMAP-Server ist erst ca. zwei Minuten, nachdem der Tomcat hochgefahren ist, zugänglich. Ab diesem Zeitpunkt kann man mit einem gewöhnlichen EMail-Client (z.B. Thunderbird) auf die Alfresco Verzeichnisse zugreifen. Die angezeigte Mail enthält jedoch nicht die Dokumente selbst, sondern einen beschreibenden Text mit Links zum Alfresco Repository.

Performance-Probleme #

Leider gelang es mir, mit meinem spezifischen Anwendungsfall recht schnell, den Alfresco-Server unter gehörigen Stress zu bringen. Mein Setup: Alfresco auf einem virtuellen Server mit 2GB Hauptspeicher (die Installation empfiehlt mindestens 1GB), ohne Swap (um Thrashing zu vermeiden) und 2 Prozessoren laufen. Das darunterliegende IO-System ist vielleicht ein bisschen gestresst, weil noch drei andere (1-Prozessor-) Systeme auf der (Quadcore-) Hardware laufen, aber meiner Erfahrung nach verursacht das keinen totalen Einbruch, sondern verlangsamt das Ganze um 5-20%.

Jetzt habe ich nichts anderes getan, als zu versuchen, ca. 2.800 Mails per IMAP von meinem Mailserver auf den Alfresco-Server zu verschieben. Die Mails sind fast alle eher winzig (was man halt so schreibt) und nur ein paar mit Anhängen. Ich habe es dennoch weder mit MoZilla Thunderbird noch mit einem selbstgeschriebenen Programm (via JavaMail) geschafft, mehr als ein paar hundert hineinzukopieren. Thunderbird brach einfach wortlos ab und mein Programm ergab entweder eine Meldung, das der Server die Mail nicht angenommen hat oder das er gar keine Verbindung mehr annimmt. Aber viel schlimmer: Der Server war danach fast nicht mehr zugänglich. Der Java-Prozess arbeitet konstant mit 170-190 % CPU-Leistung. Erst dachte ich, er hätte sich aufgehängt, aber nachdem ich nach einigen Stunden nachgesehen habe, lief er wieder normal. Das deutet vielleicht auf ausgelöste Hintergrundbearbeitungen wie Indexierungen etc. hin?!?

Während der hohen Last war natürlich die Weboberfläche extrem langsam und Verbindungen über IMAP, WebDAV, etc. kamen so gut wie gar nicht zu stande. Der Server war quasi gar nicht benutzbar.

Wenn durch den Upload von ein paar hundert simplen Text-Dokumenten eine Indexierung (oder sonstwas) ausgelöst wird, die für Stunden den Server für normale Benutzer lahmlegt, stimmt hier irgendwas nicht... :-( Wenn die Sache einen wahren Kern hat, hätte ich wenigstens gerne gewusst, was da gerade läuft und wie ich es steuern kann (Indexierung über Nacht würde ja vielleicht auch reichen). Auf gar keinen Fall darf der Server auf einmal nicht mehr zugänglich sein.

Ein bisschen Googlen ergab den Hinweis auf eine ausführliche JMX-Schnittstelle, auf die man per jconsole zugreifen können soll. Erstens habe ich keine Verbindung remote herstellen können. Ein lokaler Aufruf von jconsole hat dann ab und zu eine Verbindung erhalten, aber dann habe ich herausgefunden, das all die versprochenen Management Beans, mit denen man Alfresco online konfigurieren kann, in der Community Version nicht vorhanden sind. :-(

Ach ja - Mein JavaMail-Programm kopiert natürlich die Daten ohne mucken in ein IMAP-Postfach des Dovecot Mailservers. Dauert zwar ein paar Minuten, aber bricht nicht ab. Irgendwann die letzten Tage hatte ich die Idee, doch einfach den Dovecot für mein Dokumentenmanagement zu nehmen. Vielleicht gar nicht so abwegig... ;-)

LDAP #

Es gibt ein Kapitel in der Anleitung über LDAP: http://docs.alfresco.com/community/concepts/auth-ldap-intro.html. Damit habe ich es hinbekommen, meinen LDAP-Server anzubinden. Accounts werden dann automatisch neu erzeugt, sobald sich ein Benutzer anmeldet, den Alfresco vorher noch nicht kannte (der aber im LDAP einen Account hat). Das funktionierte ganz prima! :-)

Ich arbeite mit einem OpenLDAP-Server, den ich unter Debian Linux laufen lasse. Dazu benutze ich die dort übliche Standard-Konfiguration. Man kann LDAP-Verzeichnisse nämlich recht unterschiedlich einrichten, weswegen man bei jedem Zugriff entsprechende Pfade etc. angeben muss. Ich habe hierfür folgendes in meine alfresco-global.properties eingetragen:

  # -TB-
  authentication.chain=alfinst:alfrescoNtlm,ldap1:ldap
  ntlm.authentication.sso.enabled=false
  ldap.authentication.allowGuestLogin=false
  ldap.authentication.userNameFormat=uid=%s,ou=People,dc=bayenldap,dc=de
  ldap.authentication.java.naming.provider.url=ldaps://ldapserver.bayen.de:636
  ldap.authentication.defaultAdministratorUserNames=Administrator,alfresco
  ldap.synchronization.java.naming.security.principal=cn=admin,dc=bayenldap,dc=de
  ldap.synchronization.java.naming.security.credentials=12345
  ldap.synchronization.groupSearchBase=ou=group,dc=bayenldap,dc=de
  ldap.synchronization.userSearchBase=ou=People,dc=bayenldap,dc=de

Außerdem musste ich beachten, das der Zugriff auf meinen LDAP-Server ssl-abgesichert ist. Ich benutze eine eigene (private) CA, um meine Server intern zu authorisieren. Java benutzt jetzt natürlich nicht die CA-Einträge, die ich im Debian-System angelegt habe. Die Lösung steht z.B. in diesem Artikel und besteht im Kern aus einem Befehl wie diesem:

  testuser@testserver:~/alfresco-5.0.c/java/lib/security$ ../../bin/keytool -keystore cacerts -importcert -alias bayen -file cacert-bayen.crt

In diesem Beispiel habe ich die Java-Umgebung zusammen mit dem Alfresco Installationpaket installiert. Wer das Java eines Debian-Pakets benutzt, muss dementsprechend dessen keystore benutzen.

Erweiterung des Datenmodells #

Ich möchte an meine Dokumente weitere Informationen anhängen. Insbesondere möchte ich sie bestimmten Kunden und anderen Geschäftspartner oder auch Projekten zuordnen und dann später einfach Verzeichnisse über alle Dokumente erhalten, die zu einem Kunden gehören. Das hört sich jetzt einfach an, ist in Alfresco allerdings nicht so trivial. Um das DAtenmodell ernsthaft erweitern zu können (und das heisst, das man die Erweiterung nicht nur im zugrundeliegenden Repository hat, sondern auch in der Weboberfläche damit arbeiten kann, kommt man nicht umhin, verschiedene XML-Dateien von Hand zu ändern und daraus (nach Installation eines SDKs mit alle Sourcen) mit Eclipse ein Paket zu packen. Puuuh! :-(

Hierzu ein paar Links, die ich gesammelt habe:

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-5) was last changed on 15-Feb-2015 13:52 by ThomasBayen