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)
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ę.
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.
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.
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.
java -version
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.
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:
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ę.
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.
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.
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.
Sukces, serwer działa i jest widoczny w kliencie Minecrafta. Możemy połączyć się i grać.
Aby wyłączyć serwer trzeba w konsoli serwera użyć polecenia "stop"
stop
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.
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.
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ę.
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:
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.
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.
sudo systemctl enable spigot
Od teraz możemy sterować naszym serwerem Spigot tymi prostymi poleceniami:
Sprawdzanie statusu usługi
sudo service spigot status
Uruchomienie usługi
sudo service spigot start
Zatrzymanie usługi
sudo service spigot stop
Restart usługi
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!