<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Journal « Raphael Kallensee</title>
	<atom:link href="http://raphael.kallensee.name/journal/feed/" rel="self" type="application/rss+xml" />
	<link>http://raphael.kallensee.name/journal</link>
	<description>Web, Mobile, Design, Music.</description>
	<lastBuildDate>Sun, 08 Jan 2012 18:00:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://rkallensee.superfeedr.com/" />
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com/" />
			<item>
		<title>WebOS FOSDEM schedule app for 2012 submitted to HP</title>
		<link>http://raphael.kallensee.name/journal/webos-fosdem-schedule-app-for-2012-submitted-to-hp/</link>
		<comments>http://raphael.kallensee.name/journal/webos-fosdem-schedule-app-for-2012-submitted-to-hp/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 18:00:53 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[FOSDEM]]></category>
		<category><![CDATA[libre]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[web os]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=382</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2012/01/fosdem2012_0.2.8_en_01.png"><img src="http://raphael.kallensee.name/journal/wp-content/uploads/2012/01/fosdem2012_0.2.8_en_01-200x300.png" alt="" title="Fosdem for WebOS 0.2.8" width="200" height="300" class="alignleft size-medium wp-image-383" /></a>Today I submitted the 2012 update for the <a href="http://fosdem.org">FOSDEM</a> (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 <a href="http://developer.palm.com/appredirect/?packageid=net.webpresso.fosdem">HP App Catalog</a> sometime next week after it was reviewed by HP &#8211; or you can already download the *.ipk package (linked <a href="https://forge.webpresso.net/news/3">here</a>). Like <a href="http://raphael.kallensee.name/journal/fosdem-2010-schedule-application-for-webos/">2010</a> and <a href="http://raphael.kallensee.name/journal/webos-fosdem-schedule-app-for-2011-released/">2011</a>, it&#8217;s mainly an application for planning your FOSDEM visit and have a handy offline-working list of the schedule on your WebOS device.</p>
<p>There are several enhancements, as every year. Finally all event details are shown in an own &#8220;scene&#8221; 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&#8217;t available at the FOSDEM website).</p>
<p>The application is released as free and open source software under the <a href="http://www.gnu.org/licenses/gpl.html">GPL v3</a>. You can find the source code, GIT repository, bug tracker, the .ipk package and more at <a href="http://forge.webpresso.net/projects/fosdem-webos">forge.webpresso.net</a>.</p>
<p>As always feel free to share ideas, improvements and bug reports. Just leave a comment or use the <a href="http://forge.webpresso.net/projects/fosdem-webos/issues">bug tracker</a> (registration and manual activation is required to avoid spam &#8211; and trust me, there are many spammers&#8230;).</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/webos-fosdem-schedule-app-for-2012-submitted-to-hp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Samsung Galaxy Nexus auf Original-Firmware ITL41F flashen</title>
		<link>http://raphael.kallensee.name/journal/samsung-galaxy-nexus-auf-original-firmware-itl41f-flashen/</link>
		<comments>http://raphael.kallensee.name/journal/samsung-galaxy-nexus-auf-original-firmware-itl41f-flashen/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 23:51:42 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=376</guid>
		<description><![CDATA[Ich bin seit ein paar Tagen stolzer Besitzer eines Samsung Galaxy Nexus mit dem neuen Android 4.0 (ICS). Leider war die Geduld nicht groß genug und ich habe am ersten Tag der Verfügbarkeit in Deutschland die Gelegenheit im Saturn-Markt ergriffen. Das Problem: die erste Charge von Saturn / Media Markt wurde wohl von Samsung eilig [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin seit ein paar Tagen stolzer Besitzer eines Samsung Galaxy Nexus mit dem neuen Android 4.0 (ICS). Leider war die Geduld nicht groß genug und ich habe am ersten Tag der Verfügbarkeit in Deutschland die Gelegenheit im Saturn-Markt ergriffen. Das Problem: die erste Charge von Saturn / Media Markt wurde wohl von Samsung eilig vor der Deutschen Markteinführung mit einem eigenen Build (ITL41F.I9250XWKK8) geflasht, in dem das <a href="http://forum.xda-developers.com/showthread.php?t=1353590">Lautstärke-Problem</a> bereits behoben ist. Dieser Build weicht vom offiziellen Google-Build (ITL41F) ab &#8211; unter anderem sind die Google-Anwendungen wie Google Maps und Google+ nicht mit dem offiziellen Zertifikat von Google signiert. In der Praxis führt das dazu, dass das Update auf Google Maps 6.0 mit einer Fehlermeldung &#8220;Die Paketdatei war nicht richtig signiert.&#8221; abbricht. Für das Problem gibt es bereits ein <a href="http://code.google.com/p/android/issues/detail?id=22435">Ticket</a> im Android-Bugtracker. Da neuere Chargen aber alle mittlerweile den &#8220;offiziellen&#8221; Build haben und Samsung ein <a href="http://www.mobiflip.de/2011/12/samsung-galaxy-nexus-offizielles-update-von-samsung-verfuegbar-fixt-updateprobleme-der-google-apps/">Update-Tool</a> für Windows veröffentlicht hat, mit dem man den offiziellen Build unter Windows flashen kann, ist die Hoffnung gering, dass das Problem mittels OTA-Update behoben wird. Deshalb musste ich mich notgedrungen an die Arbeit machen, mein Galaxy Nexus unter Ubuntu auf das &#8220;Stock&#8221; image zu flashen, um den kaputten Samsung-Build loszuwerden.</p>
<p><strong>Achtung: bei diesem Vorgang werden sämtliche Daten auf dem Gerät gelöscht! Sie müssen also vorher gesichert werden! Der Vorgang geschieht außerdem auf eigene Gefahr!</strong></p>
<p>Ich hatte bereits das <a href="http://developer.android.com/sdk/installing.html">Android-SDK</a> in meinem Home-Verzeichnis unter <code>~/bin/android-sdk-linux</code> installiert und die Verzeichnisse <code>tools</code> und <code>platform-tools</code> dem PATH hinzugefügt (dies wird u.a. auch in <a href="http://www.android-hilfe.de/root-hacking-modding-fuer-lg-gt540/161667-how-fastboot-unter-linux.html">dieser Anleitung</a> erklärt). Das SDK bringt leider nicht das Tool <a href="http://wiki.cyanogenmod.com/wiki/Fastboot">fastboot</a> mit, das zum Flashen des originalen Android-Images notwendig ist. Die Binaries von Fastboot und ADB (letzteres ist aber auch im SDK enthalten) können über den zuvor genannten Link heruntergeladen werden. Ich habe einfach die fastboot-Binary in mein &#8220;platform-tools&#8221;-Verzeichnis im SDK-Ordner entpackt und die adb-Binary aus dem aktuellen SDK verwendet.</p>
<p>Nun muss das offizielle Image <a href="http://code.google.com/intl/de-DE/android/nexus/images.html">von Google</a> heruntergeladen und entpackt werden. Wichtig: hier die Version &#8220;4.0.1 (ITL41F)&#8221; verwenden &#8211; denn in dieser ist der Lautstärke-Bug behoben. In diesem Verzeichnis sind Bootloader-, Baseband- und ein Android-Image sowie ein Shell-Skript zum Flashen enthalten.</p>
<p>Die weitere Prozedur kann auch <a href="http://www.pocketpc.ch/galaxy-nexus-root-rom/149030-anleitung-zurueck-werkszustand-itl41f-google-stock-source-image-cwm.html">in diesem Beitrag</a> nachvollzogen werden: Bei den betroffenen Geräten ist der Bootloader bereits entsperrt (was an einem offenen Schloss beim Booten unterhalb des Google-Logos zu sehen ist). Um im Bootloader-Modus zu starten, muss das Gerät ausgeschaltet werden, anschließend Volume-Up- und Down-Regler gedrückt halten und das Gerät bei gedrückten Tasten einschalten. Das Gerät startet mit einem grünen Androiden im Bootloader-Modus. Daraufhin das Gerät per USB an den PC anschließen.</p>
<p>Um festzustellen, ob fastboot das Gerät erkennt, reicht ein <code>fastboot devices</code> auf der Konsole. Wird es nicht erkannt, erfolgt keine Ausgabe &#8211; falls doch, folgt eine Ausgabe mit der Seriennummer des Geräts. Bei mir war es notwendig, fastboot mittels <code>sudo</code> aufzurufen &#8211; woraufhin fastboot nicht mehr im PATH war &#8211; also musste ich ganz ausführlich werden: <code>sudo /home/raphael/bin/android-sdk-linux/platform-tools/fastboot devices</code> &#8211; dann wurde das Gerät angezeigt. Jetzt müssen eigentlich nur nacheinander die Befehle aus dem Shell-Skript im entpackten Ordner der Original Google-Images ausgeführt werden. Die Datei &#8220;flash-all.sh&#8221; kann man einfach in einem Texteditor öffnen und falls nötig die fastboot-Befehle anpassen. Original sieht die Datei so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Copyright (C) 2011 The Android Open Source Project</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
<span style="color: #666666; font-style: italic;"># you may not use this file except in compliance with the License.</span>
<span style="color: #666666; font-style: italic;"># You may obtain a copy of the License at</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#      http://www.apache.org/licenses/LICENSE-2.0</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Unless required by applicable law or agreed to in writing, software</span>
<span style="color: #666666; font-style: italic;"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
<span style="color: #666666; font-style: italic;"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<span style="color: #666666; font-style: italic;"># See the License for the specific language governing permissions and</span>
<span style="color: #666666; font-style: italic;"># limitations under the License.</span>
&nbsp;
fastboot flash bootloader bootloader-maguro-primekj10.img
fastboot reboot-bootloader
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">5</span>
fastboot flash radio radio-maguro-i9250xxkk1.img
fastboot reboot-bootloader
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">5</span>
fastboot <span style="color: #660033;">-w</span> update image-yakju-itl41f.zip</pre></div></div>

<p>Ich habe &#8211; wie erwähnt &#8211; einfach die Befehle einzeln ausgeführt und &#8220;fastboot&#8221; jeweils ersetzt, also nicht direkt das Shell-Skript verwendet. Ich bin also in den Ordner mit den Images gewechselt, habe einfach folgende Befehle nacheinander auf der Konsole ausgeführt und auf eine positive Bestätigung bzw. den Neustart des Geräts in den Bootloader abgewartet, damit entfallen die <code>sleep</code>-Zeilen aus dem Original-Shellscript.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>raphael<span style="color: #000000; font-weight: bold;">/</span>Downloads<span style="color: #000000; font-weight: bold;">/</span>yakju-itl41f <span style="color: #666666; font-style: italic;"># in den Ordner, in den die Images entpackt wurden, wechseln</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>raphael<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>android-sdk-linux<span style="color: #000000; font-weight: bold;">/</span>platform-tools<span style="color: #000000; font-weight: bold;">/</span>fastboot flash bootloader bootloader-maguro-primekj10.img
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>raphael<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>android-sdk-linux<span style="color: #000000; font-weight: bold;">/</span>platform-tools<span style="color: #000000; font-weight: bold;">/</span>fastboot reboot-bootloader
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>raphael<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>android-sdk-linux<span style="color: #000000; font-weight: bold;">/</span>platform-tools<span style="color: #000000; font-weight: bold;">/</span>fastboot flash radio radio-maguro-i9250xxkk1.img
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>raphael<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>android-sdk-linux<span style="color: #000000; font-weight: bold;">/</span>platform-tools<span style="color: #000000; font-weight: bold;">/</span>fastboot reboot-bootloader
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>raphael<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>android-sdk-linux<span style="color: #000000; font-weight: bold;">/</span>platform-tools<span style="color: #000000; font-weight: bold;">/</span>fastboot <span style="color: #660033;">-w</span> update image-yakju-itl41f.zip</pre></div></div>

<p>Das letzte Kommando &#8211; das Flashen des Systems &#8211; dauerte bei mir etwa zwei Minuten, Bootloader- und Baseband-Flashen dauerte nur wenige Sekungen. Danach startet das Gerät neu &#8211; mit dem richtigen Android-Build von Google! Nun beginnt die Arbeit, alles wieder neu einzurichten&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/samsung-galaxy-nexus-auf-original-firmware-itl41f-flashen/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Installation von Etherpad Lite auf Ubuntu 10.04 Server und Apache als Reverse-Proxy + Upstart</title>
		<link>http://raphael.kallensee.name/journal/etherpad-lite-auf-ubuntu-server-apache-upstart/</link>
		<comments>http://raphael.kallensee.name/journal/etherpad-lite-auf-ubuntu-server-apache-upstart/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 19:48:30 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[WebDevelopment]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=347</guid>
		<description><![CDATA[Etherpad 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 &#8211; insbesondere die hohen Anforderungen an den Arbeitsspeicher (im laufenden Betrieb wohl ca. 1 GB!) hielten mich von der Installation auf meinem Server ab. Etherpad [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2011/09/etherpad-lite.png"><img src="http://raphael.kallensee.name/journal/wp-content/uploads/2011/09/etherpad-lite-300x138.png" alt="Screenshot von Etherpad Lite, einem kollaborativen Texteditor" title="Etherpad Lite" width="300" height="138" class="alignleft size-medium wp-image-358" /></a><a href="http://etherpad.org/">Etherpad Lite</a> ist eine <a href="http://etherpad.org/2011/08/22/major-release-etherpad-lite-v1/">Neuentwicklung</a> des kollaborativen Real-Time-Texteditors Etherpad in <a href="http://nodejs.org/">Node.js</a>. Ausprobiert werden kann Etherpad Lite beispielsweise unter <a href="http://beta.etherpad.org/">beta.etherpad.org</a>.</p>
<p>Die ursprüngliche Etherpad-Software ist enorm ressourcenhungrig und die Codebase sehr umfangreich &#8211; 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 <a href="https://github.com/Pita/etherpad-lite#readme">rund 30 MB Arbeitsspeicher</a>.</p>
<p>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 &#8220;<a href="http://nodejs.org/jsconf.pdf">non-blocking</a>&#8221; Node.js-Applikation hinter einem &#8220;blocking&#8221; Apache-Server zu installieren &#8211; <a href="http://de.wikipedia.org/wiki/Nginx">Nginx</a> 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.</p>
<h3>Installation von Node.js</h3>
<p>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:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">groupadd nodejs
useradd <span style="color: #660033;">-g</span> nodejs <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">bash</span> <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>nodejs nodejs
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>nodejs
<span style="color: #c20cb9; font-weight: bold;">chown</span> nodejs:nodejs <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>nodejs</pre></div></div>

<p>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 &#8211; wir wechseln in den User nodejs:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">su</span> nodejs
<span style="color: #7a0874; font-weight: bold;">cd</span> ~</pre></div></div>

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

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">root =    <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>nodejs<span style="color: #000000; font-weight: bold;">/</span>.node_modules
binroot = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>nodejs<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin
manroot = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>nodejs<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">man</span></pre></div></div>

<p>Die entsprechenden Ordner müssen nun noch angelegt werden:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">local</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>share
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">man</span></pre></div></div>

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

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PATH</span>=<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin:<span style="color: #007800;">$PATH</span></pre></div></div>

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

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> build-essential python libssl-dev git-core libsqlite3-dev <span style="color: #c20cb9; font-weight: bold;">gzip</span> curl</pre></div></div>

<p>Nun kann Node.js heruntergeladen und kompiliert werden. Dazu &#8220;klonen&#8221; wir das Git-Repository und checken die letzte stabile Version aus &#8211; was spätere Updates erleichtert.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>src
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>src
<span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #c20cb9; font-weight: bold;">git</span>:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>joyent<span style="color: #000000; font-weight: bold;">/</span>node.git
<span style="color: #7a0874; font-weight: bold;">cd</span> node
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout v0.4.12
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--prefix</span>=<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<h3>Installation von NPM</h3>
<p>Jetzt ist Node.js installiert &#8211; wir benötigen aber noch den Node.js-Paketmanager NPM. Den installieren wir ebenfalls aus den GIT-Quellen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>src
<span style="color: #c20cb9; font-weight: bold;">git</span> clone https:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>isaacs<span style="color: #000000; font-weight: bold;">/</span>npm.git
<span style="color: #7a0874; font-weight: bold;">cd</span> npm
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout v1.0.30
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>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:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> ~<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>node_modules ~<span style="color: #000000; font-weight: bold;">/</span>.node_modules</pre></div></div>

<h3>Installation von Etherpad Lite</h3>
<p>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.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span>node-apps
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>node-apps
<span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #c20cb9; font-weight: bold;">git</span>:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>Pita<span style="color: #000000; font-weight: bold;">/</span>etherpad-lite.git
<span style="color: #7a0874; font-weight: bold;">cd</span> etherpad-lite
.<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>installDeps.sh</pre></div></div>

<p>Jetzt kann die Konfiguration angepasst werden, die sich in der Datei <code>/var/lib/nodejs/node-apps/etherpad-lite/settings.json</code> 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 &#8220;loglevel&#8221; setze ich außerdem auf &#8220;WARN&#8221;, um nicht zu viele unnötige Log-Meldungen zu schreiben.</p>
<p>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 <a href="http://mmonit.com/monit/">Monit</a> an &#8211; was aber nicht Teil dieses Artikels sein soll.</p>
<p>Wir legen nun die Datei <code>/etc/init/etherpad-lite.conf</code> mit folgendem Inhalt an (auf Grundlage <a href="https://github.com/Pita/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service">dieser Quelle</a>):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">description <span style="color: #ff0000;">&quot;etherpad-lite&quot;</span>
&nbsp;
start on started networking
stop on runlevel <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">2345</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">env</span> <span style="color: #007800;">NODEBIN</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>nodejs<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>node
<span style="color: #c20cb9; font-weight: bold;">env</span> <span style="color: #007800;">EPHOME</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>nodejs<span style="color: #000000; font-weight: bold;">/</span>node-apps<span style="color: #000000; font-weight: bold;">/</span>etherpad-lite
<span style="color: #c20cb9; font-weight: bold;">env</span> <span style="color: #007800;">EPLOGS</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>etherpad-lite
<span style="color: #c20cb9; font-weight: bold;">env</span> <span style="color: #007800;">EPUSER</span>=nodejs
&nbsp;
pre-start script
    chdir <span style="color: #007800;">$EPHOME</span>
    <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #007800;">$EPLOGS</span>                              <span style="color: #000000; font-weight: bold;">||</span><span style="color: #c20cb9; font-weight: bold;">true</span>
    <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #007800;">$EPUSER</span>:admin <span style="color: #007800;">$EPLOGS</span>                <span style="color: #000000; font-weight: bold;">||</span><span style="color: #c20cb9; font-weight: bold;">true</span>
    <span style="color: #c20cb9; font-weight: bold;">chmod</span> 0755 <span style="color: #007800;">$EPLOGS</span>                         <span style="color: #000000; font-weight: bold;">||</span><span style="color: #c20cb9; font-weight: bold;">true</span>
    <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> <span style="color: #007800;">$EPUSER</span>:admin <span style="color: #007800;">$EPHOME</span><span style="color: #000000; font-weight: bold;">/</span>var         <span style="color: #000000; font-weight: bold;">||</span><span style="color: #c20cb9; font-weight: bold;">true</span>
<span style="color: #666666; font-style: italic;">#    exec su -s /bin/bash -c 'exec &quot;$0&quot; &quot;$@&quot;' $EPUSER $EPHOME/bin/installDeps.sh &gt;&gt; $EPLOGS/error.log || { stop; exit 1; }</span>
end script
&nbsp;
script
  <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$EPHOME</span><span style="color: #000000; font-weight: bold;">/</span>node
  <span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #c20cb9; font-weight: bold;">su</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">bash</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;">'exec &quot;$0&quot; &quot;$@&quot;'</span> <span style="color: #007800;">$EPUSER</span> <span style="color: #007800;">$NODEBIN</span> server.js \
                        <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$EPLOGS</span><span style="color: #000000; font-weight: bold;">/</span>access.log \
                        <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$EPLOGS</span><span style="color: #000000; font-weight: bold;">/</span>error.log
end script</pre></div></div>

<p><em>(Diese Upstart-Konfiguration ist noch nicht optimal &#8211; spontan gelang es mir nicht, das Shell-Script <code>installDeps.sh</code> im pre-start erfolgreich auszuführen. Deshalb muss man daran denken, dieses Script nach einem Etherpad-Update manuell auszuführen.)</em></p>
<p>Jetzt kann Etherpad ganz einfach mittels</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">start etherpad-lite</pre></div></div>

<p>gestartet werden.</p>
<h3>Einrichtung des Apache Reverse-Proxys</h3>
<p>Nun richten wir Apache ein, damit Etherpad auf Port 80 erreichbar ist. Dafür verwenden wir z.B. die Subdomain etherpad.example.lit &#8211; und folgende virtuelle Host-Konfiguration (beispielsweise in der Datei /etc/apache2/sites-available/etherpad.example.lit):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;</span>virtualhost <span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">80</span><span style="color: #000000; font-weight: bold;">&gt;</span>
        ServerName etherpad.example.lit
&nbsp;
        ServerAdmin webmaster<span style="color: #000000; font-weight: bold;">@</span>localhost
&nbsp;
        <span style="color: #000000; font-weight: bold;">&lt;</span>ifmodule mod_proxy.c<span style="color: #000000; font-weight: bold;">&gt;</span>
            ProxyVia On
            ProxyRequests Off
            ProxyPass <span style="color: #000000; font-weight: bold;">/</span> http:<span style="color: #000000; font-weight: bold;">//</span>localhost:<span style="color: #000000;">9001</span><span style="color: #000000; font-weight: bold;">/</span>
            ProxyPassReverse <span style="color: #000000; font-weight: bold;">/</span> http:<span style="color: #000000; font-weight: bold;">//</span>localhost:<span style="color: #000000;">9001</span><span style="color: #000000; font-weight: bold;">/</span>
            ProxyPreserveHost on
            <span style="color: #000000; font-weight: bold;">&lt;</span>proxy <span style="color: #000000; font-weight: bold;">*&gt;</span>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
            <span style="color: #000000; font-weight: bold;">&lt;/</span>proxy<span style="color: #000000; font-weight: bold;">&gt;</span>
        <span style="color: #000000; font-weight: bold;">&lt;/</span>ifmodule<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
        ErrorLog <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>etherpad-lite<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>error.log
&nbsp;
        <span style="color: #666666; font-style: italic;"># Possible values include: debug, info, notice, warn, error, crit,</span>
        <span style="color: #666666; font-style: italic;"># alert, emerg.</span>
        LogLevel warn
&nbsp;
        CustomLog <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>etherpad-lite<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>access.log combined
        ServerSignature Off
<span style="color: #000000; font-weight: bold;">&lt;/</span>virtualhost<span style="color: #000000; font-weight: bold;">&gt;</span></pre></div></div>

<p>Wichtig: das Verzeichnis <code>/var/log/etherpad-lite/apache2/</code> für die Apache-Logs muss angelegt werden!</p>
<p>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:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">a2ensite etherpad.example.lit
a2enmod proxy proxy_http
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 reload</pre></div></div>

<p>Nun sollte das Etherpad unter http://etherpad.example.lit erreichbar sein!</p>
<h3>Konfiguration von Logrotate</h3>
<p>Wir haben nun einige Log-Dateien unterhalb von <code>/var/log/etherpad-lite/</code>, 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 <code>/etc/logrotate.conf</code> hinzu &#8211; oder legen eine <code>/etc/logrotate.d/etherpadlite</code> mit dem folgenden Inhalt an:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># rotate etherpad lite logs</span>
<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>etherpad-lite<span style="color: #000000; font-weight: bold;">/*</span>.log <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        weekly
        missingok
        rotate <span style="color: #000000;">8</span>
        compress
        notifempty
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>etherpad-lite<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/*</span>.log <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        weekly
        missingok
        rotate <span style="color: #000000;">8</span>
        compress
        notifempty
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<h3>Installation von Abiword für Import/Export (optional)</h3>
<p>Für den erweiterten Import/Export muss die Textverarbeitungs-Software <a href="http://www.abisource.com/">Abiword</a> installiert werden &#8211; deren Binaries benutzt Etherpad zum Lesen und Schreiben von Dokumenten. In Ubuntu 10.04 ist Abiword in den Paketquellen vorhanden, deshalb reicht ein:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> abiword</pre></div></div>

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

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">/* This is the path to the Abiword executable. Setting it to null, disables abiword.
     Abiword is needed to enable the import/export of pads*/</span>
  <span style="color: #3366CC;">&quot;abiword&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;/usr/bin/abiword&quot;</span><span style="color: #339933;">,</span></pre></div></div>

<p>Nach einem Neustart mittels</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">stop etherpad-lite
start etherpad-lite</pre></div></div>

<p>stehen die erweiterten Import-/Export-Funktionen zur Verfügung &#8211; dann kann ein Pad beispielsweise auch als PDF exportiert werden.</p>
<h3>Abschluss</h3>
<p>Etherpad Lite ist meiner Meinung nach ein sehr nützliches Tool, um gemeinsam Dokumente zu bearbeiten, Protokolle und To-Do-Listen zu erstellen usw. &#8211; 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 &#8211; Libraries für <a href="https://github.com/jhollinger/ruby-etherpad-lite">Ruby</a>, <a href="https://github.com/tomnomnom/etherpad-lite-client">PHP</a>, ein <a href="https://github.com/johnyma22/etherpad-lite-jquery-plugin">jQuery-Plugin</a>, ein <a href="http://drupal.org/sandbox/webflo/1255474">Drupal-Modul</a> (im Entwicklungsstadium) und viele mehr.</p>
<p>Ein Hinweis zum Schluss: diese Anleitung stellt sicher kein Optimum dar &#8211; jedoch war es mir wichtig, Node.JS sowie NPM nicht als <code>root</code>-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!</p>
<p>Quellen und weiterführende Links:</p>
<ul>
<li><a href="http://mrtopf.de/blog/de/ein-besseres-etherpad-dank-etherpad-lite/">Ein besseres Etherpad dank Etherpad Lite!</a></li>
<li><a href="https://github.com/joyent/node/wiki/Installation">Building and Installing Node.js</a></li>
<li><a href="https://github.com/Pita/etherpad-lite#readme">Etherpad Lite Readme</a></li>
<li><a href="http://tnovelli.net/blog/blog.2011-08-27.node-npm-user-install.html">Node.js HOWTO: Install NPM as user (not root)</a></li>
<li><a href="http://mclear.co.uk/2011/08/01/install-etherpad-lite-on-ubuntu/">Install Etherpad Lite on Ubuntu and Debian</a></li>
<li><a href="http://stackoverflow.com/questions/6514621/npm-install-locally">npm install locally</a></li>
<li><a href="https://github.com/Pita/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy">How to put Etherpad Lite behind a reverse Proxy</a></li>
<li><a href="http://howtonode.org/deploying-node-upstart-monit">Deploying Node.js With Upstart and Monit</a></li>
<li><a href="http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/">Run Node.js as a Service on Ubuntu</a></li>
<li><a href="https://github.com/Pita/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service">How to deploy Etherpad Lite as a service</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/etherpad-lite-auf-ubuntu-server-apache-upstart/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>&#8220;Geotag-Logger&#8221;: Fotos geotaggen mit HP WebOS</title>
		<link>http://raphael.kallensee.name/journal/geotag-logger-fotos-geotaggen-mit-webos/</link>
		<comments>http://raphael.kallensee.name/journal/geotag-logger-fotos-geotaggen-mit-webos/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 18:11:52 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[fotografie]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web os]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=335</guid>
		<description><![CDATA[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. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://de.wikipedia.org/wiki/Geo-Imaging">Geo-Tagging</a> 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.</p>
<p>Moderne Smartphones versehen Fotos, die mit der integrierten Kamera aufgenommen wurden, auf Wunsch automatisch mit &#8220;Geo-Tags&#8221;. 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 &#8211; &#8220;Geo-Logger&#8221;, 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.</p>
<p>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.</p>
<p><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2011/07/geotaglogger_0.1_de.png"><img src="http://raphael.kallensee.name/journal/wp-content/uploads/2011/07/geotaglogger_0.1_de-200x300.png" alt="" title="Geotag-Logger 0.1" width="200" height="300" class="alignleft size-medium wp-image-339" /></a>Hier kommt für Benutzer des Smartphone-Betriebssystems HP/Palm WebOS die von mir geschriebene Anwendung &#8220;<a href="http://developer.palm.com/appredirect/?packageid=net.webpresso.geotaglogger">Geotag-Logger</a>&#8221; ins Spiel, die im offiziellen HP App Catalog zu finden ist. Es existierten bereits einige Anwendungen, mit denen man die eigene Position tracken konnte &#8211; 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 &#8211; größere Intervalle sorgen für einen deutlich geringeren Akku-Verbrauch und sollten dennoch ausreichend sein.</p>
<p>Mit &#8220;Geotag-Logger&#8221; 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 <a href="http://geotag.sourceforge.net/">Geotag</a> (Linux/Windows), <a href="http://code.google.com/p/gpicsync/">GPicSync</a> (Linux/Windows) oder <a href="http://freefoote.dview.net/linux_gpscorr.html">GPSCorrelate</a> (Linux) verwendet werden. Zum Taggen der Fotos existieren drei Artikel unter <a href="http://www.spiegel.de/netzwelt/tech/0,1518,531694,00.html">spiegel.de</a>, <a href="http://www.awokenmind.de/geotagging-windows-linux/">awokenmind.de</a> und <a href="http://www.schrenk.cc/2009/01/19/geo-tagging-von-fotos-meine-praxisanleitung-part-ii/">schrenk.cc</a>, die einen Überblick über das Vorgehen geben.</p>
<p>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 <a href="http://developer.palm.com/appredirect/?packageid=com.rustyapps.gpxmapper">GPX Mapper</a> öffnen. Die Anwendung zeichnet die gespeicherten Standortdaten auf eine Google-Maps-Karte.</p>
<p>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 &#8211; dieses Feature gibt es erst ab WebOS 2.x.</p>
<p>&#8220;Geotag-Logger&#8221; ist <a href="http://de.wikipedia.org/wiki/Freie_Software">Freie Software</a>, lizensiert unter der <a href="http://www.gnu.org/licenses/gpl.html">GPL v3</a>. 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 <a href="http://forge.webpresso.net/projects/geotag-logger">Projekt-Website</a> (englisch).</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/geotag-logger-fotos-geotaggen-mit-webos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation von Preware auf dem HP/Palm Pre 2 mit WebOS 2.1 unter Ubuntu</title>
		<link>http://raphael.kallensee.name/journal/installation-von-preware-auf-dem-palm-pre-2-mit-webos-2-1-unter-ubuntu/</link>
		<comments>http://raphael.kallensee.name/journal/installation-von-preware-auf-dem-palm-pre-2-mit-webos-2-1-unter-ubuntu/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 20:46:01 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web os]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=323</guid>
		<description><![CDATA[Es existiert von mir bereits eine ausführliche Anleitung zur Installation von Preware &#8211; einer Anwendung, mit der man weitere &#8220;Homebrew-Apps&#8221; einfach nachinstallieren kann. Die bisherige Anleitung ist allerdings für den &#8220;alten&#8221; 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 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2011/03/preware_2011-22-03_214137.png"><img src="http://raphael.kallensee.name/journal/wp-content/uploads/2011/03/preware_2011-22-03_214137-200x300.png" alt="" title="Preware 1.5.7" width="200" height="300" class="alignleft size-medium wp-image-327" /></a>Es existiert von mir bereits eine <a href="http://raphael.kallensee.name/journal/palm-pre-installation-von-preware/">ausführliche Anleitung zur Installation von Preware</a> &#8211; einer Anwendung, mit der man weitere &#8220;Homebrew-Apps&#8221; einfach nachinstallieren kann. Die bisherige Anleitung ist allerdings für den &#8220;alten&#8221; Pre und unter WebOS bis Version 1.4.5.</p>
<p>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 &#8211; im Gegensatz zur <a href="http://raphael.kallensee.name/journal/palm-pre-installation-von-preware/">alten Anleitung</a> &#8211; nicht über das Programm &#8220;WebOS Quick Install&#8221; installiert, sondern über die Kommandozeile. &#8220;WebOS Quick Install&#8221; ist offensichtlich noch nicht mit WebOS 2.1 kompatibel.</p>
<p>Auch für diese Anleitung gilt: <strong>Die Installation erfolgt auf eigene Gefahr!</strong> Dieser Artikel ist allerdings an die vielseits erprobte, englischsprachige Anleitung von <a href="http://www.webos-internals.org/wiki/Application:Preware#Installing_Preware_on_webOS_2.0">webos-internals.org</a> angelehnt.</p>
<h3>Installationsschritte:</h3>
<ol>
<li>Laut Anleitung im <a href="http://developer.palm.com/index.php?option=com_content&#038;view=article&#038;layout=page&#038;id=1585&#038;Itemid=55">Palm Developer Center</a> muss das aktuelle WebOS-SDK installiert werden. Dazu gehört insbesondere der Novacom-Treiber (<a href="https://cdn.downloads.palm.com/sdkdownloads/2.1.0.519/sdkBinaries/palm-novacom_1.0.64_i386.deb">palm-novacom_1.0.64_i386.deb</a> für 32-bit-Systeme, <a href="https://cdn.downloads.palm.com/sdkdownloads/2.1.0.519/sdkBinaries/palm-novacom_1.0.64_amd64.deb">palm-novacom_1.0.64_amd64.deb</a> für 64-bit-Systeme) und das <a href="https://cdn.downloads.palm.com/sdkdownloads/2.1.0.519/sdkBinaries/palm-sdk_2.1.0-svn409992-pho519_i386.deb">SDK-Paket</a>. <em>(Für aktuelle Pakete bitte immer über den Palm Developer Center herunterladen!)</em> Die Installation kann z.B. über die Kommandozeile erfolgen (am Beispiel für 64-bit-Systeme):

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">-i</span> <span style="color: #660033;">--force-architecture</span> palm-sdk_2.1.0-svn409992-pho519_i386.deb
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">-i</span> <span style="color: #660033;">--force-architecture</span> palm-novacom_1.0.64_amd64.deb</pre></div></div>

</li>
<li>Über <a href="http://get.preware.org/">get.preware.org</a> das aktuelle Preware-IPK-Paket herunterladen (mindestens die Version 1.5.0, z.B. entweder <a href="http://get.preware.org/org.webosinternals.preware_1.5.0_arm.ipk">org.webosinternals.preware_1.5.0_arm.ipk</a> für den Pre und <a href="http://get.preware.org/org.webosinternals.preware_1.5.0_i686.ipk">org.webosinternals.preware_1.5.0_i686.ipk</a> für den Emulator).</li>
<li>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 <a href="http://en.wikipedia.org/wiki/Konami_Code">Konami-Code</a>, sondern über eine andere Tastenkombination. Auf dem Startbildschirm muss folgendes eingegeben werden: <code>webos20090606</code> &#8211; 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!</li>
<li>Das Gerät kann nun via USB an den PC angeschlossen werden &#8211; nicht im Massenspeicher-Modus, sondern &#8220;Nur aufladen&#8221; auswählen.</li>
<li>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 &#8220;palm-install&#8221;, um das IPK auf dem Gerät zu installieren:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Desktop
palm-install org.webosinternals.preware_1.5.0_arm.ipk</pre></div></div>

</li>
<li>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.</li>
</ol>
<p>Nun kann auch auf dem Pre 2 unter WebOS 2.1 die Vielzahl an &#8220;Homebrew-Apps&#8221; installiert werden!</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/installation-von-preware-auf-dem-palm-pre-2-mit-webos-2-1-unter-ubuntu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WebOS FOSDEM schedule app for 2011 released</title>
		<link>http://raphael.kallensee.name/journal/webos-fosdem-schedule-app-for-2011-released/</link>
		<comments>http://raphael.kallensee.name/journal/webos-fosdem-schedule-app-for-2011-released/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 23:22:55 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[FOSDEM]]></category>
		<category><![CDATA[libre]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[web os]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=312</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2011/01/fosdem2011_0.2.2_en_01.png"><img src="http://raphael.kallensee.name/journal/wp-content/uploads/2011/01/fosdem2011_0.2.2_en_01-200x300.png" alt="" title="FOSDEM 2011 WebOS schedule application" width="200" height="300" class="alignleft size-medium wp-image-315" /></a>I submitted it to Palm yesterday, today it was reviewed and published: the <a href="http://fosdem.org">FOSDEM</a> (Free and Open source Software Developers’ European Meeting, taking place on February 5th and 6th in Brussels) schedule app for WebOS. You can <a href="http://developer.palm.com/appredirect/?packageid=net.webpresso.fosdem">install it on your WebOS device</a> easily by following the link on your WebOS device or searching it in the official Palm App catalog. Like <a href="http://raphael.kallensee.name/journal/fosdem-2010-schedule-application-for-webos/">last year</a>, it&#8217;s mainly an application for planning your FOSDEM visit and have a handy offline-working list of the schedule on your WebOS device.</p>
<p>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 &#8211; making it easy to see what talks are next. The search functionality is now improved. Also new is a &#8220;Feeds&#8221; 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.</p>
<p>Under the hood many parts of the code was rewritten and/or improved. There&#8217;s still room for improvement, but the performance should be now better and many bugs should be fixed.</p>
<p>The application is released as free and open source software under the <a href="http://www.gnu.org/licenses/gpl.html">GPL v3</a>. You can find the source code, GIT repository, bug tracker, the .ipk package and more at <a href="http://forge.webpresso.net/projects/fosdem-webos">forge.webpresso.net</a>.</p>
<p>Always feel free to share ideas, improvements, bug reports and your opinion. Just leave a comment or use the <a href="http://forge.webpresso.net/projects/fosdem-webos/issues">bug tracker</a> (sorry, but registration is required to avoid spam).</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/webos-fosdem-schedule-app-for-2011-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Navit: eine freie Navigationslösung für den Palm Pre und WebOS</title>
		<link>http://raphael.kallensee.name/journal/navit-eine-freie-navigationslosung-fur-den-palm-pre-und-webos/</link>
		<comments>http://raphael.kallensee.name/journal/navit-eine-freie-navigationslosung-fur-den-palm-pre-und-webos/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 22:28:06 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[libre]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[web os]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=304</guid>
		<description><![CDATA[Mittlerweile ist die freie Navigationssoftware Navit via Preware für WebOS verfügbar. Zuvor war die Anwendung einige Wochen nur über den separaten Testing-Feed erreichbar. Navit ist für verschiedene Plattformen verfügbar und wurde nun auch auf WebOS portiert. Die Software kann Kartenmaterial von OpenStreetMap sowie spezielle proprietäre Kartendaten verarbeiten. Da es bisher &#8211; jedenfalls für europäische WebOS-Nutzer [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2010/09/navit-webos_2010-03-09_002137.png"><img src="http://raphael.kallensee.name/journal/wp-content/uploads/2010/09/navit-webos_2010-03-09_002137-200x300.png" alt="" title="Navit unter WebOS 1.4.5" width="200" height="300" class="alignleft size-medium wp-image-305" /></a>Mittlerweile ist die freie Navigationssoftware <a href="http://www.navit-project.org/">Navit</a> via Preware für WebOS verfügbar. Zuvor war die Anwendung einige Wochen nur über den separaten Testing-Feed erreichbar. Navit ist für verschiedene Plattformen verfügbar und wurde nun auch auf WebOS portiert. Die Software kann Kartenmaterial von <a href="http://www.openstreetmap.org">OpenStreetMap</a> sowie spezielle proprietäre Kartendaten verarbeiten.</p>
<p>Da es bisher &#8211; jedenfalls für europäische WebOS-Nutzer &#8211; keine Navigationslösung gibt, ist Navit besonders interessant. Ich muss allerdings gleich vorab warnen: Navit funktioniert zwar mittlerweile, ist jedoch &#8211; abhängig von den geladenen Kartendaten &#8211; recht langsam und noch nicht wirklich benutzerfreundlich.</p>
<p>Die Installation ist recht einfach &#8211; jedoch ist zwingend WebOS 1.4.5 erforderlich! Ist diese Voraussetzung erfüllt, einfach folgende Schritte ausführen:</p>
<ol>
<li>Falls noch nicht geschehen, muss <a href="http://raphael.kallensee.name/journal/palm-pre-installation-von-preware/">Preware installiert werden</a>.</li>
<li>In Preware unter &#8220;Komplette Liste&#8221; bzw. &#8220;Verfügbare Pakete&#8221; nach &#8220;Navit&#8221; suchen und die Anwendung installieren. Für die Anwendung müssen zwei Abhängigkeiten mit installiert werden: &#8220;speechd&#8221;, eine Sprachsynthese-Bibliothek, sowie &#8220;locale&#8221; für die Internationalisierung.</li>
<li>Nun muss Navit gestartet werden. Startet die Anwendung nicht, auch nicht nach einem Geräteneustart, liegt das recht wahrscheinlich an einem Fehler von Palm im WebOS-Update auf 1.4.5 (<a href="http://www.nexave.de/forum/39654-fehler-im-ota-1-4-5-update.html">hier näher beschrieben</a>). Die einfachste Lösung des Problems: es muss der &#8220;<a href="http://forums.precentral.net/webos-internals/255149-emergency-fstab-fixer-required-fix-webos-1-4-5-ota-update.html">Emergency Fstab Fixer</a>&#8221; via Preware installiert werden. Nach der Installation muss der Neustart des Telefons bestätigt werden &#8211; danach sollte Navit zumindest starten.</li>
<li>Nach dem Start von Navit sind noch keine Kartendaten vorhanden, da diese nicht mitgeliefert werden. Am Einfachsten installiert man sich das freie Kartenmaterial von OpenStreetMap. Diese können mit verschiedenen Tools detailliert für bestimmte Areale heruntergeladen werden &#8211; für viele Länder gibt es vorgefertigte <a href="http://wiki.navit-project.org/index.php/OpenStreetMaps">Links beim Navit-Projekt</a>. Die <a href="http://maps.navit-project.org/api/map/?bbox=5.185546875,46.845703125,15.46875,55.634765625">Karten für Deutschland</a> werden mit ~490MiB angegeben &#8211; bei mir waren es im Endeffekt rund 670MB, die man im Pre erst einmal freischaufeln muss. Zum Download erhält man eine *.bin-Datei, die Navit lesen kann. Nach dem Klick auf den Link kann es einen Moment dauern, bis der Download startet. Recht einfach ist jedoch auch der Download eines bestimmten Areals über den <a href="http://maps.navit-project.org/download/">Planet Extractor</a>, durch die Auswahl eines kleineren Bereichs kann man Platz auf dem Gerät sparen.</li>
<li>Nun muss der Pre per USB-Modus an den PC angeschlossen werden. Die heruntergeladene *.bin-Datei muss nun in den Ordner appdata/org.webosinternals.navit/maps kopiert werden, der beim ersten Start von Navit erzeugt wurde (und leer sein müsste).</li>
<li>Nach dem Entfernen des Pre vom PC kann Navit gestartet werden und sollte die Karten anzeigen. Die Performance könnte &#8211; wie bereits erwähnt &#8211; besser sein, jedoch wird berichtet, dass bei kleineren Kartenausschnitten und/oder weniger enthaltenen POIs im Kartenmaterial die Performance deutlich steigt. Hier kann man sicherlich noch etwas Performance einsparen.</li>
</ol>
<p>Eine englische Installationsanleitung sowie ein paar kurze Bedienungshinweise gibt es bei <a href="http://www.webos-internals.org/wiki/Application:Navit">webos-internals.org</a>, die auch die Anwendung auf WebOS portiert haben sowie für die Entwicklung von Preware verantwortlich sind.</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/navit-eine-freie-navigationslosung-fur-den-palm-pre-und-webos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PRODROMUS, ein minimaler JavaScript-XMPP-Client</title>
		<link>http://raphael.kallensee.name/journal/prodromus-ein-minimaler-javascript-xmpp-client/</link>
		<comments>http://raphael.kallensee.name/journal/prodromus-ein-minimaler-javascript-xmpp-client/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 01:01:12 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[WebDevelopment]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[libre]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=297</guid>
		<description><![CDATA[Auf meiner Kontakt-Seite befindet sich schon eine Weile mein XMPP-MiniChat-Client &#8220;PRODROMUS&#8221;. Nun habe ich ihn endlich unter der AGPL veröffentlicht. &#8220;Prodromus&#8221; steht lateinisch für &#8220;Eilbote&#8221;. PRODROMUS ist ein simpler XMPP-Client, der vollständig in JavaScript geschrieben ist. Er benutzt die großartige Bibliothek Strophe.js von Jack Moffit, um sich zu einem XMPP-Server zu verbinden und ermöglicht es [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2010/08/prodromus_de.png"><img src="http://raphael.kallensee.name/journal/wp-content/uploads/2010/08/prodromus_de-280x300.png" alt="PRODROMUS Mini-XMPP-Client" title="prodromus_de" width="280" height="300" class="alignleft size-medium wp-image-298" /></a>Auf meiner <a href="/kontakt">Kontakt</a>-Seite befindet sich schon eine Weile mein XMPP-MiniChat-Client &#8220;PRODROMUS&#8221;. Nun habe ich ihn endlich unter der <a href="http://de.wikipedia.org/wiki/GNU_Affero_General_Public_License">AGPL</a> <a href="http://forge.webpresso.net/projects/prodromus">veröffentlicht</a>. &#8220;Prodromus&#8221; steht lateinisch für &#8220;Eilbote&#8221;.</p>
<p>PRODROMUS ist ein simpler <a href="http://de.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol">XMPP</a>-Client, der vollständig in JavaScript geschrieben ist. Er benutzt die großartige Bibliothek <a href="http://code.stanziq.com/strophe/">Strophe.js</a> von <a href="http://metajack.im/">Jack Moffit</a>, um sich zu einem XMPP-Server zu verbinden und ermöglicht es somit dem Besucher, mit einer vorkonfigurierten Person via XMPP zu kommunizieren. PRODROMUS ist als Ergänzung zu einem Kontaktformular gedacht &#8211; er lässt sich in bestehende Websites einbinden und erweitert die Kontaktmöglichkeiten um Echtzeit-Kommunikation.</p>
<p>Eine kurze Installationsanleitung sowie die erforderlichen Voraussetzungen gibt es <a href="http://forge.webpresso.net/projects/prodromus/wiki">im Wiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/prodromus-ein-minimaler-javascript-xmpp-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Location-based services</title>
		<link>http://raphael.kallensee.name/journal/location-based-services/</link>
		<comments>http://raphael.kallensee.name/journal/location-based-services/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 11:53:14 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[2.0]]></category>
		<category><![CDATA[lbs]]></category>
		<category><![CDATA[social web]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=277</guid>
		<description><![CDATA[Location-based services (LBS) sind (derzeit meist mobile) Dienste, die den Standort des Users verwenden und Informationen mit diesen Standort-Informationen anreichern bzw. Informationen über und um diesen Standort anzeigen. Dies soll ein kleiner, unvollständiger Überblick sein. Diese Anwendungen sind an sich nichts neues, dank geeigneteren und benutzerfreundlicheren Ortungs-Methoden erfahren sie aber erst in den letzten Monaten [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.openclipart.org/detail/50329"><img src="http://raphael.kallensee.name/journal/wp-content/uploads/2010/08/openclipart-compass.png" alt="" title="openclipart-compass" width="130" height="130" class="alignleft size-full wp-image-279" /></a>Location-based services (LBS) sind (derzeit meist mobile) Dienste, die den Standort des Users verwenden und Informationen mit diesen Standort-Informationen anreichern bzw. Informationen über und um diesen Standort anzeigen. Dies soll ein kleiner, unvollständiger Überblick sein.</p>
<p>Diese Anwendungen sind an sich nichts neues, dank geeigneteren und benutzerfreundlicheren Ortungs-Methoden erfahren sie aber erst in den letzten Monaten einen starken Zuwachs. Moderne Smartphones haben mittlerweile Techniken an Bord, um innerhalb weniger Sekunden die Position des Gerätes ziemlich genau zu bestimmen (<a href="http://de.wikipedia.org/wiki/Global_Positioning_System">GPS</a>, <a href="http://de.wikipedia.org/wiki/AGPS">A-GPS</a>, <a href="http://de.wikipedia.org/wiki/GSM-Ortung">GSM-</a> und <a href="http://de.wikipedia.org/wiki/WLAN-basierte_Ortung">WLAN-Ortung</a>).<br />
Auch in Web-Browsern hält das Thema langsam Einzug &#8211; Firefox ab Version 3.5, Chrome ab Version 5, Opera ab Version 10.6 sowie der iPhone-Safari-Browser <a href="http://mobile.tutsplus.com/tutorials/html5/html5-geolocation/">unterstützen die Lokalisierung</a>. Dafür zuständig ist eine vom W3C herausgegebene <a href="http://dev.w3.org/geo/api/spec-source.html">Spezifikation</a> &#8211; die Browser-Ortung ist allerdings meist noch recht ungenau, da der Benutzer via WLAN-Accesspoints in der Umgebung und Geo-IP geortet wird.</p>
<p>Mittlerweile wächst der Markt an Geo-sensitiven Anwendungen stark &#8211; und ihm wird in naher Zukunft ein weiterhin starkes Wachstum zugesagt. Ortsbezogene Social Networks wie <a href="http://gowalla.com/">Gowalla</a>, <a href="http://foursquare.com/">Foursquare</a> und <a href="http://brightkite.com/">Brightkite</a> ermöglichen es, an Orten &#8220;einzuchecken&#8221; und zu erfahren, wo sich Freunde gerade aufhalten &#8211; und verbinden dies teils mit einem <a href="http://news.cnet.com/8301-13577_3-10466302-36.html">spielerischen Effekt</a>. Auch die anderen Dienste im Social web ziehen nach &#8211; Microblogging-Dienste wie <a href="http://identi.ca">identi.ca</a> und <a href="http://twitter.com">Twitter</a> speichern auf Wunsch den aktuellen Ort zusammen mit &#8220;Tweets&#8221;. Facebook <a href="http://mashable.com/2010/08/18/facebook-launches-its-location-features-live/">startete gerade vor zwei Tagen</a> seinen neuen Dienst &#8220;Places&#8221;, bei dem bereits die Dienste Foursquare, Gowalla, Yelp und MyTown mehr oder weniger eng mit eingebunden sind. Wikipedia-Artikel beinhalten bereits seit einiger Zeit Koordinaten von Orten, mit Positionsdaten angereicherte Fotos erlauben zusätzliche Funktionen bei Foto-Communities wie <a href="http://www.flickr.com/">Flickr</a> und <a href="http://picasaweb.google.com/">Picasa</a>.<br />
Um Positionsdaten zu visualisieren, sind Dienste wie <a href="http://www.openstreetmap.de/">OpenStreetMap</a> und <a href="http://maps.google.de/">Google Maps</a> nützlich &#8211; sie bieten eine mehr- oder weniger vollständige Karte der Erde und erlauben beispielsweise über APIs, die Kartenansichten mit weiteren Informationen angereichert darzustellen &#8211; Marker, Fotos auf einer Landkarte und vieles mehr.</p>
<p>Was macht diesen Markt so interessant? Zum einen sind natürlich interessante Anwendungen möglich &#8211; mit einer entsprechenden Anwendung kann man sich den nächsten Geldautomaten, das nächste Café oder eine gute Bar um die Ecke anzeigen. Man kann sehen, an welchen Orten sich Freunde kürzlich aufgehalten haben oder selbst interessante Orte &#8220;markieren&#8221;, um sie später wiederzufinden.<br />
Aber auch für <a href="http://mashable.com/2010/03/15/location-based-marketing/">Marketing-Zwecke</a> eignen sich ortsbezogene Dienste. Sie werden außerdem für kleinere, lokale Betriebe interessant. Werbung auf Online-Plattformen kann gezielt Nutzer in der Nähe ansprechen. Ein Café kann an alle  User eines LBS im näheren Umkreis Informationen über eine Rabatt-Aktion verteilen, um Gäste anzulocken. Events können Menschen in der Nähe einfach bekannt gemacht werden. Interessante Marketing-Aktionen, wie sie beispielsweise Opel <a href="http://derstandard.at/1280984142525/Monopol-fuehrt-Opel-Kampagne-auf-Geolocation-Dienst-foursquare-durch">durchgeführt hat</a>, werden möglich. Bars in den USA versprechen Foursquare-Usern, die in einem Monat am Häufigsten &#8220;eingecheckt&#8221; haben, <a href="http://techcrunch.com/2009/08/20/free-beer-foursquare-starts-alerting-users-of-nearby-mayor-deals/">Freibier</a>. Gap gibt Kunden für Check-ins <a href="http://mashable.com/2010/08/14/foursquare-gap/">25% Rabatt</a>.</p>
<p>Bei all diesen Diensten, die es bereits gibt und in Zukunft immer häufiger geben wird, sollte man nie vergessen: die eigene Position ist eine sensible Information &#8211; die man nur mit Bedacht verwenden sollte. Vor allem dann, wenn sie für jedermann sichtbar im Netz zu finden ist und auf geschlossenen Plattformen wie Facebook auf ewig gespeichert sein wird.</p>
<p>Zu empfehlen sind noch drei Podcasts von Vorträgen auf der <a href="http://sxsw.com/">SXSW 2010</a>:</p>
<ul>
<li><a href="http://sxsw.com/node/5016">LBS 101: Geolocation On The &#8220;Horizon&#8221;</a></li>
<li><a href="http://sxsw.com/node/5146">Location-Based Marketing and Advertising: Targeting the Mobile Consumer</a></li>
<li><a href="http://sxsw.com/node/5147">Mapping and Geolocation: Turnkey Approaches You Need to Know</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/location-based-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freie Lizenzen, freie Inhalte und freie Software</title>
		<link>http://raphael.kallensee.name/journal/freie-lizenzen-freie-inhalte-und-freie-software/</link>
		<comments>http://raphael.kallensee.name/journal/freie-lizenzen-freie-inhalte-und-freie-software/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 21:52:27 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[creative commons]]></category>
		<category><![CDATA[libre]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=284</guid>
		<description><![CDATA[Besonders in der IT-Branche wird häufig von &#8220;Open Source&#8221; gesprochen. Aber geht es wirklich nur um offen gelegten Quelltext oder darum, dass freie Software kostenlos ist? Gibt es etwas Vergleichbares auch für beliebige andere Inhalte? Dies soll ein kurzer Überblick über dieses Thema sein. Es geht in diesem Zusammenhang vor allem um freie Lizenzen &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Besonders in der IT-Branche wird häufig von &#8220;<a href="http://de.wikipedia.org/wiki/Open_Source">Open Source</a>&#8221; gesprochen. Aber geht es wirklich nur um offen gelegten Quelltext oder darum, dass freie Software kostenlos ist? Gibt es etwas Vergleichbares auch für beliebige andere Inhalte? Dies soll ein kurzer Überblick über dieses Thema sein.</p>
<p>Es geht in diesem Zusammenhang vor allem um <a href="http://de.wikipedia.org/wiki/Freie_Lizenz">freie Lizenzen</a> &#8211; Lizenzen, mit denen der Urheber jedem freistellt, die Inhalte zu jedem beliebigen Zweck zu nutzen, Kopien davon weiterzugeben (also zu teilen) und die Inhalte beliebig zu verändern. Es geht also insbesondere um die Freiheit der Nutzer sowie gegen die Einschränkung dieser Freiheit, beispielsweise durch <a href="http://de.wikipedia.org/wiki/Digitale_Rechteverwaltung#DRM_gegen.C3.BCber_freier_Software">Digitales Rechtemanagement</a> (DRM), das dem Benutzer die Kontrolle über Daten und Software auf seinem eigenen Computer nimmt. Endbenutzer-Lizenzverträge &#8211; wie beispielsweise die von Microsoft Windows oder Apple MacOS &#8211; sind meist darauf ausgelegt, dem Nutzer <a href="http://www.guardian.co.uk/commentisfree/libertycentral/2010/aug/16/get-more-people-using-free-software">die Freiheiten zu entziehen</a>.</p>
<p>Der Ursprung liegt in der <a href="http://de.wikipedia.org/wiki/Freie_Software">Freien Software</a> &#8211; eine Bewegung, die sich für quelloffene Software unter freien Lizenzen einsetzt. In diesem Zusammenhang ist vor allem die <a href="http://www.fsf.org/about/">Free Software Foundation</a> zu nennen, die freie Software fördert und für die Einhaltung freier Lizenzen streitet. Eine der bekanntesten Lizenzen für freie Software ist die <a href="http://de.wikipedia.org/wiki/GPL">GPL</a>. Sie gewährt den Benutzern die genannten Freiheiten und beinhaltet darüber hinaus das <a href="http://de.wikipedia.org/wiki/Copyleft">Copyleft</a> &#8211; das sicherstellt, dass Software unter dieser Lizenz weitergegeben sowie Veränderungen an der Software unter derselben Lizenz veröffentlicht werden müssen, die Software also frei bleibt. Eine Weiterentwicklung der GPL, die <a href="http://de.wikipedia.org/wiki/AGPL">AGPL</a>, dehnt die Wirkung der GPL auch auf Netzwerkdienste aus, die von der GPL nicht erfasst werden. Nutzern eines Content-Management-Systems, das unter der AGPL steht, muss also beispielsweise der (ggf. veränderte) Quellcode der Anwendung zur Verfügung gestellt werden.</p>
<p>Aber freie Lizenzen gibt es nicht nur für Software. 2001 entwickelte <a href="http://de.wikipedia.org/wiki/Lawrence_Lessig">Lawrence Lessig</a> &#8220;<a href="http://de.wikipedia.org/wiki/Creative_Commons">Creative Commons</a>&#8221; &#8211; ein Lizenzmodell, das sich vom klassischen Urheberrecht abgrenzt und auf Offenheit setzt. Jeder kann diese Lizenzen frei für seine Werke nutzen &#8211; und zwar für alle Werke, die durch das Urheberrecht geschützt sind, also unter anderem Musik, Texte, Fotos und Forschungsergebnisse. Creative Commons besteht aus vier Bausteinen, die in verschiedenen Formen miteinander kombiniert werden können: </p>
<ul>
<li><strong>BY</strong> &#8211; Namensnennung des Autors erforderlich</li>
<li><strong>NC</strong> &#8211; nicht-kommerzielle Nutzung</li>
<li><strong>ND</strong> &#8211; keine Änderungen erlaubt</li>
<li><strong>SA</strong> &#8211; Weitergabe nach Veränderung nur mit gleicher Lizenz (<a href="http://de.wikipedia.org/wiki/Copyleft">Copyleft</a>)</li>
</ul>
<p>Die Lizenz CC-BY-SA, unter der auch die Inhalte dieses Blogs stehen, erlaubt es beispielsweise jedem, die Inhalte frei zu nutzen &#8211; mit der Bedingung der Namensnennung (z.B. Verlinkung zurück auf diesen Beitrag) sowie der Verpflichtung, die davon abgeleiteten Werke auch unter eine CC-BY-SA-Lizenz zu stellen.</p>
<p>Weiterhin gibt es einige Abwandlungen wie Sampling-Lizenzen. Eine weitere Form &#8211; wenn auch u.a. in Deutschland rechtlich nicht möglich &#8211; ist <a href="http://de.wikipedia.org/wiki/Public_Domain#Public_Domain">Public Domain</a>, ein Totalverzicht auf alle Rechte am eigenen Werk.</p>
<p>CC-Lizenzen sind mittlerweile an vielen Stellen &#8211; besonders im Netz &#8211; zu finden. <a href="http://www.jamendo.com/de/">Jamendo</a> vertreibt CC-Musik, <a href="http://www.flickr.com">Flickr</a> unterstützt die Verwendung von CC-Lizenzen für Bilder und seit 2009 stehen alle Inhalte der Wikipedia sowie sämtlicher Wikimedia-Inhalte <a href="http://creativecommons.org/weblog/entry/15411">unter der CC-BY-SA-Lizenz</a>.</p>
<p>Ein bekannter Aktivist, der sich für eine Liberalisierung des Urheberrechts einsetzt, ist der Science-Fiction-Author und Blogger <a href="http://de.wikipedia.org/wiki/Cory_Doctorow">Cory Doctorow</a>, bekannt unter anderem als Autor bei <a href="http://boingboing.net/">Boing Boing</a>. Er stellt alle seine Bücher und Werke unter einer Creative Commons-Lizenz ins Netz &#8211; was ihm sogar <a href="http://creativecommons.org/weblog/entry/7774">deutlich höhere Verkaufszahlen</a> seiner gedruckten Bücher beschert haben soll.</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/freie-lizenzen-freie-inhalte-und-freie-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FrOSCon-Programm-App für WebOS</title>
		<link>http://raphael.kallensee.name/journal/froscon-programm-app-fur-webos/</link>
		<comments>http://raphael.kallensee.name/journal/froscon-programm-app-fur-webos/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 21:41:41 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[WebDevelopment]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[web os]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=269</guid>
		<description><![CDATA[Wer am kommenden Wochenende zur FrOSCon nach St. Augustin fährt, kann die Programmpunkte, die er besuchen möchte, bequem auf seinem Palm WebOS-Gerät planen. Ich habe meine ursprünglich für die FOSDEM geschriebene WebOS-Anwendung erweitert und um eine Favoriten-Funktion ergänzt. Die Anwendung habe ich zur Prüfung an Palm übermittelt &#8211; sie wird hoffentlich noch rechtzeitig bis zum [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2010/08/froscon_de_20100814-01.png"><img src="http://raphael.kallensee.name/journal/wp-content/uploads/2010/08/froscon_de_20100814-01-200x300.png" alt="" title="froscon_de_20100814-01" width="200" height="300" class="alignleft size-medium wp-image-271" /></a>Wer am kommenden Wochenende zur <a href="http://froscon.org/">FrOSCon</a> nach St. Augustin fährt, kann die Programmpunkte, die er besuchen möchte, bequem auf seinem Palm WebOS-Gerät planen.</p>
<p>Ich habe meine ursprünglich für die FOSDEM geschriebene <a href="http://raphael.kallensee.name/journal/fosdem-2010-schedule-application-for-webos/">WebOS-Anwendung</a> erweitert und um eine Favoriten-Funktion ergänzt.</p>
<p>Die Anwendung habe ich zur Prüfung an Palm übermittelt &#8211; sie wird hoffentlich noch rechtzeitig bis zum Wochenende veröffentlicht. Wer sie bereits testen möchte, findet die Anwendung im <a href="http://developer.palm.com/appredirect/?packageid=net.webpresso.froscon2010">Palm Beta feed</a> &#8211; einfach diesen Link über das WebOS-Smartphone öffnen, dann kann die Anwendung einfach installiert werden.</p>
<p>Die Anwendung ist freie Software und steht unter der <a href="http://www.gnu.org/licenses/gpl.html">GPLv3</a>, der Quelltext ist <a href="http://forge.webpresso.net/projects/fosdem-webos">hier verfügbar</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/froscon-programm-app-fur-webos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server Name Indication (SNI) mit Ubuntu 10.04 (&#8220;Lucid Lynx&#8221;)</title>
		<link>http://raphael.kallensee.name/journal/server-name-indication-sni-mit-ubuntu-10-04-lucid-lynx/</link>
		<comments>http://raphael.kallensee.name/journal/server-name-indication-sni-mit-ubuntu-10-04-lucid-lynx/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 22:47:04 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=257</guid>
		<description><![CDATA[Bei &#8220;Name-based virtual hosts&#8221; in Verbindung mit SSL gibt es ein Problem: &#8220;by design&#8221; war es nicht möglich, mehrere virtuelle SSL-Hosts mit unterschiedlichen Domains und Zertifikaten parallel auf einer IP-Adresse und demselben Port zu betreiben. Problem ist, dass zuerst zwischen Client und Server die verschlüsselte Verbindung aufgebaut wird (bei der das Zertifikat bereits benötigt wird). [...]]]></description>
			<content:encoded><![CDATA[<p>Bei &#8220;Name-based virtual hosts&#8221; in Verbindung mit SSL gibt es ein Problem: &#8220;by design&#8221; war es nicht möglich, mehrere virtuelle SSL-Hosts mit unterschiedlichen Domains und Zertifikaten parallel auf einer IP-Adresse und demselben Port zu betreiben. Problem ist, dass zuerst zwischen Client und Server die verschlüsselte Verbindung aufgebaut wird (bei der das Zertifikat bereits benötigt wird). Erst anschließend werden die HTTP-Header über die verschlüsselte Verbindung gesendet, in denen dann auch der Hostname steht, der jetzt möglicherweise aber gar nicht mehr zum Zertifikat passt. Einzige Lösung war bisher, pro SSL-IP eine eigene IP-Adresse (bzw. notfalls einen anderen Port) zu verwenden.</p>
<p>Abhilfe gibt es theoretisch bereits seit mehreren Jahren: <a href="http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI">Server Name Indication (SNI)</a> ist eine Erweiterung des SSL-Protokolls, bei der einfach bereits beim Verbindungsaufbau vor dem SSL-Handshake der gewünschte Hostname mitgesendet wird.</p>
<p>Serverseitig benötigt diese Erweiterung insbesondere OpenSSL ab Version 0.9.8f sowie Apache ab 2.2.12 &#8211; außerdem müssen beim Kompilieren diverse Flags gesetzt sein. Seit Ubuntu 9.10 &#8220;Karmic Koala&#8221; sind sämtliche Voraussetzungen erfüllt, ich habe SNI nun erstmalig problemlos mit 10.04 &#8220;Lucid Lynx&#8221; im Einsatz. SNI funktioniert mit Apache und OpenSSL nun ohne Neu-Kompilieren &#8220;out of the box&#8221;.</p>
<p>Die Vorgehensweise ist im Prinzip ganz einfach: nach einem</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">NameVirtualHost</span> *:<span style="color: #ff0000;">443</span></pre></div></div>

<p>können in den Apache-Konfigurationsdateien mehrere virtuelle SSL-Hosts definiert werden, die jeweils eigene SSL-Zertifikate besitzen. Weitere Infos sind im <a href="http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI#Examples">Apache-Wiki</a> sowie <a href="http://langui.sh/2009/11/03/ssl-vhosting-on-the-same-ip-aka-sni/">hier</a> zu finden.</p>
<p>Eine weitere Option erlaubt das Erzwingen von SNI: übermittelt ein Client nicht die SNI-Header, kann er den jeweiligen virtuellen SSL-Host nicht erreichen. Diese Option ist standardmäßig auf &#8220;off&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">SSLStrictSNIVHostCheck <span style="color: #0000ff;">on</span></pre></div></div>

<p>Der Haken: neben dem Server muss natürlich auch der Client SNI unterstützen. Internet Explorer unter Windows XP unterstützen SNI generell nicht (wobei es <a href="http://daniel-lange.com/archives/2-Multiple-Apache-VHosts-on-the-same-IP-and-port.html">Berichte</a> gibt, dass mit XP SP3 die Unterstützung vorhanden ist), Konqueror beherrscht SNI ebenfalls nicht. Ein Überblick über die Browser-Unterstützung findet sich <a href="http://www.alexanderkiel.net/2008/04/22/status-of-tls-sni/">hier</a>. Ob ein Browser SNI unterstützt, kann man bei <a href="https://dave.sni.velox.ch/">sni.velox.ch</a> testen.</p>
<p>Zumindest in einigen Bereichen kann man SNI trotz der teilweise fehlenden Client-Kompatibilität bereits einsetzen &#8211; die client-seitige Unterstützung wird sich in Zukunft weiterhin verbessern.</p>
<p>Ein Artikel zum Thema ist in der c&#8217;t 23/09 erschienen und ebenfalls bei <a href="http://sni.velox.ch/ct_2309_Apache_TLS_SNI.pdf">sni.velox.ch</a> zu finden.</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/server-name-indication-sni-mit-ubuntu-10-04-lucid-lynx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installation von Redmine und Git unter Ubuntu</title>
		<link>http://raphael.kallensee.name/journal/installation-von-redmine-und-git-unter-ubuntu/</link>
		<comments>http://raphael.kallensee.name/journal/installation-von-redmine-und-git-unter-ubuntu/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 20:55:52 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[WebDevelopment]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=241</guid>
		<description><![CDATA[Auf der Suche nach einer Alternative zur Software-Projektverwaltungssoftware Trac landete ich bei Redmine, einer in Ruby bzw. mit Hilfe von Rails geschriebenen Software. Die Features lassen sich sehen &#8211; vor allem die Multiprojekt-Unterstützung, Kalender und Gantt-Diagramm, Zeiterfassung und gute Unterstützung für Git sind im Vergleich zur Trac herausragend. Wie sich während der Installation herausstellte, ist [...]]]></description>
			<content:encoded><![CDATA[<p>Auf der Suche nach einer Alternative zur Software-Projektverwaltungssoftware <a href="http://trac.edgewall.org/">Trac</a> landete ich bei <a href="http://www.redmine.org/">Redmine</a>, einer in Ruby bzw. mit Hilfe von Rails geschriebenen Software. Die <a href="http://www.redmine.org/wiki/redmine/Features">Features</a> lassen sich sehen &#8211; vor allem die Multiprojekt-Unterstützung, Kalender und Gantt-Diagramm, Zeiterfassung und gute Unterstützung für <a href="http://git-scm.com/">Git</a> sind im Vergleich zur Trac herausragend. Wie sich während der Installation herausstellte, ist auch das Authentifizierungs-Feature für SVN und Git via WebDAV absolut praktisch &#8211; über die Rechte der Projektteilnehmer in Redmine wird automatisch auch der Lese- und Schreibzugriff im Versionskontrollsystem gesteuert, die Benutzer müssen also nur an einer Stelle gepflegt werden.</p>
<p>Für alle, die Redmine installieren möchten, hier ein paar meiner Erfahrungen. Die Installation erfolgte auf einem System mit Ubuntu 9.10 Server, es wird ein Apache-HTTP-Server und MySQL vorausgesetzt. Es gibt viele Möglichkeiten, eine Ruby/Rails-Anwendung zu installieren &#8211; ich habe mich für die Variante mit Apache und <a href="http://www.modrails.com">Passenger</a> (mod_rails) entschieden. </p>
<p>Damit Ruby/Rails-Anwendungen via Apache ausgeführt werden können, wird Passenger (&#8220;mod_rails&#8221;) installiert. Passenger ist auch in den Paketquellen von Ubuntu zu finden<del datetime="2010-08-13T21:22:37+00:00">, jedoch will apt für die Installation den bei mir installierten apache2-mpm-prefork sowie php5 deinstallieren</del>.</p>
<p><strong>Update:</strong> Da seit Ubuntu 10.04 das in den Paketquellen enthaltene Passenger-Modul auch mit dem apache2-mpm-prefork kompatibel ist (der für PHP5 notwendig ist), kann das Modul nun auch direkt über die Paketquellen installiert werden &#8211; was die Installation erheblich verkürzt. Siehe den entsprechenden Abschnitt unten.</p>
<h3>Installation von Passenger und weiteren Dependencies unter Ubuntu 9.10</h3>
<p>Zuerst werden die für Redmine benötigten Pakete installiert.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ruby rails rubygems ruby1.8-dev libgemplugin-ruby libgemplugin-ruby1.8 libruby-extras libruby1.8-extras rubygems1.8 rake apache2-threaded-dev libapache-dbi-perl libapache2-mod-perl2 libdigest-sha1-perl libopenssl-ruby build-essential</pre></div></div>

<p><em>Hinweis: bei mir wurde die über die Paketverwaltung installierte Version von Rails später nicht erkannt &#8211; und generell sollte man Rails möglichst nur auf eine Art und Weise installieren, entweder via Paketverwaltung oder gem. Deshalb sollte &#8220;rails&#8221; eventuell lieber gleich weggelassen werden. Installation via gem siehe unten.</em></p>
<p>Dann wird ein virtueller Apache-Host angelegt, dazu wird z.B. das Verzeichnis /var/www/redmine.example.lit/redmine angelegt.</p>
<p>Unter Ubuntu 9.10 ist das in den Paketquellen enthaltene Passenger-Apache-Modul nicht mit dem apache2-mpm-prefork kompatibel &#8211; der wiederum ist für PHP5 erforderlich. Deshalb habe ich mich für die Installation via <a href="http://de.wikipedia.org/wiki/RubyGems">gem</a> entschieden:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> passenger</pre></div></div>

<p>Nach der Installation muss das Apache-Modul kompiliert werden, die benötigten Pakete sollten alle bereits installiert sein. Um das Modul zu erstellen, wird folgendes ausgeführt:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>passenger-install-apache2-module</pre></div></div>

<p>Nun wird man durch den Kompiliervorgang des Moduls geführt, eventuell fehlende Abhängigkeiten werden beschrieben und notwendige Schritte erläutert. Danach ist das apache2-Modul kompiliert und muss noch aktiviert werden. Dazu wird die Datei /etc/apache2/mods-available/passenger.load mit folgendem Inhalt angelegt:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">LoadModule</span> passenger_module /var/lib/gems/<span style="color: #ff0000;">1.8</span>/gems/passenger-2.2.9/ext/apache2/mod_passenger.so</pre></div></div>

<p>Nun wird noch die Modul-Konfigurationsdatei (/etc/apache2/mods-available/passenger.conf) mit folgendem Inhalt angelegt:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">PassengerRoot /var/lib/gems/<span style="color: #ff0000;">1.8</span>/gems/passenger-2.2.9
PassengerRuby /usr/bin/ruby1.8</pre></div></div>

<p><em>(Die Pfade können bei neueren Versionen oder anderen Distributionen abweichen.)</em></p>
<p>Nun muss das Modul noch aktiviert und Apache neu gestartet werden:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> a2enmod passenger
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></div></div>

<h3>Installation von Passenger ab Ubuntu 10.04</h3>
<p>Ab Ubuntu 10.04 können fast alle Abhängigkeiten (inkl. Passenger) direkt über die Paketverwaltung installiert werden:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ruby rails rubygems ruby1.8-dev libgemplugin-ruby libgemplugin-ruby1.8 libruby-extras libruby1.8-extras rubygems1.8 rake libapache-dbi-perl libapache2-mod-perl2 libdigest-sha1-perl libopenssl-ruby libapache2-mod-passenger</pre></div></div>

<p><em>Hinweis: bei mir wurde die über die Paketverwaltung installierte Version von Rails später nicht erkannt &#8211; und generell sollte man Rails möglichst nur auf eine Art und Weise installieren, entweder via Paketverwaltung oder gem. Deshalb sollte &#8220;rails&#8221; eventuell lieber gleich weggelassen werden. Installation via gem siehe unten.</em></p>
<h3>Installation von Redmine</h3>
<p>Jetzt kann Redmine heruntergeladen werden. Für einfache spätere Updates wird das Auschecken des stable-Branchs via SVN oder git empfohlen. Dann reicht später ein Update über das Versionskontrollsystem zur Aktualisierung. <em>Wem die Installation via Paketverwaltung lieber ist, kann Redmine seit Ubuntu 10.04 auch direkt aus den Paketquellen installieren, hat ggf. aber nicht die aktuellste Version. Dafür reicht ein &#8220;aptitude install redmine redmine-mysql&#8221; (für die Verwendung mit MySQL als Datenbank). Mehr im <a href="http://www.redmine.org/wiki/redmine/HowTo_Install_Redmine_in_Ubuntu#Ubuntu-104-using-Passenger">offiziellen How-To</a>.</em></p>
<p>Für die Installation via SVN wird der aktuelle stabile Zweig ausgecheckt:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">co</span> http:<span style="color: #000000; font-weight: bold;">//</span>redmine.rubyforge.org<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>branches<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.9</span>-stable<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine.example.lit<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>Nach dem Checkout sollte der Besitzer dieses Verzeichnisses und aller Unterordner/Dateien geändert werden. Entweder wird ein eigener Benutzer für Redmine angelegt oder es wird der Benutzer des Webservers (&#8220;www-data&#8221;) verwendet. Hintergrund: Passenger führt die Anwendung später mit diesem Benutzer aus! Deshalb sollte dies keinesfalls root sein.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> www-data:www-data <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine.example.lit<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>Ich habe mich für MySQL als Datenbank entschieden, es steht aber unter anderem auch SQLite zur Verfügung. Vorbereitend wird nun eine Datenbank (z.B. via phpMyAdmin) erstellt, ggf. mit eigenem DB-Benutzer:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">CREATE DATABASE <span style="color: #000000; font-weight: bold;">`</span>redmine<span style="color: #000000; font-weight: bold;">`</span> DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;</pre></div></div>

<p>Dann muss eine DB-Konfigurationsdatei aus der Beispieldatei erstellt und im Bereich &#8220;production&#8221; die richtigen DB-Verbindungsdaten angegeben werden:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine.example.lit<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>config<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> database.yml.example database.yml
<span style="color: #c20cb9; font-weight: bold;">nano</span> database.yml</pre></div></div>

<p>Anschließend wird der Mailversand konfiguriert:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine.example.lit<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>config<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> email.yml.example email.yml
<span style="color: #c20cb9; font-weight: bold;">nano</span> email.yml</pre></div></div>

<p>Dort muss bei Verwendung von sendmail nur folgendes eingetragen werden:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">production:
  delivery_method: <span style="color:#ff3333; font-weight:bold;">:sendmail</span></pre></div></div>

<p>Bei der verwendeten SVN-Version muss noch ein Session-secret erzeugt werden, dies ist wohl bei den &#8220;richtigen Releases&#8221; nicht notwendig:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rake generate_session_store</pre></div></div>

<p>Nun wird die Datenbankstruktur erzeugt und die Standard-Konfiguration in die Datenbank geschrieben. Dazu wird folgendes (im Wurzelverzeichnis der Installation) aufgerufen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine.example.lit<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> rake db:migrate <span style="color: #007800;">RAILS_ENV</span>=<span style="color: #ff0000;">&quot;production&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> rake redmine:load_default_data <span style="color: #007800;">RAILS_ENV</span>=<span style="color: #ff0000;">&quot;production&quot;</span></pre></div></div>

<p>Sollte die folgende folgende Fehlermeldung erscheinen:</p>
<blockquote><p>Missing the Rails 2.3.5 gem. Please `gem install -v=2.3.5 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.</p></blockquote>
<p>oder die folgende:</p>
<blockquote><p>The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql. rake aborted!</p></blockquote>
<p>muss Rails (wie oben erwähnt) oder der MySQL-Treiber für Rails noch wie beschrieben installiert werden. Außerdem muss ruby-openid installiert sein, damit das OpenID-Feature genutzt werden kann.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #660033;">-v</span>=2.3.5 rails
<span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> mysql
<span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> ruby-openid</pre></div></div>

<p>Nun kann der virtuelle Apache-Host nach folgendem Muster konfiguriert werden (z.B. /etc/apache2/sites-available/redmine.example.lit):</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">   &lt;<span style="color: #000000; font-weight:bold;">virtualhost</span> *:<span style="color: #ff0000;">80</span>&gt;
      <span style="color: #00007f;">ServerName</span> redmine.example.lit
      <span style="color: #00007f;">DocumentRoot</span> /var/www/redmine.example.lit/redmine/public
      &lt;<span style="color: #000000; font-weight:bold;">directory</span> /var/www/redmine.example.lit/redmine/public&gt;
         <span style="color: #00007f;">AllowOverride</span> <span style="color: #0000ff;">all</span>
         <span style="color: #00007f;">Options</span> -MultiViews
      &lt;/<span style="color: #000000; font-weight:bold;">directory</span>&gt;
   &lt;/<span style="color: #000000; font-weight:bold;">virtualhost</span>&gt;</pre></div></div>

<p>Nach dem Aktivieren des virtuellen Hosts und dem Neuladen der Apache-Konfiguration mittels</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> a2ensite redmine.example.lit
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 reload</pre></div></div>

<p>ist Redmine über die entsprechende (Sub-)Domain erreichbar. Nun kann Redmine über die Oberfläche konfiguriert werden. Die Administrator-Zugangsdaten sind admin/admin (und sollten gleich geändert werden).</p>
<h3>Einrichten eines öffentlich lesbaren GIT-Repositorys via HTTP/WebDAV mit Redmine als Zugriffskontrolle</h3>
<p>Nach dem Anlegen einiger Projekte habe ich für diese ein Git-Repository angelegt. Git wird der Einfachheit halber für die Nutzung via HTTP/WebDAV konfiguriert, auch wenn dies deutlich weniger performant als die anderen zur Verfügung stehenden Varianten ist. Ein weiterer Vorteil ist die Erreichbarkeit auch aus Umgebungen mit restriktiven Firewalls. Außerdem kann so die anfangs erwähnte Authentifizierung via Redmine genutzt werden.</p>
<p>Falls noch nicht vorhanden, muss git installiert werden.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> git-core</pre></div></div>

<p>Von einem installierten Apache2 mit mod_dav wird ausgegangen. Zuerst wird &#8211; am Besten außerhalb der DocumentRoot &#8211; ein Verzeichnis für das Repository angelegt. Danach wird ein git-Repository in diesem Ordner erstellt, das durch die Option &#8211;bare nicht mit einer Arbeitskopie in Verbindung steht. Anschließend wird der Benutzer und die Gruppe des Webservers als Eigentümer des Verzeichnisses gesetzt, bei Debian und Ubuntu ist dies &#8220;www-data&#8221;.</p>
<p>Wichtig ist, dass der Name des Repository-Ordners mit dem existierenden GIT-Projekt-Identifier übereinstimmt, damit Redmine später die Zuordnung gelingt.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine.example.lit<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #c20cb9; font-weight: bold;">git</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #c20cb9; font-weight: bold;">git</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> example-project
<span style="color: #7a0874; font-weight: bold;">cd</span> example-project
<span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #660033;">--bare</span> init
<span style="color: #7a0874; font-weight: bold;">cd</span> ..
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> www-data:www-data example-project</pre></div></div>

<p>Nun wird die Zugriffskontrolle via Redmine eingerichtet. Dazu wird erst einmal mod_perl, mod_dav und weitere Abhängigkeiten installiert und die erforderlichen Module aktiviert. Redmine stellt zur Authentifizierung ein Perl-Modul bereit.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> libapache-dbi-perl libapache2-mod-perl2 libdbd-mysql-perl libdigest-sha1-perl
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">sudo</span> a2enmod dav
<span style="color: #c20cb9; font-weight: bold;">sudo</span> a2enmod dav_fs
<span style="color: #c20cb9; font-weight: bold;">sudo</span> a2enmod <span style="color: #c20cb9; font-weight: bold;">perl</span></pre></div></div>

<p>Dann wird das Redmine-Perl-Modul an die richtige Stelle verlinkt:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine.example.lit<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>extra<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>Redmine.pm <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>perl5<span style="color: #000000; font-weight: bold;">/</span>Apache<span style="color: #000000; font-weight: bold;">/</span>Redmine.pm</pre></div></div>

<p>Nun muss ein virtueller Apache-Host für den Zugriff konfiguriert werden. Dazu wird z.B. ein neuer virtueller Apache-Host nach folgendem Muster konfiguriert (im unteren Teil den Namen sowie die Zugangsdaten für die Datenbank einsetzen). Das Verzeichnis, das als DocumentRoot angegeben ist, sollte existieren.</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">   &lt;<span style="color: #000000; font-weight:bold;">virtualhost</span> *:<span style="color: #ff0000;">80</span>&gt;
      <span style="color: #00007f;">ServerName</span> code.example.lit
      <span style="color: #00007f;">DocumentRoot</span> /var/www/redmine.example.lit/code
&nbsp;
      PerlLoadModule Apache::Redmine
&nbsp;
      <span style="color: #00007f;">Alias</span> /git /var/www/redmine.example.lit/git
&nbsp;
      &lt;<span style="color: #000000; font-weight:bold;">location</span> /git&gt;
          <span style="color: #00007f;">DAV</span> <span style="color: #0000ff;">on</span>
&nbsp;
          <span style="color: #00007f;">AuthType</span> Basic
          <span style="color: #00007f;">Require</span> valid-<span style="color: #00007f;">user</span>
          <span style="color: #00007f;">AuthName</span> <span style="color: #7f007f;">&quot;Git&quot;</span>
&nbsp;
          <span style="color: #00007f;">Options</span> +<span style="color: #0000ff;">Indexes</span> -ExecCGI -<span style="color: #0000ff;">Includes</span>
&nbsp;
          PerlAccessHandler Apache::Authn::Redmine::access_handler
          PerlAuthenHandler Apache::Authn::Redmine::authen_handler
&nbsp;
          RedmineDSN <span style="color: #7f007f;">&quot;DBI:mysql:database=redmine;host=localhost&quot;</span>
          RedmineDbUser <span style="color: #7f007f;">&quot;username&quot;</span>
          RedmineDbPass <span style="color: #7f007f;">&quot;password&quot;</span>
      &lt;/<span style="color: #000000; font-weight:bold;">location</span>&gt;
   &lt;/<span style="color: #000000; font-weight:bold;">virtualhost</span>&gt;</pre></div></div>

<p>Anschließend ist das Git-Repository des Projekts &#8220;example-project&#8221; &#8211; jedenfalls laut Beispielkonfiguration &#8211; unter code.example.lit/git/example-project erreichbar. Falls das Projekt in Redmine auf &#8220;öffentlich&#8221; geschaltet ist, kann jeder auf dieses Repository lesend zugreifen. Schreibzugriffe haben alle Redmine-Benutzer, die dem Projekt als Mitglied zugeordnet sind.</p>
<p>Damit der Repository-Browser von Redmine das Repository findet, kann es eventuell nötig sein, in der Projektkonfiguration für das Repository &#8220;Git&#8221; auszuwählen und den (lokalen!) Pfad anzugeben, z.B. /var/www/redmine.example.lit/git/example-project</p>
<p>Sollte beim Anzeigen des Repositories in Redmine ein Fehler auftreten, kann dies daran liegen, dass es noch keinen Commit gab.</p>
<p>Weiterführende Hinweise finden sich auf folgenden Seiten: </p>
<ul>
<li><a href="http://www.redmine.org/wiki/redmine/RedmineInstall">http://www.redmine.org/wiki/redmine/RedmineInstall</a></li>
<li><a href="http://www.modrails.com/documentation/Users%20guide.html">http://www.modrails.com/documentation/Users%20guide.html</a></li>
<li><a href="http://wiki.ousli.org/index.php/RedmineUbuntu">http://wiki.ousli.org/index.php/RedmineUbuntu</a></li>
<li><a href="http://www.redmine.org/wiki/redmine/HowTo_Install_Redmine_in_Ubuntu">http://www.redmine.org/wiki/redmine/HowTo_Install_Redmine_ in_Ubuntu</a></li>
<li><a href="https://help.ubuntu.com/community/RubyOnRails">https://help.ubuntu.com/community/RubyOnRails</a></li>
<li><a href="http://www.railsgarden.com/2008/04/12/configurating-passenger-mod_rails-on-slicehost-with-ubuntu-710/">http://www.railsgarden.com/2008/04/12/configurating-passenger-mod_rails-on-slicehost-with-ubuntu-710/</a></li>
<li><a href="http://library.linode.com/development/project-management/redmine/ubuntu-9.10.txt">http://library.linode.com/development/project-management/redmine/ubuntu-9.10.txt</a></li>
<li><a href="http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt">http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt</a></li>
<li><a href="http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#setting-up-a-public-repository">http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#setting-up-a-public-repository</a></li>
<li><a href="http://www.redmine.org/wiki/1/Repositories_access_control_with_apache_mod_dav_svn_and_mod_perl">http://www.redmine.org/wiki/1/Repositories_access_control_ with_apache_mod_dav_svn_and_mod_perl</a></li>
<li><a href="http://www.redmine.org/wiki/redmine/RedmineRepositories">http://www.redmine.org/wiki/redmine/RedmineRepositories</a></li>
<li><a href="http://www.simonecarletti.com/blog/2009/07/configuring-git-repository-with-redmine/">http://www.simonecarletti.com/blog/2009/07/configuring-git-repository-with-redmine/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/installation-von-redmine-und-git-unter-ubuntu/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>XMPP und OneSocialWeb &#8211; Ausgabe 26 des OpenWebPodcasts</title>
		<link>http://raphael.kallensee.name/journal/xmpp-und-onesocialweb-ausgabe-26-des-openwebpodcasts/</link>
		<comments>http://raphael.kallensee.name/journal/xmpp-und-onesocialweb-ausgabe-26-des-openwebpodcasts/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 00:03:09 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[WebDevelopment]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[social web]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=236</guid>
		<description><![CDATA[Eine neue Episode des OpenWebPodcasts ist online: in dieser Folge geht es um XMPP und OneSocialWeb, ein Forschungsprojekt von Vodafone, das ein freies, dezentrales Social Network auf Basis von XMPP und anderen Web-Standards entwerfen will. Zu Gast: ich! Da dies mein erster Podcast ist, bitte ich, eventuell auftretende Nervosität zu entschuldigen&#8230; Hier der Link zur [...]]]></description>
			<content:encoded><![CDATA[<p>Eine neue Episode des <a href="http://www.openwebpodcast.de/">OpenWebPodcasts</a> ist online: in dieser Folge geht es um <a href="http://de.wikipedia.org/wiki/Xmpp">XMPP</a> und <a href="http://onesocialweb.org/">OneSocialWeb</a>, ein Forschungsprojekt von Vodafone, das ein freies, dezentrales Social Network auf Basis von XMPP und anderen Web-Standards entwerfen will.</p>
<p>Zu Gast: <a href="http://raphael.kallensee.name">ich</a>! Da dies mein erster Podcast ist, bitte ich, eventuell auftretende Nervosität zu entschuldigen&#8230;</p>
<p>Hier der Link zur Episode:<br />
<a href="http://blog.openwebpodcast.de/308/episode-26-xmpp-und-onesocialweb/">Blog-Beitrag mit Zusammenfassung und Links</a></p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/xmpp-und-onesocialweb-ausgabe-26-des-openwebpodcasts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FOSDEM 2010 schedule application for WebOS</title>
		<link>http://raphael.kallensee.name/journal/fosdem-2010-schedule-application-for-webos/</link>
		<comments>http://raphael.kallensee.name/journal/fosdem-2010-schedule-application-for-webos/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 22:30:06 +0000</pubDate>
		<dc:creator>Raphael Kallensee</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[web os]]></category>

		<guid isPermaLink="false">http://raphael.kallensee.name/journal/?p=215</guid>
		<description><![CDATA[If you&#8217;re going to this years&#8217; FOSDEM (Free and Open source Software Developers&#8217; European Meeting) in Brussels, and own a Palm Pre or Palm Pixi, this application may help you keeping track of the schedule. It downloads the schedule from FOSDEM server, saves it to your device and shows a list of events. So you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2010/02/fosdem2010_2010-03-02_205755.png"><img src="http://raphael.kallensee.name/journal/wp-content/uploads/2010/02/fosdem2010_2010-03-02_205755-200x300.png" alt="" title="FOSDEM 2010 Schedule application for WebOS" width="200" height="300" class="alignleft size-medium wp-image-222" /></a>If you&#8217;re going to this years&#8217; FOSDEM (Free and Open source Software Developers&#8217; European Meeting) in Brussels, and own a Palm Pre or Palm Pixi, this application may help you keeping track of the schedule. It downloads the schedule from FOSDEM server, saves it to your device and shows a list of events. So you can use the schedule offline &#8211; this might save you data roaming fees.</p>
<p>This is my first WebOS application and it was created in very short time, anyhow I hope it&#8217;s a little bit useful.</p>
<p>A small feature list:</p>
<ul>
<li>
        <strong>Stores schedule.</strong> Use the &#8220;Refresh&#8221;-button in the left corner to download the latest schedule and automatically save it for offline use. This also happens if you hit &#8220;Yes&#8221; after first launch.</li>
<li>
        <strong>Event details.</strong> Tap on an event to view detailed information.
    </li>
<li>
        <strong>Quick search.</strong> Simply start typing to search in all titles, locations and attendees.
    </li>
<li>
        <strong>Hide expired events.</strong> Tap on the right button to hide all events which are already expired.
    </li>
<li>
        <strong>Campus map.</strong> Use the campus map for orientation. You can find it in the application menu in the schedule scene. It&#8217;s the one I found on the FOSDEM website.
    </li>
<li>
        <strong>Supports every orientation.</strong> Turn the device as you like to.
    </li>
</ul>
<p>This application is free software and licensed under the <a href="http://www.gnu.org/licenses/gpl.html">GPL</a> v3.</p>
<p><strong>Download:</strong> You can download this application via Palm web distribution. Simply tap the link from your WebOS phone, you can easily install the application on your device. You can also download it to your desktop pc as .ipk package file and install it via <a href="http://forums.precentral.net/canuck-software/228310-webos-quick-install-v3-01-a.html">WebOS Quick Install</a>. I also provide a .zip file which includes the source code and a few resources, so you can play around with the source code (although you also could unzip the .ipk file).</p>
<ul>
<li><a href="http://developer.palm.com/appredirect/?packageid=net.webpresso.fosdem2010">Install via Palm web distribution</a>, v0.1.2</li>
<li><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2010/02/net.webpresso.fosdem2010_0.1.2_all.ipk" class="piwik_download">Download .ipk package</a>, v0.1.2</li>
<li><a href="http://raphael.kallensee.name/journal/wp-content/uploads/2010/02/net.webpresso.fosdem2010_0.1.1-source.zip" class="piwik_download">Download source archive</a>, v0.1.1</li>
</ul>
<p><ins datetime="2010-08-28T01:24:06+00:00"><b>UPDATE:</b> You can find the source code and other versions of the application <a href="http://forge.webpresso.net/projects/fosdem-webos">here</a>.</ins></p>
<p>If you find bugs or need support, please write a comment (preferred) or an E-Mail, I&#8217;ll respond as soon as possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://raphael.kallensee.name/journal/fosdem-2010-schedule-application-for-webos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

