Un serveur Minecraft sous FreeBSD 9.2 + Jail

Pour alimenter un peu mon blog, voici un petit retour d'expérience sur la mise en place d'un serveur Minecraft chez moi. Bon tout d'abord il y a des pré requis techniques, il faut un bon CPU et 2GB de RAM ou plus, car java le jeu est très gourmand. Chez moi j'utilise des jails sur mon serveur FreeBSD afin de tout séparer proprement, et j'utilise les ports car les packages binaires sur les dépôts officiels ne me conviennent pas.

Création de la jail

Je créé à l'aide de ezjail-admin une jail nommée minecraft avec l'IP 192.168.0.7 :

(hôte)# ezjail-admin create minecraft 're0|192.168.0.7'

Je démarre cette jail, je me connecte dessus afin de paramétrer le mot de passe root, puis je ferme tout :

(hôte) # ezjail-admin start minecraft
(hôte) # ezjail-admin console minecraft
(minecraft) # passwd
(minecraft) # exit
(hôte) exit

Je me connecte en SSH sur ma jail (si vous voulez vous connecter en root il faut mettre le PermitRootLogin à yes dans /etc/ssh/sshd_config de la jail au préalable) :

$ ssh root@192.168.0.7

J'installe pkg et portmaster, deux outils pour gérer mes ports plus facilement :

(minecraft) # cd /usr/ports/ports-mgmt/pkg
(minecraft) # make install clean
(minecraft) # pkg2ng
(minecraft) # cd /usr/ports/ports-mgmt/portmaster
(minecraft) # make install clean

Je paramètre mon make.conf :

(minecraft) # vi /etc/make.conf
WRKDIRPREFIX=           /var/ports
DISTDIR=                /var/ports/distfiles
PACKAGES=               /var/ports/packages
INDEXDIR=               /var/ports
WITHOUT_X11=            yes
OPTIONS_UNSET=X11
WITH_PKGNG=             yes

Notez qu'il est possible de modifier le template des jails, afin que les nouvelles jails aient automatiquement certains paramètres. Exemple depuis l'hôte : /usr/jails/newjail/etc/ssh/sshd_config.

Installation de Java

J'utilise OpenJDK7, car la version 8 est encore déconseillée aux utilisateurs finaux, et la compilation sera plus longue (car il va compiler aussi la 7). Le paquet Java officiel est également disponible dans les ports mais il fait appel à la couche de compatibilité Linux. C'est donc plus simple d'utiliser OpenJDK7 qui est natif.

(minecraft) # cd /usr/ports/java/openjdk7/
(minecraft) # make install clean

La compilation va être plutôt longue. Je laisse les options par défaut.

Récupération et lancement du serveur Minecraft

Je télécharge le serveur Minecraft depuis le site officiel :

(minecraft) # cd /root
(minecraft) # fetch https://s3.amazonaws.com/Minecraft.Download/versions/1.7.9/minecraft_server.1.7.9.jar

Note : Pour un maximum de sécurité il est recommandé de créer un utilisateur minecraft, avec son propre dossier /home afin d'exécuter le jeu. Dans ce tutoriel, pour faire simple, et puisque nous sommes dans une jail dédiée, je passe cette étape et fais tout en root.

(minecraft) # java -Xmx1024M -Xms1024M -jar minecraft_server.1.7.9.jar nogui

Après quelques secondes la carte est générée, et il est possible de se connecter à ce serveur depuis un autre poste qui exécute Minecraft. Pour leses connexions de l'extérieur il faut penser à rediriger le port 25565 depuis le routeur.

Performances

La compilation de Java a pris plus de 4h sur mon serveur à base d'Atom 32 bits à 1,6GHz, un temps non négligeable ! Pour l'exécution du .jar, il est possible de diminuer les paramètres mémoire, car mon serveur n'a que 1GB de RAM, je ne peux donc pas allouer 1GB au jeu sous peine de le faire tomber. J'ai utilisé java -Xmx512M -Xms512M -jar minecraft_server.1.7.9.jar nogui. A l’exécution, la commande top m'a montré que le système est très sollicité, le CPU est en moyenne a 50% de charge, avec des pointes à 100%.

Lorsque je joue sur ce serveur, j'observe d'importantes latences, avec des blocs qui ne disparaissent que 1 seconde après avoir été cassés, en résumé ce n'est pas vraiment jouable. Un Atom 32 bits + 1GB de ram n'est donc pas suffisant pour supporter un serveur Minecraft.

Conclusion

Il est très facile de faire un serveur Minecraft sur FreeBSD, même dans une jail, par contre les pré requis techniques sont plutôt importants. Un CPU 64 bits double cœur pas trop vieux et 2GB de RAM ou plus sont recommandés, surtout si vous prévoyez d'accueillir une dizaine de joueurs.

Vus : 2446
Publié par Maniatux : 95