<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>Fabian Moser &#187; Server</title>
	<atom:link href="http://fabianmoser.at/kategorie/technik/server/feed/" rel="self" type="application/rss+xml" />
	<link>http://fabianmoser.at</link>
	<description>&#34;as simple as possible, but not simpler&#34;</description>
	<lastBuildDate>Thu, 26 Jan 2012 13:19:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/at/</creativeCommons:license>		<item>
		<title>Finally CalDAV access</title>
		<link>http://fabianmoser.at/blog/2011/11/19/finally-caldav-access/</link>
		<comments>http://fabianmoser.at/blog/2011/11/19/finally-caldav-access/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 18:38:21 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[CalDAV]]></category>
		<category><![CDATA[CardDAV]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[EGroupware]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[GroupDAV]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://fabianmoser.at/?p=1148</guid>
		<description><![CDATA[If EGroupware is run via FastCGI under Apache, the authentication only works if the configuration file /etc/apache2/mods-enabled/fcgid.conf contains the line FcgidPassHeader Authorization]]></description>
			<content:encoded><![CDATA[<p>If EGroupware is run via FastCGI under Apache, the authentication only works if the configuration file <code>/etc/apache2/mods-enabled/fcgid.conf</code> contains the line</p>
<pre>  FcgidPassHeader Authorization</pre>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2011/11/19/finally-caldav-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Synchronisation: &#8220;works for me&#8221;</title>
		<link>http://fabianmoser.at/blog/2011/07/06/synchronisation-works-for-me/</link>
		<comments>http://fabianmoser.at/blog/2011/07/06/synchronisation-works-for-me/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 11:00:59 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[EGroupware]]></category>
		<category><![CDATA[SyncML]]></category>

		<guid isPermaLink="false">http://fabianmoser.at/?p=1074</guid>
		<description><![CDATA[Motivation This article has multiple motivations. First, it is a follow-up to an article by Patrick Ohly (author of syncEvolution). As such it illustrates my own experience with his software, but also is meant as a way to show my &#8230; <a href="http://fabianmoser.at/blog/2011/07/06/synchronisation-works-for-me/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1>Motivation</h1>
<p>This article has multiple motivations. First, it is a follow-up to an <a href="http://syncevolution.org/blogs/pohly/2011/state-syncing-open-source" title="The state of syncing in open source" target="_blank">article by Patrick Ohly (author of syncEvolution)</a>. As such it illustrates my own experience with his software, but also is meant as a way to show my gratitude and give kudos to him and all contributors of <a href="http://syncevolution.org" target="_blank">syncEvolution</a>. Second, but this is somehow related to the aforementioned article, it should show that synchronisation [of PIM data] can work reliably and as such it opposes a <a href="http://www.happyassassin.net/2011/04/13/the-continuing-state-of-contact-calendar-synchronization-suck/" target="_blank">wide</a> <a href="http://luther.ceplovi.cz/blog/2011/04/synchronization-sucks/" target="_blank">spread</a> opinion.</p>
<h1>Scope</h1>
<p>What I&#8217;ll try to show is how I&#8217;m successfully synchronising my notebook, my workstation (both Fedora 15) and my Android phone using the SyncML protocol. </p>
<p><em>Disclaimer</em>: on the phone, I&#8217;m currently using a <a href="http://www.synthesis.ch/dl_client.php?bp=CPDA&#038;pv=ANDROID" target="_blank">non-free piece of software from Synthesis AG</a> for the only reason that the <a href="https://android-client.forge.funambol.org/" target="_blank">free Funambol client</a> doesn&#8217;t play well with my self-signed SSL certificate (yet!?).</p>
<p><span id="more-1074"></span></p>
<h1>Server aka &#8220;cloud&#8221;</h1>
<p>On the server-side, I&#8217;m using the <a href="http://www.egroupware.org/" target="_blank">eGroupware</a> software. That means PHP with MySQL backend and a few cron scripts, hence quiet a &#8220;default&#8221; set-up and easily joining my WordPress. For installation and updates I&#8217;m using <a href="http://download.opensuse.org/repositories/server:/eGroupWare/CentOS_5/" target="_blank">their CentOS 5 repository hosted at the openSUSE build service</a>.</p>
<p>eGroupware exposes a SyncML interface, but also supports GroupDAV, CalDAV and CardDAV for those with different tastes and/or clients.</p>
<h1>Desktops</h1>
<p>Although syncEvolution is not intended to be limited to the GNOME Evolution software, that is what I&#8217;m using and the inter-play between the two works out of the box. To also work with the server, syncEvolution needs some tuning. After installation of <code>syncevolution-gtk</code>, I created a stub configuration with</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ syncevolution <span style="color: #660033;">--configure</span> <span style="color: #660033;">--sync-property</span> <span style="color: #ff0000;">&quot;username=MYEGROUPWAREUSER&quot;</span> memotoo</pre></div></div>

<p>then renamed it to match my own service</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>.config<span style="color: #000000; font-weight: bold;">/</span>syncevolution
$ <span style="color: #c20cb9; font-weight: bold;">mv</span> default<span style="color: #000000; font-weight: bold;">/</span>peers<span style="color: #000000; font-weight: bold;">/</span>memotoo default<span style="color: #000000; font-weight: bold;">/</span>peers<span style="color: #000000; font-weight: bold;">/</span>fabianmoser</pre></div></div>

<p>finally, I change the default setting to match my server by applying a patch (below)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">patch</span> <span style="color: #660033;">-p1</span> <span style="color: #000000; font-weight: bold;">&lt;</span> ~<span style="color: #000000; font-weight: bold;">/</span>syncevolution.patch</pre></div></div>

<p>Here is the <code>syncevolution.patch</code> file (explanations below):</p>

<div class="wp_syntax"><div class="code"><pre class="diff" style="font-family:monospace;">diff -u -r old/config.ini new/config.ini
<span style="color: #888822;">--- old/config.ini	2011-07-06 09:45:01.952470598 +0200</span>
<span style="color: #888822;">+++ new/config.ini	2011-07-01 13:27:33.000000000 +0200</span>
<span style="color: #440088;">@@ -1,2 +1,2 @@</span>
 # the peer which is used by default in some frontends, like the sync-UI
<span style="color: #991111;">-# defaultPeer = </span>
<span style="color: #00b000;">+defaultPeer = fabianmoser</span>
diff -u -r old/default/peers/fabianmoser/config.ini new/default/peers/fabianmoser/config.ini
<span style="color: #888822;">--- old/default/peers/fabianmoser/config.ini	2011-07-06 09:48:16.758035192 +0200</span>
<span style="color: #888822;">+++ new/default/peers/fabianmoser/config.ini	2011-07-04 14:21:47.000000000 +0200</span>
<span style="color: #440088;">@@ -16,7 +16,7 @@</span>
 # In the future this might be used to contact the peer
 # via one of several transports; right now, only the first
 # one is tried.
<span style="color: #991111;">-syncURL = http://sync.memotoo.com/syncML</span>
<span style="color: #00b000;">+syncURL = https://fabianmoser.at/egroupware/rpc.php</span>
&nbsp;
 # user name used for authorization with the SyncML server
 username = MYEGROUPWAREUSER
<span style="color: #440088;">@@ -40,7 +40,7 @@</span>
&nbsp;
 # enables or disables the detailed <span style="">&#40;</span>and sometimes slow<span style="">&#41;</span> comparison
 # of database content before and after a sync session
<span style="color: #991111;">-# printChanges = 1</span>
<span style="color: #00b000;">+printChanges = 0</span>
&nbsp;
 # Controls automatic synchronization. Currently,
 # automatic synchronization is done by running
<span style="color: #440088;">@@ -57,7 +57,7 @@</span>
 # http - only via HTTP transport
 # obex-bt - only via Bluetooth transport
 # http,obex-bt - pick one of these
<span style="color: #991111;">-# autoSync = 0</span>
<span style="color: #00b000;">+autoSync = 1</span>
&nbsp;
 # This is the minimum number of seconds between two
 # synchronizations that has to pass before starting
<span style="color: #440088;">@@ -72,7 +72,7 @@</span>
 # synchronization when changes are detected <span style="">&#40;</span>not
 # implemented yet, therefore it basically disables
 # automatic synchronization<span style="">&#41;</span>.
<span style="color: #991111;">-# autoSyncInterval = 30M</span>
<span style="color: #00b000;">+autoSyncInterval = 60M</span>
&nbsp;
 # An automatic sync will not be started unless the peer
 # has been available for this duration, specified in seconds
<span style="color: #440088;">@@ -84,7 +84,7 @@</span>
 # to predict how long connectivity be available in the
 # future, because it should better be available long
 # enough to complete the synchronization.
<span style="color: #991111;">-# autoSyncDelay = 5M</span>
<span style="color: #00b000;">+autoSyncDelay = 5M</span>
&nbsp;
 # During a slow sync, the SyncML server must match all items
 # of the client with its own items and detect which ones it
<span style="color: #440088;">@@ -185,7 +185,7 @@</span>
 # An arbitrary name for the peer referenced by this config.
 # Might be used by a GUI. The command line tool always uses the
 # the configuration name.
<span style="color: #991111;">-# PeerName = </span>
<span style="color: #00b000;">+PeerName = fabianmoser</span>
&nbsp;
 # SyncML ID of our peer, empty if unknown; must be set only when
 # the peer is a SyncML client contacting us via HTTP.
<span style="color: #440088;">@@ -221,7 +221,7 @@</span>
 # 
 # SSL support when acting as HTTP server is implemented
 # by the HTTP server frontend, not with these properties.
<span style="color: #991111;">-# SSLServerCertificates = /etc/ssl/certs/ca-certificates.crt:/etc/pki/tls/certs/ca-bundle.crt:/usr/share/ssl/certs/ca-bundle.crt</span>
<span style="color: #00b000;">+SSLServerCertificates = /home/fabian/.local/share/ssl/certs/fabianmoser.at.crt</span>
&nbsp;
 # The client refuses to establish the connection unless
 # the server presents a valid certificate. Disabling this
<span style="color: #440088;">@@ -238,7 +238,7 @@</span>
&nbsp;
 # The URL of a web page with further information about the server.
 # Used only by the GUI.
<span style="color: #991111;">-WebURL = http://www.memotoo.com</span>
<span style="color: #00b000;">+WebURL = http://fabianmoser.at</span>
&nbsp;
 # The URI of an icon representing the server graphically.
 # Should be a 48x48 pixmap or a SVG <span style="">&#40;</span>preferred<span style="">&#41;</span>.
diff -u -r old/default/peers/fabianmoser/sources/addressbook/config.ini new/default/peers/fabianmoser/sources/addressbook/config.ini
<span style="color: #888822;">--- old/default/peers/fabianmoser/sources/addressbook/config.ini	2011-07-06 09:48:16.758035192 +0200</span>
<span style="color: #888822;">+++ new/default/peers/fabianmoser/sources/addressbook/config.ini	2011-07-01 13:27:33.000000000 +0200</span>
<span style="color: #440088;">@@ -141,8 +141,8 @@</span>
 #       xmlrpc:text/vcard:<span style="">3.0</span>
 #       xmlrpc:text/x-vcalendar:<span style="">1.0</span>
 #       xmlrpc:text/calendar:<span style="">2.0</span>
<span style="color: #991111;">-type = addressbook</span>
<span style="color: #00b000;">+type = addressbook:text/x-vcard</span>
&nbsp;
 # this is appended to the server's URL to identify the
 # server's database
<span style="color: #991111;">-uri = con</span>
<span style="color: #00b000;">+uri = ./contacts</span>
diff -u -r old/default/peers/fabianmoser/sources/calendar/config.ini new/default/peers/fabianmoser/sources/calendar/config.ini
<span style="color: #888822;">--- old/default/peers/fabianmoser/sources/calendar/config.ini	2011-07-06 09:48:16.758035192 +0200</span>
<span style="color: #888822;">+++ new/default/peers/fabianmoser/sources/calendar/config.ini	2011-07-01 13:27:33.000000000 +0200</span>
<span style="color: #440088;">@@ -141,8 +141,8 @@</span>
 #       xmlrpc:text/vcard:<span style="">3.0</span>
 #       xmlrpc:text/x-vcalendar:<span style="">1.0</span>
 #       xmlrpc:text/calendar:<span style="">2.0</span>
<span style="color: #991111;">-type = calendar</span>
<span style="color: #00b000;">+type = calendar:text/calendar</span>
&nbsp;
 # this is appended to the server's URL to identify the
 # server's database
<span style="color: #991111;">-uri = cal</span>
<span style="color: #00b000;">+uri = ./calendar</span>
diff -u -r old/default/peers/fabianmoser/sources/todo/config.ini new/default/peers/fabianmoser/sources/todo/config.ini
<span style="color: #888822;">--- old/default/peers/fabianmoser/sources/todo/config.ini	2011-07-06 09:48:16.759035180 +0200</span>
<span style="color: #888822;">+++ new/default/peers/fabianmoser/sources/todo/config.ini	2011-07-01 12:02:16.000000000 +0200</span>
<span style="color: #440088;">@@ -145,4 +145,4 @@</span>
&nbsp;
 # this is appended to the server's URL to identify the
 # server's database
<span style="color: #991111;">-uri = task</span>
<span style="color: #00b000;">+uri = ./tasks</span>
diff -u -r old/default/sources/addressbook/config.ini new/default/sources/addressbook/config.ini
<span style="color: #888822;">--- old/default/sources/addressbook/config.ini	2011-07-06 09:45:01.953470586 +0200</span>
<span style="color: #888822;">+++ new/default/sources/addressbook/config.ini	2011-07-01 13:27:33.000000000 +0200</span>
<span style="color: #440088;">@@ -123,7 +123,7 @@</span>
 #       xmlrpc:text/vcard:<span style="">3.0</span>
 #       xmlrpc:text/x-vcalendar:<span style="">1.0</span>
 #       xmlrpc:text/calendar:<span style="">2.0</span>
<span style="color: #991111;">-type = addressbook</span>
<span style="color: #00b000;">+type = addressbook:text/x-vcard</span>
&nbsp;
 # Picks one of backend data sources:
 # enter either the name or the full URL.
diff -u -r old/default/sources/calendar/config.ini new/default/sources/calendar/config.ini
<span style="color: #888822;">--- old/default/sources/calendar/config.ini	2011-07-06 09:45:01.953470586 +0200</span>
<span style="color: #888822;">+++ new/default/sources/calendar/config.ini	2011-07-01 13:27:33.000000000 +0200</span>
<span style="color: #440088;">@@ -123,7 +123,7 @@</span>
 #       xmlrpc:text/vcard:<span style="">3.0</span>
 #       xmlrpc:text/x-vcalendar:<span style="">1.0</span>
 #       xmlrpc:text/calendar:<span style="">2.0</span>
<span style="color: #991111;">-type = calendar</span>
<span style="color: #00b000;">+type = calendar:text/calendar</span>
&nbsp;
 # Picks one of backend data sources:
 # enter either the name or the full URL.</pre></div></div>

<p>What this does is setting the URL and configuring auto-sync for every 60 minutes. It tells syncEvolution that it should accept my SSL certificate. Finally, it changes the types and uris of the different SyncML sources, namely calendar, tasks and contacts, to match eGroupware.</p>
<h1>Phone</h1>
<p>The Synthesis client must again be pointed to the correct URL, i.e. the <code>rpc.php</code> file of the eGroupware installation. Finally, the options must be changed such that the client accepts the self-signed certificate. If necessary, you can configure to which Android storage your PIM data should be synchronised.</p>
<h1>Conclusion</h1>
<p>I hope I could give a credible example of how synchronisation in my own little private &#8220;cloud&#8221; works. If this helps someone to create a similar set-up, even better.</p>
<p>The only disadvantage I see at the moment is, that I have to rely on a non-free client on the phone. Maybe other SyncML clients will at some point be able to cope with self-signed certificates. Or maybe there will be free and reliable <a href="http://dmfs.org/caldav/" target="_blank">CalDAV</a> &#038; <a href="http://dmfs.org/carddav/" target="_blank">CardDAV</a> clients for Android?</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2011/07/06/synchronisation-works-for-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Multi-Network with Nginx</title>
		<link>http://fabianmoser.at/blog/2010/08/08/wordpress-multi-network-with-nginx/</link>
		<comments>http://fabianmoser.at/blog/2010/08/08/wordpress-multi-network-with-nginx/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 14:49:10 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/?p=730</guid>
		<description><![CDATA[Today I found out the hard way, how an nginx web-server has to be configured to properly work together with the WP Multi Network plugin. The problem was, that for some reason and on some machines, WordPress showed always only &#8230; <a href="http://fabianmoser.at/blog/2010/08/08/wordpress-multi-network-with-nginx/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today I found out the hard way, how an <a href="http://nginx.org/">nginx</a> web-server has to be configured to properly work together with the <a href="http://wordpress.org/extend/plugins/wp-multi-network/">WP Multi Network plugin</a>.</p>
<p>The problem was, that for some reason and on some machines, WordPress showed always only one blog (not the same on all machines) and ignored the domain entered into the browser. Now it is exactly the purpose of the multi-network plugin to resolve different domains to different blogs (hopefully in a reproducible manner).</p>
<p>It turned out, that the problem was in the nginx configuration that looked like that:</p>
<pre>server {
    server_name  _ .fabianmoser.at .nataschastanke.eu;
    #...
}</pre>
<p>thus catching both domain names registered for my server.</p>
<p>After some twiddling with the nginx log format to inspect where the http header got lost, I found the following solution:</p>
<pre>server {
    server_name  .fabianmoser.at;
    #...
}
server {
    server_name  .nataschastanke.eu;
    #...
}</pre>
<p>thus effectively duplicating the virtual server section and giving just one server name each time.</p>
<p>Now everything works fine as you can easily verify yourself.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2010/08/08/wordpress-multi-network-with-nginx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DKIM DNS Einstellungen im SERVER4YOU Powerpanel</title>
		<link>http://fabianmoser.at/blog/2010/06/03/dkim-unterstuetzung/</link>
		<comments>http://fabianmoser.at/blog/2010/06/03/dkim-unterstuetzung/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 21:12:39 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[E-Mail]]></category>
		<category><![CDATA[Exim]]></category>
		<category><![CDATA[Powerpanel]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/?p=653</guid>
		<description><![CDATA[Heute habe ich meinen Mailserver um ein neues Feature erweitert: die Unterstützung von DomainKeys Identified Mail, einem Verfahren, das helfen soll, Absender Adressen von E-Mails zu verifizieren. Es ist damit ein effektives Werkzeug im Kampf gegen Spam E-Mails Der versendende &#8230; <a href="http://fabianmoser.at/blog/2010/06/03/dkim-unterstuetzung/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute habe ich meinen Mailserver um ein neues Feature erweitert: die Unterstützung von <a href="http://dkim.org">DomainKeys Identified Mail</a>, einem Verfahren, das helfen soll, Absender Adressen von E-Mails zu verifizieren. Es ist damit ein effektives Werkzeug im Kampf gegen Spam E-Mails</p>
<p>Der versendende Server signiert alle Mails die er versendet vor der Übertragung. Spam Versender haben keinen Zugriff auf den privaten Schlüssel des  Servers in dessen Namen sie versenden und können daher keine gültige  Signatur bereitstellen. Der empfangende Server kann sich aus einem speziellen DNS Eintrag der Absender-Domain den zur im Absender angegebenen Domain gehörenden öffentlichen Schlüssel holen und damit die Signatur der empfangenen E-Mail überprüfen.</p>
<p>Bei der Einrichtung habe ich mich größtenteils an eine <a href="http://www.devco.net/archives/2010/05/14/dkim_with_centos_5_and_exim.php">Anleitung von R. I. Pienaar</a> gehalten. Nur bei den DNS Einträgen hatte ich vorübergehend Schwierigkeiten. Im Unterschied zu der Anleitung, habe ich keinen direkten Zugriff auf die Bind Konfigurationsdatei. Stattdessen muss ich die Administrationsoberfläche meines Hosting Providers <a href="http://www.server4you.de">SERVER4YOU</a> verwenden. Anstatt umständlich das Format der notwendigen Einträge in der Domainverwaltung zu beschreiben, ist hier ein Screenshot von meinen korrekten, funktionierenden Einstellungen:</p>
<div id="attachment_659" class="wp-caption alignnone" style="width: 501px"><a href="http://www.fabianmoser.at/files/2010/06/powerpanel-dns.png"><img class="size-full wp-image-659 colorbox-653" title="powerpanel-dns" src="http://www.fabianmoser.at/files/2010/06/powerpanel-dns.png" alt="" width="491" height="70" /></a><p class="wp-caption-text">DNS Einstellungen für DKIM</p></div>
<p>Man beachte, dass in der oberen Zeile kein <code>v=</code> Eintrag vorkommt und dass ich weder Anführungszeichen noch Backslashes verwende.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2010/06/03/dkim-unterstuetzung/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Virtuelle Übersiedlung</title>
		<link>http://fabianmoser.at/blog/2010/05/06/virtuelle-uebersiedlung/</link>
		<comments>http://fabianmoser.at/blog/2010/05/06/virtuelle-uebersiedlung/#comments</comments>
		<pubDate>Thu, 06 May 2010 19:26:45 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[Exim]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/?p=618</guid>
		<description><![CDATA[Die vergangene Woche hat ein paar virtuelle Neuerungen gebracht. Ich habe meinen privaten Server auf eine neue Hardware umgezogen. Tatsächlich geht es zwar genau genommen um virtualisierte Hardware, aber mit dem Umzug haben sich die diversen Ressourcenlimitierungen nach oben verschoben, &#8230; <a href="http://fabianmoser.at/blog/2010/05/06/virtuelle-uebersiedlung/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Die vergangene Woche hat ein paar virtuelle Neuerungen gebracht. Ich habe meinen privaten Server auf eine neue Hardware umgezogen. Tatsächlich geht es zwar genau genommen um virtualisierte Hardware, aber mit dem Umzug haben sich die diversen Ressourcenlimitierungen nach oben verschoben, sprich mehr Speicher und mehr Leistung.</p>
<h2>Redmine</h2>
<p>Der Grund für die doch etwas aufwendige Aktion war ein mehr oder weniger fehlgeschlagener Versuch, die das Projektmanagement-Tool <a href="http://www.redmine.org/">Redmine</a> als Ersatz für das bisher eingesetzte Trac auszuprobieren. Leider stieß mein alter Server dabei an seine Grenzen und verweigerte für kurze Zeit sogar die Annahme von E-Mails.</p>
<p>Weil ich einen Umstieg schon seit einem Jahr immer wieder überlegte, nahm ich die Situation zum Anlass um mit meinem Provider die Optionen zu besprechen. Mir wurde ein Upgrade angeboten, das sich heute leider als ungültig erwiesen hat. Letztendlich ist der einzige Unterschied eine Monatsmiete, weil ich beide Verträge nur mit einmonatiger Bindung abgeschlossen habe.</p>
<p>Den für Redmine notwendigen Ruby Stack habe ich aus den aktuellen Quellen selbst kompiliert, weil die Versionen in den CentOS Repositories für diese junge Software stark veraltet sind. Ruby stellt mit den gut unterstützen <a href="http://rubygems.org/">Gems</a> eine gute eigene Paketverwaltung bereit.</p>
<h2>CentOS</h2>
<p>Weil ich auf meinem Laptop seit einiger Zeit auf die Linux Distribution Fedora setze, habe ich meine Distributionswahl am Server überdacht und statt Debian auf das Fedora-ähnliche aber auf den Servereinsatz aufgelegte <a href="https://www.centos.org/">CentOS</a> gesetzt. Vom Geist der Revolution beflügelt, habe ich mich auch gleich versuchsweise von Apache als Webserver verabschiedet und auf <a href="http://nginx.org/en/">Nginx</a> umgestellt. Die gerade angezeigte WordPress wird entsprechend von <a href="http://php-fpm.org/">PHP-FPM</a> ausgeführt.</p>
<p>Für die Mailserver Infrastruktur verlasse ich mich weiterhin auf das bewährte Gespann von Dovecot und Exim. Weil mein Server meine zentrale Sammelstelle für alle E-Mail Konten ist (per Fetchmail), wollte ich hier nichts riskieren und sah auch wirklich keinen einzigen Grund für eine Veränderung.</p>
<h2>VCS</h2>
<p>Meine alten Subversion Repositories habe ich natürlich unverändert kopiert. Daneben habe ich mit Hilfe von Gitosis eine für meine Zwecke perfekte Git Verwahltung eingerichtet, die (wie svn+ssh) unter einem einzelnen Systemaccount und einer Sammlung von autorisierten öffentlichen Schlüsseln beliebig viele Git Repositories mit getrennt einstellbaren Zugriffsrechten zur Verfügung stellt. Nebenbei war die Unterstützung von Git und Subversion einer der Mitgründe für den Umstieg von Trac auf Redmine.</p>
<h2>Fertig</h2>
<p>Also genug Fachjargon. Fazit: Ich habe einige glückliche Stunden mit meiner virtuellen &#8220;Immobilie&#8221; verbracht. Nur damit die Änderungen nach außen hin nicht völlig unbemerkt bleiben habe ich auch gleich das WordPress Motiv geändert.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2010/05/06/virtuelle-uebersiedlung/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Einrichtung eines sicheren Fileservers</title>
		<link>http://fabianmoser.at/blog/2010/02/28/einrichtung-eines-sicheren-fileservers/</link>
		<comments>http://fabianmoser.at/blog/2010/02/28/einrichtung-eines-sicheren-fileservers/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 11:15:13 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://fabianmoser.at/?p=584</guid>
		<description><![CDATA[Theorie Bei diesem Titel versteht es sich vielleicht von selbst, dass FTP hier kein Thema ist. Es ist vermutlich zu einem nicht unwesentlichen Teil persönliche Präferenz, aber wenn ich das Wort sicher im Zusammenhang mit Servern verwende, verlasse ich mich &#8230; <a href="http://fabianmoser.at/blog/2010/02/28/einrichtung-eines-sicheren-fileservers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Theorie</h2>
<p>Bei diesem Titel versteht es sich vielleicht von selbst, dass FTP hier kein Thema ist. Es ist vermutlich zu einem nicht unwesentlichen Teil persönliche Präferenz, aber wenn ich das Wort sicher im Zusammenhang mit Servern verwende, verlasse ich mich immer gern auf SSH. Im Fall eines Fileservers bietet sich also das <a href="http://de.wikipedia.org/wiki/SSH_File_Transfer_Protocol">SFTP Protokoll</a> an. Generell wirft die Verwendung von SSH und, im Speziellen, die Weitergabe von Zugangsdaten für einen SSH Server (zumindest) zwei brennende Fragen auf.</p>
<p>Zum einen muss verhindert werden, dass der eingeloggte Benutzer beliebigen Code ausführen kann. Da er zumindest für das Upload Verzeichnis Schreibrechte hat, kann ein eventueller Upload von Exploits nicht prinzipiell verhindert werden, aber wenn man dem Benutzer erst gar keine Shell gibt, kann er die Ausführung des Schadcodes nicht veranlassen. Diese Strategie verfolgt die <a href="http://www.sublimation.org/scponly/wiki/index.php/Main_Page">scponly</a> Software.</p>
<p>Zum anderen ist man als Administator auch interessiert, dem eingeloggten Benutzer möglichst wenig Information über das System preiszugeben. Das erreicht man mit einer <code>chroot</code> Umgebung. Nun wird sogar von scponly ein Skript angeboten, um eine solche Umgebung zu erstellen. Dessen Verwendung wird auf der <a href="http://wiki.ubuntuusers.de/scponly">ubuntuusers Wiki</a> beschrieben. Leider ist dafür das Setzen des SUID Bits notwendig, was meiner Meinung nach keine saubere Lösung ist. Daher werde ich hier beschreiben, wie man eine äquivalente Umgebung mit dem <a href="http://www.floc.net/makejail/"><code>makejail</code></a> Skript erstellt. Diese Vorgehensweise orientiert sich stark an der <a href="http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.de.html">Anleitung zum Absichern von Debian</a>, welche in ihrer Gesamtheit auf jeden Fall eine Lektüre wert ist, wenn man einen Debian Server administrieren muss.</p>
<h2>Praxis</h2>
<p>Diese Anleitung bezieht sich auf Debian Lenny. Zuerst werden die erforderlichen Pakete installiert:</p>
<pre># aptitude install libpam-chroot makejail scponly</pre>
<p>Nun wird das eben installierte PAM Modul <code>libpam-chroot</code> für SSH Logins aktiviert. Dazu werden die folgenden Zeilen zu der Datei <code>/etc/pam.d/sshd</code> hinzugefügt:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">session    required     pam_chroot.so</pre></div></div>

<p>Zunächst muss der entsprechende Benutzer erstellt werden, mit dem man sich später am Server anmelden kann.</p>
<pre># adduser --home /home/sftp --shell /usr/bin/scponly --no-create-home sftp</pre>
<p>Damit das PAM Modul auch wirklich greift, muss es für den neuen Benutzer aktiviert werden. Das geschieht durch folgende Zeile in der Datei <code>/etc/security/chroot.conf</code>.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">sftp	/var/chroot/users/sftp</pre></div></div>

<p>Als nächstes wird das Verzeichnis für die <code>chroot</code> Umgebung erstellt und der neue Benutzer erhält Schreibrechte für sein Heimatverzeichnis.</p>
<pre># mkdir -p /var/chroot/users/sftp/home/sftp
# chown sftp:sftp /var/chroot/users/sftp/home/sftp</pre>
<p>Für die Verwendung des <code>makejail</code> Skripts wird eine Konfigurationsdatei mit folgendem Inhalt erstellt und als <code>sftp-jail.py</code> gespeichert.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">chroot=<span style="color: #483d8b;">&quot;/var/chroot/users/sftp&quot;</span>
users=<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;sftp&quot;</span><span style="color: black;">&#93;</span>
testCommandsInsideJail=<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;scponly&quot;</span>, <span style="color: #483d8b;">&quot;ls&quot;</span>, <span style="color: #483d8b;">&quot;scp&quot;</span>, <span style="color: #483d8b;">&quot;rm&quot;</span>, <span style="color: #483d8b;">&quot;ln&quot;</span>, <span style="color: #483d8b;">&quot;mv&quot;</span>, <span style="color: #483d8b;">&quot;chmod&quot;</span>, <span style="color: #483d8b;">&quot;chown&quot;</span>, <span style="color: #483d8b;">&quot;chgrp&quot;</span>, <span style="color: #483d8b;">&quot;mkdir&quot;</span>, <span style="color: #483d8b;">&quot;rmdir&quot;</span>, <span style="color: #483d8b;">&quot;pwd&quot;</span>, <span style="color: #483d8b;">&quot;groups&quot;</span>, <span style="color: #483d8b;">&quot;id&quot;</span>, <span style="color: #483d8b;">&quot;echo&quot;</span>, <span style="color: #483d8b;">&quot;passwd&quot;</span><span style="color: black;">&#93;</span>
forceCopy=<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;/usr/lib/sftp-server&quot;</span><span style="color: black;">&#93;</span>
cleanJailFirst=<span style="color: #ff4500;">1</span>
preserve=<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;/home/sftp&quot;</span><span style="color: black;">&#93;</span></pre></div></div>

<p>Es folgt der Aufruf des Skripts.</p>
<pre># makejail sftp-jail.py</pre>
<p>Die am Ende ausgegebenen Warnungen können getrost ignoriert werden. Wenn man so vorsichtig ist wie ich, muss man noch dafür sorgen, dass der SSH Login für den neuen Benutzer freigegeben wird. Dazu fügt man den neuen Benutzernamen dem <code>AllowUsers</code> Parameter in der Datei <code>/etc/ssh/sshd_config</code> hinzu und startet das SSH Service neu.</p>
<pre># /etc/init.d/ssh restart</pre>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2010/02/28/einrichtung-eines-sicheren-fileservers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebDAV on Windows Vista &amp; Windows 7</title>
		<link>http://fabianmoser.at/blog/2009/09/30/webdav-on-windows-vista/</link>
		<comments>http://fabianmoser.at/blog/2009/09/30/webdav-on-windows-vista/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 13:25:43 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Laufwerk]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[WebDAV]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://fabianmoser.at/?p=457</guid>
		<description><![CDATA[There are quite a number of tales of woe around that topic. I had to find that out when I experienced some trouble myself today. If you&#8217;re in the same situation skip right down to the last two lines of &#8230; <a href="http://fabianmoser.at/blog/2009/09/30/webdav-on-windows-vista/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There are quite a number of tales of woe around that topic. I had to find that out when I experienced some trouble myself today. If you&#8217;re in the same situation skip right down to the last two lines of this posting, the stuff in between just details the problem to associate the solution to the problem for the search engines.</p>
<p>My intention was to connect to my freshly set up  WebDAV directory served by Apache. The setup on the server side was quite tedious as well, but as expected, there are countless howtos around and one just has to put the pieces together as usual. The real problem however arose, when I starry-eyed tried to connect to that online directory using Vista&#8217;s &#8220;Map Network Drive &#8230;&#8221; dialog. After some steps into the wizard that always gave me the error popup saying &#8220;The folder you entered does not appear to be valid&#8221;.</p>
<p>Well that soon let me drop to the beloved command line. But using <code>net use W: https://example.com/davroot</code> was answered by &#8220;System error 67 has occurred&#8221; and &#8220;The network name cannot be found&#8221;. Using <code>net use W: \\example.com@SSL\davroot</code> gave no improvement.</p>
<p>I will spare you my other trials and all the different possible solutions that can be found on the net (I even installed a Microsoft patch which didn&#8217;t change anything) and write down straight what solved the problem:</p>
<ol>
<li><strong>Make sure the &#8220;WebClient&#8221; service is running!</strong> (Type &#8220;services.msc&#8221; into the search box in the start menu and hit enter.  Scroll down the WebClient and check.)</li>
<li><strong>Use &#8220;\\yourserver@SSL\DavWWWRoot\yourshare&#8221; as the server address</strong> in the Folder field of the Map Network Drive dialog box. Do not forget the DavWWWRoot or the @SSL.  <strong> </strong><strong> </strong></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2009/09/30/webdav-on-windows-vista/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How-to reduce fail2ban memory usage</title>
		<link>http://fabianmoser.at/blog/2009/05/15/how-to-reduce-fail2ban-memory-usage/</link>
		<comments>http://fabianmoser.at/blog/2009/05/15/how-to-reduce-fail2ban-memory-usage/#comments</comments>
		<pubDate>Fri, 15 May 2009 11:14:05 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/?p=387</guid>
		<description><![CDATA[This morning, when I did the routinely scan of the server&#8217;s resource usage history, I noticed a suspicious network activity between 1 and 5 am. Some reading of the latest log files soon identified the traffic to have been caused &#8230; <a href="http://fabianmoser.at/blog/2009/05/15/how-to-reduce-fail2ban-memory-usage/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This morning, when I did the routinely scan of the server&#8217;s resource usage history, I noticed a suspicious network activity between 1 and 5 am. Some reading of the latest log files soon identified the traffic to have been caused by a dictionary attack on my SSH server. I took the opportunity to extend my current setup for the <a href="http://debaday.debian.net/2007/04/29/fail2ban-an-enemy-of-script-kiddies/">script-kiddie enemy</a> called <a href="http://www.fail2ban.org">fail2ban</a>. This program monitors potentially any service&#8217;s log file for failed login attempts and if their number exceeds a certain limit, it blocks the issuing host using <a href="http://www.netfilter.org/">iptables</a> rules.</p>
<p>Unfortunately the first start of the new service turned out to blow up the memory usage by about 100 MB which is unacceptable regarding the tight resources of my virtual private server. As I found out, <a href="http://www.supersoftcafe.com/2009/04/09/vps-configuration">others</a> had similar experience and switched to <a href="http://denyhosts.sourceforge.net/">DenyHosts</a> due to this issue. My experience with setting up <a href="http://trac.edgewall.org/">Trac</a> two weeks ago taught me that a Python application (like fain2ban) might consume a lot of memory only because of the relatively oversized default stack size on Linux.</p>
<p>The means to reduce the default stack size in Linux are widely known to be the limits.conf file and the ulimit command. But how to use those two in my situation? The solution turns out to be a one-liner on Debian Lenny: All I had to do was to append the ulimit command to my /etc/default/fail2ban file.</p>
<p>This is the changed /etc/default/fail2ban file:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># This file is part of Fail2Ban.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Fail2Ban is free software; you can redistribute it and/or modify</span>
<span style="color: #666666; font-style: italic;"># it under the terms of the GNU General Public License as published by</span>
<span style="color: #666666; font-style: italic;"># the Free Software Foundation; either version 2 of the License, or</span>
<span style="color: #666666; font-style: italic;"># (at your option) any later version.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Fail2Ban is distributed in the hope that it will be useful,</span>
<span style="color: #666666; font-style: italic;"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span style="color: #666666; font-style: italic;"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<span style="color: #666666; font-style: italic;"># GNU General Public License for more details.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># You should have received a copy of the GNU General Public License</span>
<span style="color: #666666; font-style: italic;"># along with Fail2Ban; if not, write to the Free Software</span>
<span style="color: #666666; font-style: italic;"># Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Author: Cyril Jaquier</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># $Revision: 1.2 $</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Command line options for Fail2Ban. Refer to &quot;fail2ban-client -h&quot; for</span>
<span style="color: #666666; font-style: italic;"># valid options.</span>
&nbsp;
<span style="color: #007800;">FAIL2BAN_OPTS</span>=<span style="color: #ff0000;">&quot;&quot;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">ulimit</span> <span style="color: #660033;">-s</span> <span style="color: #000000;">256</span></pre></div></div>

<p>Using this sets the default stack size for the Python instances running fail2ban to 256 KB and lowers the memory consumption of fail2ban approximately by a factor of 10.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2009/05/15/how-to-reduce-fail2ban-memory-usage/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Erklärung zur Schlagwortwolke</title>
		<link>http://fabianmoser.at/blog/2009/04/19/erklaerung-zur-schlagwortwolke/</link>
		<comments>http://fabianmoser.at/blog/2009/04/19/erklaerung-zur-schlagwortwolke/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 21:03:50 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Navigation]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/?p=259</guid>
		<description><![CDATA[Neben den klassischen Navigationsmethoden auf dieser Website, wie die Selektierung einer Kategorie oder eines Zeitraumes im Archiv, gibt es, wie kaum zu übersehen ist, auch eine etwas neuartigere Möglichkeit. Die Tagcloud oder auf Deutsch Schlagwortwolke vermittelt auf einen Blick, welche Informationen &#8230; <a href="http://fabianmoser.at/blog/2009/04/19/erklaerung-zur-schlagwortwolke/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Neben den klassischen Navigationsmethoden auf dieser Website, wie die Selektierung einer Kategorie oder eines Zeitraumes im Archiv, gibt es, wie kaum zu übersehen ist, auch eine etwas neuartigere Möglichkeit. Die Tagcloud oder auf Deutsch <a title="Wikipedia - Schlagwortwolke" href="http://de.wikipedia.org/wiki/Schlagwortwolke">Schlagwortwolke</a> vermittelt auf einen Blick, welche Informationen auf dieser Website zu finden sind und wo die Schwerpunkte liegen.</p>
<p>Damit das Prinzip funktioniert, habe ich begonnen, den neueren Artikeln Schlagworte zuzuweisen. Im Gegensatz zu Stichworten, welche sich auf den Titel beziehen, geben Schlagworte in kürzester Form den Inhalt eines Artikels wieder. Sobald eine Mindestanzahl von Artikeln mit Schalgworten markiert wurde, kommen natürlich in Summe manche Schlagworte öfter vor als andere. Dieser Unterschied wird in der Schlagwortwolke durch das Schriftbild des Schlagwortes dargestellt. Häufiger vorkommende Schlagworte sind auffälliger dargestellt als selten vorkommende. </p>
<p>In diesem frühen Stadium der Website ist der Vorteil dieser Navigationsmöglichkeit leider noch nicht offensichtlich. Das wird sich aber bei einer größeren Anzahl von Artikeln ändern. Um dann eine effiziente Navigation mittels der Kategorien zu erreichen, müsste ich eine gutüberlegte Hierarchie einführen und regelmäßig aktualisieren, wenn manche Kategorien wichtiger werden als ursprünglich angenommen. Die Schlagwortwolke aktualisiert sich sozusagen von selbst und stellt immer die gerade aktuelle Informationsverteilung auf der Website dar.</p>
<p>Ich hoffe, ich konnte mit dieser kurzen Erklärung die auffällige und vielleicht auf den ersten Blick störende Einrichtung mit dem irritierenden Namen rechtfertigen. Wie gesagt, vielleicht überzeugt sie ja im Lauf der Zeit. Es würde mich freuen.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2009/04/19/erklaerung-zur-schlagwortwolke/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Umstieg auf WordPress</title>
		<link>http://fabianmoser.at/blog/2009/04/18/herzlich-willkommen/</link>
		<comments>http://fabianmoser.at/blog/2009/04/18/herzlich-willkommen/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 14:00:06 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Frog]]></category>
		<category><![CDATA[Romy]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/wordpress/?p=1</guid>
		<description><![CDATA[Begründung für die Umstellung der Basis dieser Website von Frog zu WordPress und Erläuterungen zum neuen Aussehen. <a href="http://fabianmoser.at/blog/2009/04/18/herzlich-willkommen/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Motivation</h2>
<p>Nachdem das Design meiner Website zwiespältige Reaktionen hervorgerufen hat (Nicht alle Besucher war darüber begeistert, dass ich Ihnen gleich tief in die Augen geschaut habe.), habe ich schon vor einiger Zeit begonnen, mir über eine gänzliche Neugestaltung Gedanken zu machen. Bei dieser Gelegenheit habe ich mir auch vorgenommen, die bisherige Basis der Website, nämlich das <a href="http://www.madebyfrog.com">Frog Content Management System</a> neu zu evaluieren.</p>
<p>Es folgte eine längere Recherchephase, weil ich nie wirklich viel Zeit auf einmal darauf verwendet habe. In die engere Auswahl kam immer wieder Drupal. Gegenüber Joomla habe ich eine irrationale Abneigung, die ich manchmal darauf zurückführe, dass es dafür sogar an Schulen Einführungen gibt und manchmal darauf, dass es einfach irgendwie zu bunt wirkt. Gegen eine weitere Verwendung von Frog sprach die Tatsache, dass es anscheinend nur drei aktive Entwickler gab und mir die Entwicklung etwas zu verschlafen schien. So perfekt ist es dann doch noch nicht, auch wenn mich die Schlankheit und das Konzept einst überzeugen konnten.</p>
<h2>Warum WordPress?</h2>
<p><a href="http://de.wordpress.org/">WordPress</a> wurde es dann ganz einfach, weil es anscheinend für Websites und insbesondere für Blogs die erste Wahl ist. Ich kann mich nicht mehr erinnern, warum ich es früher ausgeschlossen hatte, befürchte aber, dass es von einem Emanzipationsbedürfnis hergerührt hat. Dieses Bedürfnis ist in den letzten Monaten in mir sehr zurückgegangen. Vielleicht steht damit auch im Zusammenhang, dass ich auf meinem Arbeitscomputer nun endgültig bei Windows Vista geblieben bin und es kennen und mögen gelernt habe.</p>
<p>Jedenfalls konnte ich keinen Grund und kein fehlendes Feature finden, das gegen WordPress gesprochen hätte. Meine Kriterien waren vor allem die Möglichkeit, konsistene statische Seiten zu erstellen und Versionierung der Artikel. Da ich mich nicht noch einmal mit Serversoftware herumschlagen wollte, musste das potentielle System auch auf der PHP/MySQL Infrastruktur laufen. Da beides keine stark einschränkenden Kriterien sind, waren die beiden &#8220;Bonuskriterien&#8221; ausschlaggebend: Ein vernünftiges Plugin für die Einbindung von Picasa Fotoalben und ein Darstellungsmotiv, das mir zusagt.</p>
<h2>plaintxtblog</h2>
<p>Die Wahl des Aussehens wurde diesmal von einer reduktionistischen Strategie geleitet. Geheimes Vorbild war der <a href="http://blogs.technet.com/markrussinovich/">Blog von Mark Russinovich</a>, einem früheren SysInternals und jetzt Microsoft Kernel Entwickler, aus dessen Interviews ich einige interessante Hintergrundinformationen zu Vista und Windows 7 erfahren habe. Tatsächlich wird das Aussehen seines Blogs natürlich von TechNet vorgegeben, aber egal. Ich fand ganz einfach, dass ich lieber weiterhin Bilder in meine Artikel aufnehme und alle anderen Fotos und Grafiken vermeiden sollte. Damit wird die Aufmerksamkeit nicht vom interessanteren, neuen Inhalt abgelenkt und man sieht nicht tausendmal dasselbe große, bald altgewordene Bild, das alles andere in den Schatten stellt und zuerst beeindruckt und später langweilt.</p>
<h2>Belohnung</h2>
<p>Weil ich gerade beim Thema war, gibt es jetzt zur Belohnung noch ein gerade aufgenommenes Foto von Romy, die heute schon einige intensive Knuddeleinheiten einstecken musste und den Samstag genauso genießt wie ich.</p>
<p><a href="http://picasaweb.google.at/lh/photo/bROFSLQvYsoy2kh0fQ_CEw?feat=embedwebsite"><img class="colorbox-1"  src="http://lh6.ggpht.com/_hO4rbrxGsSE/Senkbjt-ryI/AAAAAAAACb4/FRVYCRrIfg8/s400/DSC_0003.JPG" alt="" /></a></p>
<p>Jetzt muss ich aber doch noch hinaus aus der Wohnung, den Wochenendeinkauf erledigen und ein bisschen die Nachmittagssonne inhalieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2009/04/18/herzlich-willkommen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

