Tetrinet: Tester gesucht

Es müssen ja nicht immer nur Ego-Shooter sein, dachte ich mir und bin auf der Suche nach internetfähigen Spielen über Tetrinet gestolpert. Ich denke bei Tetris werden Erinnerungen wach. In Russland fing alles an, ich habe es zum ersten Mal anno dazumal auf dem Gameboy in schwarz-weiß gespielt und ich wette ohne nachgeschaut zu haben, dass man es als App für Smartphone X irgendwo in 10 verschiedenen Varianten herunterladen kann.
So viel sei verraten, Tetrinet bringt das Spiel zu neuen Höhen und erweitert den Spaß um den Faktor Mehrspieler und Internet. Bis zu sechs Spielerinnen und Spieler können gemeinsam gegeneinander oder in Teams antreten. Das Besondere an dem Spiel ist, dass durch erfolgreiches Abräumen neue Bausteine freigeschaltet werden, mit denen man zu Gunsten oder Ungunsten seiner Mitspieler in das Spiel eingreifen kann.

Das ist gtetrinet, der Gnome-Klient. Ihr startet das Programm, klickt auf "Verbinden" und gebt als Server linuxiuvat.de ein und wählt einen beliebigen Spielernamen. Anschließend befindet ihr euch auf dem Spielfeld und könnt als nächstes den Partyraum (Chat) betreten oder die Gewinnerliste anschauen. Ich denke die restlichen Feature finden sich recht schnell. 😀
Wenn es einen Client gibt, existiert natürlich auch ein Server. Womit wir bei TetrinetX angekommen sind. Sollte die Resonanz positiv sein, stelle ich das Debian-Paket irgendwann genauer vor. Es bringt auf jeden Fall vom Init-Skript, über sauber kommentierte Konfigurationsdateien bis hin zur separaten Logdatei in /var/log alles mit, was man sich als Admin wünschen kann.
Moment, Moment natürlich gibt es auch einen Tetrinet-Client für die Konsole mit dem Namen...Tetrinet-Client.

Ich will nämlich nicht verschweigen, dass gtetrinet fast die gesamte Gnome-Desktopumgebung als Abhängigkeit zieht (ich übertreibe, aber auch nur fast). Für alle Retrozocker, die auch noch über einen Laptop aus dieser Zeit verfügen eine sehr ressourcensparende Alternative. Außerdem besitzt tetrinet-client ein interessantes Feature, was manche vielleicht als Cheat bezeichnen würden. Ich empfinde die grafische Andeutung, wo der Spielstein landen wird, auf jeden Fall als sehr nützlich.

Ihr verbindet euch zu meinem TetrinetX-Server, indem ihr tetrinet-client von der Konsole wie folgt aufruft.

tetrinet-client EuerSpielname linuxiuvat.de

Einfach oder nicht?
Auf was ich hinaus will und der Titel andeutungsweise schon erahnen lässt. Ihr müsst den Server testen und das Spiel wiederbeleben. 🙂 Tetrinet gab es schon vor mehr als einer Dekade, wovon die vielen Internetadressen a la tetrinet.TLD zeugen. Mittlerweile ist das Spielerfeld ein wenig ausgedünnt.
Deswegen mein Angebot: Wenn in den nächsten Wochen sich die Gewinnerliste ein wenig füllt, bastle ich noch eine Siegerliste auf linuxiuvat.de und nehme den Server offiziell in die Reihen der Spiele auf. Falls nicht, tja, dann seid ihr dran Schuld, dass ich ein weiteres Killerspiel installieren muss. 😈

XZ-Kompression, Wheezy Freeze und ab Ubuntu 12.10 keine CDs mehr

Auf der Mailingliste der Debian-Entwickler, debian-devel, wurde vorgestern ein interessantes Thema in Gang gesetzt: "Wheezy release: CDs are not big enough any more"
Irgendwann hat es die Floppies erwischt, nun scheint es so, als ob CDs das gleiche Schicksal ereilen würde. Der Platz geht aus. Debian und Ubuntu unterstützen bisher die Installation einer kompletten Desktopumgebung mit Gnome, KDE, Xfce und LXDE mit jeweils einer separaten CD. Zusätzlich existieren noch Live-CDs, die ich schon scherzhaft in Kebian, Lebian und Xebian umbenennen wollte. Für die restlichen mehr als 30000 Pakete werden weitere CD-Abbilder vorgehalten, die in der Regel nicht gebraucht werden, sofern man über einen Internetanschluss verfügt.
Da der Freeze für Wheezy immer näher rückt, angepeilt ist die zweite Hälfte des Juni, hat Steve McIntyre auf debian-devel die Frage gestellt, wie man nun alle notwendigen Daten auf nur eine CD unterbringen will.

XZ-Kompression

Tatsache ist, dass auch schon in der Vergangenheit nicht jede Komponente des Gnome-Desktops auf der ersten CD Platz fand und deswegen die fehlende Software über das Internet nachgeladen werden mussten. Ein möglicher Lösungsansatz ist die Verwendung von XZ-Kompression anstatt von gzip oder bzip2, das Aufgeben von CDs zu Gunsten von DVDs oder gar die Abkehr von Gnome als Standardinstallation hin zu leichtgewichtigeren Desktopumgebungen wie z.B. LXDE.
XZ-Kompression, auch bekannt unter dem Namen des verwendeten Algorithmus LZMA, bietet hier einige Vorteile. Wer die xz-utils installiert hat und z.B. mit tar und der Option "-J" Daten komprimiert, stellt schon bald die deutlich verbesserte Kompressionsrate fest. XZ scheint bei mir Daten förmlich zu "verdampfen". Große Abbilder von Festplatten oder Partitionen, die ich mit Partimage oder Partclone sichere, werden regelmäßig mit xz komprimiert und auch die ein oder andere SQL-Datei schrumpfte schon von 109 MB auf lediglich 15 MB zusammen. Gerade für Backupzwecke und zum Platzsparen, wenn Daten Monate oder gar Jahre unangetastet bleiben, ist das äußerst nützlich.
Der Nachteil liegt jedoch in der speicher- und zeitintensiveren Erzeugung der Kompression gegenüber den etablierten Formaten gz und bz2. Im Gegensatz dazu erfolgt die Dekompression der Daten nur unwesentlich langsamer als bei gzip und ist ungefähr doppelt so schnell als bei bzip2. Das macht XZ gerade für das Komprimieren von Binärdateien und Softwarepaketen interessant. Arch Linux hat hier schon vor zwei Jahren umgestellt.
Da die Rechenleistung auf den Build-Daemons zur Erzeugung von Binärdateien anfallen, bekommt der Endanwender von der Veränderung nichts mit, sieht man mal von der geringeren Dateigröße ab. Im gleichen Entwickler-Thread wurde aber auch ein Problem eines universellen Betriebssystem angesprochen, denn Debian lässt sich auch mit Hilfe von Debootstrap von fremden Systemen aus installieren. Da ältere Versionen von Debootstrap XZ noch nicht unterstützen, könnte das auch auf Android-Smartphones mit Debian zum Problem werden.

Was macht Ubuntu?

Wie geht Ubuntu mit der selben Herausforderung um? Steve Langasek, Debian-Entwickler, ehemaliger Release Manager und jetzt Angestellter von Canonical, kündigte hier schon mal für Ubuntu 12.10 an, dass es keine CDs mehr geben und die Größe des Installationsabbildes auf 800 MB anwachsen wird. In Zukunft werden also nur noch DVDs, USB-Sticks und natürlich die Netzinstallation unterstützt.
In Anbetracht des bevorstehenden Freeze bei Debian kann ich mir vorstellen, dass die Umstellung auf XZ-Kompression bei den Binärpaketen noch etwas aufgeschoben wird, die das eigentliche Problem leider auch nur verlangsamen können. Für eher wahrscheinlich halte ich da das Szenario "Keine CDs mehr" oder "CD1 + CD2" für eine Desktopinstallation.
Für mich steht aber schon heute fest, ich bleibe weiterhin bei der Netzinstallation bzw. alternativen Installation von Ubuntu. Wie seht ihr das? Sind CDs Geschichte?

Iceweasel: Downgrade von libcairo2 beseitigt Grafikfehler

Update 04.08.2012: Der folgende Bug wurde für mich heute mit dem Paket xserver-xorg-video-nouveau 1.0.1-3 für Wheezy und meine Geforce 9600GT gelöst.
Ich konnte schon lange nichts mehr über einen Bug schreiben, weswegen ich mich heute natürlich sehr gefreut habe, dass es wieder was zum Bloggen gibt. Wer innerhalb der letzten 24 Stunden ein Upgrade gemacht hatte, konnte mitunter in Debian Testing feststellen, dass ganze Textpassagen in Iceweasel unleserlich geworden sind. Es schien so als ob sich Quadrate über den Text legen würden, Text wurde verzerrt und vollkommen unleserlich.
Näher nachgeforscht ist das ein Renderingproblem und auf einen Bug im X-Server zurückzuführen, der schon mindestens seit zwei Monaten im Debian-Bugtracker bekannt ist. Genauer gesagt brachte erst eine Veränderung in der Bibliothek libcairo2 den Fehler zum Vorschein.
Alles in allem nichts Ungewöhnliches, wenn man Unstable oder Testing benutzt. Mit einem Downgrade auf die Version 1.10.2-7 in den Backports von Debian Stable, konnte ich dieses Problem lösen.
Ich habe mich nur gefragt, warum die Version 1.12.2-1 von libcairo2 überhaupt nach Testing migrieren durfte, da ich noch nie so viele "Grave"-Bugs gesehen habe, die gegen ein Paket eröffnet worden waren. Sollte hier jemand mehr wissen, würde ich mich über einen aufklärenden Kommentar freuen.

Pyqscore: Spielstatistiken für OpenArena erstellen

Zurück zu meinem Steckenpferd. Im folgenden geht es darum, wie man aus einer Logdatei für OpenArena eine sinnvolle Spielstatistik erstellen kann. OpenArena ist kurz gesagt ein modifiziertes Quake3 mit Medieninhalten, die vollständig unter einer freien GPL-Lizenz stehen. Für meinen öffentlichen OpenArena-Server habe ich mich für Deathmatch entschieden, da ich das Gefühl hatte, die meisten Spieler bevorzugen diesen Spielmodus.
Ein weiterer Vorteil ist sicherlich, dass "Jeder-gegen-Jeden" am einfachsten zu überwachen ist, denn im Prinzip geht es nur darum, dass Spieler X Spieler Y fraggt und alles ein Zeitspiel ist.
Es gibt verschiedene Werkzeuge und Programme, die einem beim Erstellen von Statistiken helfen können. Im Grunde läuft es aber immer auf das Parsen der Logdatei heraus. Das OpenArena-Wiki führt hier z.B. VSP, AEstats oder oastats an.
Für mich war nur eine Sache klar. Ich wollte keinen zusätzlichen Datenbank-Server. Irgendwie erschien mir das nicht die richtige Lösung zu sein, um eine einzelne Logdatei zu parsen.
Der Gewinner war schließlich Pyqscore.
Pyqscore ist ein in Python geschriebenes Programm, dass die Datei games.log analysieren kann und zusätzlich noch einen Cache benutzt, damit schon zuvor analysierte Werte nicht noch einmal ausgewertet werden müssen.
Das ursprüngliche Skript pyqscore.py habe ich auf meinem Server in /usr/local/bin abgespeichert. Es wird täglich mit Hilfe von Cron ausgeführt. Erwähnt hatte ich es schon bei meinem Cron- und Logrotate-Beispiel.
Jeden morgen wird deswegen die zuvor mit Logrotate rotierte Datei games.log.1 ausgewertet und als daily.htm abgespeichert. Mit Hilfe von cat addiere ich alle täglichen Logdateien in die Datei monat.log, worüber ich dann ein leicht modifiziertes Pyqscore ausführen lasse, dass die Statistik des Monats wiederum in der Datei monthly.htm abspeichert.
Für die täglichen Statistiken benutze ich dieses Skript

#!/bin/sh
# Tägliche Statistiken mit pyqscore erzeugen, im HTML-Format ausgeben und mit tidy säubern
set -e
Base="/var/games/openarena-server/.openarena/baseoa/"
cd $Base
if [ -f games.l_cache.p ]; then
        rm games.l_cache.p
fi
/usr/local/bin/pyqscore.py games.log.1
/usr/bin/tidy -utf8 -m -q daily.htm || true

Hier wird jeden Tag in das entsprechende Verzeichnis gewechselt und der alte Cache gelöscht. Das ist notwendig, weil Pyqscore bei einer größeren Logdatei den Cache zum schnelleren Analysieren heranzieht, bei kleineren Logdateien aber eine komplett neue Cache-Datei anlegt.
Damit keine Fehler entstehen, lösche ich den Cache bei der täglichen Statistik. Anschließend wird nur noch die games.log.1 ausgewertet und mit Hilfe von Tidy gesäubert.
Ein anderes Skript kopiert dann automatisch die erzeugte daily.htm in das Webserver-Verzeichnis.
Für die monatlichen Statistiken verfahre ich so:

#!/bin/sh
# Monatliche Statistiken mit pyqscore erzeugen und im HTML-Format ausgeben
set -e
Today=`/bin/date +%d`
Month=`/bin/date -d "last month" +%m`
Year=`/bin/date +%y`
Base="/var/games/openarena-server/.openarena/baseoa/"
if [ $Today -eq 02 ]; then
        rm ${Base}monat.log
        cp ${Base}monthly.htm ${Base}${Year}${Month}_stats.htm
fi
cd $Base
cat games.log.1 >> monat.log
/usr/bin/nice -19 /usr/local/bin/pyqscore_mon.py monat.log
/usr/bin/tidy -utf8 -m -q monthly.htm || true

Ok, hier werden folgende Sachen überprüft. Am Morgen jedes zweiten Tages im Monat wird die alte Datei monat.log gelöscht und die Auswertung beginnt von vorne. Ich sichere danach die alte Datei monthly.htm.
Ursprünglich hatte ich daran gedacht, so etwas wie eine "Siegerehrung" zu machen, also eine Extraseite mit den ersten Plätzen. Sollte tatsächlich jemand das Bedürfnis nach einer solchen Seite haben, kann ich das nun immer noch nachtragen. 😉
Ansonsten wird die tägliche Logdatei an die monatliche angehängt und ausgewertet und das ganze wieder mit Tidy ordentlich aufbereitet. Damit ich nicht permanent E-Mails von Cron mit Fehlermeldungen erhalte, erzwinge ich den Exit-Status von Tidy mit "true". Ansonsten kann man jeden Tag lesen, dass die ursprüngliche HTML-Datei Fehler enthalten hat.
Das war es im Prinzip auch schon. Der Vorteil von Pyqscore liegt darin, dass man statische HTML-Seiten mit Statistiken erhält ohne zuvor eine Datenbank installiert zu haben. Bei einem Projekt, wo es um jedes MB Arbeitsspeicher geht, sicher ein Vorteil.
Ich habe Pyqscore an meine Bedürfnisse angepasst. Im Laufe der Zeit sind mir bisher ein paar kleinere Schwächen aufgefallen, die ich versucht habe zu beseitigen. Für alle Interessierten biete ich Pyqscore hier zum Download an.

Drei Aufräumtipps mit Aptitude für Debian und Ubuntu

Ich stelle gerne von Zeit zu Zeit ein paar Tipps und Tricks vor, wie man mit Debians Systemwerkzeugen sein eigenes Betriebssystem sauber und minimal halten kann. Zum Installieren und Entfernen von Software benutze ich am liebsten Aptitude.
Nun bin ich mit Sicherheit nicht der Einzige, der Debian und Ubuntu benutzt. Andere Leute wie z.B. Raphaël Hertzog haben in der Vergangenheit schon viele nützliche Beiträge hierzu geschrieben. Da er selbst Debianentwickler ist und einige essentielle Werkzeuge für Debian mitentwickelt, möchte ich einige seiner Ideen gerne vorstellen, so wie ich das in der Vergangenheit beim Thema CUT getan habe.
Hier sind drei Tipps wie man mit Aptitude und einem Linuxterminal sein System aufräumen kann. Wer gerne grafische Programme bevorzugt, wird all diese Optionen auch mit Synaptic finden können. Die Aptitude-Methode ist meiner Meinung nach aber universeller (und ressourcenschonender 😉 ). Im folgenden gebe ich die entsprechenden Aptitude-Befehle immer in Kurz- und Langschreibweise an. Ihr könnt den Suchbefehl search natürlich jederzeit durch purge ersetzen, um die Dateien endgültig zu entfernen.

1. Nicht benötigte Konfigurationsdateien endgültig löschen

Wenn man ein Paket mit aptitude remove oder sogar aptitude purge löscht, kann es vorkommen, dass einzelne Pakete dennoch Konfigurationsdateien zurücklassen. Oft ist das sogar ein erwünschter Zustand, da bei einer Neuinstallation eben die Konfiguration nicht neu erstellt werden muss, sondern direkt aus den zuvor zurückgebliebenen Dateien wiederhergestellt wird.

Suchen und Löschen

aptitude search ~c
aptitude search ?config-files

2. Entfernen von obsoleten Paketen

Debian läuft über Jahre stabil. Um diesen Qualitätszustand zu erreichen, durchläuft jedes Paket verschiedene Zweige innerhalb der Distribution von Experimental, Unstable über Testing bis Stable.
Es kann jedoch vorkommen, dass das Qualitätssicherungsteam das Entfernen eines Pakets beantragt, weil es entweder nicht mehr durch den ursprünglichen Upstream-Entwickler weiterentwickelt wird oder das Paket nicht mehr innerhalb von Debian betreut wird. Genauso gut kann ein Paket aus wichtigen Gründen umbenannt worden sein, weil der Paketbetreuer dem Benutzer zu einem Zeitpunkt mehrere Versionen anbieten wollte oder die alten Pakete in Übergangspakete für eine Veröffentlichung umbenannt wurden, aber in der darauf folgenden nicht mehr gebraucht werden.
Zurück bleiben irgendwann nur noch obsolete Pakete, die keine Sicherheitsaktualisierungen mehr erhalten und im schlimmsten Fall nutzlos auf der Festplatte verkümmern.

Suchen und Löschen

aptitude search ~o
aptitude search ?obsolete


Nicht immer möchte man alle als obsolet eingestuften Pakete löschen. Wenn man Pakete von Drittanbietern (wie z.B. Brother-Treiber) installiert hat, würden diese mit purge ebenfalls entfernt. Hier ist es deshalb besser mit

aptitude why "Paketname"


nachzuforschen, warum das Paket installiert wurde.

3. Pakete aus Drittquellen suchen und entfernen

Es gibt kaum einen Grund, warum man Drittquellen in Debian freischalten sollte. Hilfreich fand ich bisher aber immer deb-multimedia.org, wenn es z.B darum ging einen WebM-kompatiblen MPlayer für Debian Stable zu installieren. Natürlich nur, wenn es die neuere Version nicht schon in Debian-Backports gibt.
Bei Ubuntu hingegen erliegt man öfter der Versuchung mal das ein oder andere PPA freizuschalten und ja, manche sind auch wirklich nützlich. Möchte man herausfinden, welche Pakete auf dem eigenen System aus Drittquellen stammen, lässt sich das mit Aptitude so lösen:

Suchen und Löschen

aptitude search '~S ~i !~ODebian !~o'
aptitude search '?narrow(?installed, !?origin(Debian))!?obsolete'


Will man hingegen wissen, welche Pakete nicht aus dem Debian-Zweig stammen, den man gerade verwendet (in diesem Fall "Testing"), funktioniert dieser Befehl.

aptitude search '?narrow(?installed, !?archive(testing)?origin(Debian))'


Hierbei werden alle Pakete angezeigt, die nicht der Version entsprechen, die gerade in Testing verfügbar ist oder die aus anderen Zweigen wie Experimental oder Unstable stammen.

Schickes Booten mit Debian und eine Bitte

Vor kurzem war es auch in Debian Testing soweit. Dank einem Update von lsb-base ist das Booten nun endlich schick geworden. Ich kann mich noch dran erinnern, dass ich mich schon vor ungefähr zehn Jahren gefragt habe, warum Debian eine der wenigen Distributionen war, wo es keine farbige Anzeige gab, die signalisierte, ob Dienste erfolgreich gestartet worden waren oder eben nicht.
Hatte es vielleicht technische Gründe oder war man der Meinung, es würde den Benutzer verwirren und vom Wesentlichen ablenken? Ich wusste es nicht, schaute aber immer ein wenig neidisch zu RedHat, Mandriva, SuSe und Arch Linux. Zugegeben es war nicht wirklich kritisch und der bisherige Output gefiel mir sogar besser als die grafische Lösung mit Plymouth.
Ab sofort gibt es jetzt also Statusmeldungen wie

[ ok ]
[info]
[warn]
[FAIL]

in den passenden Signalfarben.
Nur noch ein Wunsch für das Booten bleibt. Bitte, bitte Ubuntu ich möchte nicht nach jedem Kernelupdate einen neuen Eintrag in GRUB vorfinden, weil sich die Versionsnummer wieder um eine Kleinigkeit geändert hat. Schlimmer noch, die alten Kernel nehmen unnötig Platz weg, weswegen ich schon vor vier Jahren den Weg zum Entfernen beschrieben habe...
Eine alte und eine aktuelle Kernelversion, so wie es sie bei Arch Linux gibt, das wäre was. Selbst bei Debian verändert sich momentan an dem 3.2 Kernel nichts. Nein, sonst habe ich keine Probleme. 🙂

Tipp: Probleme mit Nvidia-Treibern lösen – Downgrade von Precise auf Oneiric

Nach meinem Upgrade auf Lubuntu 12.04 stellten sich, wenig überraschend, die gleichen Probleme wie mit Debian Sid ein. Die neuesten Nvidia-Treiber 295.40 verursachen bei mir, Kero und wahrscheinlich noch einer Reihe anderer Leute Verzögerungen beim Verschieben von Anwendungen, die teilweise bis zum Einfrieren des gesamtes Desktops führen können.
Das Problem ist bekannt und betrifft unter anderem Geforce 6, 7 oder 8800GTX/GTS Karten. Ich benutze jedoch eine Geforce 9600 GT, die bis zum Update auf Lubuntu 12.04 einwandfrei funktionierte.
Seid ihr von ähnlichen Problemen betroffen, habt ihr folgende Optionen zur Hand.

1. Nvidia-Treiber komplett entfernen

sudo aptitude purge nvidia-current


Die Treiber lassen sich mit diesem Befehl komplett entfernen. Nach einem Neustart wird der Nouveau-Treiber aktiv, dessen Performance in der Regel für "normalen" Desktopbetrieb ohne anspruchsvolle 3D-Spiele oder Compiz ausreichend ist.

2. Downgrade der Nvidia-Treiber von Precise auf Oneiric

Für diverse Setups sind weiterhin die Nvidia-Treiber notwendig. In diesem Fall könnt ihr einen Downgrade von Nvidia 295.40 (Precise) auf 280.13 (Oneiric) in Erwägung ziehen.

Ein Downgrade kann zu Problemen und anderen Inkompatibilitäten führen. Jetzt wäre der richtige Zeitpunkt für ein Backup. Wer sich bei den folgenden Schritten unsicher ist, sollte sie nicht ausführen!

Öffnet die /etc/apt/sources.list mit eurem bevorzugten Editor und schaltet das alte Apt-Repositorium für Oneiric und die "restricted"-Sektion frei, indem ihr diese Zeilen hinzufügt.

deb http://de.archive.ubuntu.com/ubuntu/ oneiric main restricted
deb http://security.ubuntu.com/ubuntu oneiric-security main restricted

Nvidia-Treiber downgraden

sudo aptitude update
sudo aptitude -t oneiric install nvidia-current


Apt warnt vor dem Downgrade, dass das virtuelle Paket xorg-video-abi-10 nicht gefunden werden kann. Mit "n" lehnt ihr die erste Lösung ab und akzeptiert die zweite. Dies solltet ihr nur tun, wenn ihr auf die zum Entfernen markierten Pakete auch tatsächlich verzichten könnt. Der Vorgang sah bei mir so aus:

sudo aptitude -t oneiric install nvidia-current
Die folgenden Pakete haben verletzte Abhängigkeiten:
 nvidia-current : Hängt ab von: xorg-video-abi-10 , welches ein virtuelles Paket ist.
Die folgenden Aktionen werden diese Abhängigkeiten auflösen:
     Beibehalten der folgenden Pakete in ihrer aktuellen Version:
1)     nvidia-current [Nicht installiert]
Diese Lösung akzeptieren? [Y/n/q/?] n
Die folgenden Aktionen werden diese Abhängigkeiten auflösen:
      Entfernen der folgenden Pakete:
1)      xserver-xorg-input-all
2)      xserver-xorg-input-synaptics
3)      xserver-xorg-video-all
4)      xserver-xorg-video-sisusb
5)      xserver-xorg-video-tdfx
6)      xserver-xorg-video-trident
7)      xserver-xorg-video-vesa
Downgrade der folgenden Pakete:
9)      xorg [1:7.6+12ubuntu1 (now, precise) -> 1:7.6+7ubuntu7.1 (oneiric)]
10)     xserver-xorg [1:7.6+12ubuntu1 (now, precise) -> 1:7.6+7ubuntu7.1 (oneiri
11)     xserver-xorg-core [2:1.11.4-0ubuntu10.1 (now, precise-updates) -> 2:1.
usw.

Nach dem Downgrade ist es am sinnvollsten die neuen Nvidia- und Xserver-Pakete auf "Halt" zu setzen, damit sie beim nächsten Update nicht erneuert werden.
sudo aptitude hold '~nnvidia'
sudo aptitude hold '~nxserver'
Welche Pakete das genau sind, erfahrt ihr mit
aptitude search '~ahold'
In meinem Fall hat das Downgrade das Problem vollständig beseitigt und das System läuft stabil. Ihr solltet nun von Zeit zu Zeit überprüfen, ob es eine neuere Nvidia-Version gibt, die das Problem lösen kann.
Die Pakete lassen sich mit
sudo aptitude unhold '~nnvidia'
sudo aptitude unhold '~nxserver'
wieder zum Aktualisieren freigeben.
Update: 06.05.2012

3. Upgrade auf nvidia-current in Quantal Quetzal

Als dritte Möglichkeit könnt ihr den Nvidia-Treiber auf die aktuelle Version in Ubuntu "Quantal Quetzal" bringen. (z.Z. 295.49). Dazu ersetzt ihr das Wort "oneiric" in den vorhergehenden Schritten durch "quantal".
Bei Lubuntu 12.04 und meiner Geforce 9600 GT funktionierten alle drei nur die ersten beiden Möglichkeiten. Nachdem ich jetzt noch etwas länger mit 295.49 experimentiert habe, treten ab und an immer wieder Ruckler und Verzögerungen beim Verschieben von Fenstern auf. Für mich ist daher diese Version nicht die richtige Lösung.

Fünf coole Linuxspiele und ein Gewinner

Ich schreibe die ganze Zeit von der Konfiguration des Servers, da das wirklich unzählige interessante Aspekte sind, aber wo sind bitte schön die ganzen Spiele? Wer sich mal selbst an so ein Projekt wagt stellt bald fest, dass es gar nicht so schwer ist einfach mal ein Spiel zu installieren. Doch es fängt schon damit an, dass ein Ego-Shooter wie z.B. OpenArena mehrere Spielmodi anbietet, unzählige Servervariablen und dazu noch Dutzende weitere Server existieren, die genau den selben Fokus haben. Wie schafft man es also, dass das ganze nicht zu einem rein akademischen Projekt ohne Praxisbezug verkommt und tatsächlich irgendwann Leute auf dem Server spielen?
Ich brauchte eine Weile bis ich herausgefunden hatte, was die Spieler eigentlich wollen. Zumindest bin ich mit den bisherigen Einstellungen zufrieden. Eine Garantie für dauerhaften Erfolg ist es natürlich nicht. Kurzum man muss auch Zeit in das Spiel selbst investieren und kann sich nicht nur auf die Administration beschränken.
Da mittlerweile mehr als zwei Monate seit dem Start des Projekts vergangen sind, wird es Zeit auch mal die Spiele zu nennen, die es bisher auf meinen vServer geschafft haben.
Das sind OpenArena, Cube2:Sauerbraten, Teeworlds und XPilot NG.
Doch bevor ich etwas mehr über die bisherigen Favoriten erzähle, wollte ich noch ein paar potentielle Ego-Shooter-Kandidaten vorstellen, die es zwar nicht geschafft haben, weil sie die Kriterien für meinen Spieleserver nicht erfüllt haben, aber auf jeden Fall spielenswert sind.

AlienArena


AlienArena wurde vor acht Jahren zum ersten Mal veröffentlicht und noch immer orientiert es sich am klassischen Science-Fiction-Genre mit dazu passendem Look. Sowohl Spielermodelle und Waffen als auch Texturen und Objekte rufen einen zurück in die Welt der althergebrachten und oft auch etwas trashigen Alienfilme mit Marsianern und ihren übergroßen Köpfen. Die Effekte und Texturen sind detailreicher als bei OpenArena, die Atmosphäre ist dunkel und düster.
AlienArena basiert sowohl auf der Quake II als auch der Quake III Engine, die beide von id Software unter der GPL veröffentlicht wurden.
Der Hauptgrund warum es AlienArena nicht geschafft hat: Man darf das Spiel nur ohne Modifikationen weiterverbreiten und unter dem gleichen Namen, was in Debian gleichbedeutend mit "unfrei" ist. Außerdem habe ich mit OpenArena schon ein 100 % freies Spiel gefunden, das auf der Quake III Engine basiert.
Verschiedene Spiele haben unterschiedliche Wege eingeschlagen um sicherzustellen, dass ihr "Markenkern" unangetastet bleibt und Entwickler bei dem Projekt bleiben und es nicht abspalten. In einem späteren Artikel möchte ich näher auf diese Unterschiede eingehen und herausfinden, welche Wege FOSS-Spiele gehen, warum manche 100% frei sind und andere eben nicht und was das für den jeweiligen Erfolg bedeutet hat. Doch für das hier und jetzt heißt es erst einmal zu sagen:
Cooles Spiel, aber kein Gewinner.

Nexuiz


Nexuiz war zuerst in jeder Hinsicht der totale Gewinner. Das Spiel basiert auf einer stark modifizierten Form der ursprünglichen Quake-Engine, die allgemein unter dem Namen Darkplaces-Engine bekannt ist und als Freie Software vorliegt. Nexuiz hat exzellente grafische Effekte, darunter sehr detailreiche Licht- und Partikeleffekte. Texturen und Waffenmodelle sind äußerst sehenswert. Das Beste von allem ist, sie sind ebenfalls unter freien Lizenzen verfügbar.
Das Gameplay selbst ist hart und schnell, wie man das eben aus alten Tagen kennt. Auch das Drum-Herum ist schön gemacht. So gibt es z.B. ein Einführungsspiel mit Tutor und passender Anleitung, das einem sowohl Waffen als auch Bewegungen erklärt.
Der Haken an dem Spiel liegt an den vor zwei Jahren stattgefundenen Entwicklungen in der Nexuiz-Gemeinschaft. Die beiden wichtigsten Programmierer und Anführer, darunter der Macher der Darkplaces-Engine, verließen das klassische Nexuiz-Projekt. Die Rechte an dem Namen Nexuiz wurden an IllFonic verkauft, welches dieses Jahr ein Nexuiz-Remake auf Basis der CryEngine3 für Konsolen auf den Markt gebracht hat.
Große Teile der Nexuiz-Gemeinschaft waren von dieser Entwicklung nicht begeistert und haben daraufhin die Arbeit an Xonotic begonnen, dass die bisherige Arbeit an Nexuiz fortführen soll.
Da Nexuiz kaum noch weiterentwickelt wird und die Zukunft Xonotic gehört, habe ich mich schließlich gegen das Spiel entschieden.

Tremulous


In Tremulous geht es wieder einmal um das klassische Feindbild Aliens gegen Menschen. Das Spiel basiert auf der Quake3-Engine unterscheidet sich aber deutlich von seinem großen Vorbild, indem es die Ego-Shooter-Komponente um einen strategischen Aspekt erweitert. Jede der beiden Fraktionen hat die Fähigkeit Strukturen zu errichten, die für die Verteidigung der eigenen Basis und sogar den gesamten Spielerfolg unabdingbar sind. Hat das gegnerische Team nämlich all diese Objekte zerstört, endet das Spiel. Faszinierend ist auch, dass die Aliens die Fähigkeit besitzen sich an Wänden und Decken festzuhalten. dort entlang zu klettern und damit tatsächlich das Gefühl entsteht als sei man selbst der Hauptdarsteller in einem der besten SciFi-Filme aller Zeiten.
Nachdem ich die Probleme mit dem OpenArena-Server und der "getstatus"-Attacke per Fehlerbericht an Debian gemeldet hatte, stellte sich heraus, dass Tremulous ebenfalls gefährdet war. Daraufhin bot ich dem Paketverwalter an den Patch zu testen. Der Server lief äußerst stabil, zog aber kaum Aufmerksamkeit auf sich. In der Regel finden alle Schlachten auf einigen ausgewählten Servern statt.
Das Hauptproblem bei Tremulous sehe ich in der geringen Bereitschaft der Upstream-Entwickler kleinere Updates zu veröffentlichen. So datiert die aktuelle stabile Version immer noch von 2009. Dieses Zögern verhindert zum einen, dass ein fünf Jahre alter Bug beseitigt werden kann, der Tremulous sogar Einlass in Debians "Main"-Repos verschaffen würde und zum anderen werden Sicherheitslücken wie die "getstatus"-Attacke nicht zeitgerecht beseitigt.
Wenn es da draußen jemanden gibt, der Tremulous gerne weiterhin in Debian und seinen Derivaten sehen will, solltest du dich nun beeilen. Wahrscheinlich schon nächste Woche wird der momentane Paketverwalter beantragen, dass Tremulous aus Debian entfernt wird, weshalb auch dieses interessante Spiel es nicht längerfristig auf meinen Server geschafft hat.

Warsow


Dann wäre da noch Warsow. Während viele Actionspiele versuchen so realistisch wie möglich zu wirken, hat sich die Gemeinschaft rund um Warsow entschlossen auf comichafte Grafiken zu setzen, die mit Hilfe von Cel Shading erzeugt werden. Die Grafikengine basiert auf einer modifizierten Form der Quake-II-Engine namens QFusion.
Genauso wie in Nexuiz gibt es ein einsteigerfreundliches Tutorial, das grundlegende Spieltechniken und Bewegungen erklärt. Warsow legt insbesondere viel Wert auf "Movement", sprich Sprünge und flüssige Bewegungsabläufe sind ein wesentlicher Schwerpunkt des Spiels. Interessant sind vor allem sogenannte "Wall Jumps", mit denen die Spielfigur sich auch von Wänden abstoßen kann und somit neue Abkürzungen und Spielmöglichkeiten entstehen. Erwähnenswert ist auch die Einteilung von Munition in schwache und starke.
Das Spiel hat mir gut gefallen, hat sich aber auch nicht durchsetzen können, da es zum einen kürzlich aus den Debian-Repos wegen fehlender Betreuung durch den Paketverwalter entfernt wurde und zum anderen genauso wie Urban Terror oder Alien Arena nicht vollständig als Freie Software vorliegt.

Xonotic

Xonotic ist der direkte Nachfolger des klassischen Nexuiz und wurde auf Grund der oben beschriebenen Differenzen der Gemeinschaft mit den beiden Gründern von Nexuiz ins Leben gerufen. Das Spiel steht vollständig unter der GPL und verwendet weiterhin die Darkplaces-Engine. Es ähnelt in Optik und Gameplay natürlich Nexuiz, setzt jedoch auch eigene Akzente. So werden unter anderem nach und nach Texturen und Spielermodelle verbessert und sogar Fahrzeuge verfügbar sein.
Wirklich bemerkenswert ist aber der Ansatz ein zentrales System zu implementieren, welches jeden Spieler per sicherer Authentifizierung einzigartig erkennbar macht. So können dadurch serverübergreifend Statistiken realisiert werden, aber auch Spieler per ID serverweit bei Verstößen gebannt werden. Die relevante Bibliothek nennt sich d0_blind_id.
Xonotic befindet sich weiterhin in einer Betaphase, ist aber spielbar. Erst seit letztem Monat gibt es erste Bemühungen Xonotic in Debian verfügbar zu machen und ein genauer Plan wurde aufgezeigt, welche Schritte nach und nach erledigt werden müssen. Es sieht demnach aus, dass Xonotic Nexuiz bei Debian irgendwann ablösen wird.
Sobald das Spiel in Debian verfügbar ist, werde ich einen Server aufsetzen. Probleme sehe ich derzeit nur wegen des Ressourcenverbrauchs. Hier muss ich schauen, ob der kleine vServer dieses Spiel noch aufnehmen kann, ohne dass andere Spiele darunter leiden.
Schaut euch den coolen Xonotic-Trailer an, wenn ihr einen ersten Spieleindruck bekommen wollt. Mehr Bilder und Videos gibt es auf xonotic.org. (Ja, das ist tatsächlich ein 100% freies Spiel) 🙂

Fazit

Ego-Shooter sind zwar nicht für jeden das richtige Genre. Linux bietet aber Dank id Software und einer Menge Freiwilliger eine Vielzahl an ausgezeichneten Spielen an. Wirklich jedes hier erwähnte Spiel unterscheidet sich sowohl in der Optik als auch im Gameplay und man kann tatsächlich von jeweils eigenständigen und herausragenden Kreationen sprechen.
Dass das noch nicht alles war ist ja klar. (Aber irgendwann ist auch mal Redaktionsschluss). Neben Xonotic favorisiere ich zur Zeit noch Redeclipse als weiteren Kandidaten für den Spieleserver. Dranbleiben. 😉

Noch 48h – Ein Rückblick auf das Humble Botanicula Debut

Der Themenschwerpunkt stimmte. Die Erstveröffentlichung von Botanicula und die Spende für den gemeinnützigen World Land Trust, der sich unter anderem um die Bewahrung der Regenwälder kümmert. Da fügte sich Botanicula natürlich mit seiner Umweltthematik und einer Spielperspektive aus der Sicht von Insekten und Baumbewohnern perfekt ins Bild ein.
Als Linuxbenutzer und jemand, der sich über jede Spieleportierung auf die Linuxplattform freut, war ich hingegen ziemlich enttäuscht, dass Botanicula nur mit Adobe AIR funktionierte, ein Produkt, welches Adobe letztes Jahr offiziell für den Linuxdesktop begraben hatte.
Deswegen landet dieser Artikel zu den Humblebundles auch unter der Rubrik Spiele mit Linux und Wine, wo er besser aufgehoben ist als in der nativen Kategorie. Denn so groß ist mein Anspruch schon, dass man ein Spiel nur für die Linuxplattform bewerben sollte, wenn zumindest sichergestellt ist, dass die externen Programme dafür in einer aktuellen Version existieren, wenn sie nicht einmal zur freien Software zählen.
Ok, Schwund ist bekanntlich immer. Das Hauptprodukt hat mich nicht zum Kauf bewogen. Da waren aber noch Machinarium und Samorost2. Beide laufen wunderbar mit GNU Gnash. Da es Machinarium aber z.B schon im Humble Bundle 3 gab, lagen meine Hoffnungen auf Samorost2. Beide Point-and-Click-Abenteuer sind optisch sehr ansprechend, sehr detailreich und phantasievoll. Den Entwicklern kann man für das Design nur ein Lob aussprechen.

Wer mehr als der Durchschnitt gezahlt hatte, konnte sich auch den animierten Film Kooky herunterladen oder per Stream anschauen, der die Geschichte eines Spielzeug-Bären erzählt, welcher den Weg zurück nach Hause finden muss.
Schließlich gab es auch noch das Puzzlespiel Windosill. Es lief auf Anhieb, da der Adobe Flashplayer integriert war und wirkte schon durch die bizarren Objekte und Figuren ein wenig surreal.

Das Humble Botanicula Bundle rief gemischte Gefühle bei mir hervor. Die Linuxversionen waren einfach nicht im selben Maße herausragend, wie das z.B. beim Frozenbyte Bundle oder dem Humble Indie Bundle 4 der Fall war.
Auf der anderen Seite funktionierten alle Spiele außer Botanicula auf Anhieb mit GNU Gnash oder selbständig und es gab noch weiteres Bonusmaterial, das noch einmal Optik und Design der Spiele hervorgehoben hat. Wirklich, die herausragenden Designfähigkeiten der Entwickler sind unbestritten.
Und schließlich kann man sich bei einem "Bezahl-was-du-willst"-Angebot nicht beschweren, wo man jederzeit die Möglichkeit hat sich die Spiele für 1 Cent vorher anzusehen und dann immer noch entscheiden kann, ob sie es wert sind oder nicht. Von daher: Wer die Wahl hat, hat die Qual.

Lighttpd: Webserver-Konfiguration mit SSL und Authentifizierung


Im folgenden Beitrag geht es mal nicht um die Stärken und Schwächen verschiedener Webserver, sondern um die Konfiguration des Webservers für mein Spieleserver-Projekt linuxiuvat.de, das weiter in der Entstehung ist und bei dem ich fast ausschließlich auf statische Inhalte setze. Wer selbst am überlegen ist, ob er einen Ubuntu-LTS- oder Debian-Server in Zukunft aufsetzen und einen Webserver betreiben möchte, findet hier vielleicht die richtigen Informationen.
Der Artikel kann nicht die gesamte Dokumentation zu Lighttpd ersetzen. Wer aber meine kommentierte Konfigurationsdatei liest und die Abschnitte zu den verschiedenen Modulen dazu in Beziehung setzt, sollte einen guten Überblick bekommen, wie man mit ein paar Handgriffen einen ressourcenschonenden Webserver mit SSL und Authentifizierung für einen eigenen Webauftritt gestalten kann.

Warum Lighttpd?

Für ein privates Projekt mit fast ausschließlich statischen Inhalten ist Lighttpd bestens geeignet. Sein Speicherverbrauch ist äußerst gering, was ihn ideal für eine vServer-Umgebung macht. Im Regelfall zeigt mir htop nach einer Basisinstallation an, dass Lighty ungefähr 1% von den verfügbaren 225 MB des vServers für sich beansprucht und auch mit ein paar zusätzlichen Modulen steigt dieser Wert kaum an.
Lighttpd hat in der Vergangenheit bei viel größeren Projekten bewiesen, dass er sich ideal zum Ausliefern von statischen Inhalten eignet. Außerdem ist die Dokumentation ausgezeichnet und die bedingte Konfiguration empfand ich als übersichtlich und logisch.
Das weitere Angebot an freien Webservern ist wirklich groß. Einen guten Überblick verschafft z.B.

aptitude search '~shttpd'


Nginx ragt hier als weitere sehr gute Alternative heraus. Doch alle müssen sich mit der Referenz, Apache, messen lassen. Die Wahl hängt wie immer von den eigenen Ansprüchen ab, weswegen man nicht pauschal einen Webserver zum Non plus ultra erklären kann.
Wer es wirklich genügsam haben möchte, sollte sich Busybox merken, denn das bringt neben vielen UNIX-Werkzeugen auch einen eigenen Webserver mit! 🙂

Installation

aptitude install lighttpd

Wichtige Fakten

  • Zentrale Konfigurationsdatei: /etc/lighttpd/lighttpd.conf
  • Zusätzliche Konfiguration: /etc/lighttpd/conf-available/
  • Aktivieren bzw. Deaktivieren von Modulen: lighty-enable-mod Name_des_Moduls bzw. lighty-disable-mod Name_des_Moduls. Konfigurationsdateien werden von /conf-available/ nach /conf-enabled/ verlinkt und somit aktiviert.
  • Einziger Benutzer: linuxiuvat
  • Standard-Webserver-Root: /var/www/server
  • Ohne SSL: Symlink von /var/www/linuxiuvat.de -> /home/linuxiuvat/linuxiuvat.de
  • Mit SSL: Zwei Subdomains munin.linuxiuvat.de und stats.linuxiuvat.de
  • Standardmodule: mod_access, mod_alias, mod_compress, mod_redirect, mod_expire
  • Zusätzliche Module: mod_ssl, mod_cgi, mod_auth, mod_status, mod_accesslog

Meine lighttpd.conf

Meine eigene lighttpd.conf in kommentierter Fassung. Fragen, Anregungen oder Kritik bitte jederzeit in die Kommentare posten.

lighttpd.conf

Konfiguration

Virtuelle Hosts

Um virtuelle Hosts zu verwalten, bietet Lighttpd verschiedene Möglichkeiten an. Für größere Projekte empfiehlt sich das schlichte und effektive mod_simple_vhost oder das verbesserte mod_evhost. Wer selbst zum Webhoster werden möchte und zahlreiche Domains verwalten muss, sollte sich die datenbankgestützte und programmierbare Lösung namens mod_mysql_vhost genauer anschauen.
Für kleine Projekte mit einer überschaubaren Anzahl von Domains und Subdomains ist aber Lightys bedingte Konfiguration vollkommen ausreichend.

Hauptseite ohne SSL

Die Inhalte werden auf der Hauptseite unverschlüsselt ausgeliefert, wozu die $SERVER["socket"]-Bedingung Anwendung findet. Das Dokumenten-Wurzelverzeichnis wird in das Home-Verzeichnis des Benutzers linuxiuvat verlinkt. Neue Inhalte werden dort eingestellt. Die Host-Bedingung prüft, ob entweder www.linuxiuvat.de oder nur linuxiuvat.de aufgerufen wurde und führt danach alle Anweisungen im Konfigurationsblock aus. Zusätzlich zur Datei access.log, die später noch vorgestellt wird, ist hier noch der Pfad zu einer angepassten 404-Fehlerseite zu sehen, sowie der Pfad zur error.log.

$SERVER["socket"] == "134.0.24.218:80" {
	$HTTP["host"] =~ "^(www.)?linuxiuvat.de$" {
		server.document-root = "/var/www/linuxiuvat.de"
		server.error-handler-404 = "/e404.htm"
		accesslog.filename = "/var/log/lighttpd/linuxiuvat.de/access.log"
		server.errorlog = "/var/log/lighttpd/linuxiuvat.de/error.log"
    }
}

Mit der folgenden Bedingung lässt sich verhindern, dass die Webseite direkt über die Eingabe der IP-Adresse aufgerufen werden kann, wobei das Modul mod_access Anwendung findet.

$HTTP["host"] =~ "134.0.24.218" {
	url.access-deny = ( "" )
}

mod_cgi

Die einzige CGI-Datei, die ich z.Z. benutze, befindet sich im Verzeichnis /cgi-bin/. Sie kommt zum Einsatz, wenn jemand einen Kommentar in meinem mit Chronicle erzeugten Newsblog hinterlassen möchte.
Das Modul wird mit

lighty-enable-mod cgi


aktiviert.

$HTTP["url"] =~ "^/cgi-bin/" {
	cgi.assign = ( "" => "/usr/bin/perl" )
}

mod_accesslog

Mit dem Modul mod_accesslog werden alle Anfragen an den Webserver mitgeloggt. Aktiviert wird es mit

lighty-enable-mod accesslog


1. /etc/lighttpd/conf-available/10-accesslog

server.modules += ( "mod_accesslog" )
accesslog.filename = "/var/log/lighttpd/access.log"

Damit die Datei access.log für jeden Host einzeln angelegt wird, kann man sie wie bei Lighttpd üblich in eine bedingte Konfiguration einbinden.

accesslog.filename = "/var/log/lighttpd/linuxiuvat.de/access.log"

mod_expire

Das Modul mod_expire hilft dabei statische Inhalte aggressiv zu cachen, d.h. Bilder, CSS- und Javascriptdateien erhalten bei der Übertragung an den Webbrowser ein Verfallsdatum bis zu dem der Browser die Dateien aus seinem Cache lädt anstatt sie neu vom Server anzufordern. Das spart Bandbreite und führt zu schnelleren Ladezeiten.
Aktivieren mit

lighty-enable-mod expire


Die Bedingung lässt sich z.B. so schreiben, dass nur Dateien mit einer bestimmten Dateiendung zwischengespeichert werden sollen. In diesem Fall beträgt die Verfallszeit sieben Tage vom ersten Aufruf an.

	$HTTP["url"] =~ ".(jpg|gif|png|css|js)$" {
	     expire.url = ( "" => "access 7 days" )
	}

Natürlich kann man die Bedingung auch so schreiben, dass die Dateien nur aus zwei verschiedenen Verzeichnissen gecached werden sollen.

	$HTTP["url"] =~ "^/img/|/stats/oa/icons/" {
	     expire.url = ("" => "access 7 days")
	}

Mit Hilfe des Firefox-Plugins Live-HTTP-Headers oder mit curl kann man schnell feststellen, ob tatsächlich der richtige HTTP-Header verschickt wird.

curl -I http://linuxiuvat.de/img/openarena.jpg


Quelle: Forum von nixcraft.com.

mod_ssl

Zum Aktivieren einer verschlüsselten SSL-Verbindung per HTTPS genügt wieder ein
lighty-enable-mod ssl
Das SSL-Zertifikat habe ich mir selbst ausgestellt, was ich für kleine Projekte, bei denen man der einzige Betrachter der verschlüsselten Seite ist auch empfehlen kann. Wer jedoch eine Shop-Seite zusammenzimmert sollte seine Kunden wenn möglich nicht mit einer Warnmeldung im Browser verschrecken und ein "richtiges" Zertifikat kaufen. 🙂

Als Superuser:

openssl req -new -x509 -keyout linuxiuvat.de.pem -out linuxiuvat.de.pem -days 365 -nodes


Die Pem-Datei wurde nach /etc/lighttpd/ssl/linuxiuvat.de/linuxiuvat.de.pem kopiert und die Dateirechte aus Sicherheitsgründen mit chmod 400 eingeschränkt.

1. /etc/lighttpd/conf-available/10-ssl.conf
Ich habe die Konfiguration getrennt und den Teil, der sich um die SSL-Engine selbst dreht in der 10-ssl.conf belassen. Wichtig ist hier nur die richtige Adresse für den Socket einzutragen, also eure IP-Adresse und den Port des Webservers. Alternativ kann man auch :443 oder 0.0.0.0:443 schreiben, wenn man möchte, dass der Webserver auf allen Interfaces Anfragen entgegennimmt. Die Schreibweise muss aber überall die gleiche sein.

$SERVER["socket"] == "134.0.24.218:443" {
     ssl.engine = "enable"
     ssl.pemfile = "/etc/lighttpd/ssl/linuxiuvat.de/linuxiuvat.de.pem"
     ssl.cipher-list = "ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM"
     ssl.honor-cipher-order = "enable"
}

2. /etc/lighttpd/lighttpd.conf
Durch die bedingte Konfiguration sind die beiden Subdomains munin.linuxiuvat.de und stats.linuxiuvat.de nur über HTTPS zu erreichen. Es wurde jeweils das Dokumenten-Wurzelverzeichnis geändert, so dass es auf den Standardausgabepfad von Munin und Awffull zeigt. Die Statusseite ist über https://munin.linuxiuvat.de/status zu erreichen und wird durch das Modul mod_status aktiviert.

$SERVER["socket"] == "134.0.24.218:443" {
		$HTTP["host"] =~ "(^|.)munin.linuxiuvat.de$" {
			server.document-root = "/var/cache/munin/www"
			status.status-url = "/status"
		}
		$HTTP["host"] =~ "(^|.)stats.linuxiuvat.de$" {
			server.document-root = "/var/www/awffull/"
		}
}

mod_auth

Das Authentifizierungsmodul ist notwendig, um den Zugriff auf einzelne Verzeichnisse einzuschränken. In meinem Fall genügt es, dass ich die Munin- und Awffull-Statistiken anschauen kann. Das Modul mod_auth wird mit

lighty-enable-mod auth


aktiviert. Es gibt zwei verschiedene Methoden sich zu authentifizieren - Basic und Digest. Je nach Methode existieren unterschiedliche Backends, wie die Passwörter aufgebaut und gespeichert werden. Ich habe mich für Digest und htdigest entschieden, wodurch das Passwort nicht in Klartext übertragen wird und als MD5-Hash abgespeichert wird. Alle Methoden sind dennoch nur dann wirklich sicher, wenn das Passwort über eine verschlüsselte Verbindung übertragen wird.
1. /etc/lighttpd/conf-available/10-auth.conf

server.modules += ( "mod_auth" )
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/.passwd"
auth.debug = 2
$HTTP["host"] =~ "(^|.)munin.linuxiuvat.de$" {
 auth.require = ( "" =>
    (
    "method" => "digest",
    "realm" => "privat",
    "require" => "valid-user"
    ),
 )
}

Auth.debug=2 ist sehr gesprächig, aber hilfreich, wenn man mehr über erfolgreiche und nicht erfolgreiche Loginversuche wissen möchte. Die versteckte Passwortdatei .passwd mit den benötigten Inhalten lässt sich wie folgt erstellen. Der "Realm" kann beliebig gewählt werden.

htdigest -c /etc/lighttpd/.passwd 'privat' Bob


Das Programm htdigest befindet sich im Paket apache2-utils und wird nur für diese eine Aufgabe benötigt. Danach hat nur noch der Benutzer Bob mit dem zuvor eingegebenen Passwort Zugriff auf das Verzeichnis, wobei die gesamte Verbindung gegenüber Dritten per SSL abgesichert ist.

mod_status

Mit mod_status gibt es Auskunft über Uptime, Anfragen pro Sekunde und aktive Verbindungen, kurz zusammengefasst also über den Status des Webservers. Die HTML-Seite ist schlicht und übersichtlich. Um die Daten per Munin mit einem Graphen zu visualisieren kann man noch ein ?auto an die URL anhängen, wodurch die Ausgabe als Text dargestellt wird. Hierzu in einem anderen Artikel mehr.
Das Modul wird mit
lighty-enable-mod status
aktiviert. Die Zeile

status.status-url = "/status"

muss wie in der Konfiguration gezeigt innerhalb der bedingten Host-Konfiguration eingefügt werden.

Was sonst noch?

Lighttpd bietet noch weit mehr Möglichkeiten und Module. Das sind zur Zeit aber alle, die ich für mein Projekt und dieses Beispiel verwende. Man sollte im Hinterkopf noch mod_evasive und die Variablen

server.kbytes-per-second
connection.kbytes-per-second

behalten, wenn man den Traffic auf dem Webserver besser steuern möchte.
Für Lighttpd gilt: Fast jedes Problem lässt sich mit der bedingten Konfiguration lösen.

Links