Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

cool:etherpadlite

etherpad-lite

Achtung! In aktueller Version besteht Etherpad-Lite auf utf8mb4, benötigt also mindestens MySQL 5.5, welches default nicht zur Verfügung steht. Du benötigst also vor einem Update oder einer Neuinstallation MariaDB.

Alternativ kannst du auch Branch release/1.5.7 auschecken, der nach wie vor mit MySQL 5.1 funktioniert. Die folgende Anleitung haben wir entsprechend angepasst.

etherpad-lite ist eine auf node.js basierende Alternative zum traditionellen Etherpad, die selbst von Etherpad-Entwicklern empfohlen wird. Wir zeigen dir hier die nötigen Schritte, um es auf deinem Uberspace zum Laufen zu bringen. In dieser Dokumentation heißt der Beispieluser else und befindet sich auf dem Host chaos.uberspace.de.

npm installieren

etherpad-lite benötigt einige node.js-Module, die es mittels npm nachinstallieren möchte. npm selbst ist bei aktuellen node.js-Versionen schon mit dabei; du brauchst aber eine Konfigurationsdatei, damit es Module an der richtigen Stelle und mit den richtigen Rechten installiert:

[else@chaos ~]$ cat > ~/.npmrc <<__EOF__
prefix = $HOME
umask = 077
__EOF__

Wichtig ist, dass du hier explizit den cat-Befehl ausführst; es ist wichtig, dass $HOME dabei durch dein Home-Verzeichnis ersetzt wird (es darf also hinterher nicht $HOME in der .npmrc stehen, sondern /home/…).

etherpad-lite installieren

Jetzt geht's an das eigentliche etherpad-lite. Dessen Code bekommst du am einfachsten mit Hilfe von git:

[else@chaos ~]$ git clone -b release/1.5.7 https://github.com/ether/etherpad-lite.git
Cloning into etherpad-lite...
remote: Counting objects: 5466, done.
remote: Compressing objects: 100% (1882/1882), done.
remote: Total 5466 (delta 3832), reused 5116 (delta 3536)
Receiving objects: 100% (5466/5466), 2.30 MiB | 1.07 MiB/s, done.
Resolving deltas: 100% (3832/3832), done.

Dann wechselst du in das frisch ausgecheckte Verzeichnis …

[else@chaos ~]$ cd etherpad-lite 

… und damit Etherpad mit MySQL 5.1 zusammenarbeitet, brauchst du einen bestimmten Branch:

[else@chaos etherpad-lite]$ git checkout release/1.5.7

Dann benutzt du das Script bin/installDeps.sh, um die Abhängigkeiten zu installieren (zu diesem Zweck hatten wir ja gerade npm installiert):

[else@chaos etherpad-lite]$ bin/installDeps.sh
...

Konfiguration anpassen

etherpad-lite wird in der Datei settings.json konfiguriert und bringt eine settings.json.template mit, die als Vorlage dient aber noch kopiert und vom Zusatz .template befreit werden muss:

  [else@chaos etherpad-lite]$ cp settings.json.template settings.json

Hier musst du in erster Linie zwei Punkte anpassen:

  1. den Port, auf dem etherpad-lite laufen soll
  2. die Datenbankeinstellungen für SQLite oder MySQL
Aufgepasst! Wenn Du in der settings.json Fehler hast, kann etherpad-lite nicht starten. Nahezu alle Supportanfragen die wir zu etherpad-lite haben, lassen sich auf Fehler in der settings.json zurückführen.

Du solltest nun also die settings.json in einem Texteditor öffnen, hier exemplarisch mit nano:

[else@chaos etherpad-lite]$ nano -w settings.json

Anstelle des Standardports solltest du dir einen zufälligen anderen Port aus dem User-Bereich überlegen. Wir nehmen hier mal 9099 (wähle für deine Installation bitte einen anderen). Der betreffende Abschnitt sollte dann so aussehen:

...
//Ip and port which etherpad should bind at
"ip": "0.0.0.0",
"port" : 9099,
...

Passe dann außerdem den dbType auf mysql an, und trage die entsprechenden dbSettings ein. Die dafür erforderlichen Zugangsdaten findest du in deiner .my.cnf - relevant sind user, password und database; der host muss auf localhost bleiben. Die Angabe „dbtype“ : „dirty“ und ihre zugehörige Konfiguration solltest du am Besten komplett entfernen, genauso wie die Kommentarzeichen, die die Vorlage für die MySQL-Konfiguration standardmäßig umgeben. So sollte der Abschnitt dann aussehen:

...
//The Type of the database. You can choose between dirty, sqlite and mysql
//You should use mysql or sqlite for anything else than testing or development
"dbType" : "mysql",
//the database specific settings
"dbSettings" : {
                 "user"    : "else", 
                 "host"    : "localhost", 
                 "password": "Superkalifragilistischexpiallegetisch", 
                 "database": "else"
               },
...

Damit wäre dein etherpad-lite fertig konfiguriert. Mit Strg+O kannst du die settings.json im nano speichern (Dateiname mit Enter bestätigen) und jenen dann mit Strg+X beenden. Nun solltest du dein etherpad-lite so einrichten, dass es automatisch gestartet wird, also z.B. auch dann, wenn wir den Uberspace-Host, auf dem du liegst, einmal rebooten.

Einrichtung als Dienst

Wenn du noch keine eigene Instanz der daemontools laufen hast, solltest du jene zunächst einrichten:

[else@chaos ~]$ test -d ~/service || uberspace-setup-svscan 
...

Anschließend richtest du den Dienst ein, der dein etherpad-lite automatisch startet:

[else@chaos ~]$ uberspace-setup-service etherpad-lite node ~/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
...

Es ist allerdings noch ein kurzer Klimmzug nötig: etherpad-lite erwartet, im Verzeichnis etherpad-lite/node gestartet zu werden, weil zur Laufzeit unter anderem mit relativem Pfad auf die ../APIKEY.txt zugegriffen wird, und bin/installDeps.sh stellt sicher, dass unter anderem Cache-Dateien auf dem neuesten Stand sind. Es ist also noch eine manuelle Änderung am Startscript ~/service/etherpad-lite/run nötig: Ändere den bestehenden Block …

# Now let's go!
exec /package/host/localhost/nodejs/bin/node /home/DEINUSER/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js 2>&1

… wie folgt ab:

# Now let's go!
cd ~/etherpad-lite
bin/installDeps.sh 2>&1
exec /package/host/localhost/nodejs/bin/node /home/DEINUSER/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js 2>&1
Aufgepasst: Anstelle von „DEINUSER“ muss hier natürlich Dein Username stehen!

Starte anschließend den Dienst neu, um die Änderung zu übernehmen:

[else@chaos ~]$ svc -du ~/service/etherpad-lite

Das war's dann - wenn du dich an diese Anleitung gehalten hast, läuft dein etherpad-lite nun auf dem von dir gewählten Port (der natürlich ein anderer als der Port 9099 ist als in dieser Dokumentation, klar). Was noch fehlt, ist die …

Brücke zum Webserver

In diesem Beispiel soll etherpad-lite unter der URL /pad erreichbar sein. Dazu legen wir ein Verzeichnis dieses Namens im DocumentRoot an …

[else@chaos ~]$ mkdir ~/html/pad

… und legen dort eine Brücke zum Webserver in Form einer .htaccess-Datei an:

[else@chaos ~]$ cat > ~/html/pad/.htaccess <<'__EOF__'
RewriteEngine On
RewriteRule (.*) http://localhost:9099/$1 [P]
__EOF__

Den Port 9099 aus dem Beispiel musst du natürlich auf den Port anpassen, auf den du deine Instanz von Etherpad-Lite oben konfiguriert hast. Das war's! Dein etherpad-lite ist nun in deinem Uberspace installiert und über den URL-Pfad /pad erreichbar; im konkreten Beispiel würde die URL also https://else.chaos.uberspace.de/pad lauten.

Weitere Hinweise zu den RewriteRules mit Proxy findest du hier.

Wenn es nicht klappt…

Schau zunächst einmal, ob der Dienst überhaupt läuft und länger als ein paar Sekunden läuft, dazu solltest Du diesen Befehl mehrmals mit ein paar Sekunden Abstand ausführen.

svstat ~/service/etherpad-lite

Erreicht der Dienst eine Uptime von mehr als 10 Sekunden, scheint er zu laufen. Bleibt die Uptime immer wenigen Sekunden und wechselt der Dienst dabei die PID, dann ist etwas nicht in Ordnung. In dem Fall schau am besten erstmal ins Log:

tail ~/service/etherpad-lite/log/main/current | tai64nlocal

Die Logs von etherpad-lite sind leider nicht die hilfreichsten, aber in der Regel lässt sich schon ableiten, wo der Schuh drückt. (In 90% der Fälle von denen wir hören ist es ein Fehler in der settings.json.)

cool/etherpadlite.txt · Zuletzt geändert: 2017/03/13 07:06 von uber