Raspberry Pi 4 : installer un serveur Minecraft sous Raspbian

Mis à jour le

Un proche souhaite installer et administrer un serveur Minecraft. Faute de le faire sur le PC familial qui n’a pas vocation à rester allumé en permanence, le Raspberry Pi est un candidat idéal pour ce type de besoin. J’ai utilisé un Raspberry Pi 4 avec 2 Go de RAM, ce qui est un bon compromis en terme de puissance et de consommation.

Les différentes étapes sont détaillées ici, depuis l’installation du système d’exploitation Raspian jusqu’au lancement du serveur Minecraft (Spigot).

Notons que l’installation se fait uniquement à l’aide d’une connexion ssh, sans que la Raspberry ne soit reliée à un écran: d’abord parce que j’avais tout simplement omis d’acheter des câbles micro HDMI (voir ci-dessous pour les accessoires), et d’autre part parce que ce n’est pas nécessaire. En effet l’installation du serveur Minecraft se fait de toutes manières en lignes de commandes depuis une console .

Le « hardware »: la Rasperry Pi 4 et ses accessoires

La carte Raspberry Pi4 (version 2 Go) est disponible pour moins de 40€ chez les revendeurs spécialisés (par exemple Kubii.fr).

Il faut cependant penser à disposer des accessoires indispensables:

  • Une alimentation au format USB-C, sortie 5,1V et 3A max. L’alimentation officielle coûte moins de 10€, c’est peut être un investissement qui vaut le coup car elle dispose d’un construction correcte et de protections (court-circuit, pic de courant, surchauffe).
  • Une autre option moins coûteuse et plus polyvalente consiste à n’acheter qu’en câble USB-C et le brancher sur un chargeur secteur USB de qualité. Attention toutefois: il s’assurer que ce dernier dispose d’un port USB qui puisse monter jusqu’à 3A (souvent le courant max est de 2,1 ou 2,4A ce qui peut poser problème si l’on branche des accessoires gros consommateurs sur la Raspberry: disque dur…), et surtout le port USB-C de la Raspberry présente des problèmes de compatibilité ce qui fait que tous les câbles USB-C ne fonctionneront pas avec cette dernière…
  • Une carte microSDXC sur laquelle sera installée le système d’exploitation de la Raspberry (Raspbian OS) et qui fera office de disque dur de la machine. On peut facilement trouver une carte microSDXC de 64Go à environ 12€ en France. Par exemple la Samsung MicroSDXC EVO Plus (UHS-I U3) est compatible avec la Raspberry.
  • Faute d’utiliser un écran, il sera nécessaire de brancher la carte Raspberry au réseau à l’aide d’un câble Ethernet pour la première connexion. Une fois connecté, il sera possible de configurer le Wifi sur la carte et de se passer du câble (utile si la Raspberry est disposée dans un endroit non accessible par un câble depuis le routeur).

Autres accessoires non indispensables mais utiles:

  • Un boitier, pour protéger la carte (le boitier officiel coûte moins de 6€, il y a de nombreux modèles de boitiers pour tous les goûts)
  • Un voire deux câbles HDMI vers micro-HDMI pour brancher le Raspberry sur un écran et l’utiliser comme poste de travail d’appoint, par exemple. Le câble officiel coûte également autour de 6€, mais on peut trouver moins cher.

Lire aussi l’article sur le sujet sur le forum raspberry-pi.fr.

Téléchargement de Raspbian sur la carte MicroSDXC et configuration du ssh

L’installation de Raspian (et d’autres Systèmes d’exploitations compatibles avec les cartes Raspberry) est aujourd’hui facilitée par l’outil Raspberry Pi Imager mis à disposition et documenté sur le site raspberrypi.org.

Il suffit donc de brancher la carte MicroSDXC sur un poste, d’installer l’outil Raspberry Pi Imager (version Windows, Mac ou Linux), de le lancer et de suivre les instructions: sélection de la carte microSDXC, choix de la distribution (Raspbian) et installation.

Accés SSH au Raspberry: une fois Raspian installé sur la carte SDXC, il reste une étape indispensable avant de l’insérer dans le Raspberry pour démarrer avec: en effet par défaut le serveur ssh n’est pas lancé sur la Raspbian.

Or faute de brancher la Raspberry sur un écran, nous devrons obligatoirement passer par cet accès ssh depuis un poste de travail pour intervenir sur la carte: il faut créer un fichier vide nommé « ssh » à la racine de la carte SDXC. Ce fichier sera détecté au démarrage de Raspbian et ce dernier lancera alors le serveur ssh.

Démarrage de la Raspberry

La carte microSDXC étant prête, elle peut être insérée dans l’emplacement prévu sur la Raspberry. Si l’on dispose d’un un boitier, on peut alors ranger la Raspberry dedans.

Faute d’avoir configuré l’accès au réseau Wifi sur la Raspberry à ce stade, il faut de toutes façons la brancher à l’aide d’un câble Ethernet au routeur principal (qu’il s’agisse de la box de votre fournisseur d’accès ou bien de votre propre routeur réseau).

Une fois tout cela fait, on peut enfin brancher la Raspberry sur l’alimentation secteur, et elle démarre immédiatement comme l’indiquent les diodes lumineuses: Raspbian mettra en principe une petite dizaine de secondes pour démarrer (sur le Raspberry Pi 4).

Raspberry pi 4 - premier démarrage
La Raspberry avec le câble d’alimentation secteur (en bas à droite) et le câble Ethernet (en haut à gauche)

Premier accès ssh à la Raspberry

Une fois allumée et reliée au réseau local, la Raspberry est accessible depuis un client ssh tel que Putty, avec les paramètres: nom d’hôte (ou adresse ip), nom d’utilisateur et mot de passe utilisateur.

Pour le nom d’hôte, utiliser:

Putty: options pour le premier accès ssh sur une raspberry pi
Putty: options pour le 1er accès ssh la raspberry
  • Soit l’adresse ip de la Raspberry que l’on peut retrouver en accédant à la configuration DHCP de son routeur
  • Soit le nom d’hôte de la carte, qui est « raspberrypi » par défaut

L’utilisateur est « pi« , et le mot de passe par défaut est « raspberry« .

Lors de premier accès, une message d’alerte de sécurité est affiché par Putty, il faut confirmer que l’on souhaite bien accéder sur ce nouveau périphérique.

Il faut veiller à changer très vite le mot de passe de l’utilisateur « pi »: c’est en raison de ce mot de passe générique que l’accès ssh n’est pas ouvert immédiatement sur une nouvelle installation de Raspian. C’est ce que nous allons faire dans l’étape suivante.

Configuration de Raspbian: raspi-config

Dès que l’on accède à la Raspberry en ssh (dans le répertoire /home/pi), on peut lancer l’utilitaire de configuration de Raspbian: raspi-config. L’utilitaire doit être lancé avec les privilèges de l’utilisateur « root« , donc avec la commande sudo:

sudo raspi-config
Ecran principal Raspi-config
écran principal de l’utilitaire raspi-config

La principale option à modifier est également la première rubrique proposée: personnaliser le mot de passe de l’utilisateur « pi ».

Pour le reste, on pourra également changer le nom d’hôte (Hostname) de la Raspberry depuis la rubrique « Network Options », surtout si l’on utilise plusieurs cartes (je leur donne des noms d’hôtes numérotés: rasp1, rasp2, …). Il peut être également être utile d’ajouter la localisation « fr_FR.UTF-8 UTF-8 » et le créneau horaire correspondant à son emplacement géographique (rubrique Localisation Options).

Pour plus d’informations sur les autres options, voir la documentation de l’utilitaire raspi-config sur raspberrypi.org.

Installation de Spigot

Les informations concernant l’installation et la configuration du serveur Minecraft Spigot sont disponibles sur le wiki du site de la communauté Spigot (spigotmc.org).

L’installation se fait en 2 temps:

  1. Récupération de l’outil d’installation des versions du serveur Minecraft Spigot: package Jar BuildTools.jar
  2. Lancement de BuildTools.jar pour installer la dernière version du serveur Minecraft Spigot.

Préparation: installateur Minecraft BuildTools.jar

En prérequis, il faut installer Java JDK8 pour exécuter les packages Java (BuilTools.jar et également le package du serveur minecraft spigot.jar). L’installation se fait automatiquement sous Raspbian à l’aide du gestionnaire de packages linux apt-get:

sudo apt-get install git openjdk-8-jre-headless

Dans un premier temps, on va créer un dossier dans le répertoire /home/pi de la Raspberry pour y placer l’installation du serveur Minecraft:

cd ~
mkdir minecraft

Depuis ce répertoire, on va alors télécharger la dernière version de l’installateur Spigot: BuilTools.jar. Les versions de l’outil et sa documentation sont présentées dans la rubrique BuildTools du site spigotmc.org:

cd ~/minecraft
wget -O BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

Lancement de l’installateur Minecraft: BuildTools.jar

BuilTools.jar est installé et prêt à être lancé, mais il est recommandé de placer les fichiers compilés du serveur Minecraft dans un autre dossier que celui ou se trouve BuiltTools.jar. On crée donc un sous-répertoire pour la version que l’on souhaite monter:

mkdir spigot-1.15.2
(-> répertoire créé: /home/pi/minecraft/spigot-1.15.2)

Une commande configuration de GIT est préconisée avant de lancer l’installation (traitement des sauts de lignes type unix / windows, je pense que c’est une étape optionnelle pour éviter d’avoir des sauts de ligne inutiles dans les fichiers de configuration Minecraft):

git config --global --unset core.autocrlf

On peut enfin lancer l’installateur BuilTools.jar depuis le dossier ou il se trouve (/home/pi/minecraft), en spécifiant une quantité suffisante de mémoire sur la machine virtuelle Java et également le dossier dans lequel va être déposé le package Spigot compilé:

java -Xmx1024M -jar BuildTools.jar --output-dir spigot-1.15.2

Le fichier spigot-1.15.2.jar est généré dans le répertoire /home/pi/minecraft/spigot-1.15.2. On le renomme spigot.jar:

cd ~/minecraft/spigot-1.15.2
mv spigot-1.15.2.jar spigot.jar

Lancer Minecraft Spigot pour la première fois

Le serveur est installé. Pour le lancer facilement on va créer un petit script shell de lancement start.sh, dans le répertoire /home/pi/minecraft:

cd ~/minecraft
vi start.sh

Ici j’utilise l’éditeur de texte vi, mais vous pouvez réaliser la même opération avec l’autre éditeur couramment utilisé sous linux: nano. Au final, le contenu du script doit être:

#!/bin/sh
java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar spigot-1.15.2/spigot.jar nogui

On modifie les droits du fichier start.sh pour le rendre exécutable:

chmod +x start.sh

On peut alors effectuer le premier lancement du serveur, qui va créer les fichiers de configuration et également le fichier eula.txt de validation des Conditions Générales d’Utilisation (EULA=End-User License Agreement):

./start.sh

Après ce premier lancement, il faut valider les EULA dans le fichier eula.txt en remplaçant la valeur false par true:

vi eula.txt
-> eula=true

Le lancement suivant prendra alors un certain temps pour mettre en place la carte (dimension de départ: Overworld) et lancer le serveur Minecraft Spigot, qui écoutera sur le port par défaut: 25560:

...
[11:16:09] [Server-Worker-3/INFO]: Preparing spawn area: 86%
[11:16:09] [Server-Worker-1/INFO]: Preparing spawn area: 91%
[11:16:10] [Server thread/INFO]: Time elapsed: 10443 ms
[11:16:16] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 5798ms or 115 ticks behind
> 

L’installation à ce stade permet de lancer le serveur, et l’on se retrouve alors dans la console avec spigot lancé, et la possibilité d’utiliser des commandes minecraft documentées sur spigotmc.org, par exemple pour afficher des informations sur la performance du serveur (ticks per second, ou nombre de boucles d’exécution du serveur par seconde):

tps

Pour arrêter le serveur, il faut utiliser la commande stop (et attendre la fin des traitements d’arrêt avant de quitter la console).

Login au serveur spigot sous Raspberry depusi le Minecraft Launcher
Le serveur Minecraft lancé sur la console Putty (en haut) affiche la première connexion du joueur JBHR au serveur depuis le Minecraft Launcher (en bas)

Lancement avancé: utilisation d’un terminal Screen

L’installation à ce stade permet lance le serveur, mais la console putty est alors associée à ce dernier, et il n’est pas possible d’en sortir ou de fermer la console sans interrompre le serveur.

Afin de palier à ce problème, j’ai installé Screen qui est un outil linux permettant de mettre en place des sessions supplémentaires dans une même console ssh, et le passer de l’une à l’autre. L’idée est de lancer le serveur Minecraft Spigot depuis une nouvelle session screen puis de retourner sur la session putty initiale sans interrompre le serveur.

On peut alors quiter putty et fermer le poste PC sans problème, le serveur continuant de tourner sur la Raspberry. Bien sûr il est possible de retrouver l’accès à la session screen et donc au serveur en marche.

L’installation de screen se fait simplement à l’aide du gestionnaire de packages linux apt-get, avec la commande:

sudo apt-get install screen 

Une fois screen installé, on crée une session screen en la nommant (ici: « toto »):

screen -S toto

La session est créée et on se trouve directement dedans sur la console putty. On peut donc lancer le serveur Minecraft depuis le dossier /home/pi/minecraft, de la même manière que précédemment:

./start.sh

Le serveur étant lancé dans la session screen « toto », on peut maintenant quitter cette session à l’aide d’une combinaison de touches clavier un peu particulière: [CTRL]+[a] suivi de [d].

Attention: notons bien que la combinaison est en 2 étapes: d’abord il faut presser la touche CTRL et saisir ‘a’, puis dans un second temps après avoir relâché la touche CTRL il faut cliquer sur la touche ‘d’. C’est un coup à prendre…

On est alors « détaché » de la session screen, et on se retrouve sur la session initiée avec Putty. On peut fermer quitter Putty sans problème, le serveur Minecraft est toujours lancé sur la session screen « mimi ».

Pour retrouver la session plus tard, il faudra depuis la console Putty utiliser la commande screen suivante:

screen -r toto

Au besoin, pour voir les sessions screen en cours ou retrouver une session détachée, utiliser la commande:

screen -ls

Notons que l’on peut reprendre l’une des sessions affichées par la commande précédente en l’identifiant par son numéro aussi bien que par son nom. Par exemple si screen -ls affiche le résultat suivant:

13379.mimi(Detached) 

La session peut être reprise avec l’une ou l’autre des 2 commandes:

screen -r 13379
screen -r mimi

Pour « détacher » une session qui serait toujours au statut « Attached » (en général lorsque Putty s’est arrêté alors que l’on se trouve toujours sur la session screen), la commande est la suivante:

screen -d mimi

Il est également possible de lancer le serveur Minecraft Spigot comme un service au démarrage de la Raspberry, ce qui évitera de devoir le démarrer manuellement lorsqu’on redémarre la carte. Pour cela, il faut ajouter une ligne dans le fichier /etc/rc.local:

su -l pi -c "screen -dmS minecraft ~pi/minecraft/start.sh"

La commande est lancée pendant le boot de Raspbian, et lance la commande start.sh dans une session screen (nommée ici: minecraft).

2 thoughts to “Raspberry Pi 4 : installer un serveur Minecraft sous Raspbian”

  1. Plutôt que d’utiliser screen, n’est-il pas plus simple de lancer le serveur Minecraft en tant que service ? Ainsi, il survivra même a un redémarrage du raspberry !

    1. Bonjour Raphaël,
      c’est une très bonne remarque: Pour ma part je ne préfère pas le lancer automatiquement, mais je viens de compléter l’article avec la commande à ajouter dans le fichier /etc/rc.local pour démarrer le serveur dans une session screen au démarrage de la Raspberry.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *