Een Minecraft-server opzetten op een Raspberry Pi

Een Minecraft-server op een Raspberry Pi titelafbeelding

Minecraft is een van de populairste spellen ooit gemaakt. Je kunt het met je vrienden spelen in de multiplayer spelmodus. Wist je dat een Raspberry Pi 4 krachtig genoeg is om een Minecraft-server te draaien? In dit artikel leer je de basis van welke verschillende variaties er bestaan, een beetje van de geschiedenis van Minecraft, en hoe je je eigen Minecraft-server op je Raspberry Pi kunt opzetten en bedienen.

De geschiedenis van Minecraft-servers

Om over Minecraft servers te praten, moeten we kort de twee "grote" vorken van Minecraft bespreken.

Mojang, de makers van Minecraft, creëerden Minecraft oorspronkelijk in Java.

Leuke kanttekening: Hoewel Java verondersteld wordt echt portable te zijn ("write once and run anywhere"), hangt het spel af van native libraries die x86 zijn. Dit betekent dat de Java-versie van Minecraft niet zal draaien op andere platformen, zoals de Raspberry Pi. De Raspberry Pi is ARM-gebaseerd (ARMv6 / ARMv7 / ARMv8, afhankelijk van welke Raspberry Pi je bekijkt).

Raspi Berry's Java uitleg

Deze Java Minecraft versie draait op PC, Mac en Linux (x86) machines.

Dienovereenkomstig is er serversoftware die compatibel is met de Java-editie (zie hieronder voor een volledige bespreking van de verschillende beschikbare keuzes).

Een tweede versie van Minecraft, vanaf nul geschreven, heette MCPE (Minecraft Pocket Edition). Het verscheen oorspronkelijk op Android, en was geschreven in C++. Deze editie werd geport naar Windows 10, iOS, PlayStation 4, XBox en Nintendo Switch. Het is nu bekend als Minecraft Bedrock editie. (Bedrock verwijst naar de in C++ geschreven engine). Dit is nu de hoofdversie, inclusief cross-platform spelen.

Helaas is de Bedrock editie niet compatibel met de Java editie. Dit betekent dat Mac en Linux spelers niet mee kunnen doen aan het cross-platform spel ermee.

Belangrijker nog, het vereist zijn eigen server software, waar we hieronder kort op in zullen gaan.

Xbox heeft een video met uitleg over Bedrock vs. Java

Installatie van Spigot op Raspberry Pi OS 32 bit

Dit zal u door de installatie van Spigot leiden. Ik gebruik hiervoor een 8 GB Raspberry Pi 4, onder het standaard 32 bit OS om mee te beginnen.

Voorbereiding van de installatie

Open een terminal, en voer de volgende commando's uit:

sudo apt-get update
sudo apt-get install git openjdk-8-jre-headless
mkdir /home/pi/spigot-build
cd /home/pi/spigot-build

Dit zal de packages lijst updaten, en git en OpenJDK 8 (Java Runtime Environment, JRE) installeren. Ook zal het een nieuwe directory aanmaken voor het bouwen van Spigot, en zal het daarin veranderen.

Download dan de meest recente BuildTools.jar van de SpigotMC website. U kunt gebruik maken van wget voor dit:

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

Dit is een snelle download van ongeveer 4 MB.

Bouw Spigot

Begin nu met de bouw:

java -jar BuildTools.jar

Ik ben begonnen met de bouw op 13:00met mijn Raspberry Pi 4 8GB, en het eindigde op ongeveer 13:15 - dus het duurde ongeveer een uur en 15 minuten. Hier is een screenshot van de initiële output die je zult zien:

Beginnen met het bouwen van Spigot-terminaluitgang

Het bouwproces gebruikt meerdere kernen op uw Raspberry Pi:

htop uitvoer van het Spigot bouwproces

En hier is het laatste scherm dat je zult zien:

Spigot bouw voltooid, spigot-1.16.4.jar is klaar

Zodra het bouwen klaar is, zal je zien waar het afgewerkte Spigot server .jar bestand werd opgeslagen. In mijn geval (aangezien het spigot-1.16.4.jar heeft gebouwd), is het:

/home/pi/spigot-build/./spigot-1.16.4.jar

De overige bestanden zijn niet meer nodig, we hebben alleen de laatste spigot-*.jar nodig

Installeer je nieuwe Minecraft-server

Ik stel voor om de Minecraft server te installeren in de /opt directory hiërarchie. Laten we dat in de volgende stap doen en het .jar bestand hernoemen naar alleen spigot.jar:

sudo mkdir /opt/spigot
sudo mv /home/pi/spigot-build/spigot-*.jar /opt/spigot/spigot.jar
sudo chown -R pi:pi /opt/spigot

Het laatste commando verandert de eigenaar van deze directory in de gebruiker pi, wat het gemakkelijker maakt voor u om aan de slag te gaan met de nodige rechten, zonder dat u een nieuwe gebruiker moet aanmaken. Voor een systeem dat door meerdere mensen gebruikt wordt, en voor extra veiligheid / controle over rechten, zou u misschien een eigen systeemgebruiker willen aanmaken om spigot onder te draaien.

beveiligingstip

Nu kun je proberen om je nieuwe Minecraft server te starten, door er 2 GB RAM aan toe te wijzen:

java -Xms2G -Xmx2G -XX:+UseG1GC -jar spigot.jar nogui

Het toewijzen van meer dan 2700M aan spigot op een 32bit Raspberry Pi OS heeft er bij mij toe geleid dat de server niet startte:

[47.195s][warning][os,thread] Mislukt om thread te starten - pthread_create mislukt (EAGAIN) voor attributen: stacksize: 320k, guardsize: 0k, detached.
[07:57:48] [Server thread/ERROR]: Een onverwachte uitzondering tegengekomen
java.lang.OutOfMemoryError: kan geen eigen thread aanmaken: mogelijk geen geheugen of proces-/resourcelimieten bereikt
at java.lang.Thread.start0(Native Method) ~[?:?]
at java.lang.Thread.start(Thread.java:803) ~[?:?]
at java.util.Timer.(Timer.java:177) ~[?:?]
at org.spigotmc.Metrics.start(Metrics.java:217) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at org.spigotmc.SpigotConfig.registerCommands(SpigotConfig.java:91) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:149) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:809) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at java.lang.Thread.run(Thread.java:834) [?:?]
[07:57:48] [Server thread/ERROR]: Dit crashrapport is opgeslagen in: /opt/spigot/./crash-reports/crash-2020-11-23_07.57.48-server.txt
[07:57:48] [Server thread/INFO]: Stoppen server
[07:57:48] [Server thread/INFO]: Spelers opslaan
[07:57:49] [Server thread/INFO]: Werelden opslaan

Zoals hieronder uiteengezet (foutafhandeling / onvoldoende geheugen), zelfs als de server OK start, kan hij crashen met fouten wegens gebrek aan geheugenals je het te veel geheugen geeft - daarom houden we het bij een veilige maximaal 2 GB hier. Op een 64 bit OS kan dat hoger zijn, zodat u meer RAM van de Raspberry Pi 4 / 8 GB kunt gebruiken.

Spigot geheugenlimieten op 32 bit Raspberry Pi OS

Spigot zal nu twee nieuwe bestanden genereren (eula.txt & server.properties) en een directory (logs). U zult een fout zien bij de eerste run, omdat de EULA nog niet geaccepteerd is:

Bibliotheken worden geladen, even geduld...
[15:01:09] [main/ERROR]: Mislukt om eigenschappen te laden van bestand: server.properties
[15:01:09] [main/WARN]: Mislukt om eula.txt te laden
[15:01:09] [main/INFO]: U moet akkoord gaan met de EULA om de server te kunnen draaien. Ga naar eula.txt voor meer info.

Als je eula.txt bekijkt, zie je het volgende:

#BDoor de onderstaande instelling op TRUE te zetten, geeft u aan dat u akkoord gaat met onze EULA (https://account.mojang.com/documents/minecraft_eula).
#Sun 22 Nov 15:01:09 CET 2020
eula=valse

Ga naar de website van Mojang en lees de EULA (licentieovereenkomst voor eindgebruikers), voordat u deze daadwerkelijk accepteert.

Hier is hoe je het aanneemt. Start

nano /opt/spigot/eula.txt

En verander de laatste regel zodat er staat

eula=true

Opslaan met Ctrl + O (en druk op Enter), en afsluiten met Ctrl + X

Spigot starten vanaf de commandoregel

Probeer nu het commando uit te voeren om de server opnieuw te starten:

java -Xms2G -Xmx2G -XX:+UseG1GC -jar spigot.jar nogui

De Spigot Minecraft server zal nu starten en initialiseren.

Spigot start succesvol op nadat u de EULA heeft geaccepteerd

Gedurende deze tijd zal uw CPU-belasting bijna 100 % op alle cores zijn:

htop toont systeembelasting tijdens Spigot initialisatie

Tijdens de start wordt enige nuttige informatie getoond (hier een uittreksel):

[15:09:05] [Server thread/INFO]: Start minecraft server versie 1.16.4
[15:09:06] [Server thread/INFO]: Standaard speltype: SURVIVAL
[15:09:09] [Server thread/INFO]: Start Minecraft server op *:25565

De laatste regel hierboven laat zien dat je Minecraft server bindt aan alle IP adressen op de Raspberry Pi, en aan poort 25565 op die IP adressen.

De startup nam 190.812 s (of ongeveer drie minuten) op mijn standaard Raspbery Pi 4 / 8GB. Als het klaar is, zie je een prompt:

De prompt die u kunt gebruiken voor interactie met de server

Interactie met de Spigot-server

Type

help

op deze prompt (zonder de /), om een lijst van mogelijke commando's te krijgen:

een lijst van mogelijke commando's voor interactie met de server wordt getoond

Bijvoorbeeld, met het commando lijstkunt u zien hoeveel spelers er online zijn:

lijst laat zien dat er geen spelers van max 20 spelers online zijn

Met de opdracht versiekunt u de huidige versie van uw server zien, en of er een nieuwere server beschikbaar is. Merk op dat u de spigot.jar zal moeten herbouwen om de server te updaten.

Output van versie. Deze server draait CraftBukkit versie git-Spigot-a19903d-167ff59 (MC: 1.16.4) (Implementatie API versie 1.16.4-R0.1-SNAPSHOT). Je draait de laatste versie

Kan het niet bijhouden! Is de server overbelast? De Running achter waarschuwing

U zult hoogstwaarschijnlijk uitvoer zien zoals

[08:06:11] [Server thread/WARN]: Kan het niet bijhouden! Is de server overbelast? Loopt 8444ms of 168 ticks achter

Zoek het IP-adres van uw Raspberry Pi Minecraft-server

Als u niet zeker weet wat het IP-adres van uw Raspberry Pi is, kunt u het eenvoudig vinden door te typen:

ip -4 addr show

Dit zal uitvoer tonen zoals het volgende:

Het ip -4 addr toont de uitvoer op de Raspberry Pi

Zoek naar de vermelding eth0 (2 in mijn geval), dat is het LAN op de Raspberry Pi. Het IP adres is het stukje na inet, en voor de schuine streep. In mijn geval is dat 192.168.1.235 :

De belangrijke onderdelen waar het IP-adres kan worden gevonden

Verbind met uw Minecraft server

Je hebt (natuurlijk 🙂 Minecraft nodig, die je kunt krijgen van de officiële website van Minecraft. Je hebt de Java versie van Minecraft nodig, zoals eerder besproken.

Klik op Minecraft Java Edition

Als je Minecraft nog niet hebt, en het wilt kopen, moet je een Mojang Account aanmaken. Je krijgt een ontvangst-e-mail bij je aankoop, met daarin de downloadlinks voor Windows, macOS, Linux, Arch Linux en Debian (let op: dit moeten x86-systemen zijn zoals eerder besproken!)

Voor Windows, bijvoorbeeld, krijg je MinecraftInstaller.msi:

Minecraft Launcher Instellingen Wizard

Als je Minecraft opstart, krijg je een inlogscherm te zien:

Minecraft inlogscherm

Nadat u bent ingelogd, ziet u een overzichtsscherm, met een afspeelknop.

Als je op Play klikt, zal Minecraft eerst de laatste versie downloaden, in mijn geval 1.16.4

Nadat het downloaden is voltooid, verschijnt het hoofdscherm van het spel:

Hoofdscherm met keuze uit Singleplayer, Multiplayer en Minecraft Realms

Klik hier op Multiplayer. Je krijgt een waarschuwing over online spelen door derden, klik op ga verder hier (optioneel: u kunt ook het vakje laat dit scherm niet meer zien).

Let op: Online spelen door derden

Nu krijg je een Windows (als je onder Windows speelt) beveiligingsprompt:

Windows Firewall beveiligingsprompt

Klik op Toegang hier toestaan ("Zugriff zulassen" in het Duits).

U ziet nu het volgende scherm:

Multiplayer spelen, scannen naar spellen op uw lokale netwerk

Om snel te beginnen, klik op Directe verbinding, en voer hier het IP adres van uw server in (zie hierboven voor hoe u erachter kunt komen wat het is):

Directe verbinding, met de mogelijkheid om het serveradres in te voeren en lid te worden van een server

Minecraft zal het IP adres voor de volgende sessie onthouden, en het je automatisch voorstellen

Klik op Join Server. Er wordt verbinding gemaakt, en er verschijnt kort een laadscherm:

ip -4 addr show

Tenslotte zie je het Spelmenu:

Spelmenu

Klik op "Terug naar spel" om te beginnen met spelen op je nieuwe Minecraft server!

Minecraft Multiplayer op je eigen Raspberry Pi Minecraft server!

U kunt op F3 drukken tijdens het spelen, om een overlay met informatie te tonen, waar u kunt zien dat u inderdaad verbonden bent met een Spigot server, en de Minecraft versie kunt controleren:

F3 opent een overlay met wat statistieken en debug informatie in Minecraft (terwijl F11 het volledig scherm maakt)
Als je het spel een tijdje onbeheerd achterlaat in survival mode, zul je waarschijnlijk sterven. "buyzero werd gedood door Zombie", waardoor je de keuze krijgt om te Respawnen of naar het Titelscherm te gaan

Output op uw Raspberry Pi Minecraft server

Als je eenmaal verbonden bent, is er wat extra uitvoer op je Minecraft server:

[15:53:32] [User Authenticator #1/INFO]: UUID van speler buyzero is e76a3199-3ed0-4064-8086-d9f565235f71
[15:53:33] [Server thread/INFO]: buyzero[/192.168.1.202:51388] ingelogd met entiteit id 435 op ([world]25.5, 64.0, 137.5)

De opdracht lijst laat nu zien dat er één gebruiker is ingelogd:

[15:57:05] [Server thread/INFO]: Er zijn 1 van de max. 20 spelers online: buyzero

Ook gebeurtenissen met betrekking tot uw spelers zullen worden getoond:

[16:04:24] [Server thread/INFO]: buyzero is gedood door Zombie

Met de opdracht op buyzero kunt u de gebruiker buyzero een server operator maken (vervang uw gebruikersnaam indien nodig):

op buyzero
[08:09:18] [Server thread/INFO]: Maakte buyzero een server operator

Het stoppen van de spigot Minecraft server

Als u op de prompt van uw Minecraft-server bent, typt u stop gevolgd door Enter. Dit zal de server stoppen, de wereld opslaan, en u terugbrengen naar de commandoregel prompt:

stop

[08:36:57] [Server thread/INFO]: Stoppen van de server
[08:36:57] [Server thread/INFO]: Stoppen server
[08:36:57] [Server thread/INFO]: Spelers opslaan
[08:36:57] [Server thread/INFO]: buyzero heeft verbinding verloren: Server gesloten
[08:36:57] [Server thread/INFO]: buyzero heeft het spel verlaten
[08:36:57] [Server thread/INFO]: Werelden opslaan
[08:36:57] [Server thread/INFO]: Opslaan van chunks voor level 'ServerLevel[world]'/minecraft:overworld
[08:37:02] [Server thread/INFO]: ThreadedAnvilChunkStorage (wereld): Alle chunks zijn opgeslagen
[08:37:02] [Server thread/INFO]: Chunks opslaan voor level 'ServerLevel[world_nether]'/minecraft:the_nether
[08:37:05] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): Alle chunks zijn opgeslagen
[08:37:05] [Server thread/INFO]: Opslaan van chunks voor level 'ServerLevel[world_the_end]'/minecraft:the_end
[08:37:10] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): Alle chunks zijn opgeslagen
[08:37:10] [Server thread/INFO]: ThreadedAnvilChunkStorage (wereld): Alle chunks zijn opgeslagen
[08:37:10] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): Alle chunks zijn opgeslagen
[08:37:10] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): Alle chunks zijn opgeslagen

Uw gebruikers krijgen het volgende scherm te zien:

Verbinding verloren / Server gesloten / Terug naar serverlijst

Aanmaken van een systemd service

https://github.com/sindastra/systemd-minecraft

Foutafhandeling

onvoldoende geheugen

Verbinding verloren, interne uitzondering: java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen (de remote host sloot de bestaande verbinding)

De schermafbeelding hierboven toont de foutmelding die de spelers die verbinding maken met je server te zien krijgen, terwijl je aan de serverkant de volgende logoutput te zien krijgt:

Er is onvoldoende geheugen voor de Java Runtime Environment om door te gaan.
Native geheugentoewijzing (malloc) slaagde er niet in 1438248 bytes toe te wijzen voor Chunk::new
Een fout rapport bestand met meer informatie is opgeslagen als:
/opt/spigot/hs_err_pid1531.log

Compiler replay gegevens worden opgeslagen als:
/opt/spigot/replay_pid1531.log

In dit geval moet u uw geheugeninstellingen aanpassen. Volgens de de aanbeveling van dit artikel, zou het ongeveer 1000 MB tot 1500 MB lager moeten zijn dan het beschikbare systeemgeheugen op je Raspberry Pi. Bedenk, dat voor een 32bit OS het proces slechts iets minder dan 4 GB RAM in totaal kan aanspreken, dus zelfs met een 32bit Raspberry Pi, moet het totaal dat u aan uw Minecraft server geeft minder dan 2500 MB - 2000 MB zijn om aan de veilige kant te zijn (2GB).

Conclusie

Als u deze gids volgt, kunt u uw eigen Raspberry Pi Minecraft-servers draaien en samen met uw vrienden spelen.

Referenties / Verdere lectuur

"Minecraft" is een handelsmerk van Mojang Synergies AB
Deze website is niet verbonden aan Minecraft.

1 Commentaar

  1. [Je kunt een Raspberry Pi gebruiken als webserver, bestandsserver, printserver, mediaserver, Minecraft-server en IoT-server [...].

Laat een reactie achter