Démarrer, arrêter et sauvegarder son serveur Minecraft depuis une interface web

L’installation, la configuration et la mise en place d’un script d’utilisation d’un serveur Minecraft sur Debian est une chose plutôt aisée.

Cependant, il peut être utile d’effectuer des opérations de bases sur le serveur (démarrer, arrêter, sauvegarder…) sans prendre la main en SSH sur le serveur.

Si vous cherchez une solution plus complète, optez plutôt pour mcmyadmin. Cet article offre une alternative légère pour les tâches de bases.

Pour l’installation du serveur et la mise en place du script, je vous conseille cet excellent tutoriel.

Les commandes suivantes doivent être accessibles à la fin du tutoriel :

minecraft@hote$ /etc/init.d/minecraft status
minecraft@hote$ /etc/init.d/minecraft start
minecraft@hote$ /etc/init.d/minecraft stop
minecraft@hote$ /etc/init.d/minecraft backup

Le but ici est d’avoir accès à ces commandes sans prendre la main en SSH sur le serveur, mais plutôt avec une (légère) interface web.

Les prérequis :

  • Un serveur LAMP
  • Le paquet SSHPASS qui permet une connexion SSH dans un script de commande Installation

Attention : Avant d’utiliser SSHPASS qui permet d’indiquer automatiquement le mot de passe, il est nécessaire de se connecter au moins une fois en SSH manuellement pour associer les clés !

Pour faire court, le script php utilisera l’instruction system() afin de prendre la main en SSH sur le compte minecraft de notre serveur.

Schema page php minecraft

Le compte www-data se connectera en SSH au compte minecraft du serveur. Il est nécessaire d’effectuer la connexion au moins une fois manuellement.

La connexion au compte www-data n’est pas possible par mot de passe, il faut y accéder en étant root :

root@host:~# su www-data
$ ssh minecraft@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is ............................................
Are you sure you want to continue connecting (yes/no)?

Tapez yes et tapez votre mot de passe :

Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
minecraft@localhost's password:

Dorénavant, le compte www-data possède la clé RSA pour se connecter au compte minecraft. SSHPASS pourra se connecter.

Il ne vous reste plus qu’à créer la page à l’endroit que vous voulez.

Téléchargement du script => Script php administration serveur minecraft

Ou copiez-collez le script :

<?php
// Démarrer, arrêter et sauvegarder son serveur Minecraft depuis une interface web
// Thibaud FRICHET - tfrichet.fr
// Février 2013

// REMPLACEZ "MOTDEPASSE" par le mot de passe de votre compte minecraft sur le serveur
// REPLACEZ "IP" par l'adresse IP de votre serveur

ob_start(); // empêche l'affichage de la réponse de la commande system()

if (isset($_GET['action'])) // si une action est demandée
{
	$action = $_GET['action'];
	if ($action == 'start' OR $action == 'stop' OR $action == 'backup') // on vérifie les commandes
	{
		system("sshpass -p 'MOTDEPASSE' ssh minecraft@IP '/etc/init.d/minecraft ".$action."'"); // on effectue la commande
		header('Location: index.php'); // et on redirige
		exit();
	}
}

$status = system("sshpass -p 'MOTDEPASSE!' ssh minecraft@IP '/etc/init.d/minecraft status'"); // on récupère le statut du serveur

ob_end_clean();

// on affiche le statut du serveur
if ($status == "craftbukkit.jar is running.")
{
	echo "<h1>Serveur : en ligne</h1>";
}
else
{
	echo "<h1>Serveur : hors ligne</h1>";
}

?>

<input type='button' value="Demarrer" onclick="window.location.href='index.php?action=start';" />
<br /><br />
<input type='button' value="Arreter" onclick="window.location.href='index.php?action=stop';" />
<br /><br />
<input type='button' value="Sauvegarde" onclick="window.location.href='index.php?action=backup';" />

 

Si tout fonctionne bien, la page doit s’afficher ainsi :

page php serv minecraft

J’espère que cette manipulation pourra vous simplifier la vie. N’hésitez pas à aller plus loin et à partager vos avis.

7 pensées sur “Démarrer, arrêter et sauvegarder son serveur Minecraft depuis une interface web

  • 7 avril 2014 à 10:47
    Permalink

    Bonjour,

    Merci pour votre tuto simple et efficace.

    Cependant ce qui m’inquiète est que le mot de passe est en clair dans le code.
    Je n’ai pas très envie que tout le monde puisse accéder au compte sur mon serveur.

    Une authentification sur la page en htaccess peut t’il réglé le soucis ?
    Sinon je ne vois pas comment.

    Répondre
    • 7 avril 2014 à 10:57
      Permalink

      Bonjour,

      En effet le mot de passe de connexion SSH est stocké en clair dans le code PHP.

      Mais le code PHP est interprété par le serveur et n’est pas envoyé au navigateur du client, il est donc impossible que votre mot de passe soit récupéré par un visiteur de la page.

      Un mot de passe par htaccess sur la page est recommandé en effet. Cela limitera l’accès à la page. N’importe qui ne pourra pas arrêter votre serveur minecraft.

      Cordialement, Thibaud.

      Répondre
  • 1 septembre 2014 à 15:58
    Permalink

    Bonjour,

    Je me permet d’intervenir, si jamais on se mange un petit wget -r http://liendusite.tld on est pas un peu dans la mouise ? :3

    Merci pour ce tuto 🙂

    Cdlt,

    Répondre
  • 23 septembre 2014 à 08:22
    Permalink

    Quand il me demande le password de minecraft, j’en tape un au hasard, et il me met ‘ Permission denied, please try again ‘, où je pourrais trouver ce password ?

    Répondre
  • 19 février 2015 à 16:47
    Permalink

    bonjour,
    le script ne marche pas je ne comprend pas pourtant tout est bon.
    j’ai rentrer toutes les bonnes informations dans le .php mai quand j’appuie sur le bouton il ne se passe rien.
    cordialement

    Répondre

Laisser un commentaire

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

Êtes-vous humain ? *