etherpad

Die c’t von heute hat einen Artikel zur Installation von etherpad auf debianoiden Linuxen veröffentlicht, den ich gerade in einer VM unter Debian 5 nachzuvollziehen versuche. Der Artikel scheint jedoch für Ubuntu geschrieben worden zu sein. Unter Debian 5 will es wie von der c’t beschrieben einfach nicht klappen – und aus diesem Grund hier eine veränderte und erweiterte Anleitung, die hoffentlich Idioten sicher ist:

Zuerst kommt die Installation eines Debian5-Minimalsystems dran. Dann als root

deb http://apt.etherpad.org all .
deb http://ftp.de.debian.org/debian  sid main non-free

in die /etc/apt/sources.list eintragen. Ein

apt-get update

aktualisiert die Paketliste. Aufpassen: Durch das SID Repo würde ein apt-get dist-upgrade zu einem Wechsel von der stable Version von Debian zu Sid führen. Wer das vermeiden will, sollte das Repo für Sid nach Fertigstellung der ehterpad-Installation dann wieder aus der sources.list auskommentieren. Die Fehlermeldungen wegen den evtl. nicht vorhandenen Keys (auf’s Erste) ignorieren. Ein

apt-get install  sun-java6-jdk

führt zur Installation der folgenden zusätzlichen Pakete:

avahi-daemon dbus gsfonts gsfonts-x11 java-common libasound2 libavahi-common-data libavahi-common3 libavahi-core7 libc-bin libc6 libc6-i686 libdaemon0 libdbus-1-3 libexpat1 libfontenc1 libfreetype6 libltdl7 libncurses5 libnss-mdns libreadline6 libx11-6 libxcb1 libxfont1 libxi6 libxtst6 locales odbcinst odbcinst1debian2 sun-java6-bin sun-java6-jre unixodbc xfonts-encodings xfonts-utils

Insgesamt landen hier rund 75 MB an zusätzlichen Daten aus dem Netz auf dem Rechner und brauchen ca. 180 MB an Platz nach der Installation. Wegrennen kann man in dieser Phase nicht, weil (neben einigen anderen notwendigen Userinteraktionen) die Lizenzbedingungen von Sun abgenickt werden müssen.

Ein

java -version

sollte die folgende Ausgabe bringen:

java version „1.6.0_20“
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

Wenn nicht, dann ist die Sun Java VM mit dem folgenden Befehl als Default einzurichten:

update-alternatives –config java

Es folgt die Installation des mysql Servers sowie der Verbindungssoftware zwischen Java und dem Datenbankserver. Ich zieh mir hier auch gleich noch phpmyadmin und einen Apachen:

apt-get install scala mysql-server libmysql-java mercurial phpmyadmin apache2

Debian zieht sich nun

apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common dbconfig-common fontconfig-config javascript-common libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libdb4.7 libdb4.8 libdbd-mysql-perl libdbi-perl libfontconfig1 libgd2-xpm libgssapi-krb5-2 libhtml-template-perl libjpeg62 libjs-mootools libk5crypto3 libkrb5-3 libkrb5support0 libmcrypt4 libmysqlclient16 libnet-daemon-perl libonig2 libpcre3 libplrpc-perl libpng12-0 libqdbm14 libsqlite3-0 libssl0.9.8 libt1-5 libuuid1 libxml2 libxpm4 make mercurial-common mysql-client-5.1 mysql-common mysql-server-5.1 mysql-server-core-5.1 openssl perl perl-base perl-modules php5-cli php5-common php5-gd php5-mcrypt php5-mysql php5-suhosin psmisc python-support scala-library ssl-cert wwwconfig-common

und lädt hierzu 67 MB aus dem Netz. Nach der Installation ist der Plattenplatz wieder um 130 MB kleiner.

Bei der Installation ist dann das mysql root-Passwort anzugeben und dieser für den Apachen zu konfigurieren (ist nur ein Klick in einem Auswahlfenster). Weiter ist der administrative Benutzer für phpmyadmin anzugeben und ein Passwort zu setzen.

Jetzt kann man im Browser durch Aufruf der IP / Domain des Servers mal nachsehen, ob alles geklappt hat und der Server sowie phpmyadmin erreichbar sind.

In die Datei /etc/profile wird nun der folgende Code hinzugefügt, damit alle Komponenten sich auch gegenseitig finden können:

export JAVA_HOME=“/usr/lib/jvm/java-6-sun“
export SCALA_HOME=“/usr/share/java“
export JAVA=“/usr/bin/java“
export SCALA=“/usr/bin/scala“
export PATH=“/usr/bin:/usr/bin:/usr/local/mysql/bin:$PATH“
export MYSQL_CONNECTOR_JAR=“/usr/share/java/mysql-connector-java-5.1.10.jar“
export JAVA_HOME SCALA_HOME JAVA SCALA MYSQL_CONNECTOR_JAR PATH

Ein

echo $PATH

zeigt, ob es mit den Exporten klappt. Wenn nicht, dann entweder „sourcen“ oder ab- und wieder anmelden und erneut überprüfen.

Ein

apt-get install etherpad

zieht die notwendigen Abhängigkeiten mit sich. Man sollte hier aber nicht wie gewohnt ein paar Mal [Enter] drücken, sondern beachten, dass auf Grund der fehlenden Keys für die neu hinzugefügten Repos die Vorauswahl von Debian bei der Rückfrage, ob man nicht vertrauenswürdige Pakete einspielen will, auf Nein steht. Das sieht so aus:

WARNUNG: Die folgenden Pakete können nicht authentifiziert werden!
etherpad
Diese Pakete ohne Überprüfung installieren [j/N]? j

Rund 30 MB werden aus dem Netz geholt, die nach der Installation weitere 44 MB belegen werden. Während der Installation sind dann wieder das mysql root Passwort anzugeben (damit etherpad seine Datenbank anlegen kann). Außerdem ist der administrative Benutzer für Etherpad anzugeben und auch die Domain, unter der etherpad zu erreichen sein soll. Der Eintrag localhost ist hier entsprechend zu ergänzen.

In der Datei

/usr/share/etherpad/etherpad/bin/run-local.sh

sind ist noch eine Anpassungen nötig: Ziemlich weit oben in diesem Startskript steht

MXRAM=“1G“

Das ist für die ersten Tests ein wenig viel, schreibt die c’t, und meint, der folgende Eintrag würde auch reichen:

MXRAM=“128m“

Hervorzuheben ist, dass hier nicht 128MB oder 128M stehen darf, da sonst ein Syntaxfehler moniert wird. In vielen Anleitungen im Netz ist das aber der Fall. Komisch.

Die während der Installation gemachten Angaben sind dann hier

/etc/etherpad/etherpad.local.properties

zu finden und können falls nötig angepasst werden. Ich habe am Ende noch die Zeile

etherpad.skipHostnameCheck = true

eingefügt, um später weniger Probleme zu bekommen. Hier besteht aber auch die Möglichkeit, den etherpad Server auf HTTPS umzubiegen. Gelogt wird im default nach

/var/log/etherpad

Da das Startskript in /etc/init.d/etherpad extrem schweigsam ist, empfiehlt sich für den ersten Start die Nutzung von run-local.sh im oben angegebenen Verzeichnis.

root@debian5:/usr/share/etherpad/etherpad# ./bin/run-local.sh

Wichtig ist hier, dass der etherpad Server wirklich aus dem Verzeichnis /usr/share/etherpad/etherpad heraus gestartet wird, sonst erhält man die Fehlermeldung

Using config file: ./etc/etherpad.localdev-default.properties
Exception in thread „main“ java.lang.NoClassDefFoundError: net/appjet/oui/main
Caused by: java.lang.ClassNotFoundException: net.appjet.oui.main
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Heap
def new generation   total 14784K, used 263K [0x9f880000, 0xa0880000, 0xa0880000)
eden space 13184K,   2% used [0x9f880000, 0x9f8c1ec8, 0xa0560000)
from space 1600K,   0% used [0xa0560000, 0xa0560000, 0xa06f0000)
to   space 1600K,   0% used [0xa06f0000, 0xa06f0000, 0xa0880000)
concurrent mark-sweep generation total 245760K, used 0K [0xa0880000, 0xaf880000, 0xaf880000)
concurrent-mark-sweep perm gen total 16384K, used 1567K [0xaf880000, 0xb0880000, 0xb3880000)
Could not find the main class: net.appjet.oui.main.  Program will exit.

Jetzt kann etherpad auch auf der Shell mit dem Browser links2 erreicht werden:

links2 http://localhost:9000/

Damit der Server auch über Port 80 und nicht nur lokal zu benutzen ist, passen wir den Apache an.

a2enmod proxy_http
/etc/init.d/apache2 restart

Der folgende Code kommt in die Apache Konfigurationsdatei:

<IfModule mod_proxy_http.c>
ProxyPass               /       http://localhost:9000/
ProxyPassReverse        /       http://localhost:9000/
ProxyPreserveHost       on
<Proxy http://localhost:9000/>
Order Allow,Deny
Allow from all
</Proxy>
</IfModule>

der daraufhin einen restart braucht:

/etc/init.d/apache2 restart

Wenn man dann immer bei einer komischen Seite mit dem Namen „false“ landet, liegt es an der Konfiguration von etherpad. Ein Eintrag der IP des Servers hinter

topdomains =

in

/etc/etherpad/etherpad.local.properties

und nachfolgendem Neustart von etherpad und Apache erledigt das Problem.

Und nach dem vielen Text, hier dann endlich das Ergebnis mit Bild:

Ich muss schon sagen: Die Herren Jo Bager und Alvar Freude machen es sich in der c’t doch ein wenig einfach 🙂 Ohne meinen Basteltrieb hätte ich zügig wieder aufgegeben.

Sicherheitstechnisch ist der etherpad-Server, den ich hier beschreibe, nicht eine Bohne wert – aber für das interne Netz müsste es reichen. Hoffentlich. Sobald ich das Ding dann in meiner Schule am laufen habe, werde ich die Konsequenzen ja miterleben und auch mittragen. Für einen solchen Einsatzzweck sollte man dann screen für den Start im Hintergrund nutzen – oder mit nohup arbeiten, vor allem aber die Namensauflösung in den Griff bekommen und so evtl. um den Apache-Proxy rumkommen. Ob man hierzu etherpad aus den Quellen selbst kompilieren muss – das will ich heute nach dem ganzen Gefrickel gar nicht wissen.

Quellen, Ideen und vor allem Problemlösungen gibt es hier:

http://oceanobservatories.org/spaces/display/~gadavis/Etherpad+Migration

http://mclear.co.uk/2010/03/10/installing-etherpad-on-debian/

Diesen Text habe ich auch – etwas geglättet – auf dem LFB veröffentlicht: http://lehrerfortbildung-bw.de/werkstatt/sonstige/txtimnetz/1_ethpad.htm

Siehe hierzu auch: http://www.bdjl.de/localhost/?p=1489 (Update auf etherpad 1.1)

16 Gedanken zu „etherpad

  1. norreyy

    Hy,

    bei:
    apt-get install scala mysql-server libmysql-java mercurial phpmyadmin apache2

    bekomme ich folgenden Fehler:
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:

    The following packages have unmet dependencies:
    phpmyadmin: Depends: libapache2-mod-php5 but it is not going to be installed or
    php5-cgi but it is not going to be installed or
    php5 but it is not going to be installed
    Depends: php5-mysql but it is not going to be installed or
    php5-mysqli but it is not installable
    Depends: php5-mcrypt but it is not going to be installed
    Recommends: php5-gd but it is not going to be installed
    E: Broken packages

  2. d.weller Beitragsautor

    Das ist wahrscheinlich ein Resultat aus dem gemischten System aus Testing und Stable. Was passiert, wenn Du in /etc/apt/sources.list nach der Installation von sun-java6-jdk die Sid Repos wieder auskommentierst und von dort aus weiter machst?

  3. Lorus

    Hi, kann es sein, dass das Startscript nicht nur extrem schweigsam ist, sondern tatsächlich gar nichts macht? Zumindest läuft kein Deamon nach desses ausführung … prinzipiell funktioniert es über die ./bin/run-local.sh allerdings.

    Hast du mittlerweile eine insgesamt saubere Lösung gefunden?

    Screen, nohup, proxy_http etc. ist ja alles nicht wirklich zufriedenstellend :/

  4. d.weller Beitragsautor

    Ja – das war alles mehr als „nicht zufriedenstellend“. Die Lösung, die ich für mich gewählt habe ist evtl. keine für Dich: Ich hab mir einen Ubuntu Server 10.04 installiert, das etherpad Repo in die sources.list eingetragen, die Partner Repos freigeschaltet und es läuft einfach so. Ohne Gefummel. Vor allem: Es überlebt auch alle Systemupdates und bringt ordentliche Startskripte mit.

    Ich hatte mir zuvor mit einem Update der Debian-Basis nämlich auf Grund des von mir „vergessenen“ Eintrags von Sid in die sources.list meinen Server „zerlegt“. Danach bin ich umgestiegen.

  5. Lorus

    Danke für die Info … ist ja echt schade, dass es kein Package für Debian gibt, bei dem es einfach Out-of-the-box funktioniert :-/

    Meinen V-Server nach Ubuntu zu migrieren wäre nämlich schon ein ganz schön erheblicher Aufwand :-/

  6. Bernhard

    Bei mir hat es auch nicht so recht funktioniert. Das Starten mit ./bin/run-local.sh hat zumindest für die laufende Session das Etherpad ans Rennen gebracht. Ein Neustart und alles war wieder weg.
    Ich habe dann einmal über Synaptic „etherpad“ Re-installiert, also nicht deinstalliert sondern nur neu drüber installiert. Seitdem startet das Ding 😉 auch nach einem Neustart des Servers. Fragt mich bloss nicht warum.

    Vielleicht kann das ja mal jemand bei sich ausprobieren.

    Die Grundinstallation habe ich wie oben und in der ct‘ beschrieben ausgeführt und dann mit apt-get install etherpad vervollständigt (den Pfad auf /usr/share/etherpad anpassen, local statt share in dem Zusammenhang ist definitiv verkehrt.

    Manchmal geht „try and error“ also doch.

    Gruß Bernhard

  7. Hotte

    Zum Startscript : /etc/init.d/etherpad
    Das Script an sich ist wunderbar wenn es schweigsam ist steht bei euch nur der falsche Pfad drin… DEAMON_BASE wird in zeile 50 definiert und steht standartmäßig auf /usr/local/etherpad …. die run-local.sh liegt aber wohl bei den meisten in /usr/share/etherpad sobald der Pfad stimmt klappt eigendlich auch mit dem script alles…

  8. Yhoko

    Vielen Dank für das klasse Tutorial! Hat bei uns einwandfrei funktioniert, allerdings habe ich seit jeher ein Problem mit Etherpad: Jeglicher Text im Pad wird mit der Standardfarbe des Browsers angezeigt, weil nicht explizit eine Farbe (also Schwarz) zugewiesen wird. Normalerweise ist das ja Schwarz und damit kein Problem, bei mir ist die Standardfarbe jedoch hellgrau und damit unlesbar. Sie jedes Mal umzustellen, wenn ich ein Etherpad verwende, ist äusserst mühsam. Gibt es dafür eine Lösung?

    -Yhoko

  9. Yhoko

    Ich darf das gleich selbst lösen; wir haben in der Datei

    /usr/share/etherpad/etherpad/src/static/js/ace.js

    Den Eintrag #innerdocbody gefunden, dort kann man die Farbe manuell eintragen. Der Style sieht dann folgendermassen aus:

    #innerdocbody{font-size:12px;font-family:monospace;line-height:16px;color:black;}

    Um die Änderungen zu testen reicht es, ein neues Pad zu erstellen.

    -Yhoko

  10. Yhoko

    Nein es ist in der Tat sehr häufig, dass Entwickler davon ausgehen, dass Schwarz die Standardfarbe des Browsers ist. Das wäre kein Problem, würden sie die Farben unverändert lassen oder jeweils beide selbst festlegen, doch – wie auch in diesem Fall – ändern sie dann lediglich die Hintergrundfarbe.

  11. Christian

    Wow, ich habe es mit diesem und anderen Tutorials weit geschafft. Leider stecke ich jetzt bei einem seltsamen Bug fest:
    Startseite -> Create new pad -> Yes, plaease create the pad -> Yes, plaease create the pad -> Yes, plaease create the pad -> u. s. w. …
    Hinweis: Ich lasse den Server noch über die run-local.sh und ohne apache laufen. Dank der Änderung von DEAMON_BASE tut das Script jetzt überhaupt etwas, der Server läuft dann aber noch immer nicht. Ein ../etherpad restart meldet dass der Server nicht beendet werden konnte weil er nicht lief…

  12. sintec

    Hallo,
    nach ausführen von „/usr/share/etherpad/etherpad# ./bin/run-local.sh“ bekomme ich folgendes mit einer Fehlermeldung:
    Maximum ram: 232M
    Maximum thread count: 58
    Using config file: ./etc/etherpad.local.properties
    ./bin/run-local.sh: Zeile 93: /usr/share/etherpad/etherpad/usr/bin/java.: Datei oder Verzeichnis nicht gefunden

    hatte es schon jemand? wie kann man das lösen?

  13. d.weller Beitragsautor

    Hi, steht da bei Dir auch das Folgende in diesen Zeilen, die der Fehler moniert?

    exec $JAVA -classpath $CP \
    -server \
    -Xmx${MXRAM} \

    Wenn ja – hast Du die Pfade tatsächlich exportiert? Und stimmen in den Exportangaben dann auch die Pfade mit der tatsächlichen Situation auf Deinem Server überein?

Kommentare sind geschlossen.