Journal

Archiv für die Kategorie „IT“

WebOS FOSDEM schedule app for 2012 submitted to HP

Today I submitted the 2012 update for the FOSDEM (Free and Open source Software Developers’ European Meeting) schedule app for WebOS. This year the FOSDEM is taking place on February 4th and 5th in Brussels. You can find it the updated version in the official HP App Catalog sometime next week after it was reviewed by HP – or you can already download the *.ipk package (linked here). Like 2010 and 2011, it’s mainly an application for planning your FOSDEM visit and have a handy offline-working list of the schedule on your WebOS device.

There are several enhancements, as every year. Finally all event details are shown in an own “scene” instead of the drawer view. This makes the list view more snappy and helps for a better structure. As last year, there are room maps for most of the rooms (sadly some are missing because there aren’t available at the FOSDEM website).

The application is released as free and open source software under the GPL v3. You can find the source code, GIT repository, bug tracker, the .ipk package and more at forge.webpresso.net.

As always feel free to share ideas, improvements and bug reports. Just leave a comment or use the bug tracker (registration and manual activation is required to avoid spam – and trust me, there are many spammers…).

Installation von Etherpad Lite auf Ubuntu 10.04 Server und Apache als Reverse-Proxy + Upstart

Screenshot von Etherpad Lite, einem kollaborativen TexteditorEtherpad Lite ist eine Neuentwicklung des kollaborativen Real-Time-Texteditors Etherpad in Node.js. Ausprobiert werden kann Etherpad Lite beispielsweise unter beta.etherpad.org.

Die ursprüngliche Etherpad-Software ist enorm ressourcenhungrig und die Codebase sehr umfangreich – insbesondere die hohen Anforderungen an den Arbeitsspeicher (im laufenden Betrieb wohl ca. 1 GB!) hielten mich von der Installation auf meinem Server ab. Etherpad Lite hingegen begnügt sich nach eigenen Angaben im laufenden Betrieb mit rund 30 MB Arbeitsspeicher.

Diese Anleitung beschreibt die Installation von Node.js, NPM und Etherpad Lite auf Ubuntu 10.04 Server. Da in den meisten Fällen auf Port 80 eines bestehenden Servers bereits ein Webserver (in meinem Fall Apache) läuft, wird Etherpad Lite hinter Apache als Reverse-Proxy (via mod_proxy) installiert. Sicherlich nicht die beste Lösung, eine “non-blocking” Node.js-Applikation hinter einem “blocking” Apache-Server zu installieren – Nginx wäre hier sicherlich eine bessere Wahl. Aber vorerst soll Apache als Reverse-Proxy genügen. Des weiteren richten wir eine Upstart-Konfiguration ein, die Etherpad Lite nach jedem Reboot automatisch startet.

Installation von Node.js

Zunächst installieren wir Node.js auf dem Server. Die Version in den Ubuntu-Paketquellen ist deutlich zu alt, deshalb müssen wir selbst kompilieren. Da wir Node.js, den Node-Paketmanager NPM und die Applikation aus Sicherheitsgründen unter einem eigenen User installieren möchten, legen wir diesen zunächst an:

groupadd nodejs
useradd -g nodejs -s /bin/bash -d /var/lib/nodejs nodejs
mkdir /var/lib/nodejs
chown nodejs:nodejs /var/lib/nodejs

Nun wurde der User nodejs angelegt, sein Home-Verzeichnis ist /var/lib/nodejs. Nun bereiten wir den User für die Installation von Node.js und NPM vor – wir wechseln in den User nodejs:

su nodejs
cd ~

Der folgende Inhalt muss in die Datei /var/lib/nodejs/.npmrc:

root =    /var/lib/nodejs/.node_modules
binroot = /var/lib/nodejs/local/bin
manroot = /var/lib/nodejs/local/share/man

Die entsprechenden Ordner müssen nun noch angelegt werden:

mkdir ~/local
mkdir ~/local/bin
mkdir ~/local/share
mkdir ~/local/share/man

Nun fügen wir den Ordner ~/local/bin noch zum PATH hinzu – die folgende Zeile muss zum einen in die Datei /var/lib/nodejs/.bashrc, zum anderen einmal in der Shell eingegeben werden:

export PATH=$HOME/local/bin:$PATH

Jetzt installieren wir die notwendigen Abhängigkeiten über apt / aptitude:

sudo apt-get install build-essential python libssl-dev git-core libsqlite3-dev gzip curl

Nun kann Node.js heruntergeladen und kompiliert werden. Dazu “klonen” wir das Git-Repository und checken die letzte stabile Version aus – was spätere Updates erleichtert.

mkdir ~/local/src
cd ~/local/src
git clone git://github.com/joyent/node.git
cd node
git checkout v0.4.12
./configure --prefix=$HOME/local/
make
make install

Installation von NPM

Jetzt ist Node.js installiert – wir benötigen aber noch den Node.js-Paketmanager NPM. Den installieren wir ebenfalls aus den GIT-Quellen:

cd ~/local/src
git clone https://github.com/isaacs/npm.git
cd npm
git checkout v1.0.30
make install

Zu guter letzt legen wir noch einen Symlink an, damit NPM später das Verzeichnis für die Node-Module findet, das wir weiter oben bereits konfiguriert haben:

ln -s ~/local/lib/node_modules ~/.node_modules

Installation von Etherpad Lite

Nun sind endlich die Voraussetzungen gegeben, um Etherpad Lite zu installieren. Dies tun wir ebenfalls aus den GIT-Quellen. Danach rufen wir ein Shell-Script auf, um die Abhängigkeiten zu installieren.

mkdir ~/node-apps
cd ~/node-apps
git clone git://github.com/Pita/etherpad-lite.git
cd etherpad-lite
./bin/installDeps.sh

Jetzt kann die Konfiguration angepasst werden, die sich in der Datei /var/lib/nodejs/node-apps/etherpad-lite/settings.json befindet. Da ich das Etherpad mit MySQL als Datenbank betreiben möchte, kommentiere ich die vorhandene SQLite-Konfiguration aus und füge den MySQL-Benutzer und den Datenbank-Namen hinzu, die ich beide vorher angelegt habe. Den “loglevel” setze ich außerdem auf “WARN”, um nicht zu viele unnötige Log-Meldungen zu schreiben.

Jetzt legen wir gleich eine Upstart-Konfiguration an, um sicherzustellen, dass das Etherpad nach jedem System-Neustart automatisch gestartet wird. Für eine regelmäßige Überwachung und ggf. Neustart des Etherpads im Fehlerfalle bietet sich Monit an – was aber nicht Teil dieses Artikels sein soll.

Wir legen nun die Datei /etc/init/etherpad-lite.conf mit folgendem Inhalt an (auf Grundlage dieser Quelle):

description "etherpad-lite"
 
start on started networking
stop on runlevel [!2345]
 
env NODEBIN=/var/lib/nodejs/local/bin/node
env EPHOME=/var/lib/nodejs/node-apps/etherpad-lite
env EPLOGS=/var/log/etherpad-lite
env EPUSER=nodejs
 
pre-start script
    chdir $EPHOME
    mkdir $EPLOGS                              ||true
    chown $EPUSER:admin $EPLOGS                ||true
    chmod 0755 $EPLOGS                         ||true
    chown -R $EPUSER:admin $EPHOME/var         ||true
#    exec su -s /bin/bash -c 'exec "$0" "$@"' $EPUSER $EPHOME/bin/installDeps.sh >> $EPLOGS/error.log || { stop; exit 1; }
end script
 
script
  cd $EPHOME/node
  exec su -s /bin/bash -c 'exec "$0" "$@"' $EPUSER $NODEBIN server.js \
                        >> $EPLOGS/access.log \
                        2>> $EPLOGS/error.log
end script

(Diese Upstart-Konfiguration ist noch nicht optimal – spontan gelang es mir nicht, das Shell-Script installDeps.sh im pre-start erfolgreich auszuführen. Deshalb muss man daran denken, dieses Script nach einem Etherpad-Update manuell auszuführen.)

Jetzt kann Etherpad ganz einfach mittels

start etherpad-lite

gestartet werden.

Einrichtung des Apache Reverse-Proxys

Nun richten wir Apache ein, damit Etherpad auf Port 80 erreichbar ist. Dafür verwenden wir z.B. die Subdomain etherpad.example.lit – und folgende virtuelle Host-Konfiguration (beispielsweise in der Datei /etc/apache2/sites-available/etherpad.example.lit):

<virtualhost *:80>
        ServerName etherpad.example.lit
 
        ServerAdmin webmaster@localhost
 
        <ifmodule mod_proxy.c>
            ProxyVia On
            ProxyRequests Off
            ProxyPass / http://localhost:9001/
            ProxyPassReverse / http://localhost:9001/
            ProxyPreserveHost on
            <proxy *>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
            </proxy>
        </ifmodule>
 
        ErrorLog /var/log/etherpad-lite/apache2/error.log
 
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
 
        CustomLog /var/log/etherpad-lite/apache2/access.log combined
        ServerSignature Off
</virtualhost>

Wichtig: das Verzeichnis /var/log/etherpad-lite/apache2/ für die Apache-Logs muss angelegt werden!

Daraufhin kann der oben angelegte virtuelle Apache-Host aktiviert werden. Außerdem müssen die Apache-Module mod_proxy und mod_proxy_http aktiviert sein, danach kann die Apache-Konfiguration neu geladen werden:

a2ensite etherpad.example.lit
a2enmod proxy proxy_http
/etc/init.d/apache2 reload

Nun sollte das Etherpad unter http://etherpad.example.lit erreichbar sein!

Konfiguration von Logrotate

Wir haben nun einige Log-Dateien unterhalb von /var/log/etherpad-lite/, die schnell sehr groß werden können. Deshalb konfigurieren wir Logrotate so, dass diese Dateien wöchentlich rotiert und gepackt und für acht Wochen vorgehalten werden. Dazu fügen wir einfach folgende Zeilen zur /etc/logrotate.conf hinzu – oder legen eine /etc/logrotate.d/etherpadlite mit dem folgenden Inhalt an:

# rotate etherpad lite logs
/var/log/etherpad-lite/*.log {
        weekly
        missingok
        rotate 8
        compress
        notifempty
}
/var/log/etherpad-lite/apache2/*.log {
        weekly
        missingok
        rotate 8
        compress
        notifempty
}

Installation von Abiword für Import/Export (optional)

Für den erweiterten Import/Export muss die Textverarbeitungs-Software Abiword installiert werden – deren Binaries benutzt Etherpad zum Lesen und Schreiben von Dokumenten. In Ubuntu 10.04 ist Abiword in den Paketquellen vorhanden, deshalb reicht ein:

apt-get install abiword

Daraufhin muss in der /var/lib/nodejs/node-apps/etherpad-lite/settings.json der Pfad zum Abiword-Binary angepasst werden:

/* This is the path to the Abiword executable. Setting it to null, disables abiword.
     Abiword is needed to enable the import/export of pads*/
  "abiword" : "/usr/bin/abiword",

Nach einem Neustart mittels

stop etherpad-lite
start etherpad-lite

stehen die erweiterten Import-/Export-Funktionen zur Verfügung – dann kann ein Pad beispielsweise auch als PDF exportiert werden.

Abschluss

Etherpad Lite ist meiner Meinung nach ein sehr nützliches Tool, um gemeinsam Dokumente zu bearbeiten, Protokolle und To-Do-Listen zu erstellen usw. – was durch die Export-Funktion in viele Formate sehr gut ergänzt wird. Es existieren auch bereits viele Bibliotheken und Plugins, welche die HTTP-API von Etherpad nutzen, um Etherpads in eigenen Applikationen bequem einzubinden – Libraries für Ruby, PHP, ein jQuery-Plugin, ein Drupal-Modul (im Entwicklungsstadium) und viele mehr.

Ein Hinweis zum Schluss: diese Anleitung stellt sicher kein Optimum dar – jedoch war es mir wichtig, Node.JS sowie NPM nicht als root-User zu installieren. Deshalb weicht diese Anleitung zum Teil von den meisten im Netz zu findenden Anleitungen ab. Verbesserungsvorschläge nehme ich gern per Kommentar oder E-Mail entgegen!

Quellen und weiterführende Links:

“Geotag-Logger”: Fotos geotaggen mit HP WebOS

Geo-Tagging bedeutet, Positionsdaten des Aufnahmeorts eines Digitalfotos als Metadaten in der Bilddatei mitzuspeichern. Das klingt zunächst sehr technisch, ermöglicht aber Foto-Anwendungen, interessante Funktionen bereitzustellen: beispielsweise die Anzeige der eigenen Fotos auf einer Weltkarte. Die Foto-Community Flickr zeigt, sofern die Funktion in den Einstellungen aktiviert ist, neben jedem Foto eine kleine Karte mit dem Aufnahmeort an. So weiß man auch später, an welchem Ort man ein Foto aufgenommen hat.

Moderne Smartphones versehen Fotos, die mit der integrierten Kamera aufgenommen wurden, auf Wunsch automatisch mit “Geo-Tags”. Will man jedoch beispielsweise Fotos, die man mit einer Spiegelreflexkamera (DSLR) aufgenommen hat, geotaggen, wird es etwas komplizierter. Die wenigsten Digitalkameras haben derzeit einen integrierten GPS-Sensor, über den sie die aktuelle Position abfragen könnten. Für diesen Einsatzzweck gibt es kleine Geräte – “Geo-Logger”, die man unterwegs zusätzlich zur Kamera mitnimmt. Diese Geräte zeichnen die Position auf und erlauben es später, entweder über eine externe Software am PC oder direkt durch das Einstecken der SDHC-Karte die Positionsdaten in die Fotos zu schreiben. Dabei wird die Aufnahme-Uhrzeit der Bilder mit der vom Geo-Logger aufgezeichneten Position zu dieser Uhrzeit verglichen.

Diese externen Geo-Logger haben aber zwei Nachteile: zum einen hat man ein zusätzliches Gerät, das man mit sich herumtragen muss und bei dem man auch ständig dafür sorgen muss, dass der Akku geladen ist. Zum anderen muss man Geld für ein Gerät ausgeben, obwohl man möglicherweise bereits Gadgets hat, die diese Aufgabe übernehmen könnten. Jedes moderne Smartphone besitzt einen GPS-Sensor und ist in der Lage, die eigene Position regelmäßig zu speichern.

Hier kommt für Benutzer des Smartphone-Betriebssystems HP/Palm WebOS die von mir geschriebene Anwendung “Geotag-Logger” ins Spiel, die im offiziellen HP App Catalog zu finden ist. Es existierten bereits einige Anwendungen, mit denen man die eigene Position tracken konnte – jedoch keine Anwendung, die wirklich gut für diesen Einsatzzweck geeignet war. Denn wenn man zu Fuß unterwegs ist und Fotos macht, braucht man nicht im Sekundentakt die eigene Position zu erfassen – größere Intervalle sorgen für einen deutlich geringeren Akku-Verbrauch und sollten dennoch ausreichend sein.

Mit “Geotag-Logger” für WebOS kann man entweder manuell das Speichern der aktuellen Position auslösen oder über einen automatischen Modus alle fünf Minuten die Position speichern lassen. Die erzeugten Daten können daraufhin im GPX-Format auf die USB-Partition gespeichert und von dort aus auf den PC übertragen werden. Am PC können dann mit Hilfe der GPX-Datei Positionsdaten in die Fotos geschrieben werden. Dazu können Open-Source-Anwendungen wie Geotag (Linux/Windows), GPicSync (Linux/Windows) oder GPSCorrelate (Linux) verwendet werden. Zum Taggen der Fotos existieren drei Artikel unter spiegel.de, awokenmind.de und schrenk.cc, die einen Überblick über das Vorgehen geben.

Wenn man sich unterwegs schon einmal vergewissern möchte, ob die Anwendung den eigenen Weg korrekt aufgezeichnet hat, kann man bereits zwischendurch schon einmal die Daten als GPX exportieren und die GPX-Datei anschließend mit dem kostenlos im App Catalog erhältlichen GPX Mapper öffnen. Die Anwendung zeichnet die gespeicherten Standortdaten auf eine Google-Maps-Karte.

Geotag-Logger benötigt mindestens WebOS 2.1, da die Anwendung zum Speichern der GPX-Datei auf der USB-Partition des Geräts einen Node.JS-Service verwendet – dieses Feature gibt es erst ab WebOS 2.x.

“Geotag-Logger” ist Freie Software, lizensiert unter der GPL v3. Das bedeutet, die Anwendung ist nicht nur kostenlos, sondern Sie dürfen sie außerdem an andere weitergeben, sich den Quellcode ansehen (für den Fall, dass Sie Softwareentwickler sind), den Quellcode Ihren Bedürfnissen anpassen und Ihre Anpassungen mit anderen teilen. Den Quellcode der Anwendung finden Sie im GIT-Repository der Projekt-Website (englisch).

Installation von Preware auf dem HP/Palm Pre 2 mit WebOS 2.1 unter Ubuntu

Es existiert von mir bereits eine ausführliche Anleitung zur Installation von Preware – einer Anwendung, mit der man weitere “Homebrew-Apps” einfach nachinstallieren kann. Die bisherige Anleitung ist allerdings für den “alten” Pre und unter WebOS bis Version 1.4.5.

Da ich nun stolzer Besitzer eines HP/Palm Pre 2 bin, auf dem mittlerweile WebOS 2.1 läuft, habe ich mich entschlossen, eine kurze Anleitung für Besitzer des Pre 2 bzw. WebOS 2.1 zu schreiben. Preware wird in diesem Artikel – im Gegensatz zur alten Anleitung – nicht über das Programm “WebOS Quick Install” installiert, sondern über die Kommandozeile. “WebOS Quick Install” ist offensichtlich noch nicht mit WebOS 2.1 kompatibel.

Auch für diese Anleitung gilt: Die Installation erfolgt auf eigene Gefahr! Dieser Artikel ist allerdings an die vielseits erprobte, englischsprachige Anleitung von webos-internals.org angelehnt.

Installationsschritte:

  1. Laut Anleitung im Palm Developer Center muss das aktuelle WebOS-SDK installiert werden. Dazu gehört insbesondere der Novacom-Treiber (palm-novacom_1.0.64_i386.deb für 32-bit-Systeme, palm-novacom_1.0.64_amd64.deb für 64-bit-Systeme) und das SDK-Paket. (Für aktuelle Pakete bitte immer über den Palm Developer Center herunterladen!) Die Installation kann z.B. über die Kommandozeile erfolgen (am Beispiel für 64-bit-Systeme):
    sudo dpkg -i --force-architecture palm-sdk_2.1.0-svn409992-pho519_i386.deb
    sudo dpkg -i --force-architecture palm-novacom_1.0.64_amd64.deb
  2. Über get.preware.org das aktuelle Preware-IPK-Paket herunterladen (mindestens die Version 1.5.0, z.B. entweder org.webosinternals.preware_1.5.0_arm.ipk für den Pre und org.webosinternals.preware_1.5.0_i686.ipk für den Emulator).
  3. Nun muss der Developer-Modus im Pre 2 aktiviert werden. In WebOS 2.1 funktioniert das nicht mehr mit dem aus WebOS 1.x bekannten Konami-Code, sondern über eine andere Tastenkombination. Auf dem Startbildschirm muss folgendes eingegeben werden: webos20090606 – dann erscheint wie gewohnt das blaue Icon, mit dem der Developer-Modus eingeschaltet werden kann. Eine angenehme Neuerung: das Gerät muss nicht, wie in älteren WebOS-Versionen, neugestartet werden!
  4. Das Gerät kann nun via USB an den PC angeschlossen werden – nicht im Massenspeicher-Modus, sondern “Nur aufladen” auswählen.
  5. Nun kann das Preware-IPK-Paket installiert werden. Mittels Konsole wechselt man in das Verzeichnis, in dem man das heruntergeladene Preware-Paket gespeichert hat, und benutzt das Kommando “palm-install”, um das IPK auf dem Gerät zu installieren:
    cd ~/Desktop
    palm-install org.webosinternals.preware_1.5.0_arm.ipk
  6. Preware ist nun installiert und kann benutzt werden. Am Besten gleich Preware öffnen und ggf. auf die aktuelle Version aktualisieren. Außerdem kann der Developer-Modus wieder deaktiviert werden.

Nun kann auch auf dem Pre 2 unter WebOS 2.1 die Vielzahl an “Homebrew-Apps” installiert werden!

WebOS FOSDEM schedule app for 2011 released

I submitted it to Palm yesterday, today it was reviewed and published: the FOSDEM (Free and Open source Software Developers’ European Meeting, taking place on February 5th and 6th in Brussels) schedule app for WebOS. You can install it on your WebOS device easily by following the link on your WebOS device or searching it in the official Palm App catalog. Like last year, it’s mainly an application for planning your FOSDEM visit and have a handy offline-working list of the schedule on your WebOS device.

The functionality has grown over the last version. You can now mark items as favorite and switch to the list of your favorites. This should make planning easier. You can also switch to a view with all events in the future – making it easy to see what talks are next. The search functionality is now improved. Also new is a “Feeds” function where you can have a look at FOSDEM website news as well as various identi.ca and Twitter channels. There are also two new maps included. The application is localized for English and German, but the schedule and feed items of course are all English.

Under the hood many parts of the code was rewritten and/or improved. There’s still room for improvement, but the performance should be now better and many bugs should be fixed.

The application is released as free and open source software under the GPL v3. You can find the source code, GIT repository, bug tracker, the .ipk package and more at forge.webpresso.net.

Always feel free to share ideas, improvements, bug reports and your opinion. Just leave a comment or use the bug tracker (sorry, but registration is required to avoid spam).