Browsergame-Hosting Teil 1: Vorüberlegungen & Betriebssystem
Browsergame-Betreiber haben es schwer. Es ist noch lange nicht damit getan, ein gutes Spiel zu programmieren. Neben der eigentlichen Entwicklungsarbeit muß das Spiel auch immer irgendwie zum Spieler gelangen. Die kostengünstigste und wohl auch beliebteste Variante der Bereitstellung ist hier wohl ein eigener Server. Aber Achtung: Die Anschaffung eines eigenen Servers will wohl überlegt sein. In dieser dreiteiligen Artikelserie gehen wir die wichtigsten Schritte zum eigenen Server mit euch durch und geben jede Menge Tipps für den Start.
Im folgenden Artikel wird beschrieben, was zu beachten ist, wenn man einen Root- oder vServer für ein Browsergame einrichten möchte. Über diesen Server sollen das Spiel an sich sowie weitere Dienste wie zum Beispiel Forum und E-Mail laufen. Wir werden uns ausschließlich auf linuxbasierte Server konzentrieren, da sie in den meisten Fällen flexibler und kostengünstiger als windowsbasierte Systeme sind. Deshalb sind für das Verständnis dieses Artikels grundlegende Linuxkenntnisse notwendig. Die meisten Schritte in diesem Artikel werden nur grundlegend angeschnitten. Alles ausführlich zu beschreiben würde in diesem Rahmen zu viel Platz in Anspruch nehmen. Deshalb sei jedem empfohlen, der einen Rootserver mit den Empfehlungen aus diesem Artikel aufsetzen möchte, nochmals nach passenden Anleitungen im Internet zu suchen.
An dieser Stelle sei noch einmal gesagt: An die Einrichtung eines solchen Rootservers sollte man sich nur wagen, wenn man zumindest grundlegende Kenntnisse von Linux hat. Ansonsten wird man große Probleme haben den Server nach eigenen Wünschen zu konfigurieren und gegen Hackerangriffe abzusichern. Eine hundertprozentige Sicherheit gegen solche Angriffe gibt es natürlich nicht, aber der folgende Artikel zeigt auch, wie man Hackern (und solchen die es glauben zu sein) das Leben schwer macht.
Vorüberlegungen & Installation des Betriebssystems
Die erste Frage die sich stellt, wenn man selbst ein Browsergame hosten will, lautet: Bei welchem Hoster miete ich den Server? Für diese Frage gibt es keine pauschale Antwort. Meist hängt eine Entscheidung von Vorlieben sowie dem eigenen Geldbeutel ab. Als gute Anlaufstelle zur Suche von Hostern und Erfahrungsberichten hat sich http://www.webhostlist.de/ erwiesen. Achten sollte man neben den eigentlichen Merkmalen des Servers auf Inklusivleistungen wie Traffic, Rescue-Image, Reboots, .... Insbesondere Traffic ist ein wichtiger Punkt, denn überschreitet man den festgelegten Inklusivbetrag werden meist deftige Nachzahlungen fällig. Aber keine Panik: Die meisten Angebote enthalten mehr als genügend monatlichen Traffic für ein einfaches Browsergame. 100GB sollten für den Anfang locker reichen. Wer auf Nummer sicher gehen will kann natürlich auch einen Server mit mehr Inklusivtraffic mieten.
Nachdem ein Hoster ausgesucht und alles vertragliche geregelt wurde, steht irgendwo in einem fernen Rechenzentrum ein frisch installierter Server zur Verfügung. Noch bevor man irgendetwas auf diesen Server installiert, sollte man sich ein paar grundlegende Gedanken machen. Zum Beispiel über die Partitionierung der Festplatte. Die einfachste Variante, die viele Webhoster auch bei ihren vorinstallierten Images verwenden, besteht aus zwei Partitionen. Eine Partition von der Größe des Arbeitsspeichers dient als Swap-Partition, während die andere Partition für sämtliche Daten zur Verfügung steht. Diese Aufteilung ist nicht empfehlenswert. Besser ist es die Festplatte in mehr Partitionen aufzuteilen. Ein Vorteil davon ist, dass der Server auf diese Weise auch dann noch läuft, wenn eine Partition, zum Beispiel aufgrund der Menge an Logmeldungen eines DoS-Angriffes, voll ist.
Eine mögliche Partitionierung sieht wie folgt aus:
- swap
- /
- /home
- /var
- /tmp
swap ist dabei die Swap-Partition und sollte ungefähr die gleiche Größe wie der Arbeitsspeicher haben.
/ ist die sogenannte Rootpartition auf der sich sämtliche Programme, Einstellungen, usw. befinden. Als Größe sollten dafür 5GB ohne Probleme reichen.
/home ist die Partition, auf der sich die Home-Verzeichnisse der einzelnen Nutzer des Servers befinden. In unserem Fall hat sie keine allzugroße Bedeutung, da später Dienste wie FTP oder E-Mail nicht auf Systemnutzern, sondern auf virtuellen Nutzern aufbauen werden. Allerdings ist es trotzdem sinnvoll den Home-Verzeichnissen einen gewissen Speicherplatz zuzugestehen. So besteht die Möglichkeit später jedem Entwickler einen eigenen SSH-Account mit eigenem Home-Verzeichnis zu geben, in dem er beliebige Daten speichern kann. Ist die Partition aus irgendwelchen Gründen voll, beeinträchtigt dies nicht die anderen Partitionen und somit auch nicht den normalen Betrieb des Servers.
Unter /var werden später sowohl die Daten des Spiels an sich als auch der Quellcodeverwaltung und die E-Mails liegen. Da die Daten auf dieser Partition also voraussichtlich den meisten Platz beanspruchen werden, bietet es sich an, diese Partition gleich sehr großzügig mit Speicherplatz zu versehen.
/tmp enthält sämtliche temporären Daten. Dafür reicht eine Partitionsgröße im einstelligen Gigabytebereich. Da unter /tmp keinerlei ausführbare Dateien liegen müssen bietet es sich an, /tmp, wie im obigen Beispiel angedeutet, als eigene Partition zu erstellen. So kann man /tmp mit der Option noexec mounten, welche dafür sorgt, dass ausführbare Dateien die unterhalb von /tmp liegen nicht ausgeführt werden können. Dies schützt somit vor Hackerangriffen bei denen über eine Sicherheitslücke, beispielsweise in einem PHP-Skript, eine hochgeladene Datei ausgeführt werden kann. Liegt die hochgeladene Datei in /tmp hat der Hacker in diesem Fall Pech.
Die einfachste Möglichkeit dieses Partitionsschema umzusetzen ist, den gesamten Server einfach selbst nochmal komplett neu zu installieren. Dies ist kein großer Aufwand, da am vorhandenen Betriebssystem bisher noch nichts verändert wurde. Doch bevor man sich dazu entschließt den Rechner komplett neu zu bespielen sollte man sich vergewissern, dass dies überhaupt möglich ist und man im Notfall das ursprüngliche Image wieder herstellen kann. Eine Neuinstallation ist zum Beispiel bei vielen vServern nicht möglich, da diese mit einem angepassten Kernel laufen, der bei einer Neuinstallation ersetzt werden würde. Auch funktioniert eine Neuinstallation nicht, wenn der Hoster kein sogenanntes Rescue-Image zur Verfügung stellt. Denn aus diesem heraus soll die Neuinstallation vorgenommen werden.
Sind diese Bedingungen für eine erfolgreiche Neuinstallation erfüllt kann es an die Neuinstallation gehen. Dazu empfiehlt es sich erstmal die gesamte Netzwerkkonfiguration des bestehenden Systems zu kopieren. Diese wird dann für das neubespielte System benötigt. Danach wird das Rescue-Image gestartet, was im Prinzip einfach nur eine Live-CD ist. Sie benötigt also nicht die Festplatte des Servers, wodurch sie aus dem Rescue-Image heraus problemlos neu partitioniert und formatiert werden kann.
Als Erstes wird mit einem Tool wie cfdisk oder parted das gewünschte Partitionsschema angelegt. Nun soll auf der neupartitionierten Festplatte wieder ein Betriebssystem installiert werden. Unter debianbasierten Distributionen dient dazu die Skriptsammlung debootstrap. Da debootstrap nur ein großes Shellskript ist, läuft es auch unter nicht-debianbasierten Distributionen. Anleitungen, wie das bootstrapping dann durchgeführt wird, finden sich in vielerlei Ausführung im Internet.
Nach dem bootstrappen befindet sich auf der Festplatte ein Minimal-Image des Betriebssystems, welches allerdings noch nicht ohne weiteres lauffähig ist. Es müssen zumindest noch ein Bootloader sowie ein SSH-Server nachinstalliert werden. Ersterer damit der Server überhaupt alleine starten kann und letzterer damit man auch wieder auf den Server zugreifen kann. Nun noch die gesicherte Netzwerkkonfiguration in das gebootstrapte System reinkopieren und schon sollte der Server von alleine starten können.
Startet der Server nicht von alleine, so ist noch einmal eine Überprüfung des Bootloaders und das Lesen relevanter Logdateien sinnvoll. Dadurch sollte sich der Fehler finden lassen.
Teil 2 dieser Artikelserie beschäftigt sich mit der Einrichtung der wichtigsten Dienste wie Webserver, Datenbank und Mailserver und erscheint in der ersten Oktoberwoche 2007.