Instalacja serwera Bukkit na VPS

bukkit

Wiele osób stając przed koniecznością zapewnienia swojemu serwerowi Minecraft miejsca w sieci decyduje się na usługi hostingów gier. Takie rozwiązanie ma parę niewątpliwych zalet, do których można zaliczyć łatwość korzystania oraz administrowania serwerem bez konieczności posiadania wiedzy technicznej. Co jednak w sytuacji, gdy hosting nie spełnia naszych wymagań czy to w kwestii wydajności, czy ze względu na pewne niedogodności? Wcale nie jesteśmy na to skazani – wystarczy podstawowa znajomość Linuksa i serwer VPS.

 

Bukkit i CraftBukkit

Twórcy Bukkita zaznaczają wyraźnie różnicę pomiędzy CraftBukkitem a Bukkitem. CraftBukkit jest modyfikacją serwera multiplayer Minecraft. Z kolei Bukkit to API przeznaczone dla deweloperów, służące do tworzenia pluginów.

W związku z doniesieniami o naruszeniu praw autorskich projekt został zamknięty, a wszystkie dystybuowane pliki usunięte z ich oficjalnej strony (więcej informacji: http://dl.bukkit.org/dmca/notification.txt). Mimo wszystko na poszczególne wydania wciąż można natrafić w Internecie.

Przypominam, że z powodu zamknięcia projektu Bukkit nie będzie dalej rozwijany, tak więc ostatnią obsługiwaną wersją Minecrafta jest wersja 1.8. Należy wziąć również pod uwagę, że w wszelkie krytyczne błędy w oprogramowaniu Bukkita, które zostaną wykryte w przyszłości, nie zostaną naprawione. Z tego powodu zalecam rozważne podejście do tematu w sytuacji, gdy konieczność migracji na inny silnik serwera Minecraft może wiązać się ze stratami, nie tylko finansowymi.

 

Wady i zalety hostowania na VPS

Podejmując decyzję o tym, czy zakupić sloty w hostingu gier, czy kupić VPS i zająć się tym samodzielnie, należy rozważyć wszelkie „za” i „przeciw”. Na potrzeby artykułu sporządziłem krótkie zestawienie najważniejszych aspektów związanych z utrzymaniem serwera na własną rękę:

Zalety:

  • możliwość samodzielnego zdefiniowana ilości zasobów
  • większe możliwości konfiguracji serwera oraz kontroli jego działania
  • uniknięcie szkodliwych skutków oversellingu, często praktykowanego przez hostingodawców, a co za tym idzie redukcja lagów

Wady:

  • konieczność samodzielnej konfiguracji i utrzymania zarówno serwera Minecraft, jak i całego VPS
  • wyższe koszty utrzymania niż w przypadku hostingu gier (co jednak przekłada się na większą dostępność zasobów i redukcję lagów)

 

Wymagane oprogramowanie

Do poprawnej instalacji będzie niezbędne wcześniejsze zainstalowanie pakietów:

 

Przygotowanie

Przed przystąpieniem do instalacji należy podjąć kilka decyzji. Przede wszystkim musimy określić którą wersję serwera Minecraft chcemy zainstalować. Następnie w oparciu o dostępne zasoby sprzętowe możemy wstępnie ustalić ile pamięci RAM chcemy przeznaczyć na ten cel. W przypadku, gdy na tym samym adresie IP hostujemy już inne serwery Minecraft niezbędne będzie przydzielenie naszemu serwerowi niestandardowego, niezajętego portu.

Po podjęciu tych decyzji kolejnym krokiem będzie przygotowanie pliku JAR serwera Bukkit, zgodnego z wcześniej wybraną wersją Minecrafta.

 

Instalacja

1. Wybieramy miejsce instalacji i tworzymy folder przeznaczony na pliki serwerowe. Załóżmy, że chcemy zainstalować serwer w katalogu domowym (w moim przypadku będzie to /home/bmat) w folderze o nazwie „serwerminecraft”.

2. Umieszczamy (np. poprzez SFTP) plik JAR Bukkita w naszym folderze „serwerminecraft”. W dalszych punktach przyjmujemy, że plik ten nosi nazwę „craftbukkit.jar”.

3. Uruchamiamy Bukkita pierwszy raz, by ten utworzył sobie wszystkie pliki serwerowe. W tym momencie określenie przydziału pamięci RAM, czyli rozmiaru sterty (Java heap size) nie jest potrzebne.

4. Akceptujemy EULA – End-User License Agreement. Można ręcznie otworzyć i zedytować plik eula.txt, ustawiając eula na true, lub nadpisać zawartość wprost z teminala:

5. Ponownie uruchamiamy serwer. Tym razem będzie nam chodziło o wygenerowanie przez Bukkit domyślnych wpisów w pliku server.properties, który w tym momencie jest praktycznie pusty.

W przykładzie użyłem dodatkowej flagi p, określającej port serwera. Ustawiłem ją na 22 (domyślny port usługi SSH), by zaoszczędzić czas. Port ten będzie zajęty, dzięki czemu serwer zakończy pracę błędem (FAILED TO BIND TO PORT) i nie będzie na tym etapie generować ani wczytywać mapy. Nasz cel zostanie jednak osiągnięty – zawartość pliku server.properties zostanie wygenerowana.

6. Edytujemy plik server.properties i zmieniamy ustawienia wedle uznania. W przypadku gdy chcemy, aby na naszym serwerze mogły grać także osoby bez oryginalnej wersji gry, ustawiamy parametr online-mode=false. Opisowi wszystkich możliwych parametrów w pliku server.properties poświęcę osobny wpis.

7. Nasz serwer jest gotowy. Możemy go teraz uruchomić, ustawiając wszystkie niezbędne opcje startowe. Należy pamiętać, aby używać pakietu screen do zarządzania procesem serwera. Bez tego nasz serwer zostanie zatrzymany, gdy tylko zamkniemy połączenie SSH.

Dobrym pomysłem jest zawarcie całego polecenia wraz z parametrami w skrypcie bash, by ułatwić sobie późniejsze włączanie serwera.

Nazwa sesji screen jest dowolna. Flaga Xms określa minimalny przydział pamięci RAM (Java heap size), który zostanie zaalokowany przy starcie serwera. Flaga Xmx to przydział maksymalny, czyli wartość maksymalna, jaka może zostać uzyskana podczas działania.

Gdy serwer już działa, możemy podłączyć się do jego sesji screen za pomocą polecenia „screen -r nazwasesji”, zaś odłączyć bezpiecznie za pomocą skrótu klawiaturowego Ctrl+A+D. Należy również pamiętać, że najbezpieczniej wyłączać serwer za pomocą polecenia „stop” wykonywanego bezpośrednio z konsoli Minecraft.

Poleceniem screen być może zajmę się w innym wpisie, jeśli tylko pojawi się zainteresowanie tym tematem.

 

Podsumowanie

Jak się okazuje instalacja Bukkita na VPS nie jest tak skomplikowana i czasochłonna jak mogłoby się wydawać. Przy odrobinie chęci i podstawowej wiedzy na temat Linuksa możliwe jest zrezygnowanie z usług hostingów. Samodzielne utrzymanie może czasami być nieco kłopotliwe, jednak dla osób wymagających takie rozwiązanie może okazać się bardzo korzystne.

Na wszelkie pytania dotyczące tego zagadnieniach chętnie odpowiem w komentarzach. Przypominam również o możliwości zaproponowania mi tematyki następnych wpisów.