j-lawyer.org auf dem Raspberry Pi 15


In vollständig anderem Kontext habe ich mich vor Kurzem mit dem Raspberry Pi (Model B) beschäftigt, einem Minicomputer für attraktive ca. 35 EUR. Für diesen schlanken Taler bekommt man ein voll funktionstüchtiges System mit 512MB RAM, 700MHz, HDMI, Ethernet, 2xUSB, Video Out, Audio Out und SD-Kartenleser, und das alles in einem mehr als kompakten Format und mit einem Stromverbrauch von lediglich 3,5W:

20140702_191115Im Bild habe ich einen der USB-Anschlüsse für einen WLAN-Dongle verwendet.

Ich kam nicht umhin, testweise einen j-lawyer Server auf dem Gerät zu installieren, und möchte hier eine kleine Anleitung sowie subjektive Einschätzung abgeben. Aber der Reihe nach:

 

Installation des Basissystems

Ich möchte im folgenden eine Minimalanleitung für die Vorbereitung des Raspberry Pi liefern, ohne zu sehr auf Details einzugehen – das können vorhandene Tutorials sicher besser. Der Pi unterstützt eine Reihe verschiedener Betriebssysteme, ich habe mich auf den Klassiker „Raspbian“ (ein Debian-Linux-basiertes System) entschieden. Auch für die vorbereitenden Arbeiten nutze ich ein Linux-System. Wer dazu Windows verwenden möchte, findet eine alternative Anleitung hier.

Download des Systems und Vorbereitung einer SD-Karte: Laden Sie sich Raspbian als Image auf einen PC/Notebook herunter von http://www.raspberrypi.org/downloads und entzippen Sie diese.Stecken Sie die SD-Karte ein und ermitteln Sie das Device via Terminal:

df -h

Merken Sie sich hier das gesamte Device, nicht die Partition – wird also die SD-Karte als /dev/sdb1 angezeigt, so lautet das Device /dev/sdb. Es wird außerdem der Mountpunkt angegeben. Unmounten sie diesen bspw. mit

umount /dev/sdb1

Bereiten Sie anschließend die SD-Karte für die Installation von Raspian vor, ersetzen Sie dabei den Dateinamen entsprechend der von Ihnen entpackten Datei und setzen Sie das von Ihnen verwendete Device ein:

sudo dd bs=1M if=2014-06-20-wheezy-raspbian.img of=/dev/sdb

Installation von Raspbian: Schließen Sie nun Tastatur, Monitor und Netzwerk an den Raspberry Pi an und stecken Sie die SD-Karte ein. Nach dem Hochfahren erscheint ein grau hinterlegtes Menü zur weiteren Konfiguration:

  • „Expand Filesystem“, um dem Pi die gesamte SD-Karte zur Verfügung zu stellen
  • „Internationalization Options“ > „Change Keyboard Layout“ > „Classmate PC“, danach Keyboard Layout „Other“ und anschließend „German“ wählen, gefolgt von nochmals „German“ (ohne Zusätze), „the default for the keyboard layout“ und „no compose key“. Bei der Frage, ob der X-Server per Strg+Alt+Entf beendet werden soll, empfehle ich „No“.
  • „Internationalization Options“ > „Change Locale“ > „de_DE.UTF-8 UTF-8“ markieren per Leertaste, im Folgenden „en_GB.UTF-8“ als systemweite Option.
  • „Internationalization Options“ > „Change Locale“ > „Europe“ und „Berlin“ oder die für Sie passende Zeitzone wählen.
  • „Advanced Options“ > „SSH“ > „Enable“

Nach einem „Finish“ und Reboot ist das System fertig aufgesetzt.

System auf den aktuellen Stand bringen: Der Standardnutzer lautet „pi“ mit dem Passwort „raspberry“. Sie können per Ping kontrollieren ob eine Netzwerkverbindung besteht:

ping www.google.de

Ich empfehle als erstes das System mit den letzten Updates zu versorgen:

sudo apt-get update && sudo apt-get upgrade

Größe der Auslagerungsdatei anpassen: Sollte dem Pi einmal der RAM ausgehen, so sollte er natürlich nicht gleich „stehenbleiben“. Dazu empfehle ich die Vergrößerung der Auslagerungsdatei auf 1024MB wie folgt:

sudo su
echo "CONF_SWAPSIZE=1024" > /etc/dphys-swapfile
dphys-swapfile setup
dphys-swapfile swapon

 

Installation des j-lawyer.org Servers

Die Installation folgt vollständig der vorhandenen Anleitung für die Installation von j-lawyer.org unter Linux.

Im Nachgang sind einige Anpassungen zu machen, die den Spezifika des Pi geschuldet sind (für Interessierte: den maximalen Speicher für die Java-VM des j-lawyer.org Servers reduzieren und die Java-VM ohne „-server“-Flag laufen lassen). Dazu stelle ich diese beiden geänderten Dateien gern zur Verfügung:

run.conf

run.sh

Beide Dateien sind nach ~/j-lawyer-server/jboss-6.1.0.Final/bin/ zu kopieren – ersetzen Sie dabei die vorhandenen Dateien.

Nun können Sie den j-lawyer.org Server starten per

sh start-server.sh

im Verzeichnis ~/j-lawyer-server. Nun bitte kurz etwas zu Trinken holen, denn ich komme zum Thema…

 

Performance

Auffällig ist als erstes, daß – wenig überraschend – der Start des j-lawyer.org Servers etwas lange dauert – ohne Änderungen bei mir etwas weniger als 9 Minuten. An dieser Stelle haben aber auch handelsübliche PCs bereits eine Weile zu knabbern.

Für weitere Tests habe ich einen Testdatenbestand mit ca. 500 Adressen, 1000 Akten und 3000 Dokumenten eingespielt – und muß sagen daß der Pi, einmal „warmgelaufen“ – seine Sache durchaus gut macht! Die Arbeit mit einem j-lawyer.org Client auf einem anderen Gerät, der zum Server auf dem Pi verbunden ist, lief im Großen und Ganzen recht flüssig. Einzelne Funktionalitäten sind spürbar langsamer, so bspw. das Ermitteln der Platzhalter in komplexeren Dokumentvorlagen beim Erstellen neuer Dokumente. Letztendlich bin ich aber sehr positiv überrascht. Man muß sich aber auch vor Augen halten daß die meisten Transaktionen eher „Kleinkram“ sind – also das Speichern einer Datei / eines Dokumentes, Ändern von einem oder wenigen Datenbankeinträgen usw. Und damit wird man den Pi wohl nicht überfordern.

Auch wenn es so scheint als wäre der Pi primär durch die CPU restriktiert, so sollte man immer das Gesamtsystem betrachten. Ich empfehle auf jeden Fall direkt den Ethernetport zu verwenden und auf WLAN zu verzichten. Client und Server tauschen doch einiges an Daten aus und hier ist Ethernet einfach schneller und zuverlässiger.
Weiterhin lohnt es sich, auf die Lese- und Schreibgeschwindigkeiten der verwendeten SD(HC)-Karte zu schauen. Jedes Mehr an Geschwindigkeit wirkt sich direkt auf die Geschwindigkeit des Pi aus.

Nach längerem Arbeiten mit einem verbundenen Client hat sich der j-lawyer.org Server auf ca. 140MB RAM eingeschwungen – auch das ist ein Wert der einen Betrieb auf dem Pi absolut erlaubt.

Im Folgenden habe ich in mehreren Schritte den Start des j-lawyer.org Servers optimiert und bin so zu einer Startzeit von knapp 5 Minuten gekommen.

 

Wozu das Ganze? – Fazit

Das ist eine valide Frage 🙂    Und wie in anderen Situationen auch könnte man antworten „Weil es geht!“.

Aber Spaß beiseite, es ist sicher verlockend einen extrem stromsparenden, lautlosen, ultrakompakten Server betreiben zu können, der einfach das ganze Jahr durchläuft (Stromkosten ca. 7,50EUR bei ganzjährigem Betrieb) und Mitarbeitern die Möglichkeit bietet, von überall aus zu arbeiten.

Einsatzmöglichkeiten sehe ich für kleine Kanzleien, die bspw. den Server im Büro stehen haben und per VPN auch von zu Hause zugreifen möchten. Folgende Prämissen sehe ich:

  • der Raspberry Pi wird für den j-lawyer.org Server dediziert und nicht mit weiteren Aufgaben betraut
  • es greifen nicht mehr als 2 oder 3 j-lawyer.org Clients parallel zu
  • der Datenbestand liegt im Rahmen der oben genannten Größen
  • die vom j-lawyer.org Server erstellten Backup-ZIP-Archive werden regelmäßig vom Pi auf ein anderes Gerät kopiert (der Pi arbeitet ausschließlich mit SD-Karte, und die können auch mal kaputt gehen)
  • der Pi wird direkt per Ethernet verwendet (kein WLAN)
  • Es wird nicht regelmäßig mit komplexen Dokumentvorlagen gearbeitet (bspw. mehrseitige Vorlagen oder solche mit aufwändiger Struktur (geschachtelte Tabellen etc.) und vielen Platzhaltern)

Vor so einer Entscheidung sollten entsprechende Tests durchgeführt werden – jeder empfindet Performance anders oder hat andere Ansprüche. Technische Hürden sehe ich soweit nicht.

Jens
(j-lawyer.org)


Schreibe einen Kommentar

15 Gedanken zu “j-lawyer.org auf dem Raspberry Pi

        • j-lawyer.org Autor des Beitrags

          Hast Du die 1.8 installiert? Nach Installation ist der Server typischerweise unter /opt/j-lawyer-server/ oder /usr/local/j-lawyer-server/ zu finden. Starten / Stoppen via „sudo service j-lawyer-server start“ bzw. „sudo service j-lawyer-server stop“. Im Installationsverzeichnis liegt auch ein „uninstall“-Skript für die Deinstallation.

          Der Client liegt parallel zum Server oder unter dem Homeverzeichnis des installierenden Users (der Client kann im Gegensatz zum Server ohne root-Rechte installiert werden). Auch dort heist das Skript „uninstall“, wenn deinstalliert werden soll. Der Client-Installer legt außerdem eine Desktop-Verknüpfung an, sofern man die Option nicht abgewählt hat.

          • Didi

            Danke. Die Desktop-Verknüpfung hatte ich seinerzeit abgewählt bzw. gelöscht. Ich bevorzuge einen aufgeräumten Schreibtisch 😉

          • Didi

            Nun hatte ich MySQL auf dem Pi bereits installiert, da ich Owncloud nutze. Openjdk-7-jre ist ebenfalls installiert. Ich habe über Putty mit wget http://www.j-lawyer.org/downloads/j-lawyer-server_unix_1_8.sh die Serverdatei heruntergeladen und mit
            chmod a+x j-lawyer-server_unix_1_8.sh
            sowie
            sudo ./j-lawyer-server_unix_1_8.sh
            zu installieren versucht. Bei der Installation habe ich das Vorgabepaket per „Enter“ ausgewählt.
            Ausgabe Puttys:
            MySQL 5.7 in /root
            Sie können MySQL automatisch installieren lassen oder eine vorhandene Installation auswählen.
            Geben Sie das Passwort des MySQL-Nutzers „root“ des lokal laufenden MySQL-Servers ein.
            root-Passwort:
            bestätigen:
            MySQL 5.7 in /root
            Konfiguriere MySQL…
            Installiere…
            Folgende MySQL-Nutzer wurden angelegt:
            MySQL User

            Der Installationsvorgang brach mit der Meldung ab:

            Dateien werden ausgepackt …
            wildfly-9.0.2.Final/modules/system/layers/base/com/mysql/main/mysql-conne
            ERROR: Corrupted .pack file for /opt/j-lawyer-server/wildfly-9.0.2.Final/modules/system/layers/base/com/mysql/main/mysql-connector-java-5.1.37-bin.jar.
            Possibly the minimum Java version requirement for this installer has not been configured correctly.
            Corrupted pack file: magic/ver = CAFED00D/171.0 should be CAFED00D/150.7 OR CAFED00D/160.1

            /opt/j-lawyer-server/wildfly-9.0.2.Final/modules/system/layers/base/com/mysql/main/mysql-connector-java-5.1.37-bin.jar
            Die Datei konnte nicht erstellt werden. Soll der Vorgang wiederholt werden?
            Ja [y], Nein [n], Abbrechen [c]

          • j-lawyer.org Autor des Beitrags

            Hmm… entweder wird ein „altes“ Java genutzt oder das Downloadarchiv ist tatsächlich korrupt.

            Was läuft auf dem Notebook? Ubuntu? Debian?

            Java-Version prüfen: java -version (hier sollte 1.7 oder 1.8 ausgegeben werden)
            bei Installation mehrerer Java-Versionen das „default“ auswählen: sudo update-alternatives –config java

          • Didi

            Ich installiere ja auf dem Pi unter Raspbian. Dort hatte ich heute die aktuelle Version Javas installiert: Openjdk-7. Auf meinem Notebook arbeitet Debian. Dort ist ebenfalls openjdk-7 installiert. Ausgabe der Konsole: Java Version „1.7.0_111“. Also an sich alles im grünen Bereich. Kniffelig.

          • j-lawyer.org Autor des Beitrags

            Ah, Missverständnis meinerseits. Also Server auf Raspbian und Client auf Debian.

            Und Raspbian zeigt bei java -version die 1.7?

            Wenn dem so ist wäre es tatsächlich kniffelig. Der Installer hat ein eigenes Logfile, liegt typischerweise unter /tmp und beginnt mit i4j_log_…
            Das File wird gelöscht sobald der Installer beendet wird, d.h. man müsste den Fehlerfall nochmals herstellen, dann das Log sichern und mir senden, danach erst den Installer beenden.

          • Didi

            Ich habe Dir die angeforderte Datei nebst weiteren per Mail an die im Impressum genannte Adresse geschickt.

  • Marcus Dietrich

    Hallo,

    ich habe soeben die Installation gem. der Anleitung auf dem Raspberry Pi vorgenommen. Java ist aktuell. Zunächst erschien auch die Meldung, dass wildfly-9.0.2.Final nicht installiert werden konnte. Auf Nachfrage, ob es nochmal versucht werden soll, hat dies anscheinend dann geklappt.

    Beim Start des Servers kommt allerdings folgende Meldung:

    13:59:32,996 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001: Failed to start service jboss.as: org.jboss.msc.service.StartException in service jboss.as: Failed to start service
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.IllegalStateException: WFLYDR0006: Directory /opt/j-lawyer-server/wildfly-9.0.2.Final/standalone/data/content is not writable
    at org.jboss.as.repository.ContentRepository$Factory$ContentRepositoryImpl.(ContentRepository.java:176)
    at org.jboss.as.repository.ContentRepository$Factory.addService(ContentRepository.java:142)
    at org.jboss.as.server.ApplicationServerService.start(ApplicationServerService.java:144)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
    … 3 more

    Eine Verbindung über einen Client auf einem Windwos PC ist nicht möglich.

    Viele Grüße

    • j-lawyer.org Autor des Beitrags

      Hallo Marcus,

      das hier scheint wohl der Grund zu sein:
      Caused by: java.lang.IllegalStateException: WFLYDR0006: Directory /opt/j-lawyer-server/wildfly-9.0.2.Final/standalone/data/content is not writable

      Kannst Du prüfen ob der User, unter welchem der j-lawyer.org Server läuft, Zugriff auf dieses Verzeichnis hat? Dann ggf. mit chmod anpassen.

      Die Anleitung für den Raspi ist übrigens aus dem Jahr 2014, seitdem haben sich die Räder doch ein wenig weitergedreht. User Didi hatte zuletzt keinen Erfolg mit einem Einsatz auf einem Raspi 2 – die Performance ist einfach nicht ausreichend. Aus diesem Grund gibt es die j-lawyer.BOX auch auf Basis eines Odroid C2 – mit 2GB RAM, vier Kernen und Gigabit Ethernet: http://www.j-lawyer.org/?page_id=1855

      Beste Grüße,
      Jens