Så här ställer du in en Minecraft-server på en Raspberry Pi

En Minecraft-server på en Raspberry Pi titelbild

Minecraft är ett av de mest populära spelen som någonsin skapats. Du kan spela det med dina vänner i flerspelarläget. Visste du att en Raspberry Pi 4 är tillräckligt kraftfull för att driva en Minecraft-server? I den här artikeln får du lära dig grunderna om vilka olika varianter som finns, lite om Minecrafts historia och hur du sätter upp och driver din egen Minecraft-server på din Raspberry Pi.

Historien om Minecrafts servrar

För att tala om Minecraft-servrar måste vi kort diskutera de två "stora" gafflarna av Minecraft.

Mojang, skaparna av Minecraft, skapade Minecraft ursprungligen i Java.

En rolig sidoanteckning: Även om Java ska vara riktigt portabelt ("skriv en gång och kör var som helst") är spelet beroende av infödda bibliotek som är x86-baserade. Detta innebär att Java-versionen av Minecraft inte kan köras på andra plattformar, som Raspberry Pi. Raspberry Pi är ARM-baserad (ARMv6 / ARMv7 / ARMv8, beroende på vilken Raspberry Pi du tittar på).

Raspi Berry's Java-förklaringar

Den här Java Minecraft-versionen kan köras på PC, Mac och Linux (x86).

Följaktligen finns det serverprogramvara som är kompatibel med Java-utgåvan (se nedan för en fullständig diskussion om de olika tillgängliga alternativen).

En andra version av Minecraft, skriven från grunden, kallades MCPE (Minecraft Pocket Edition). Den fanns ursprungligen på Android och var skriven på följande språk C++. Den här utgåvan har anpassats till Windows 10, iOS, PlayStation 4, XBox och Nintendo Switch. Den är nu känd som Minecraft Bedrock edition. (Bedrock är den motor som är skriven i C++). Detta är nu huvudversionen, som inkluderar spel på flera plattformar.

Tyvärr är Bedrock-utgåvan inte kompatibel med Java-utgåvan. Detta innebär att Mac- och Linux-spelare inte kan delta i det plattformsoberoende spelet med den.

Viktigare är att det krävs en egen serverprogramvara, som vi kommer att gå igenom kortfattat nedan.

Xbox har en video som förklarar Bedrock vs. Java

Installation av Spigot på Raspberry Pi OS 32 bit

Detta kommer att leda dig genom installationen av Spigot. Jag använder en Raspberry Pi 4 med 8 GB för detta, med standard 32-bitars operativsystem till att börja med.

Förbered installationen

Öppna en terminal och kör följande kommandon:

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

Detta uppdaterar paketlistan och installerar git och OpenJDK 8 (Java Runtime Environment, JRE). Dessutom skapas en ny katalog för att bygga Spigot, och den kommer att ändras till den.

Ladda sedan ner den senaste versionen av BuildTools.jar från webbplatsen SpigotMC. Du kan använda wget för detta:

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

Detta är en snabb nedladdning på cirka 4 MB.

Bygg spigot

Börja nu med att bygga:

java -jar BuildTools.jar

Jag har börjat bygga på 13:00, med min Raspberry Pi 4 8GB, och det slutade på ca. 13:15 - så det tog ungefär en timme och 15 minuter. Här är en skärmdump av det första resultatet du kommer att se:

Börjar bygga Spigot terminalutgång

Byggprocessen använder flera kärnor på din Raspberry Pi:

htop-utdata från Spigot-byggprocessen

Och här är den sista skärmen som du kommer att se:

Spigot-bygget slutfört, spigot-1.16.4.jar är klar

När byggningen är klar ser du var den färdiga Spigot server .jar-filen sparades. I mitt fall (eftersom den har byggt spigot-1.16.4.jar) är det:

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

De återstående filerna behövs inte längre, vi behöver bara den slutliga spigot-*.jar

Installera din nya Minecraft-server

Jag föreslår att du installerar Minecraft-servern i /opt-kataloghierarkin. Låt oss göra det i nästa steg, och döpa om .jar-filen till bara 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

Det sista kommandot ändrar ägaren till katalogen till användaren pi, vilket gör det lättare för dig att komma igång med de nödvändiga rättigheterna utan att behöva skapa en ny användare. För ett system som används av flera personer, och för extra säkerhet/kontroll över rättigheter, kanske du vill skapa en egen systemanvändare att köra spigot under.

säkerhetstips

Nu kan du försöka starta din nya Minecraft-server och tilldela den 2 GB RAM-minne:

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

Att tilldela mer än 2700M till spigot på ett 32bit Raspberry Pi OS har lett till att servern inte startar för mig:

[47.195s][varning][os,tråd] Misslyckades med att starta tråd - pthread_create misslyckades (EAGAIN) för attribut: stacksize: 320k, guardsize: 0k, detached.
[07:57:48] [Servertråd/ERROR]: Det finns ett oväntat undantag.
java.lang.OutOfMemoryError: kan inte skapa en inhemsk tråd: möjligen slut på minne eller process-/resursgränserna har nåtts.
at java.lang.Thread.start0(Inhemska metoden) ~[?:?]
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] [Servertråd/ERROR]: Den här kraschrapporten har sparats till: /opt/spigot/./crash-reports/crash-2020-11-23_07.57.48-server.txt
[07:57:48] [Servertråd/INFO]: Stoppar servern
[07:57:48] [Servertråd/INFO]: Spara spelare
[07:57:49] [Servertråd/INFO]: Spara världar

Såsom beskrivs nedan (felhantering / otillräckligt minne), Även om servern startar OK kan den krascha med fel i minnet.om du ger den för mycket minne - det är därför vi håller oss till en säker högst 2 GB här. På ett 64-bitars operativsystem kan det vara högre, så att du kan använda mer av Raspberry Pi 4/8 GB:s RAM-minne.

Spigot minnesgränser på 32 bitars Raspberry Pi OS

Spigot kommer nu att generera två nya filer (eula.txt & egenskaper för server.properties) och en katalog (loggar). Du kommer att se ett fel vid den första körningen, eftersom EULA inte har godkänts ännu:

Laddar bibliotek, vänligen vänta...
[15:01:09] [main/ERROR]: misslyckades med att läsa in egenskaper från filen: server.properties
[15:01:09] [main/WARN]: misslyckades med att ladda eula.txt
[15:01:09] [main/INFO]: Du måste godkänna EULA för att kunna köra servern. Gå till eula.txt för mer information.

Om du tittar på eula.txt ser du följande:

# Genom att ändra inställningen nedan till TRUE anger du att du godkänner vår EULA (https://account.mojang.com/documents/minecraft_eula).
#Sun Nov 22 15:01:09 CET 2020
eula=false

Gå gärna till Mojangs webbplats och läsa EULA (licensavtal för slutanvändare) innan du accepterar det.

Så här accepterar du det. Kör

nano /opt/spigot/eula.txt

Ändra den sista raden så att den lyder

eula=true

Spara med Ctrl + O (och tryck Enter) och avsluta med Ctrl + X.

Starta Spigot från kommandoraden

Försök nu att köra kommandot för att starta servern igen:

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

Spigot Minecraft-servern kommer nu att starta och initialiseras.

Spigot startar framgångsrikt efter att du har accepterat EULA

Under denna tid kommer din CPU-belastning att vara nära 100 % på alla kärnor:

htop visar systembelastningen under initialisering av Spigot

Under starten visas en del användbar information (utdrag här):

[15:09:05] [Servertråd/INFO]: Startar Minecraft-server version 1.16.4
[15:09:06] [Servertråd/INFO]: Standardspeltyp: ÖVERLEVNAD
[15:09:09] [Servertråd/INFO]: Startar Minecraft-server på *:25565

Den sista raden ovan visar att din Minecraft-server binder sig till alla IP-adresser på Raspberry Pi och till Port 25565 på dessa IP-adresser.

Den nystartade verksamheten tog 190.812 s (eller cirka tre minuter) på min Raspbery Pi 4 / 8GB. När den är klar får du se en uppmaning:

Prompten som du kan använda för att interagera med servern

Interagera med Spigot-servern

Typ

help

vid denna uppmaning (utan /) för att få en lista över möjliga kommandon:

en lista över möjliga kommandon för att interagera med servern visas

Till exempel, med kommandot listakan du se hur många spelare som är online:

Listan visar att det inte finns några spelare med högst 20 spelare online.

Användning av kommandot versionkan du se den aktuella versionen av din server och om en nyare server är tillgänglig. Observera att du måste bygga om spigot.jar för att uppdatera servern.

Utdata av version. Denna server kör CraftBukkit version git-Spigot-a19903d-167ff59 (MC: 1.16.4) (Implementering av API version 1.16.4-R0.1-SNAPSHOT). Du kör den senaste versionen

Kan inte hänga med! Är servern överbelastad? Löpningen bakom varningen

Du kommer troligen att se en utskrift som

[08:06:11] [Servertråd/WARN]: Kan inte hänga med! Är servern överbelastad? Den ligger 8444ms eller 168 ticks efter.

Hitta din Raspberry Pi Minecraft-servers IP-adress

Om du inte är säker på vad din Raspberry Pis IP-adress är kan du enkelt hitta den genom att skriva:

ip -4 addr show

Detta kommer att visa en utskrift som liknar följande:

ip -4 addr visar utdata på Raspberry Pi

Leta efter eth0-posten (2 i mitt fall), som är Raspberry Pis LAN. IP-adressen är biten efter inet och före snedstrecket. I mitt fall 192.168.1.235 :

Viktiga delar där IP-adressen kan hittas

Anslut till din Minecraft-server

Du behöver (förstås 🙂 Minecraft, som du kan få tag på från den officiella Minecraft-webbplatsen. Du behöver Java-versionen av Minecraft, som vi diskuterade tidigare.

Klicka på Minecraft Java Edition

Om du inte har Minecraft ännu och vill köpa det måste du skapa ett Mojang-konto. Du kommer att få ett e-postkvitto med ditt köp, som innehåller nedladdningslänkar för Windows, macOS, Linux, Arch Linux och Debian (observera att dessa måste vara x86-system som vi diskuterade tidigare!).

För Windows får du till exempel MinecraftInstaller.msi:

Guiden för installation av Minecraft Launcher

När du startar Minecraft visas en inloggningsskärm:

Skärm för inloggning i Minecraft

När du har loggat in visas en översiktsskärm med en uppspelningsknapp.

När du klickar på Play kommer Minecraft först att ladda ner den senaste versionen, i mitt fall 1.16.4.

När nedladdningen är klar visas spelets huvudskärm:

Huvudspelsskärmen där du kan välja mellan Singleplayer, Multiplayer och Minecraft Realms.

Klicka på Multiplayer här. Du kommer att få en varning om onlinespel från tredje part, klicka på Fortsätt här (valfritt: du kan också kryssa i rutan Visa inte den här skärmen igen.).

Försiktighet: Tredjeparts online-spel

Nu får du en säkerhetsprövning från Windows (om du spelar i Windows):

Säkerhetsprompten för Windows brandvägg

Klicka på Tillåt åtkomst här ("Zugriff zulassen" på tyska).

Du får nu följande bildskärm:

Spela med flera spelare, skannar efter spel i ditt lokala nätverk

Om du vill komma igång snabbt klickar du på Direktanslutning och anger serverns IP-adress här (se ovan för hur du tar reda på den):

Direktanslutning, med möjlighet att ange en serveradress och ansluta till en server.

Minecraft kommer att komma ihåg IP-adressen för nästa session och föreslår den automatiskt.

Klicka på Join Server. Den ansluter och visar kort en laddningsskärm:

ip -4 addr show

Slutligen visas spelmenyn:

Spelmeny

Klicka på "Tillbaka till spelet" för att börja spela på din nya Minecraft-server!

Minecraft Multiplayer på din egen Raspberry Pi Minecraft-server!

Du kan trycka på F3 när du spelar för att visa en överlagring med information, där du kan se att du verkligen är ansluten till en Spigot-server och kontrollera Minecraft-versionen:

F3 öppnar en överlagring med statistik och felsökningsinformation i Minecraft (medan F11 gör det till en helskärm).
Om du lämnar spelet obevakat i överlevnadsläge under en tid kommer du förmodligen att dö. "buyzero was slain by Zombie", vilket ger dig ett alternativ att återuppstå eller gå till titelskärmen.

Utskrift på din Minecraft-server på Raspberry Pi

När du har anslutit dig finns det ytterligare en del utdata på din Minecraft-server:

[15:53:32] [Användarautentiserare #1/INFO]: UUID för spelaren buyzero är e76a3199-3ed0-4064-8086-d9f565235f71
[15:53:33] [Servertråd/INFO]: buyzero[/192.168.1.202:51388] loggade in med entitetsid 435 på ([world]25.5, 64.0, 137.5)

Kommandot lista visar nu att en användare är inloggad:

[15:57:05] [Servertråd/INFO]: Det finns 1 av högst 20 spelare online: buyzero

Dessutom visas händelser som rör dina spelare:

[16:04:24] [Servertråd/INFO]: buyzero dödades av Zombie

Användning av kommandot op buyzero kan du göra användaren buyzero till serveroperatör (byt ut ditt användarnamn på lämpligt sätt):

op buyzero
[08:09:18] [Servertråd/INFO]: Buyzero blev en serveroperatör

Stoppa Minecraft-servern för spigot

Om du befinner dig på din Minecraft-server skriver du följande stoppa följt av Enter. Detta stoppar servern, sparar världen och återvänder till kommandoradsinställningarna:

stoppa

[08:36:57] [Servertråd/INFO]: Stoppar servern
[08:36:57] [Servertråd/INFO]: Stoppar servern
[08:36:57] [Servertråd/INFO]: Spara spelare
[08:36:57] [Servertråd/INFO]: buyzero förlorade anslutningen: Server stängd
[08:36:57] [Servertråd/INFO]: buyzero lämnade spelet
[08:36:57] [Servertråd/INFO]: Spara världar
[08:36:57] [Servertråd/INFO]: Spara delar för nivån 'ServerLevel[world]'/minecraft:overworld
[08:37:02] [Servertråd/INFO]: ThreadedAnvilChunkStorage (world): Alla delar är sparade
[08:37:02] [Servertråd/INFO]: Spara delar för nivån 'ServerLevel[world_nether]'/minecraft:the_nether
[08:37:05] [Servertråd/INFO]: ThreadedAnvilChunkStorage (DIM-1): Alla delar är sparade
[08:37:05] [Servertråd/INFO]: Spara delar för nivån 'ServerLevel[world_the_end]'/minecraft:the_end
[08:37:10] [Servertråd/INFO]: ThreadedAnvilChunkStorage (DIM1): Alla delar är sparade
[08:37:10] [Servertråd/INFO]: ThreadedAnvilChunkStorage (world): Alla delar är sparade
[08:37:10] [Servertråd/INFO]: ThreadedAnvilChunkStorage (DIM-1): Alla delar är sparade
[08:37:10] [Servertråd/INFO]: ThreadedAnvilChunkStorage (DIM1): Alla delar är sparade

Användarna kommer att se följande skärm:

Förlorad anslutning / Server stängd / Tillbaka till serverlistan

Skapa en systemd-tjänst

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

Hantering av fel

otillräckligt minne

Förlust av anslutning, internt undantag: java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen (fjärrvärden stängde den befintliga anslutningen).

Skärmbilden ovan visar felmeddelandet som spelarna som ansluter till din server kommer att se, medan du på serversidan ser följande loggutgång:

Det finns inte tillräckligt med minne för att Java Runtime Environment ska kunna fortsätta.
Den ursprungliga minnesallokeringen (malloc) misslyckades med att allokera 1438248 bytes för Chunk::new
En felrapportfil med mer information sparas som:
/opt/spigot/hs_err_pid1531.log

Uppspelningsdata från kompilatorn sparas som:
/opt/spigot/replay_pid1531.log

I det här fallet måste du justera dina minnesinställningar. Enligt denna artikels rekommendationDet bör vara ungefär 1000 till 1500 MB mindre än det systemminne som finns tillgängligt på din Raspberry Pi. Tänk på att processen för ett 32-bitars operativsystem endast kan hantera lite mindre än 4 GB RAM totalt, så även med en 32-bitars Raspberry Pi bör den totala mängden som du ger till din Minecraft-server vara mindre än 2500 MB - 2000 MB för att vara på den säkra sidan (2 GB).

Slutsats

Om du följer den här guiden kan du köra dina egna Raspberry Pi Minecraft-servrar och spela tillsammans med dina vänner.

Referenser / Ytterligare läsning

"Minecraft" är ett varumärke som tillhör Mojang Synergies AB.
Denna webbplats är inte kopplad till Minecraft.

1 Kommentarer

  1. [...] du kan använda en Raspberry Pi som en webbserver, en filserver, en utskriftsserver, en medieserver, en Minecraft-server och en IoT [...].

Lämna en kommentar