Démarrer automatiquement un serveur Minecraft : service systemd et tâche cron
Après un redémarrage du serveur, votre serveur Minecraft doit repartir tout seul. Nous montrons l'unité de service systemd comme voie propre et la tâche cron avec @reboot comme alternative.
Vous voulez que votre serveur Minecraft revienne en ligne tout seul après un redémarrage du serveur root, sans avoir à vous connecter en SSH ? Vous êtes au bon endroit.
Nous vous montrons deux méthodes : l'unité de service systemd, la solution propre et recommandée, ainsi que la classique tâche cron avec @reboot comme alternative rapide. Les deux variantes fonctionnent sur toutes les distributions Linux courantes, donc sous Debian, Ubuntu, AlmaLinux et Rocky Linux.
systemd ou tâche cron : quelle est la bonne méthode ?
Une tâche cron avec @reboot se met en place rapidement, mais elle ne connaît qu'un seul moment : le démarrage du système. Si quelque chose se passe mal à cet instant, ou si le serveur plante plus tard, rien ne se produit.
Une unité de service systemd est la voie propre et apporte plusieurs avantages :
- Le serveur ne démarre que lorsque le réseau est réellement prêt, au lieu d'attendre un délai estimé au hasard.
- Après un plantage, systemd redémarre le serveur automatiquement.
- Vous pilotez le serveur avec les commandes habituelles
systemctl start,stop,restartetstatus. - Les messages d'erreur arrivent dans le journal et restent consultables avec
journalctl.
Nous recommandons donc la méthode systemd. Nous décrivons la tâche cron plus bas, comme alternative pour les cas où systemd n'est pas disponible.
Préparation : noter la commande de démarrage, l'utilisateur et le répertoire
Avant de vous lancer, vous avez besoin de trois informations issues de votre installation existante :
- La commande de démarrage contenue dans votre fichier « start.sh », par exemple
screen -dmS spigot java -Xmx4G -jar spigot.jar - L'utilisateur sous lequel le serveur tourne, ici « spigot »
- Le répertoire dans lequel se trouve le fichier du serveur, ici
/home/spigot/server
Le contenu typique d'un start.sh ressemble à ceci :
#Ceci n'est qu'un exemple ! Utilisez le contenu de votre propre start.sh.
screen -S spigot java -Xmx2G -jar spigot.jar
Important : pour le démarrage automatique, screen -S doit impérativement devenir screen -dmS. La raison : screen -S ouvre une session interactive et attend un terminal. Au démarrage du système, il n'y a pas de terminal, le lancement échouerait donc. screen -dmS démarre au contraire la session directement en arrière-plan.
Si vous n'avez pas encore installé de serveur Minecraft, commencez par notre tutoriel Installer un serveur Minecraft sur Debian.
Créer une unité de service systemd pour le serveur Minecraft
Créer le fichier de l'unité
Créez un nouveau fichier de service en tant que root :
nano /etc/systemd/system/minecraft.service
Saisissez le contenu suivant et adaptez l'utilisateur, le répertoire, la RAM et le nom du fichier à votre installation :
[Unit]
Description=Minecraft-Server
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
User=spigot
WorkingDirectory=/home/spigot/server
ExecStart=/usr/bin/screen -dmS spigot java -Xmx4G -jar spigot.jar
ExecStop=/usr/bin/screen -S spigot -X stuff "stop\n"
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
Les lignes les plus importantes en un coup d'œil :
AfteretWantsgarantissent que le serveur ne démarre qu'une fois le réseau disponible.Userdéfinit sous quel utilisateur le serveur tourne. Ne l'exploitez jamais en tant que root.WorkingDirectoryest le répertoire qui contient le fichier du serveur. Sans cette indication, Java ne trouve pas le fichier JAR.ExecStopenvoie la commande « stop » à la session screen. Le serveur enregistre ainsi proprement le monde au lieu d'être tué brutalement.Restart=on-failurerelance automatiquement le serveur après un plantage,RestartSecfixe le délai d'attente en secondes.
Enregistrez le fichier avec « CTRL + X », puis « Y » et « Entrée ».
Activer et démarrer le service
systemd relit ensuite le nouveau fichier, active le démarrage automatique et lance le serveur immédiatement :
systemctl daemon-reload
systemctl enable --now minecraft
Vous vérifiez l'état actuel avec :
systemctl status minecraft
Si la sortie affiche « active », le service tourne. En cas de problème, le journal fournit le message d'erreur exact :
journalctl -u minecraft -n 50
Accéder à la console du serveur
Le serveur continue de tourner dans une session screen. Comme celle-ci appartient à l'utilisateur « spigot », passez d'abord sur cet utilisateur, puis ouvrez la console :
su spigot
screen -r spigot
Avec « CTRL + A + D », vous quittez la console sans arrêter le serveur.
Arrêter et redémarrer le serveur
Désormais, vous pilotez le serveur via systemd :
systemctl stop minecraft
systemctl restart minecraft
Pour désactiver de nouveau le démarrage automatique, il suffit de :
systemctl disable minecraft
Alternative : le démarrage automatique par une tâche cron avec @reboot
Si vous ne souhaitez pas créer d'unité de service, vous obtenez aussi le démarrage automatique par la crontab de l'utilisateur concerné. Ouvrez la crontab avec :
export VISUAL=nano; crontab -e
Ajoutez votre commande de démarrage en dernière ligne, précédée du préfixe @reboot :
@reboot <contenu de votre fichier start.sh>
#Voici à quoi devrait ressembler le paramètre de démarrage, cela peut différer de votre propre script de lancement.
@reboot screen -dmS <nom-du-screen> java -Xmx<AMOUNT>G -jar <répertoire et nom du fichier du serveur Minecraft>.jar
#EXEMPLE :
@reboot screen -dmS spigot java -Xmx2G -jar /home/spigot/spigot.jar
Veillez ici aussi à utiliser screen -dmS et non screen -S. Pour lancer par la même méthode d'autres applications et scripts au démarrage du serveur, consultez notre tutoriel Exécuter automatiquement des programmes au démarrage du serveur.
Tester le démarrage automatique
Ne partez pas du principe que la configuration est correcte, testez-la volontairement une fois. Redémarrez le serveur :
reboot
Patientez une à deux minutes, reconnectez-vous en SSH et vérifiez avec systemctl status minecraft ou avec screen -ls que le serveur Minecraft tourne de nouveau. Connectez-vous en plus depuis le client de jeu, afin d'être certain que le serveur est réellement joignable.
Erreurs fréquentes lors du démarrage automatique
- screen -S au lieu de screen -dmS : de loin l'erreur la plus fréquente. Sans
-dm, le serveur ne démarre pas au boot. - Mauvais répertoire : Java ne trouve pas le fichier JAR. Vérifiez
WorkingDirectoryou indiquez le chemin complet vers le fichier JAR dans la tâche cron. - Mauvais utilisateur : si le service tourne en tant que root, les fichiers du monde nouvellement créés appartiennent ensuite à root, et l'utilisateur prévu pour le serveur ne peut plus les écrire.
- RAM insuffisante : si la valeur derrière
-Xmxdépasse la mémoire libre, le noyau met fin au processus Java peu après son lancement.
Questions fréquentes
systemd ou tâche cron : quelle est la meilleure méthode ?
Pourquoi faut-il remplacer screen -S par screen -dmS ?
Comment accéder à la console du serveur après un démarrage automatique ?
systemd relance-t-il aussi mon serveur après un plantage ?
Comment vérifier que le démarrage automatique fonctionne vraiment ?
2024-2026 KernelHost GmbH. Tous droits réservés. Ce guide est protégé par le droit d'auteur. Sa republication sur d'autres sites web, même partielle ou sous une forme modifiée, n'est pas autorisée sans notre accord écrit. Les citations accompagnées de la source et d'un lien sont expressément les bienvenues.

