Come impostare un server Minecraft su un Raspberry Pi

Un server Minecraft su un Raspberry Pi titolo dell'immagine

Minecraft è uno dei giochi più popolari mai creati. Potete giocarci con i vostri amici in modalità multiplayer. Sapevate che un Raspberry Pi 4 è abbastanza potente per eseguire un server Minecraft? In questo articolo, imparerete le basi di quali diverse varianti esistono, un po' della storia di Minecraft, e come impostare e far funzionare il vostro server Minecraft sul vostro Raspberry Pi.

La storia dei server Minecraft

Per parlare dei server di Minecraft, dobbiamo discutere brevemente i due "grandi" fork di Minecraft.

Mojang, i creatori di Minecraft, ha originariamente creato Minecraft in Java.

Nota a margine: anche se Java dovrebbe essere davvero portatile ("scrivi una volta ed esegui ovunque"), il gioco dipende da librerie native che sono x86. Questo significa che la versione Java di Minecraft non funzionerà su altre piattaforme, come il Raspberry Pi. Il Raspberry Pi è basato su ARM (ARMv6 / ARMv7 / ARMv8, a seconda di quale Raspberry Pi guardi).

Spiegazioni Java di Raspi Berry

Questa versione Java di Minecraft funziona su PC, Mac e Linux (x86).

Di conseguenza, esiste un software server compatibile con l'edizione Java (vedi sotto per una discussione completa delle diverse scelte disponibili).

Una seconda versione di Minecraft, scritta da zero, si chiamava MCPE (Minecraft Pocket Edition). È apparso originariamente su Android, ed è stato scritto in C++. Questa edizione è stata portata su Windows 10, iOS, PlayStation 4, XBox e Nintendo Switch. Ora è conosciuto come Minecraft Bedrock edizione. (Bedrock si riferisce al motore scritto in C++). Questa è ora la versione principale, incluso il gioco multipiattaforma.

Purtroppo l'edizione Bedrock non è compatibile con l'edizione Java. Questo significa che i giocatori Mac e Linux non possono partecipare al gioco multipiattaforma con esso.

Ancora più importante, richiede un proprio software di server, che approfondiremo brevemente più avanti.

Xbox ha un video che spiega Bedrock e Java.

Installazione di Spigot su Raspberry Pi OS 32 bit

Questo vi guiderà attraverso l'installazione di Spigot. Io uso un Raspberry Pi 4 da 8 GB per questo, con il sistema operativo predefinito a 32 bit per cominciare.

Preparare l'installazione

Aprite un terminale ed eseguite i seguenti comandi:

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

Questo aggiornerà la lista dei pacchetti e installerà git e OpenJDK 8 (Java Runtime Environment, JRE). Inoltre, creerà una nuova directory per la costruzione di Spigot, e si cambierà in essa.

Poi, scaricate il più recente BuildTools.jar dal sito web di SpigotMC. Puoi usare wget per questo:

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

Questo è un download veloce con circa 4 MB.

Costruire il rubinetto

Ora inizia la costruzione:

java -jar BuildTools.jar

Ho iniziato la costruzione a 13:00usando il mio Raspberry Pi 4 8GB, e ha finito a circa 13:15 - quindi ci è voluta circa un'ora e 15 minuti. Ecco uno screenshot dell'output iniziale che vedrete:

Iniziare a costruire l'uscita del terminale Spigot

Il processo di compilazione utilizza più core sul tuo Raspberry Pi:

output htop del processo di costruzione di Spigot

Ed ecco la schermata finale che vedrete:

Costruzione di Spigot completata, spigot-1.16.4.jar è pronto

Una volta che la compilazione è finita, vedrai dove è stato salvato il file .jar del server Spigot finito. Nel mio caso (dato che ha costruito spigot-1.16.4.jar), è:

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

I file rimanenti non sono più necessari, abbiamo solo bisogno dello spigot-*.jar finale

Installare il nuovo server Minecraft

Suggerisco di installare il server Minecraft nella directory /opt. Lo faremo nel prossimo passo e rinomineremo il file .jar semplicemente in 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

L'ultimo comando cambia il proprietario di questa directory nell'utente pi, che renderà più facile per voi iniziare con i diritti necessari, senza dover creare un nuovo utente. Per un sistema usato da più persone, e per una maggiore sicurezza/controllo sui diritti, potreste voler creare il vostro utente di sistema sotto il quale eseguire spigot.

consiglio di sicurezza

Ora potete provare ad avviare il vostro nuovo server Minecraft, assegnandogli 2 GB di RAM:

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

Allocare più di 2700M a spigot su un sistema operativo Raspberry Pi a 32bit ha fatto sì che il server non si avviasse per me:

[47.195s][warning][os,thread] Fallito l'avvio del thread - pthread_create fallito (EAGAIN) per gli attributi: stacksize: 320k, guardsize: 0k, detached.
[07:57:48] [thread del server/ERRORE]: Incontrata un'eccezione inaspettata
java.lang.OutOfMemoryErrorImpossibile creare un thread nativo: probabilmente la memoria è esaurita o sono stati raggiunti i limiti di processo/risorse
in java.lang.Thread.start0(metodo nativo) ~[?:?]
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] [thread del server/ERRORE]: Questo rapporto di crash è stato salvato in: /opt/spigot/./crash-reports/crash-2020-11-23_07.57.48-server.txt
[07:57:48] [thread/INFO del server]: Arresto del server
[07:57:48] [Filetto del server/INFO]: Salvataggio dei giocatori
[07:57:49] [Filetto del server/INFO]: Salvare i mondi

Come indicato di seguito (gestione degli errori / memoria insufficiente), anche se il server parte bene, potrebbe bloccarsi con errori di memoria esauritase gli date troppa memoria - ecco perché ci atteniamo a un sicuro massimo di 2 GB qui. Su un sistema operativo a 64 bit che può essere più alto, in modo da poter utilizzare più della RAM del Raspberry Pi 4 / 8 GB.

Limiti di memoria di Spigot su 32 bit Raspberry Pi OS

Spigot genererà ora due nuovi file (eula.txt & server.properties) e una directory (registri). Vedrete un errore alla prima esecuzione, perché l'EULA non è stato ancora accettato:

Caricamento delle librerie, attendere prego...
[15:01:09] [main/ERROR]: Fallito il caricamento delle proprietà dal file: server.properties
[15:01:09] [main/WARN]: Fallito il caricamento di eula.txt
[15:01:09] [main/INFO]: Devi accettare l'EULA per far funzionare il server. Vai su eula.txt per maggiori informazioni.

Se date un'occhiata a eula.txt, vedrete quanto segue:

#B Cambiando l'impostazione qui sotto su TRUE stai indicando il tuo consenso al nostro EULA (https://account.mojang.com/documents/minecraft_eula).
#Sun Nov 22 15:01:09 CET 2020
eula=falso

Andate sul sito web di Mojang e leggere l'EULA (accordo di licenza con l'utente finale), prima di accettarlo effettivamente.

Ecco come accettarlo. Esegui

nano /opt/spigot/eula.txt

E modificare l'ultima riga per leggere

eula=true

Salvare con Ctrl + O (e premere Invio), ed uscire con Ctrl + X

Avviare Spigot dalla riga di comando

Ora provate ad eseguire il comando per avviare nuovamente il server:

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

Il server Spigot Minecraft verrà avviato e inizializzato.

Spigot si avvia con successo dopo aver accettato l'EULA

Durante questo periodo, il carico della CPU sarà vicino a 100 % su tutti i core:

htop che mostra il carico del sistema durante l'inizializzazione di Spigot

Durante l'avvio, verranno mostrate alcune informazioni utili (estratte qui):

[15:09:05] [thread/INFO del server]: Avvio del server minecraft versione 1.16.4
[15:09:06] [Filetto del server/INFO]: Tipo di gioco predefinito: SURVIVAL
[15:09:09] [thread/INFO del server]: Avvio del server Minecraft su *:25565

L'ultima linea citata sopra mostra che il vostro server Minecraft si lega a tutti gli indirizzi IP sul Raspberry Pi, e a porta 25565 su quegli indirizzi IP.

La startup ha preso 190.812 s (o circa tre minuti) sul mio Raspbery Pi 4 / 8GB stock. Una volta che ha finito, vedrai un prompt:

Il prompt che si può utilizzare per interagire con il server

Interazione con il server Spigot

Tipo

help

a questo prompt (senza il /), per ottenere una lista di possibili comandi:

viene mostrato un elenco di possibili comandi per interagire con il server

Per esempio, con il comando elenco, puoi vedere quanti giocatori sono online:

la lista mostra che non ci sono giocatori di massimo 20 giocatori online

Usando il comando versioneè possibile vedere la versione corrente del vostro server e se è disponibile un server più recente. Nota che dovrai ricostruire il file spigot.jar per aggiornare il server.

Output della versione. Questo server sta eseguendo CraftBukkit versione git-Spigot-a19903d-167ff59 (MC: 1.16.4) (implementazione della versione API 1.16.4-R0.1-SNAPSHOT). Si sta eseguendo l'ultima versione

Non si riesce a tenere il passo! Il server è sovraccarico? La corsa dietro l'avviso

Molto probabilmente vedrete un output come

[08:06:11] [Discussione sul server/WARN]: Non riesco a tenere il passo! Il server è sovraccarico? Sta girando a 8444ms o 168 ticks indietro

Trova l'indirizzo IP del tuo server Raspberry Pi Minecraft

Se non siete sicuri di quale sia l'indirizzo IP del vostro Raspberry Pi, potete semplicemente trovarlo digitando:

ip -4 addr show

Questo mostrerà un output simile al seguente:

L'ip -4 addr mostra l'output sul Raspberry Pi

Cerca la voce eth0 (2 nel mio caso), che è la LAN sul Raspberry Pi. L'indirizzo IP è il bit dopo inet, e prima della barra. Nel mio caso 192.168.1.235 :

Le parti importanti dove si può trovare l'indirizzo IP

Collegati al tuo server Minecraft

Avrete (ovviamente 🙂 bisogno di Minecraft, che potete ottenere da il sito ufficiale di Minecraft. Avete bisogno della versione Java di Minecraft, come discusso in precedenza.

Clicca su Minecraft Java Edition

Se non hai ancora Minecraft e hai bisogno di comprarlo, dovrai creare un account Mojang. Riceverai una e-mail di ricevuta con il tuo acquisto, che include i link per il download per Windows, macOS, Linux, Arch Linux e Debian (nota che questi devono essere sistemi x86 come discusso prima!)

Per Windows, per esempio, otterrete MinecraftInstaller.msi:

Procedura guidata di installazione di Minecraft Launcher

All'avvio di Minecraft, ti verrà presentata una schermata di accesso:

Schermata di accesso a Minecraft

Dopo aver effettuato l'accesso, vedrai una schermata riassuntiva, con un pulsante di riproduzione.

Quando cliccate su Play, Minecraft scaricherà prima l'ultima versione, nel mio caso la 1.16.4

Dopo che il download è finito, apparirà la schermata principale del gioco:

Schermata principale di gioco che ti offre una scelta tra Singleplayer, Multiplayer e Minecraft Realms

Clicca su Multiplayer qui. Riceverai un avvertimento sul gioco online di terze parti, clicca su procedere qui (opzionale: puoi anche spuntare la casella non mostrare più questa schermata).

Attenzione: Gioco online di terze parti

Ora avrete un prompt di sicurezza di Windows (se state giocando su Windows):

Richiesta di sicurezza del firewall di Windows

Clicca su Consenti accesso qui ("Zugriff zulassen" in tedesco).

Ora vedrete la seguente schermata:

Gioca in multiplayer, scansionando i giochi sulla tua rete locale

Per iniziare rapidamente, clicca su Connessione diretta e inserisci qui l'indirizzo IP del tuo server (vedi sopra come scoprire qual è):

Connessione diretta, con la possibilità di inserire l'indirizzo del server e di unirsi a un server

Minecraft ricorderà l'indirizzo IP per la prossima sessione e te lo suggerirà automaticamente

Clicca su Join Server. Si connetterà e mostrerà brevemente una schermata di caricamento:

ip -4 addr show

Infine, vedrete il menu di gioco:

Menu del gioco

Clicca su "Back to Game" per iniziare a giocare sul tuo nuovo server Minecraft!

Minecraft Multiplayer sul tuo server Raspberry Pi Minecraft!

Puoi premere F3 mentre giochi, per mostrare un overlay con informazioni, dove puoi vedere che sei effettivamente connesso a un server Spigot, e controllare la versione di Minecraft:

F3 apre un overlay con alcune statistiche e informazioni di debug in Minecraft (mentre F11 lo farà andare a tutto schermo)
Se lasciate il gioco incustodito per qualche tempo in modalità sopravvivenza, probabilmente morirete. "buyzero è stato ucciso da Zombie", dandoti l'opzione di Respawn o di andare alla schermata del titolo

Uscita sul tuo server Raspberry Pi Minecraft

Una volta che ti sei connesso, ci sono alcuni output aggiuntivi sul tuo server Minecraft:

[15:53:32] [Autenticatore utente #1/INFO]: UUID del giocatore buyzero è e76a3199-3ed0-4064-8086-d9f565235f71
[15:53:33] [Server thread/INFO]: buyzero[/192.168.1.202:51388] si è connesso con l'entità id 435 a ([mondo]25.5, 64.0, 137.5)

Il comando elenco ora mostra che un utente è loggato:

[15:57:05] [Filetto/INFO del server]: Ci sono 1 di un massimo di 20 giocatori online: buyzero

Inoltre, verranno mostrati gli eventi relativi ai tuoi giocatori:

[16:04:24] [Server thread/INFO]: buyzero è stato ucciso da Zombie

Usando il comando op buyzero puoi rendere l'utente buyzero un operatore del server (sostituisci il tuo nome utente come appropriato):

op buyzero
[08:09:18] [thread/INFO del server]: Reso buyzero un operatore del server

Fermare il server Minecraft del rubinetto

Se sei al prompt del tuo server Minecraft, digita fermare seguito da Invio. Questo fermerà il server, salverà il mondo e tornerà al prompt della linea di comando:

fermare

[08:36:57] [Filetto del server/INFO]: Arresto del server
[08:36:57] [Filetto del server/INFO]: Arresto del server
[08:36:57] [Filetto del server/INFO]: Salvataggio dei giocatori
[08:36:57] [Server thread/INFO]: buyzero ha perso la connessione: Server chiuso
[08:36:57] [Server thread/INFO]: buyzero ha lasciato il gioco
[08:36:57] [thread/INFO del server]: Salvare i mondi
[08:36:57] [thread/INFO del server]: Salvataggio dei chunks per il livello 'ServerLevel[world]'/minecraft:overworld
[08:37:02] [Server thread/INFO]: ThreadedAnvilChunkStorage (mondo): Tutti i chunks sono salvati
[08:37:02] [Filetto del server/INFO]: Salvataggio chunks per il livello 'ServerLevel[world_nether]'/minecraft:the_nether
[08:37:05] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): Tutti i chunks sono salvati
[08:37:05] [thread/INFO del server]: Salvataggio chunks per il livello 'ServerLevel[world_the_end]'/minecraft:the_end
[08:37:10] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): Tutti i chunks sono salvati
[08:37:10] [Server thread/INFO]: ThreadedAnvilChunkStorage (mondo): Tutti i chunks sono salvati
[08:37:10] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): Tutti i chunks sono salvati
[08:37:10] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): Tutti i chunks sono salvati

I vostri utenti vedranno la seguente schermata:

Connessione persa / Server chiuso / Torna alla lista dei server

Creare un servizio systemd

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

Gestione degli errori

memoria insufficiente

Connessione persa, eccezione interna: java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen (l'host remoto ha chiuso la connessione esistente)

Lo screenshot qui sopra mostra il messaggio di errore che i giocatori che si connettono al tuo server vedranno, mentre sul lato server, vedrai il seguente output di log:

La memoria è insufficiente per il Java Runtime Environment per continuare.
L'allocazione della memoria nativa (malloc) non è riuscita ad allocare 1438248 byte per Chunk::new
Un file di rapporto di errore con più informazioni è salvato come:
/opt/spigot/hs_err_pid1531.log

I dati di replay del compilatore sono salvati come:
/opt/spigot/replay_pid1531.log

In questo caso è necessario modificare le impostazioni della memoria. Come per la raccomandazione di questo articolo, dovrebbe essere circa 1000 MB a 1500 MB inferiore alla memoria di sistema disponibile sul vostro Raspberry Pi. Considera che per un sistema operativo a 32bit il processo può indirizzare solo un po' meno di 4 GB di RAM in totale, quindi anche con un Raspberry Pi a 32bit, il totale che dai al tuo server Minecraft dovrebbe essere meno di 2500 MB - 2000 MB per essere sul sicuro (2GB).

Conclusione

Seguendo questa guida, sarete in grado di eseguire i vostri server Raspberry Pi Minecraft e giocare insieme ai vostri amici.

Riferimenti / Ulteriori letture

"Minecraft" è un marchio di Mojang Synergies AB
Questo sito non è affiliato a Minecraft.

1 commento

  1. [...] è possibile utilizzare un Raspberry Pi come server web, file server, server di stampa, media server, server Minecraft e IoT [...]

Lascia un commento