Créer un serveur dédié Minecraft sur une Dédibox

Aujourd'hui, on trouve toute une pléthore de prestataires de services qui vous permettent de louer des serveurs de jeux peu chers et de qualité moyenne, avec généralement un catalogue dont Minecraft ne fait quasiment jamais partie. D'autres personnes préfèrent héberger leurs parties sur leur propre machine ou une machine annexe, ce qui peut s'avérer parfois problématique pour diverses raisons. Encore plus fou, certains auraient trouvé un moyen d'héberger leurs parties chez des fournisseurs de pages persos, bref...

Soyons honnêtes, Minecraft tournant sur la plateforme Java, il consomme tout de même une partie non négligeable de ressources systèmes. De ce fait si vous voulez héberger des parties sur un serveur convenable, optez plutôt pour un serveur dédié. De nombreux sites proposent de louer des serveur dédiés sur lesquels vous y faites ce que bon vous semble. Ce qui est intéressant, c'est le fait de pouvoir paramétrer votre serveur aux petits oignons sans aucune contrainte. Ils sont souvent illimités en trafic et disposent d'une bande passante très importante, généralement 1Gb/s soit 125Mo/s, on est large !

J'ai personnellement choisi les services de Online.net (anciennement Dédibox) pour acquérir un serveur dédié Dédibox V3 pour un coût mensuel d'environ 20€, ce qui n'est pas excessif lorsque l'on compare les offres du marché. Je l'avoue, je n'y connaissais absolument rien du moins en ce qui concerne l'administration du serveur, mais comme tout le monde j'ai beaucoup appris grâce à mes recherches sur Internet, et aujourd'hui je vous propose mon aide. Mon tutoriel concerne uniquement l'installation d'un serveur vierge sans mod, ni plugin. Cela signifique que cette procédure ne concerne pas Craftbukkit, si c'est votre cas, dirigez-vous plutot vers la méthode Screen, un tuto est dispo ici et la liste de mods.

Préparatifs : Choix du système d'exploitation

Une fois votre serveur dédié acquis, il vous faut installer un système d'exploitation, ce qui n'est pas une opération à prendre à la légère. Je ne vais pas détailler la procédure des différentes sociétés, mais généralement elles se ressemblent toutes. Le système d'exploitation est particulièrement important, il faut bien le choisir. Oubliez Windows tout de suite, un bon OS Linux sera plus adapté à la situation, parce qu'à vrai dire, je ne me suis pas penché sur celui de Microsoft. On trouve différentes distributions avec un noyau Linux, optez pour Ubuntu 64bits. L'opération prendra moins d'une heure.

Image IPB

Partie 1 : Installation du serveur dédié et de Java

Ubuntu maintenant installé, il nous faut accéder au serveur via le mode console. Pour se faire, téléchargez Putty, un client SSH très léger et très fonctionnel.

    - Lancez-le.
    - Indiquez dans Host Name l'ip de votre serveur puis cliquez sur Open.
    - La ligne ci-dessous apparaît alors :



login as:


    - Indiquez root puis faites entrée.
    - Saisissez le mot de passe que vous avez renseigné pour l'administrateur de votre serveur, puis validez par Entrée. (aucun caractères n'apparaît c'est normal...)
    - L'écran d'accueil du serveur apparaît alors, vous êtes loggé.



root@nomduserver:~#


La première chose à faire c'est d'installer Java, forcément.

    - Entrez la commande ci-dessus, puis validez :


sudo apt-get install openjdk-6-jre


    - Plusieurs actions s'effectuent et affiche enfin :


Souhaitez-vous continuer [O/n] ?


    - Entez O (la lettre) puis validez, Java s'installe alors...


Partie 2 : Installation du serveur Minecraft

Une fois l'installation de Java terminée, il nous faut récupérer l'exécutable du serveur. Ici nous ne sommes plus sous Windows, donc ne vous attendez pas à télécharger un fichier .exe. Le fichier nécessaire est "minecraft_server.jar", il est disponible sur minecraft.net, allons donc le chercher.

Mais avant toute chose, créons le répertoire du jeu.

    - Entrez cette commande dans la console :


cd /home


    - Puis celle-ci :


mkdir minecraft


    - Le répertoire créé, positions-nous dedans :


cd minecraft


    - Rendez-vous maintenant à l'adresse http://minecraft.net/download.jsp et copiez l'url du minecraft_server.jar de la partie "Multiplayer beta server software", oubliez celui de la partie Linux / Other.


Image IPB

    - Toujours dans la console tapez la commande suivante en prenant soin de coller la bonne url :


wget http://minecraft.net/download/minecraft_server.jar?v=XXXXXXXXXXXXX


    - Le serveur est prêt, il ne reste plus qu'à le renommer et le lancer :


mv minecraft_server.jar?v=XXXXXXXXXXXXX minecraft_server.jar
java
-Xmx1024M -Xms1024M -jar minecraft_server.jar nogui


Si vous avez suivi les instruction à la lettre, vous devriez apercevoir ceci :

[INFO] Starting minecraft server version Beta 1.2_01
[INFO] Loading properties
[WARNING] server.properties does not exist
[INFO] Generating new properties file
[INFO] Starting Minecraft server on *:25565
[WARNING] Failed to load ban list: java.io.FileNotFoundException: banned-players.txt (Le fichier spécifié est introuvable)
[WARNING] Failed to load ip ban list: java.io.FileNotFoundException: banned-ips.txt (Le fichier spécifié est introuvable)
[WARNING] Failed to load ip ban list: java.io.FileNotFoundException: ops.txt (Le fichier spécifié est introuvable)
[INFO] Preparing level "world"
[INFO] Preparing start region
[INFO] Preparing spawn area: 4%
[INFO] Preparing spawn area: 12%
[INFO] Preparing spawn area: 20%
[INFO] Preparing spawn area: 32%
...


Votre serveur est prêt ! Enfin, non pas tout à fait en fait...

Vous remarquerez qu'une fois la fenetre Putty fermée, votre serveur se ferme aussi. C'est normal, en fermant la console serveur, vous fermez en fait avec le logiciel du serveur Minecraft.

Dans la prochaine partie, nous verrons alors comment faire tourner le serveur en tant que service ou en tâche de fond.

    - Arrêtez votre serveur Minecraft :


stop


Un chose très importante à savoir : Ne jamais rebooter electriquement votre serveur dédié sans avoir stoppé votre serveur Minecraft au préalable, sinon vous aurez surement la chance de découvrir un map complètement corrompue !

Partie 3 : Exécuter le serveur en tant que service

Indiquer à Ubuntu que vous voulez exécuter minecraft_server.jar en tant que Service demande un peu plus d'attention.

    - Il nous faut créer un script qui lancera le serveur en tant que service :


sudo nano /etc/init.d/minecraft


- Copiez / coller le script ci-dessous dans Putty avec le clic-droit :

#!/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\ | 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


    - Faites CTRL+X, indiquez O (encore la lettre) puis validez pour sauvegarder et quitter
    - On accorde maintenant les permissions :


sudo chmod 755 /etc/init.d/minecraft


    - Puis on crée le lien symbolique :


sudo update-rc.d minecraft defaults


Le serveur se lancera maintenant automatiquement en tant que service à chaque reboot du serveur dédié.

    - Pour lancer le serveur MC, entrez :


sudo /etc/init.d/minecraft start


Partie 4 : Des commandes raccourcis : les alias

Les alias vont vous permettre d'effectuer des actions importantes sur votre serveur en un minimum de caractères. Comme vu juste au dessus, pour lancer le serveur il faut taper une "longue" commande, les alias permettrons de simplifier tout ça.

    - Rendez-vous dans le répertoire root :


cd ../../root


    - Puis éditez le fichier .bashrc


sudo nano .bashrc


    - Déplacez-vous à la fin du fichier avec les touches directionnelles, puis ajoutez ces quelques lignes


# Minecraft aliases

alias mcstart="sudo /etc/init.d/minecraft start"
alias mcstop="sudo /etc/init.d/minecraft stop"
alias mcupdate="sudo /etc/init.d/minecraft update"
alias mcbackup="sudo /etc/init.d/minecraft backup"
alias mcstatus="sudo /etc/init.d/minecraft status"
alias mcrestart="sudo /etc/init.d/minecraft restart"


    - Faites CTRL+X, puis O puis Entrée pour quitter


    - Redémarrer votre serveur dédié via l'interface de votre fournisseur.


Image IPB

Maintenant vous pouvez utiliser ces commandes depuis la console du serveur :

    - mcstart : démarrer le serveur
    - mcstop : stopper le serveur
    - mcupdate : mettre à jour le logiciel du serveur Minecraft
    - mcbackup : faire une sauvegarder complète du serveur + reboot
    - mcstatus : retourne le statut du serveur (running ou stopped)
    - mcrestart : reboot du serveur


Partie 5 : Configuration du serveur

Lorsque le serveur est lancé pour la première fois, il créé plusieurs fichiers texte et un fichier important nommé server.properties.

On est pas mazo, on va quand même pas configurer le serveur en mode console, on va faire ça en mode graphique avec WinSCP, de la même façon qu'un Client FTP pour les connaisseurs.

    - Téléchargez WinSCP et installez-le.
    - Lancez-le et indiquez les informations demandées :


Image IPB

Le mot de passe est celui de l'administrateur du serveur, celui utilisé avec Putty.

    - Un fois loggé, cliquez sur ...


Vous voyez maintenant tous les repertoires qui composent votre serveur dédié. Minecraft se situe dans /home/minecraft/.

Vous trouvez alors plusieurs fichiers :
    - op.txt : ajoutez les pseudos des joueurs admins
    - banned-ips.txt, banned-players.txt : IPs et pseudos des joueurs bannis
    - server.properties : Fichier de configuration du serveur


#Minecraft server properties
#Sat Jan 15 20:43:03 CET 2011
level
-name=Nom du répertoire contenant votre map (Par défaut : world)
hellworld
=Activer ou nom le Nether, l'enfer quoi... [true|false]
spawn-monsters=Activer les monstres [true|false]
online-mode=En local ou en ligne [true|false]
spawn-animals=Activer les animaux [true|false]
max-players=Nombre de joueurs maximum
server-ip=L'
adresse IP de votre serveur
pvp
=Activer les combat joueur contre joueur [true|false]
server
-port=Port de votre serveur (Par défaut : 25565)


A vous de bien choisir vos paramètres, une fois modifiés, entrez :

mcrestart


pour relancer le serveur de jeu.

Partie 6 : Ajout des ports au Pare-feu

Déclarons maintenant des règles au Pare-feu afin qu'il accepte les connexions entrantes.

    - Deux lignes suffises :


iptables -A INPUT -p tcp -i eth0 --dport 25565 -j ACCEPT
iptables
-A INPUT -p udp -i eth0 --dport 25565 -j ACCEPT


    - Redémarrez votre serveur dédié et le tour est joué, vous êtes fin prêt !


Partie 7 : Redirection de l'IP
Une IP comme adresse de connexion, c'est pas facile à retenir. On trouve sur Internet des service gratuits de redirection DNS pour passer de 88.99.111.222 à monserveur.no-ip.org ce qui est, vous l'avouerez, bien plus pratique à retenir.

    - Direction http://www.no-ip.com/, inscrivez-vous (Sign-Up Now!)
    - Une fois inscrit, direction votre boite mail, pour valider votre inscription.
    - Cliquez sur le premier onglet vert "Hosts/Redirects".
    - Cliquez sur le bouton orange "Add a Host".
    - Choisissez un nom de domaine et entrez-le dans Hostname puis choisissez une extension. Certaines sont inaccessible et d'autre sont payantes, l'extension no-ip.org est gratuite.
    - Indiquez l'adresse IP de votre serveur dans IP Address (la case est préremplie avec votre propre IP, mais c'est celle du serveur qu'il nous faut).
    - Ne touchez à rien d'autre, et validez la redirection en cliquant sur "Create Host".


Il est possible que la redirection soit effective immédiatement pour certaines personnes, alors que d'autres doivent attendre 10 à 20 minutes.
A présent pour vous connecter à votre serveur Minecraft, utilisez l'adresse que vous venez de créer et partagez-la avec vos amis.

Erreurs éventuelles

Une erreur de lancement de serveur récurrente, que j'ai moi même eu, est visible sur pas mal de forums. Si vous obtenez l'erreur suivante dans Putty :

Exception in thread "main" java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java
.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:173)
at java
.awt.Window.(Window.java:437)
at java
.awt.Frame.(Frame.java:419)
at net
.minecraft.LauncherFrame.(LauncherFrame.java:17)
at net
.minecraft.LauncherFrame.main(LauncherFrame.java:137)
at net
.minecraft.MinecraftLauncher.main(MinecraftLauncher.java:13)


cela ne provient pas de Java, mais plutôt de la version du logiciel serveur de Minecraft que vous tentez de lancer. Si cette erreur survient c'est que votre client est périmé, corronpu ou que vous avez téléchargé le mauvais fichier .jar. Assurez-vous que le fichier téléchargé provenait du bon lien de téléchargement, en bas de page du site http://minecraft.net/...

Supprimer le lancement automatique du serveur au démarrage :

Si pour une bonne raison vous souhaitez désactiver le lancement du serveur Minecraft au démarrage du dédié, entez la commande :

sudo update-rc.d minecraft remove


Cela est nécessaire si vous utilisez un autre logiciel serveur Minecraft du type Craftbukkit, etc...

Aucun commentaire:

Enregistrer un commentaire