Projekt: Minecraft Server WoL Bukkit

Projektbeschreibung

Die Cyber Engineering betreibt seit längerem einen eigenen Minecraft Server. Wünsche wachsen, die Fans werden mehr... Aus einer Welt wurden vier, Plugins sollten her, der Server fing an zu "ruckeln". Endlich war ein I7 Board mit 16 GB Speicher übrig und ein neues Projekt konnte aufgelegt werden.

Die Anforderungen

  • Minecraft Server mit Bukkit (statt Vanilla)
  • bestehende Welten werden übernommen
  • bestehende Serverkonfigurationen (OPs, Spieler, etc.) werden übernommen
  • keine Konfigurationsänderungen an den Spieler-Rechnern
  • Energiesparmodus (Server aus) wenn niemand spielt
  • jeder Spieler kann den Server starten

 

03/22/16

Minecraft Server WoL Bukkit Teil B Wake on LAN / Wake on WAN

Der erste Teil des Projekts "Minecraft Server WoL Bukkit" zeigt die Einstellungen am PC respektive Server für Wake on Lan (WoL), Tools zum versenden des Magic Packets, Routereinstellungen für Wake on Wan (WoW) und WEB Dienste für WoW.

WoL setzt den Empfang eines sogenannten Magic Packet (Schutzmarke AMD) voraus. Dieses wird an die MAC Adresse des Rechners gesendet, eine IP hat die Maschine noch nicht. Inhalt des Datenpakets ist sechs Mal der Wert FF, gefolgt von sechzehn Mal der MAC Adresse des Netzwerkadapters. Die Funktion WoL muß sowohl von Netzwerkkarte, Hauptplatine, BIOS und Betriebssystem unterstützt werden, was bei aktuellen Computern und Systemen der Fall ist.

Die Einstellungen für WoL führen uns ins BIOS und unter Windows in die erweiterten Eigenschaften der Netzwerkkarte.

Im BIOS wird unter der Rubrik Power Management die Funktion WoL aktiviert und das ACPI auf  S4 (Suspend-to-Disk) gestellt. S3  (Suspend-to-RAM) oder S5 (Soft-Off) sind nicht geeignet.

Unter Windows finden wir in Systemsteuerung, Netzwerk- und Freigabecenter, Adaptereinstellungen ändern die Netzwerkgeräte. Wir klicken mit der rechten Maustaste auf die Netzwerkkarte, dann auf Eigenschaften.

 

Der Knopf "Konfigurieren..." oben rechts bring uns in den Konfigurationsdialog. Im Register "Erweitert" wählen wir aus der Eigenschaften-Liste den Eintrag "Bei Magic Packet aufwecken" und setzen den Wert auf "Aktiviert"

und schließen alle Dialoge.

Der Maschine ist als Server auch eine feste IP zuzuweisen.

Die Netzwerkeinstellungen werden in der Eingabeaufforderung mit dem Befehl "ipconfig /all" konrolliert. Bei der Gelegenheit notieren wir die MAC Adresse. (Physikalische Adresse)

Für weitere Tests wird in den Energieoptionen (unter Systemsteuerung) ein Energieplan auf 5 Minuten angepaßt.

Erwähnenswert sind folgende erweiterten Einstellungen:

  • "Kennwort bei Reaktivierung anfordern" "nein"
  • "Energie sparen" "Deaktivierung nach" "5 Minuten"
  • "Energie sparen" "Hybriden Standbymodus zulassen" "Ein"
  • "Energie sparen" "Ruhezustand nach" "Nie"

Um den Rechner nun aufzuwecken muss ein Magic Packet generiert werden. Gute Tools sind

WOL.EXE

für die Befehlszeile beziehungsweise

WakeOnLan Tool

mit graphischer Oberfläche (beide Downloads bei Heise). Um den Server per Doppelklick zu starten wird eine Batch Datei erstellt, eine Verknüpfung hierzu auf dem Desktop gelegt.

Wichtig ist hier Zeile 6: Auf Laufwerk Z:\ liegt die wol.exe, welche die Netzwerkkarte mit der MAC 40:61:86:49:68:67 wecken soll.

WoW efordert einen Eingriff in den Router. Da das WoL Paket an Port 9 (UPD) nur für lokale Netzwerke konzipiert ist und der zu erweckende PC keine IP hat, muß in der ARP Tabelle des Routers die MAC Adresse fest der statischen IP des Minecraft-Servers zugeordnet werden. In der Regel kann das nicht über das WEB-Interface des Routers ausgeführt werden, man muß hier die Konsole bemühen.

Bei einer Zywall (Hersteller Zyxel) kann die Konsole über das WEB Interface gestartet werden

und dann wird der ARP Tabelle der Statischen IP des Minecraftservers dessen MAC Adresse zugeordnet:

Erst jetzt kann eine NAT Regel erstellt werden.

Die Firewall nicht zu vergessen

Die korrekte Konfiguration des Routers testen wir unter der WEB Adresse

Hier werden die notwendigen Daten eingegeben (IP oder DDNS Name des Routers, Port 9 und MAC der Netzwerkkarte) und der Rechner sollte binnen Sekunden 

aus dem Ruhezustand erwachen.

Windos Ereignisse zum Thema WoL werden weiter unten in "Minecraft Server WoL Bukkit Teil D WoL Aktionen und Ruhemodus aussetzen" behandelt. 

 

04/04/16

Minecraft Server WoL Bukkit Teil C Bukkit Server Installation und Konfiguration

Der erste Test wurde mit einem Vanilla-Server durchgeführt. Problem war: Als der Computer aus dem Ruhezustand erwacht war vermeldete der Server eine enorme Anzahl verpaßter Ticks und beendete seinen Dienst.

Strategie ist folglich: vor dem Ruhezustand den Server beenden, nach dem Ruhezustand starten. Stellt sich die Frage, wie der Minecraft Server beendet werden soll, beziehungsweise, an welchem Ereignis man dies festmachen kann.

Hierfür gibt es ein Bukket Server Plugin ServerSleeper

Plan ist: war eine Stunde kein Spieler online, kann der Server herunterfahren.

Dem Projekt "Professioneller Minecraft Server" widmet sich die Site https://bukkit.org/. Es gibt einige Ausprägungen des Server-Programms: beispielsweise Craftbukkit und Spigot.

Hier gibt es den Download für die Versionen des frei verfügbare Bukkit Server (https://minecraft-statistic.net/en/download.html), ein Quick Setup (http://wiki.bukkit.org/Setting_up_a_server) und ein vollständiges Wiki (http://wiki.bukkit.org/Main_Page).

Eine Grafische Oberfläche (GUI Graphic User Interface) kann ebenfalls geladen werden (http://dev.bukkit.org/bukkit-plugins/bukkitgui/files/). Diese lädt dann das Kommandozeilenprogramm.

Die Anleitungen und Wikis sind sehr gut, weshalb hier nicht weiter darauf eingegangen wird.

 

Welten konvertieren

Ist der Bukkit-Server gebaut, reicht es, in den Ordner die vorhandene Vanilla Welt einzufügen, die Welt in die Datei Datei server.properties einzutragen  und den Server zu starten. Die Welt wird dann automatisch konvertiert. Eine detailierte Erklärung der  Datei server.properties gibt es hier (http://minecraft-de.gamepedia.com/Server.properties).

Bei der Konvertierung werden lediglich Dateien kopiert, die folgende Tabelle stellt beide Versionen und deren Speicherorte am Beispiel der Steynleyn-Welt gegenüber.

 

Mit Hilfe der Tabelle ist auch eine Rückkonvertierung der Bukkit Welt in eine Vanilla- oder Single-Player Welt möglich.

Zunächst wurde ein Server-Verzeichnis angelegt und getestet, dieses noch dreifach kopiert, die jeweiligen Welten, die Datei server.properties sowie die ops und whitlists aus dem Original einkopiert und der Server über die GUI gestartet. In allen Fällen lief die Welt-Konvertierung problemlos.

Durch die Übernahme der server.properties blieben Weltenname und Port erhalten, so daß hier keine Anpassungen für das Routing mehr vorgenommen werden mußten. Die Welten sind von außerhalb des Netzwerks mit den Minecraft-Einstellungen des alten Vanilla-Servers erreichbar.

Das Plugin ServerSleeper wird durch Kopie in den Plugins-Ordner installiert, die Sleepzeit durch Eintrag in die Konfig-Datei auf 60 Minuten gesetzt. 

BUKKIT GUI Task zum Beenden der Oberfläche

Da die Bukkit-GUI nach Beenden des Bukkit-Servers geschlossen werden soll, wird in der GUI ein Task angelegt:

 

 

Minecraft Server WoL Bukkit Teil D WoL Aktionen und Ruhemodus aussetzen

In diesem Abschnitt des Projekts werden zwei Probleme gelöst:

  • wie kann beim Aufwachen aus dem Ruhezustand ein Programm gestartet werden?
  • wie kann der Ruhezustand ausgesetzt werden, wenn ein bestimmtes Programm läuft?

 

 

Programmstart beim Aufwachen aus dem Ruhezustand

Allgemein trägt Windows die Ereignis-ID 1 beim Start aus dem Ruhezustand ins System-Ereignisprotokoll ein. Wenn Sie das Systemprotokoll nach Ereignis "1" filtern, ist festzustellen, daß die Ereignis-ID 1 auch zwischendurch erscheint. Nur wenn die Ereignis-ID 1 vom Power-Troubleshooter generiert wird, ist es ein Start aus dem Ruhezustand!

Mit diesen Informationen kann man die Aufgabenplanung zum Start eines Programms aus dem Ruhezustand nutzen. Da unbekannt ist, ob und - wenn "ja" - welcher Benutzer nach dem Ruhezustand angemeldet ist, muss die Aufgabe mit höchsten Previlegien ausgeführt und unter "Benutzer & Gruppe ändern" ein Administrator eingetragen werden:

Tigger nach WoL

Beim Tigger wird nach der Auswahl "Aufgabe starten:" "Bei einem Ereignis" als Protokoll "System", als Quelle "Power-Troubleshooter" und die Ereignis-ID "1" ein. Sicherheitshalber wird die Aufgabe nach 8 Stunden beendet.

Aktion für BUKKIT GUI (ab Version 2!)

Wenn das Ereignis eintritt, soll der Minecraft-Server gestartet werden. Bei der Aktion wird die BukkitGUI angegeben und auch der Pfad, in welchem diese startet, da später vier verschiedene Server gestartet werden sollen.

Offene Fenster irgendwann schließen und weiteren Start zulassen

Folgende Sicherheitseinstellungen empfehlen sich, falls ein unerwartetes Ereignis eintritt oder der Server vor Ablauf der eingestellten acht Stunden wieder gestartet wird.

Für die vier Server werden vier Aufgaben erstellt. Damit die einzelnen Server Zeit zum Starten haben, wurde jede weitere Aufgabe um eine Minute verzögert.

 

 

Aussetzen des Ruhezustands, wenn ein bestimmtes Programm läuft

Die Bordmittel sehen seit Windows XP hierfür das Kommandozeilenprogramm powercfg vor.

Leider funktioniert powercfg offensichtlich weder unter Windows 7, 8.1 und 10.

Für die bukkitgui.exe heißt der Befehl

powercfg -requestsoverride process bukkitgui.exe DISPLAY SYSTEM

wobei der Programmname kann im Taskmanager zu sehen ist und klein geschrieben werden muss.

Eine Kontrolle erfolgt mit

powercfg -requestsoverride

Der oben genannte Befehl muß nach jedem Neustart - beispielsweise über eine Batch im Autostart -  ausgeführt werden.

 

 

NoSleep!

Die Lösung ist das Tool NoSleep! Dieses kann unter http://www.computerbase.de/forum/showthread.php?t=770730 geladen werden und funktioniert bei uns prächtig.

Ein kleines Problemchen gibt es noch: Sobald die erste bukkitgui.exe gestoppt wird, weil dieser Server nicht genutzt wird, wird der Ruhezustand aktiviert. Also bleibt zum Abschluß noch eine kleine Fleißarbeit: Drei der vier bukkitbui.exe Dateien umbenennen, die Aufgaben - eventuell auch den Autostart - anpassen und die Namen in NoSleep! eintragen.