CraftBukkit Server unter Ubuntu aufsetzen

Für Minecraft gibt es ja zwei Server, den offiziellen und den CraftBukkit Server welcher unter http://bukkit.org/ heruntergeladen werden kann. Der CraftBukkit Server hat dabei den Vorteil das er mit Plugins ausgestattet werden kann, welche die Funktionalität des Spieles erhöhen.

Um den Server auf einem Ubuntusystem aufzusetzen muss im ersten Schritt Java installiert werden:

apt-get install openjdk-6-jre-headless

Danach legt man sich den passenden Nutzer für Minecraft an und wechselt in dessen Kontext:

adduser minecraft
su minecraft
cd /home/minecraft/

Dort lädt man nun mittels „wget“ die neuste CraftBukkit Version herunter:

wget "http://dl.bukkit.org/downloads/craftbukkit/get/01119_1.2.5-R3.0/craftbukkit.jar" -O "craftbukkit.jar"

Das Bashskript „start-server.sh“ soll den Server dann starten:

#!/bin/sh
screen java -Xmx2048M -Xms2048M -jar craftbukkit.jar

Nachdem der Server mittels „screen“ gestartet wurde, drückt man „Strg + A“ und anschließend „Strg + D“ um ihn in den Hintergrund zu legen. Beim ersten Start sollte der Server einen Ordner „plugins“ anlegen. In diesen kann man dann eigene Plugins legen. Für den Anfang sollte man es mit folgenden Plugins versuchen:

Diese können auch ohne Rechteplugin genutzt werden, da die Befehle nur den Serveroperatoren zu Verfügung stehen.

Weitere Informationen gibt es unter:
https://seeseekey.net/archive/4276

Simple HTTP Server

Wer mal schnell einen HTTP Server unter Linux aufsetzen möchte, der sollte einfach in das entsprechende Verzeichnis gehen und dort:

python -m SimpleHTTPServer

ausführen. Anschließend ist dieses Verzeichnis per HTTP (standardmäßig unter Port 8000) erreichbar. Möchte man einen anderen Port benutzen so gibt man einfach die entsprechende Portnummer als letztes Argument mit an.

Weitere Informationen gibt es unter:
http://docs.python.org/library/simplehttpserver.html

Rebuild of Invertika

Nach einigen Monaten ist es Zeit den Zwischenstand für den neuen Invertika Server und den Client vorzustellen. Invertika soll somit auf einer neuen technischen Basis stehen. Diese neue technische Basis sieht so aus, das der Server in C# geschrieben wird und somit unter Mono und .NET läuft. Für den Client ist eine Implementation als Webapplikation angedacht. Das ganze hatte dabei mehrere Gründe:

  • die Produktivität ist in C# höher als in C/C++
  • es können keine Speicherlöcher entstehen
  • durch die automatische Speicherverwaltung wird der Entwickler entlastet
  • modernes und konsistentes Framework
  • Anpassung auf eigene Bedürfnisse
  • schnellere Entwicklung
  • IPv6 Unterstützung ist problemlos möglich
  • bessere Unterstützung von mobilen Geräten

Neben diesen Gründen sind es auch einige Dinge wie „typedefs“ welche nicht unbedingt zum Verständnis beitrugen oder mehrere Klassen und Strukturen in einer Datei, welche das ganze ziemlich unübersichtlich machen. Auch die Abhängigkeit von zu vielen Bibliotheken wurde verringert.

Der Invertika Code in der Entwicklung

Nach einer kurzen Planungphase ging es dann am 3. Januar los mit der Entwicklung. Zuerst wurde damit begonnen den Accountserver zu portierten. Dabei wurden im Gegensatz zum Original einige Dinge verändern:

  • das Netzwerk setzt nun statt auf der Bibliothek „enet“ direkt auf TCP auf
  • PhysFS wurde wegrationalisiert

Am 13. Januar (einem Freitag ;)) waren die größten Portierungprobleme beim Accountserver gelöst und es wurde begonnen den Gameserver zu portieren. Am Gameserver ist die einzige größere Änderung die Anpassung der Skriptschnittstelle, damit diese mit den CLR Sprachen kompatibel ist. Die Roadmap für die Portierung sah dabei so aus:

  • Januar 2012: Implementation des Invertika Server
  • Februar 2012 Implementation des Invertika Clients
  • März 2012: Test der Software

Wie sich das für eine ordentliche Roadmap gehört wurde sie nicht eingehalten. So ist einiges noch nicht fertig und auch am Client muss noch viel getan werden. Der Client sollte ursprünglich auch in C# geschrieben werden und es wurde damit auch begonnen. Theoretisch ließe sich diese Clientvariante auf die Plattformen Windows, Linux, Mac OS X, iOS und Android bringen, praktisch ist es mit kleineren und größeren Problemen verbunden.

Ein generelles Problem an einem solchen Client ist, das er auf der jeweiligen Zielplattform erst installiert (oder auch kompiliert) werden und außerdem vom Nutzer aktuell gehalten werden muss. Schöner wäre es, wenn man diese Hürde aus dem Weg geschafft wird. Mittlerweile ist es dank Techniken wie Websockets, Webworkern und Canvas möglich, den Client komplett als Webapplikation zu schreiben.

Die Anfänge des neuen Clients basieren dabei auf der Techdemo „mana.js“ welche unter https://github.com/bjorn/mana.js zu finden ist. Der Vorteil der webbasierten Lösung ist dabei die große Kompatibilität mit unterschiedlichsten Geräten solange sie über einen aktuellen Browser verfügen.

Die Techdemo des Clients auf einem iPad

Während der Entwicklung bekamen die einzelnen Teile auch Namen die wie folgt lauten:

  • invertika (Client)
  • invertika-account (Accountserver)
  • invertika-game (Gameserver)

Der Quelltext sollte in den nächsten Tagen im Repository (http://source.invertika.org) erscheinen und zur Mitarbeit einladen ;)

Weitere Informationen gibt es unter:
http://invertika.org

Ubuntu 10.04 (Lucid) Server upgraden

Ein Ubuntu Server upzugraden ist so eine Sache, vor allem wenn man auf den Server nur per SSH zu greifen kann. Konkret geht es in diesem Artikel um ein Update von 10.04 (Lucid) auf 10.10 (Maverick). Dazu installieren wir erst einmal das Paket „update-manager-core“ mittels

apt-get install update-manager-core

und schauen dann mittels

nano /etc/update-manager/release-upgrades

in die Konfigurationsdatei des selben. Dort sollte eine Zeile

Prompt=lts

stehen, welche wir in

Prompt=normal

ändern. Nun sorgen wir noch dafür das der Server auf dem aktuellsten Stand ist, bevor es an das Update geht:

apt-get update
apt-get dist-upgrade

Da das Update über SSH gesteuert wird und es passieren kann das die SSH Verbindung während des Updates wegbricht, starten wir den Updatevorgang über „screen“ an:

screen do-release-upgrade

Das Upgrade startet dann und bringt einige Meldungen und Fragen welche bestätigt werden müssen. Gleichzeitig sagt es dem Nutzer Bescheid das ein weiterer SSH Server für den Notfall auf dem Port 1022 gestartet wurde. Nach dem Upgrade schauen wir ob die neue Version auch angekommen ist und starten den Rechner neu:

cat /etc/lsb-release
reboot -f

Nach dem Neustart sollte dann erst mal wieder ein

apt-get update
apt-get dist-upgrade

ausgeführt werden um sicherzustellen das das System aktuell ist. Bei mir traten hier zwei Probleme auf. Das erste Problem äußerte sich in der Fehlermeldung:

Failed to connect to socket /com/ubuntu/upstart

Hier half es im Terminal

dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl

einzugeben und das ganze Upgrade wieder zu starten. Der zweite Fehler war

/usr/sbin/grub-probe: error: cannot find a device for / (is /dev mounted?).

Hier half es das Paket „grub-pc“ zu deinstallieren und durch das Paket „grub“ zu ersetzen. Danach lief das Upgrade normal durch und Maverick war auf dem Server installiert.

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/GRUB
http://wiki.ubuntuusers.de/upgrade
http://wiki.ubuntuusers.de/Upgrade_auf_Maverick
http://mrzard.posterous.com/failed-to-connect-to-socket-comubuntuupstart

MiniDLNA auf einem Ubuntu Server installieren

Bei MiniDLNA han­delt es sich um ein UPnP/DLNA Ser­ver, mit wel­chem man z.B. auf einen Fern­se­her strea­men kann. Im Gegensatz zu Mediatomb und uShare arbeitet MiniDLNA problemlos mit Samsung Fernsehern zusammen und bietet so MKV, AVI und noch einige andere Formate. Nur das spulen scheint leider nicht zu funktionieren :(

Möchte man MiniDLNA auf einem Ubuntu Server aufsetzen so sollte man es mittels:

sudo apt-get install minidlna

installieren. Nach der Installation geht es an die Konfiguration. Dazu öffnet man die conf Datei mittels

sudo nano /etc/minidlna.conf

Nach der Konfiguration könnte die Datei dann so aussehen:

# port for HTTP (descriptions, SOAP, media transfer) traffic
port=8200

# network interfaces to serve, comma delimited
network_interface=eth0

# set this to the directory you want scanned.
# * if have multiple directories, you can have multiple media_dir= lines
# * if you want to restrict a media_dir to a specific content type, you
#   can prepend the type, followed by a comma, to the directory:
#   + "A" for audio  (eg. media_dir=A,/home/jmaggard/Music)
#   + "V" for video  (eg. media_dir=V,/home/jmaggard/Videos)
#   + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures)
media_dir=A,/home/seeseekey/share/Media Archiv/Group Musik
media_dir=V,/home/seeseekey/share/Media Archiv/Group Video

# set this if you want to customize the name that shows up on your clients
friendly_name=LEXA

# set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache
#db_dir=/var/cache/minidlna

# set this if you would like to specify the directory where you want MiniDLNA to store its log file
#log_dir=/var/log

# this should be a list of file names to check for when searching for album art
# note: names should be delimited with a forward slash ("/")
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg

# set this to no to disable inotify monitoring to automatically discover new files
# note: the default is yes
inotify=yes

# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO
enable_tivo=no

# set this to strictly adhere to DLNA standards.
# * This will allow server-side downscaling of very large JPEG images,
#   which may hurt JPEG serving performance on (at least) Sony DLNA products.
strict_dlna=no

# default presentation url is http address on port 80
#presentation_url=http://www.mylan/index.php

# notify interval in seconds. default is 895 seconds.
notify_interval=900

# serial and model number the daemon will report to clients
# in its XML description
serial=12345678
model_number=1

# use different container as root of the tree
# possible values:
#   + "." - use standard container (this is the default)
#   + "B" - "Browse Directory"
#   + "M" - "Music"
#   + "V" - "Video"
#   + "P" - "Pictures"
# if you specify "B" and client device is audio-only then "Music/Folders" will be used as root
#root_container=.

Wenn man mit der Konfiguration fertig ist sollte man die Datenbank einmal neu erstellen. Dies funktioniert mittels:

sudo minidlna -f /etc/minidlna.conf -R -d

Möchte man MiniDLNA neustarten so funktioniert das mittels:

sudo /etc/init.d/minidlna restart

Anschließend kann man sich seine Mediensammlung auf den Fernseher streamen lassen.

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/MiniDLNA
http://www.icancode.de/2011/07/samsung_dlna/
http://pario.no/2011/08/29/configure-minidlna-to-work-with-a-sony-bravidia-kdl-40ex711-tv/