Installation d’un serveur de jeu Minecraft sur Debian

Aujourd’hui je vais vous apprendre à installer un petit serveur de jeu Minecraft pour jouer entre amis.

Pour ceux qui ne connaissent pas je vous invite à visiter le site officiel ou wikipedia .

Etape 1: Installation de Minecraft

Pour fonctionner le jeu à besoin de la dernière version de Java, il nous faut donc l’installer :

[sh] apt-get install sun-java6-jre[/sh]

Dans notre répertoire home on crée ensuite un dossier appelé Minecraft qui contiendra l’installation du jeu.

[sh]cd /home
mkdir minecraft
cd minecraft[/sh]

On télécharge les sources « minecraft_server.jar » :

[sh]wget  –no-check-certificate https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar[/sh]

On teste le lancement du jeu avec cette commande :

[sh]java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui[/sh]

 La valeur 1024 correspond à la quantité de ram que le serveur va allouer au maximum au jeu

Si comme moi vous obtenez une erreur de ce type lors de son exécution :

[SEVERE] Unexpected exception
java.lang.NoSuchMethodError: method java.net.ServerSocket.setPerformancePreferences with signature (III)V was not found.
at cu.<init>(SourceFile:29)
at net.minecraft.server.MinecraftServer.c(SourceFile:130)
at net.minecraft.server.MinecraftServer.run(SourceFile:284)

 

Installer ce paquet :

[sh]apt-get install openjdk-6-jre-headless[/sh]

Exécuter la commande précédente pour lancer le jeu, vous ne devriez plus avoir de message d’erreur.

Etape 2: Configuration du Firewall

Si vous avez un pare feu il vous faut ouvrir le port 25565, pour ce faire rajouter les lignes suivantes dans votre fichier de configuration d’Iptables

[sh]iptables -A INPUT -m state –state NEW -i eth0 -p tcp –dport 25565 –syn -j ACCEPT[/sh]

Etape 3: Lancement automatique de Minecraft

Quand vous lancez Minecraft à partir de cette commande : java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
Celui si s’arrêtera dès que votre session utilisateur sera fermée ou après avoir quitté votre logiciel SSH, pour palier à ce problème et exécuter Minecraft en tâche de fond comme n’importe quel autre programme suivez le guide ^^ »

Installer en premier lieu ce packet :

[sh]apt-get install screen[/sh]

Nous allons maintenant mettre en place le script permettant de lancer Minecraft

[sh]vi /etc/init.d/minecraft[/sh]

[sh]#!/bin/bash
# /etc/init.d/minecraft
# version 0.3.2 2011-01-27 (YYYY-MM-DD)

### BEGIN INIT INFO
# Provides:   minecraft
# Required-Start: $local_fs $remote_fs
# Required-Stop:  $local_fs $remote_fs
# Should-Start:   $network
# Should-Stop:    $network
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description:    Minecraft server
# Description:    Starts the minecraft server
### END INIT INFO

#Settings
SERVICE=’minecraft_server.jar’
USERNAME= »root »
MCPATH=’/home/minecraft/’
BACKUPPATH=’/home/minecraft/minecraft.backup/’

ME=`whoami`
as_user() {
if [ « $ME » == « $USERNAME » ] ; then
bash -c « $1 »
else
su – $USERNAME -c « $1 »
fi
}

mc_start() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo « Tried to start but $SERVICE was already running! »
else
echo « $SERVICE was not running… starting. »
cd $MCPATH
as_user « cd $MCPATH && screen -dmS minecraft java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui »
sleep 7
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo « $SERVICE is now running. »
else
echo « Could not start $SERVICE. »
fi
fi
}

mc_saveoff() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo « $SERVICE is running… suspending saves »
as_user « screen -p 0 -S minecraft -X eval ‘stuff \ »say SERVER BACKUP STARTING. Server going readonly…\ »\015′ »
as_user « screen -p 0 -S minecraft -X eval ‘stuff \ »save-off\ »\015′ »
as_user « screen -p 0 -S minecraft -X eval ‘stuff \ »save-all\ »\015′ »
sync
sleep 10
else
echo « $SERVICE was not running. Not suspending saves. »
fi
}

mc_saveon() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo « $SERVICE is running… re-enabling saves »
as_user « screen -p 0 -S minecraft -X eval ‘stuff \ »save-on\ »\015′ »
as_user « screen -p 0 -S minecraft -X eval ‘stuff \ »say SERVER BACKUP ENDED. Server going read-write…\ »\015′ »
else
echo « $SERVICE was not running. Not resuming saves. »
fi
}

mc_stop() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo « $SERVICE is running… stopping. »
as_user « screen -p 0 -S minecraft -X eval ‘stuff \ »say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map…\ »\015′ »
as_user « screen -p 0 -S minecraft -X eval ‘stuff \ »save-all\ »\015′ »
sleep 10
as_user « screen -p 0 -S minecraft -X eval ‘stuff \ »stop\ »\015′ »
sleep 7
else
echo « $SERVICE was not running. »
fi
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo « $SERVICE could not be shut down… still running. »
else
echo « $SERVICE is shut down. »
fi
}

mc_update() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo « $SERVICE is running! Will not start update. »
else
MC_SERVER_URL=http://minecraft.net/`wget -q -O – http://www.minecraft.net/download.jsp | grep minecraft_server.jar\</a\> | cut -d \ » -f 2`
as_user « cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL »
if [ -f $MCPATH/minecraft_server.jar.update ]
then
as_user « mv $MCPATH/minecraft_server.jar.update $MCPATH/minecraft_server.jar »
echo « Minecraft successfully updated. »
else
echo « Minecraft update could not be downloaded. »
fi
fi
}

mc_backup() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
#    echo « $SERVICE is running! Will not start backup. »
#  else
echo « Backing up minecraft data »
if [ -d $BACKUPPATH/world_`date « +%m.%d.%Y »` ]
then
for i in 1 2 3 4 5 6
do
if [ -d $BACKUPPATH/world_`date « +%m.%d.%Y »`-$i ]
then
continue
else
as_user « cd $MCPATH && cp -r world $BACKUPPATH/world_`date « +%m.%d.%Y »`-$i »
break
fi
done
else
as_user « cd $MCPATH && cp -r world $BACKUPPATH/world_`date « +%m.%d.%Y »` »
fi
echo « Backing up the minecraft server executable »
if [ -f « $BACKUPPATH/minecraft_server_`date « +%m.%d.%Y »`.jar » ]
then
for i in 1 2 3 4 5 6
do
if [ -f « $BACKUPPATH/minecraft_server_`date « +%m.%d.%Y »`-$i.jar » ]
then
continue
else
as_user « cd $MCPATH && cp minecraft_server.jar \ »$BACKUPPATH/minecraft_server_`date « +%m.%d.%Y »`-$i.jar\ » »
break
fi
done
else
as_user « cd $MCPATH && cp minecraft_server.jar \ »$BACKUPPATH/minecraft_server_`date « +%m.%d.%Y »`.jar\ » »
fi
fi
echo « Backup complete »
}

#Start-Stop here
case « $1 » in
start)
mc_start
;;
stop)
mc_stop
;;
restart)
mc_stop
mc_start
;;
update)
mc_stop
mc_backup
mc_update
mc_start
;;
backup)
mc_saveoff
mc_backup
mc_saveon
;;
status)
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo « $SERVICE is running. »
else
echo « $SERVICE is not running. »
fi
;;

*)
echo « Usage: /etc/init.d/minecraft {start|stop|update|backup|status|restart} »
exit 1
;;
esac

exit 0[/sh]

On rend le script d’exécutable

[sh]chmod 755 /etc/init.d/minecraft[/sh]

Puis exécuter la commande suivante permettant de créer le lien vers le script d’initialisation de Minecraft.

[sh]update-rc.d minecraft defaults[/sh]

Vous pouvez maintenant lancer, arrêter ou redémarrer votre serveur grâce aux commandes suivantes

[sh]/etc/init.d/minecraft start
/etc/init.d/minecraft stop
/etc/init.d/minecraft restart[/sh]

Etapes 4 : Fichiers de configuration du jeu

Dans votre répertoire d’installation « /home/minecraft » plusieurs fichiers sont interressant

Le fichier de log : « server.log »
Le fichier « ops.txt » permet d’indiquer le pseudo des joueurs qui auront accès aux commandes admin du jeu.
Le fichier « white-list.txt » permettant de filtrer les connections sur le serveur, seuls les joueurs dont le pseudo apparaît dans ce fichier auront accès au serveur de jeu

Enfin le plus important le fichier de configuration du serveur « server.properties » détaillé ci-dessous :

[sh]#Minecraft server properties
level-name=world
allow-nether=true #active les « enfers » du jeu
view-distance=10
spawn-monsters=true #active l’apparition des monstres la nuit
online-mode=false
spawn-animals=true
max-players=20
server-ip= #ip de votre serveur
pvp=true #Active la fonction pvp du jeu
level-seed=
server-port=25565 #Port par défaut du jeu
allow-flight=false
white-list=true #activation de la white list[/sh]

A chaque modification des fichiers de configuration n’oubliez pas de relancer le serveur : /etc/init.d/minecraft restart !

Une réflexion sur « Installation d’un serveur de jeu Minecraft sur Debian »

  1. Bonjour, très intéressant !
    Néanmoins je suis tomber sur cette rédaction en cherchant comment installer un Modpack Serveur sur Openmediavault… et je ne sais pas si c’est la même procedure ou il faut juste rajouter ensuite le modpack … je vous avoue que je suis un peu perdu…

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.