Instalacja serwera Minecraft Spigot na Raspberry Pi 5

Raspberry Pi 28.04.2024
minecraft_x_raspberry.png

Minecraft jest grą która towarzyszy nam już od 2009 roku. Pomimo tylu lat na rynku popularność Minecrafta w dalszym ciągu jest ogromna. Przyczyn tego sukcesu nie trzeba daleko szukać, Minecraft oferuje zupełną swobodność. Społeczność tworzy niesamowite projekty w grze takie jak: funkcjonalne komputery, mechanizmy odtwarzające piosenki lub makiety które odwzorowują popularne miejsca. Aspektem dzięki któremu wiele z tych projektów było możliwe do wykonania, jest tryb wieloosobowy którego konfiguracją dziś się zajmiemy.

Wymagania

Aby zainstalować serwer Minecraft na Raspberry Pi 5, potrzebujesz w teorii tylko... Raspberry Pi 5. Oczywiście Raspberry musi być wstępnie skonfigurowane, proces ten szczegółowo opisany jest w tym poście. Kolejną ważną kwestią jest kwestia naszego połączenia z internetem. Jeśli chcemy grać na naszym serwerze w sieci lokalnej, przykładowo tylko w obrębie swojego domu, kwestia internetu ogranicza się tylko do tego że po prostu musi być wyłącznie do pobrania oprogramowania. Jeśli jednak planujemy naszą rozgrywkę z znajomymi przez internet, musimy sprawdzić czy nasz dostawca internetu udostępnia nam publiczny adres IP wraz z umożliwioną komunikacją z zewnątrz. Najprościej to sprawdzić poprzez kontakt z pomocą techniczną dostawcy internetu.

Co to Spigot?

Spigot jest nieoficjalnym serwerem Minecrafta który bezpośrednio bazuje na oficjalnym serwerze od firmy Mojang. Przewagą Spigota nad oficjalnym serwerem jest możliwość instalowania zewnętrznych pluginów, czyli przeróżnych dodatków które możemy wykorzystać w zależności od naszych potrzeb. Istnieją pluginy które przykładowo wprowadzają ekonomię, udostępniają mapę gry w przeglądarce, sterują zaawansowanymi uprawnieniami lub dodają nowe mechanizmy do gry itd.

Instalacja

Przygotowanie

Instalacja serwera Minecraft odbywać się będzie w terminalu. Po uruchomieniu terminala lub połączeniu się za pomocą SSH do naszego Raspberry Pi, musimy zainstalować podstawowe pakiety które są wymagane do instalacji serwera. Każe polecenie wystarczy skopiować lub przepisać i zatwierdzić klawiszem enter. (W niektórych terminalach wklejanie tekstu odbywa się prawym przyciskiem myszy)

BASH
    
sudo apt-get update && sudo apt-get install wget apt-transport-https git -y
    

Instalacja Javy

Minecraft Java Edition, jak sama nazwa wskazuje, napisany jest w języku programowania Java. Do poprawnego działania gry, jak również i jej serwera wymagane jest zainstalowanie Javy na naszym Raspberry Pi

Aby to zrobić należy zainstalować w systemie klucze które pozwolą na prawidłowe dodanie repozytorium zawierające Javę.

BASH
    

sudo mkdir -p /etc/apt/keyrings
sudo wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /etc/apt/keyrings/adoptium.asc

    

Teraz można dodać do listy źródeł naszego systemu interesujące nas repozytorium.

BASH
    

sudo echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list

    

Ostatnim etapem instalacji Javy jest aktualizacja listy pakietów gotowych do zainstalowania w naszym systemie wraz z docelową instalacją Javy.

BASH
    

sudo apt-get update
sudo apt-get install temurin-21-jdk -y

    

Gdy wszystko zostanie wykonane, możemy upewnić się czy Java zainstalowała się prawidłowo. Wykonując poniższe polecenie na ekranie powinna ukazać się aktualna wersja Javy.

BASH
    

java -version

    
Wersja Javy w terminalu

Instalacja Spigot

Gdy Java jest już zainstalowana można przejść do instalacji samego serwera. Zaczynamy od utworzenia katalogu w którym będziemy instalować pliki serwera Spigot.

BASH
    

sudo mkdir /opt/minecraft/buildtools -p
cd /opt/minecraft/buildtools

    

Plik wykonywalny Spigota należy skompilować, nie wchodząc w szczegóły jest to przygotowanie gotowego pliku do uruchomienia. Do tego celu przygotowane jest narzędzie BuildTools. Pobieramy je poleceniem:

BASH
    

sudo wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

    

Gdy narzędzie jest już pobrane możemy przejść do kompilacji serwera oraz skopiowania go do miejsca docelowego. Niestety może to zająć dłuższą chwilkę.

BASH
    

sudo java -jar BuildTools.jar --rev 1.21.3
sudo cp spigot-1.21.3.jar ../spigot-1.21.3.jar
cd ..

    

Gdy plik będzie już gotowy można przejść do pierwszego uruchomienia serwera. Potrzebny nam będzie skrypt uruchamiający. Stworzymy go poniższym poleceniem. W tym miejscu możemy dostosować ilość pamięci RAM którą przydzielimy Spigotowi. W przykładzie przydzielone zostały 3GB pamięci RAM.

BASH
    

sudo echo "java -Xmx3G -Xms3G -jar spigot-1.21.3.jar nogui" | sudo tee run.sh
sudo echo "eula=true" | sudo tee eula.txt

    

Gotowe, serwer Minecraft jest już zainstalowany. Pozostało go tylko uruchomić i przetestować. Do tego celu należy sprawdzić adres IP Raspberry Pi który będzie nam potrzebny do połączenia się z serwerem. Gdy znamy już adres IP można przejść do pierwszego uruchomienia.

obraz_2024-04-28_004620382.png
BASH
    

hostname -I
sudo bash run.sh

    

Pierwsze uruchomienie serwera będzie trochę dłuższe z powodu konieczności wygenerowania nowego świata. Po chwili będzie można już podłączyć się do naszego serwera.

obraz_2024-04-28_005332914.png

Sukces, serwer działa i jest widoczny w kliencie Minecrafta. Możemy połączyć się i grać.

obraz_2024-04-28_005421923.png

Aby wyłączyć serwer trzeba w konsoli serwera użyć polecenia "stop"

BASH
    
stop
    
obraz_2024-04-28_010927275.png

Dodanie usługi systemowej

Serwer w aktualnej formie należy uruchamiać i wyłączać ręcznie. Aby zautomatyzować ten proces możemy utworzyć usługę systemową w systemie Linux. Da nam to możliwość uruchamiania serwera "w tle", automatycznego startu podczas uruchamiania systemu (szczególnie przydatne przy zaniku zasilania) oraz możliwość prostego sterowania wyłączaniem, włączaniem i resetowaniem naszego serwera Minecraft.

Pierwszym krokiem będzie dodanie użytkownika systemowego oraz nadanie mu uprawnień do serwera Spigot. Użytkownik ten będzie "odpowiedzialny" za uruchamianie serwera.

BASH
    

sudo useradd -r -s /bin/false spigot
sudo chown -R spigot:spigot /opt/minecraft
sudo chmod -R 750 /opt/minecraft

    

Gdy utworzymy użytkownika należy sprawdzić czy jego uprawnienia zostały poprawnie nadane. Zrobimy to poniższym poleceniem które uruchomi nasz serwer jako użytkownik "spigot". Serwer powinien się uruchomić oraz będziemy w stanie połączyć się do niego. Po weryfikacji działania należy wyłączyć serwer Spigot.

BASH
    

sudo -u spigot bash run.sh
stop

    

Teraz możemy utworzyć plik konfiguracyjny naszej usługi. Poniższe (niestety długie) polecenie utworzy w pełni gotową konfigurację.

BASH
    
sudo echo -e "[Unit]\nDescription=SpigotServer\nAfter=multi-user.target\n\n[Service]\nType=simple\nUser=spigot\nRestart=always\nRestartSec=1\nWorkingDirectory=/opt/minecraft\nExecStart=bash /opt/minecraft/run.sh\n\n[Install]\nWantedBy=multi-user.target\n " | sudo tee /etc/systemd/system/spigot.service
    

Jeśli wszystko jest dobrze powinniśmy ujrzeć taką zawartość pliku:

obraz_2024-04-28_012841235.png

Teraz możemy sprawdzić czy nasza usługa działa. Po uruchomieniu usługi za kilkanaście sekund nasz serwer powinien być gotowy do gry.

BASH
    
sudo systemctl start spigot
    

Ostatnim etapem jest oznaczenie usługi jako aktywnej, dzięki temu będzie działał autostart usługi przy uruchomieniu Raspberry Pi.

BASH
    
sudo systemctl enable spigot
    

Od teraz możemy sterować naszym serwerem Spigot tymi prostymi poleceniami:

Sprawdzanie statusu usługi
BASH
    

sudo service spigot status

    
Uruchomienie usługi
BASH
    

sudo service spigot start

    
Zatrzymanie usługi
BASH
    

sudo service spigot stop

    
Restart usługi
BASH
    

sudo service spigot restart

    

Podsumowanie

Mam nadzieję że instalacja przebiegła pomyślnie a instrukcje były przejrzyste. Miłego grania :) Także zachęcam do sprawdzenia innych postów na blogu aby odkryć co jeszcze potrafi Raspberry Pi i nie tylko!