Ein Beitrag vom 3. Mai 2014 beschreibt ein Shell-Skript, das die Aktualisierung eines Minecraft-Servers automatisiert. Der Server basiert auf Java und brachte damals keine eigene Aktualisierungsroutine mit. Betreiber mussten die Datei minecraft_server.jar deshalb von Hand austauschen.
Der Autor betrachtet die manuelle Freigabe der JAR-Datei durch Kunden als Sicherheitsrisiko. Wer eine eigene Datei in der Serverumgebung ersetzen darf, kann dort auch fremden Code ausführen. Der vorgestellte Ansatz hält die Aktualisierung beim Host und verhindert, dass einzelne Kunden die Serverdatei selbst austauschen.
Versionsdatei steuert den Download
Das Skript liest eine JSON-Datei mit den verfügbaren Minecraft-Versionen ein und vergleicht die aktuelle Version mit dem Inhalt einer lokalen Datei namens mc_version.txt. Bei einer Abweichung wird die passende JAR-Datei geladen. Ein Wrapper startet den Prüfvorgang beim Hochfahren des Servers, sodass der Betreiber die Aktualisierung nicht für jede Instanz einzeln ausführen muss.
minecraft_version_old="$(head -n1 mc_version.txt)"
minecraft_version="$(wget -qO- http://s3.amazonaws.com/Minecraft.Download/versions/versions.json | ... )"
if [ "$minecraft_version_old" != "$minecraft_version" ]; then
wget "http://s3.amazonaws.com/Minecraft.Download/versions/$minecraft_version/minecraft_server.$minecraft_version.jar"
fi
Die konkrete Downloadstruktur und die im Skript verwendeten Endpunkte gehören zum technischen Stand von 2014 und müssen für einen aktuellen Serverbetrieb geprüft werden. Das Grundprinzip bleibt für Spielserver interessant: Eine zentrale Versionsdatei, ein kontrollierter Download und eine lokale Versionsmarke trennen den Updateprozess von den einzelnen Spielinstanzen. Ein früherer Test zu Diablo 3 und einer lokalen Serverantwort zeigte bereits, wie eng Spielclients und ihre Infrastruktur zusammenarbeiten.
