Comment configurer un serveur Minecraft sur un Raspberry Pi

Un serveur Minecraft sur un Raspberry Pi title image

Minecraft est l'un des jeux les plus populaires jamais créés. Vous pouvez y jouer avec vos amis en mode multijoueur. Saviez-vous qu'un Raspberry Pi 4 est assez puissant pour faire fonctionner un serveur Minecraft ? Dans cet article, vous apprendrez les bases des différentes variantes existantes, un peu de l'histoire de Minecraft, et comment configurer et exploiter votre propre serveur Minecraft sur votre Raspberry Pi.

L'histoire des serveurs Minecraft

Pour parler des serveurs Minecraft, nous devons aborder brièvement les deux "grands" forks de Minecraft.

Mojang, les créateurs de Minecraft, ont initialement créé Minecraft en Java.

Note latérale amusante : bien que Java soit censé être vraiment portable ("écrire une fois et exécuter n'importe où"), le jeu dépend de bibliothèques natives qui sont x86. Cela signifie que la version Java de Minecraft ne fonctionnera pas sur d'autres plateformes, comme le Raspberry Pi. Le Raspberry Pi est basé sur ARM (ARMv6 / ARMv7 / ARMv8, selon le Raspberry Pi que vous regardez).

Les explications de Java de Raspi Berry

Cette version Java de Minecraft fonctionne sur les machines PC, Mac et Linux (x86).

Il existe donc des logiciels de serveur compatibles avec l'édition Java (voir ci-dessous pour une discussion complète des différents choix disponibles).

Une deuxième version de Minecraft, écrite à partir de zéro, a été appelée MCPE (Minecraft Pocket Edition). Il est apparu à l'origine sur Android, et a été écrit en C++. Cette édition a été portée sur Windows 10, iOS, PlayStation 4, XBox et Nintendo Switch. Elle est désormais connue sous le nom de Minecraft édition Bedrock. (Bedrock fait référence au moteur écrit en C++). Il s'agit maintenant de la version principale, qui inclut le jeu multiplateforme.

Malheureusement, l'édition Bedrock n'est pas compatible avec l'édition Java. Cela signifie que les joueurs Mac et Linux ne peuvent pas participer au jeu multiplateforme avec cette édition.

Plus important encore, il nécessite son propre logiciel serveur, que nous aborderons brièvement ci-dessous.

Xbox propose une vidéo expliquant Bedrock par rapport à Java.

Installation de Spigot sur Raspberry Pi OS 32 bit

Ceci vous guidera dans l'installation de Spigot. J'utilise un Raspberry Pi 4 de 8 Go pour cela, sous le système d'exploitation 32 bits par défaut pour commencer.

Préparer l'installation

Ouvrez un terminal, et exécutez les commandes suivantes :

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

Cela mettra à jour la liste des paquets, et installera git et OpenJDK 8 (Java Runtime Environment, JRE). De plus, elle créera un nouveau répertoire pour la construction de Spigot, et s'y installera.

Ensuite, téléchargez la version la plus récente de BuildTools.jar à partir du site Web de SpigotMC. Vous pouvez utiliser wget pour ça :

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

Il s'agit d'un téléchargement rapide d'environ 4 Mo.

Construire un embout

Maintenant, commencez la construction :

java -jar BuildTools.jar

J'ai commencé la construction à 13:00en utilisant mon Raspberry Pi 4 8GB, et il a fini à environ 13:15 - Cela a donc pris environ 1 heure et 15 minutes. Voici une capture d'écran de la sortie initiale que vous verrez :

Commencer à construire la sortie du terminal Spigot

Le processus de construction utilise plusieurs cœurs sur votre Raspberry Pi :

Sortie htop du processus de construction Spigot

Et voici le dernier écran que vous verrez :

La construction de Spigot est terminée, spigot-1.16.4.jar est prêt.

Une fois la compilation terminée, vous verrez où le fichier .jar du serveur Spigot a été enregistré. Dans mon cas (car il a construit spigot-1.16.4.jar), il s'agit de :

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

Les fichiers restants ne sont plus nécessaires, nous avons juste besoin du fichier final spigot-*.jar

Installez votre nouveau serveur Minecraft

Je suggère d'installer le serveur Minecraft dans la hiérarchie du répertoire /opt. C'est ce que nous allons faire dans l'étape suivante, et renommer le fichier .jar en 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

La dernière commande change le propriétaire de ce répertoire en l'utilisateur pi, ce qui vous permettra de démarrer plus facilement avec les droits nécessaires, sans avoir à créer un nouvel utilisateur. Pour un système utilisé par plusieurs personnes, et pour plus de sécurité et de contrôle des droits, vous pouvez créer votre propre utilisateur système sous lequel spigot sera exécuté.

conseil de sécurité

Maintenant, vous pouvez essayer de démarrer votre nouveau serveur Minecraft, en lui allouant 2 Go de RAM :

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

Si j'alloue plus de 2700M à spigot sur un système d'exploitation 32bit Raspberry Pi, le serveur ne démarre pas :

[47.195s] [warning] [os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes : stacksize : 320k, guardsize : 0k, detached.
[07:57:48] [Server thread/ERROR] : Une exception inattendue a été rencontrée
Erreur de mémoire (java.lang.OutOfMemoryError)Impossible de créer un thread natif : peut-être pas assez de mémoire ou limites de processus/ressources atteintes.
at java.lang.Thread.start0(Méthode native) ~[?: ?]
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] : Ce rapport de crash a été enregistré dans : /opt/spigot/./crash-reports/crash-2020-11-23_07.57.48-server.txt
[07:57:48] [Fil de discussion du serveur/INFO] : Arrêt du serveur
[07:57:48] [Server thread/INFO] : Sauvegarde des joueurs
[07:57:49] [Server thread/INFO] : Sauvegarde des mondes

Comme indiqué ci-dessous (traitement des erreurs / mémoire insuffisante), Même si le serveur démarre correctement, il peut se planter en raison d'erreurs de mémoire.si vous lui donnez trop de mémoire - c'est pourquoi nous nous en tenons à un système sûr. maximum de 2 Go ici. Sur un système d'exploitation 64 bits, cela peut être plus élevé, ce qui vous permet d'utiliser davantage la RAM du Raspberry Pi 4 / 8 Go.

Limites de la mémoire de Spigot sur le système d'exploitation 32 bits de Raspberry Pi

Spigot va maintenant générer deux nouveaux fichiers (eula.txt & server.properties) et un répertoire (journaux). Vous verrez une erreur lors de la première exécution, car les CLUF n'ont pas encore été acceptés :

Chargement des bibliothèques, veuillez patienter...
[15:01:09] [main/ERROR] : Echec du chargement des propriétés du fichier : server.properties
[15:01:09] [main/WARN] : Echec du chargement de eula.txt
[15:01:09] [main/INFO] : Vous devez accepter le CLUF pour pouvoir utiliser le serveur. Allez sur eula.txt pour plus d'informations.

Si vous jetez un coup d'œil à eula.txt, vous verrez ce qui suit :

#En changeant le paramètre ci-dessous pour VRAI, vous indiquez votre accord avec notre CLUF (https://account.mojang.com/documents/minecraft_eula).
#Sun Nov 22 15:01:09 CET 2020
eula=false

Veuillez vous rendre sur le site web de Mojang et lire le CLUF (contrat de licence de l'utilisateur final), avant de l'accepter effectivement.

Voici comment l'accepter. Exécutez

nano /opt/spigot/eula.txt

Et modifiez la dernière ligne comme suit

eula=true

Sauvegardez avec Ctrl + O (et appuyez sur Entrée), et quittez avec Ctrl + X.

Démarrer Spigot à partir de la ligne de commande

Essayez maintenant d'exécuter la commande pour redémarrer le serveur :

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

Le serveur Minecraft Spigot va maintenant démarrer et s'initialiser.

Spigot démarre avec succès après avoir accepté le CLUF.

Pendant ce temps, la charge de votre CPU sera proche de 100 % sur tous les cœurs :

htop montrant la charge du système pendant l'initialisation de Spigot

Pendant le démarrage, quelques informations utiles seront affichées (extraites ici) :

[15:09:05] [Server thread/INFO] : Démarrage du serveur minecraft version 1.16.4
[15:09:06] [Server thread/INFO] : Type de jeu par défaut : SURVIE
[15:09:09] [Server thread/INFO] : Démarrage du serveur Minecraft sur *:25565

La dernière ligne citée ci-dessus montre que votre serveur Minecraft se lie à toutes les adresses IP sur le Raspberry Pi, et à port 25565 sur ces adresses IP.

La startup a pris 190.812 s (soit environ trois minutes) sur mon Raspbery Pi 4 / 8GB. Une fois qu'il est terminé, vous verrez une invite :

L'invite que vous pouvez utiliser pour interagir avec le serveur

Interagir avec le serveur Spigot

Type

help

à cette invite (sans le /), pour obtenir une liste de commandes possibles :

une liste de commandes possibles pour interagir avec le serveur est affichée

Par exemple, avec la commande listevous pouvez voir combien de joueurs sont en ligne :

la liste montre qu'il n'y a aucun joueur de 20 joueurs maximum en ligne

En utilisant la commande versionvous pouvez voir la version actuelle de votre serveur et savoir si un serveur plus récent est disponible. Notez que vous devrez reconstruire le fichier spigot.jar pour mettre à jour le serveur.

Sortie de la version. Ce serveur utilise la version de CraftBukkit git-Spigot-a19903d-167ff59 (MC : 1.16.4) (Implementing API version 1.16.4-R0.1-SNAPSHOT). Vous utilisez la dernière version

Impossible de suivre ! Le serveur est-il surchargé ? La course derrière l'avertissement

Vous verrez probablement un résultat tel que

[08:06:11] [Fil du serveur/Alerte] : Impossible de suivre ! Le serveur est-il surchargé ? Il est en retard de 8444ms ou 168 ticks.

Trouvez l'adresse IP de votre serveur Minecraft Raspberry Pi.

Si vous n'êtes pas sûr de l'adresse IP de votre Raspberry Pi, vous pouvez simplement la trouver en tapant :

ip -4 addr show

Le résultat sera similaire au suivant :

L'adresse ip -4 addr montre la sortie sur le Raspberry Pi

Cherchez l'entrée eth0 (2 dans mon cas), qui est le LAN sur le Raspberry Pi. L'adresse IP est le bit après inet, et avant la barre oblique. Dans mon cas 192.168.1.235 :

Les parties importantes où l'on peut trouver l'adresse IP

Connectez-vous à votre serveur Minecraft

Vous aurez (bien sûr 🙂 besoin de Minecraft, que vous pouvez obtenir à partir de le site officiel de Minecraft. Vous avez besoin de la version Java de Minecraft, comme discuté précédemment.

Cliquez sur Minecraft Java Edition

Si vous n'avez pas encore Minecraft, et que vous souhaitez l'acheter, vous devrez créer un compte Mojang. Vous recevrez un e-mail de confirmation de votre achat, qui comprendra les liens de téléchargement pour Windows, macOS, Linux, Arch Linux et Debian (notez qu'il doit s'agir de systèmes x86, comme nous l'avons vu précédemment).

Pour Windows, par exemple, vous obtiendrez MinecraftInstaller.msi :

Assistant de configuration de Minecraft Launcher

Au lancement de Minecraft, un écran de connexion s'affiche :

Écran de connexion à Minecraft

Après vous être connecté, vous verrez un écran d'aperçu, avec un bouton de lecture.

Lorsque vous cliquez sur "Play", Minecraft téléchargera d'abord la dernière version, dans mon cas 1.16.4.

Une fois le téléchargement terminé, l'écran principal du jeu s'affiche :

L'écran principal du jeu vous offre le choix entre le mode solo, le mode multijoueur et Minecraft Realms.

Cliquez sur Multiplayer ici. Vous obtiendrez un avertissement concernant le jeu en ligne par un tiers, cliquez sur procéder ici (facultatif : vous pouvez également cocher la case ne pas montrer cet écran à nouveau).

Attention : Jeu en ligne avec des tiers

Vous obtiendrez alors une invite de sécurité Windows (si vous jouez sous Windows) :

Invite de sécurité du Pare-feu Windows

Cliquez sur Autoriser l'accès ici ("Zugriff zulassen" en allemand).

Vous verrez alors l'écran suivant :

Jouer en multijoueur, en recherchant des jeux sur votre réseau local.

Pour commencer rapidement, cliquez sur Connexion directe et saisissez l'adresse IP de votre serveur (voir ci-dessus pour savoir comment la trouver) :

Connexion directe, avec la possibilité d'entrer l'adresse du serveur et de rejoindre un serveur.

Minecraft se souviendra de l'adresse IP pour la prochaine session, et vous la proposera automatiquement.

Cliquez sur Join Server. Il se connectera, et affichera brièvement un écran de chargement :

ip -4 addr show

Enfin, vous verrez le menu du jeu :

Menu du jeu

Cliquez sur "Back to Game" pour commencer à jouer sur votre nouveau serveur Minecraft !

Minecraft Multiplayer sur votre propre serveur Minecraft Raspberry Pi !

Vous pouvez appuyer sur F3 pendant le jeu, pour afficher une superposition d'informations, où vous pouvez voir que vous êtes effectivement connecté à un serveur Spigot, et vérifier la version de Minecraft :

F3 ouvre une superposition avec des statistiques et des informations de débogage dans Minecraft (tandis que F11 le fera passer en plein écran).
Si vous laissez votre jeu sans surveillance pendant un certain temps en mode survie, vous mourrez probablement. "buyzero a été tué par un zombie", ce qui vous permet de choisir entre le respawn et l'écran de titre.

Sortie sur votre serveur Minecraft Raspberry Pi

Une fois que vous vous êtes connecté, il y a quelques sorties supplémentaires sur votre serveur Minecraft :

[15:53:32] [Authentificateur d'utilisateur #1/INFO] : UUID du joueur buyzero est e76a3199-3ed0-4064-8086-d9f565235f71
[15:53:33] [Server thread/INFO] : buyzero[/192.168.1.202:51388] s'est connecté avec l'id d'entité 435 à ([world]25.5, 64.0, 137.5)

La commande liste vous montre maintenant qu'un utilisateur est connecté :

[15:57:05] [Server thread/INFO] : Il y a 1 joueur sur un maximum de 20 en ligne : buyzero

De plus, les événements relatifs à vos joueurs seront affichés :

[16:04:24] [Server thread/INFO] : buyzero a été tué par un zombie.

En utilisant la commande op buyzero vous pouvez faire de l'utilisateur buyzero un opérateur de serveur (remplacez votre nom d'utilisateur comme il convient) :

op buyzero
[08:09:18] [Sujet du serveur/INFO] : Buyzero est devenu un opérateur de serveur

Arrêter le serveur Minecraft "spigot

Si vous êtes à l'invite de votre serveur Minecraft, tapez arrêter suivi de la touche Entrée. Cela arrêtera le serveur, sauvegardera le monde et vous ramènera à l'invite de la ligne de commande :

arrêter

[08:36:57] [Fil de discussion du serveur/INFO] : Arrêt du serveur
[08:36:57] [Fil de discussion du serveur/INFO] : Arrêt du serveur
[08:36:57] [Server thread/INFO] : Sauvegarde des joueurs
[08:36:57] [Server thread/INFO] : buyzero a perdu la connexion : Serveur fermé
[08:36:57] [Server thread/INFO] : buyzero a quitté le jeu.
[08:36:57] [Sujet du serveur/INFO] : Sauvegarde des mondes
[08:36:57] [Server thread/INFO] : Enregistrement des morceaux pour le niveau 'ServerLevel[world]'/minecraft:overworld
[08:37:02] [Server thread/INFO] : ThreadedAnvilChunkStorage (monde) : Tous les chunks sont sauvegardés
[08:37:02] [Server thread/INFO] : Enregistrement des morceaux pour le niveau 'ServerLevel[world_nether]'/minecraft:the_nether
[08:37:05] [Server thread/INFO] : ThreadedAnvilChunkStorage (DIM-1) : Tous les chunks sont sauvegardés
[08:37:05] [Server thread/INFO] : Enregistrement des morceaux pour le niveau 'ServerLevel[world_the_end]'/minecraft:the_end
[08:37:10] [Server thread/INFO] : ThreadedAnvilChunkStorage (DIM1) : Tous les chunks sont sauvegardés
[08:37:10] [Server thread/INFO] : ThreadedAnvilChunkStorage (monde) : Tous les chunks sont sauvegardés
[08:37:10] [Server thread/INFO] : ThreadedAnvilChunkStorage (DIM-1) : Tous les chunks sont sauvegardés
[08:37:10] [Server thread/INFO] : ThreadedAnvilChunkStorage (DIM1) : Tous les chunks sont sauvegardés

Vos utilisateurs verront l'écran suivant :

Connexion perdue / Serveur fermé / Retour à la liste des serveurs

Création d'un service systemd

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

Traitement des erreurs

Mémoire insuffisante

Connexion perdue, exception interne : java.io.IOException : Eine vorhandene Verbindung wurde vom Remotehost geschlossen (l'hôte distant a fermé la connexion existante)

La capture d'écran ci-dessus montre le message d'erreur que les joueurs se connectant à votre serveur verront, tandis que du côté du serveur, vous verrez la sortie de journal suivante :

La mémoire est insuffisante pour que l'environnement d'exécution Java puisse continuer.
L'allocation de mémoire native (malloc) n'a pas réussi à allouer 1438248 octets pour Chunk::new
Un fichier de rapport d'erreur avec plus d'informations est enregistré comme :
/opt/spigot/hs_err_pid1531.log

Les données de relecture du compilateur sont enregistrées en tant que :
/opt/spigot/replay_pid1531.log

Dans ce cas, vous devez modifier les paramètres de votre mémoire. Selon la recommandation de cet articleIl devrait être inférieur d'environ 1000 Mo à 1500 Mo à la mémoire système disponible sur votre Raspberry Pi. Considérez que pour un système d'exploitation 32bit, le processus ne peut adresser qu'un peu moins de 4 Go de RAM au total, donc même avec un Raspberry Pi 32bit, le total que vous donnez à votre serveur Minecraft devrait être inférieur à 2500 Mo - 2000 Mo pour être sûr (2GB).

Conclusion

En suivant ce guide, vous serez en mesure de faire fonctionner vos propres serveurs Raspberry Pi Minecraft et de jouer avec vos amis.

Références / Autres lectures

"Minecraft" est une marque de commerce de Mojang Synergies AB
Ce site n'est pas affilié à Minecraft.

1 commentaire

  1. [...] vous pouvez utiliser un Raspberry Pi comme serveur web, serveur de fichiers, serveur d'impression, serveur multimédia, serveur Minecraft et serveur IoT [...]

Laissez un commentaire