Aller au contenu
Linux Minecraft

J'héberge le serveur Minecraft moddé de ma femme

Pierre

10 min de lecture

Avec ma femme on a un passe-temps (plus elle que moi) c'est Minecraft. Je dois dire qu'elle commence à atteindre un niveau assez avancé en build et en redstone. Alors pour qu'on puisse jouer en famille avec les neuveux et amis j'ai hébergé un serveur sur mon vps, c'est vraiment pas compliqué mais je vais tout de même partager ici ma procédure.

Ce qu'on va faire :

  • se connecter en ssh au serveur (Ubuntu 25.10)
  • installer le serveur moddé (Fabric)
  • installer quelques mods server-side
  • créer un service systemd pour que le serveur se relance automatiquementr en cas de crash et tourne h24
  • configurer et optimiser le serveur Minecraft.

C'est parti.

On se connecte en ssh à notre serveur, normalement ça vous savez faire.

Java

On va installer la dernière version de Java à ce jour (26) :

sudo apt install openjdk-26-jre-headless -y

Serveur Minecraft

On va créer un utilisateur système "minecraft" avec comme dossier de départ /opt/minecraft

sudo useradd -r -m -d /opt/minecraft -s /bin/bash minecraft

Comme je sais que vous aimez comme moi comprendre ce que vous tapez voici l'explication Gemini de cette commande :

sudo : Exécute la commande avec les privilèges du super-utilisateur (root). Indispensable pour modifier les fichiers système comme /etc/passwd.

useradd : L'utilitaire de base pour créer un nouvel utilisateur.

-r (system) : C'est une option cruciale pour la sécurité. Elle crée un compte système. L'UID (identifiant utilisateur) sera choisi dans une plage basse (généralement en dessous de 1000). Ce compte n'a pas de date d'expiration et est destiné à faire tourner des services, pas à ce qu'un humain s'y connecte physiquement.

-m (create-home) : Force la création du répertoire personnel de l'utilisateur. Même pour un compte système, c'est utile ici pour que le dossier /opt/minecraft soit généré automatiquement avec les bonnes permissions.

-d /opt/minecraft (home-dir) : Définit l'emplacement du répertoire personnel. Au lieu du classique /home/minecraft, on choisit /opt/, qui est la convention Linux pour les logiciels tiers ou "optionnels".

-s /bin/bash (shell) : Définit le shell de connexion. En précisant /bin/bash, on autorise l'exécution de scripts shell sous cet utilisateur, ce qui est pratique pour automatiser le démarrage du serveur Minecraft.

minecraft : Le nom de l'utilisateur qu'on crée.

On switch sur l'utilisateur minecraft : sudo su minecraft

cd ~

pwd

ci dessus on s'assure qu'on est bien dans /opt/minecraft comme dossier de départ, ensuite on crée un dossier "server" et on s'y déplace

mkdir server && cd server

Maintenant on va télécharger le serveur minecraft fabric, retrouvez les différentes versions ici. Attention, le lien ci-dessous correspond à la version 26.1 au moment où j'écris ces lignes. Pensez à vérifier sur le site de Fabric pour obtenir le lien de la dernière version.

curl -OJ https://meta.fabricmc.net/v2/versions/loader/26.1/0.18.5/1.1.1/server/jar

on va le renommer en "server.jar" avec la commande mv pour plus de facilité

mv fabric-server-mc.26.1-loader.0.18.5-launcher.1.1.1.jar server.jar

On va écrire un script bash pour lancer le serveur 

nano start.sh

contenu :

#!/bin/bash

# Aikar's flags adaptés pour Fabric et 24Go de RAM

java -Xms8G -Xmx16G \

    -XX:+UseG1GC \

    -XX:+ParallelRefProcEnabled \

    -XX:MaxGCPauseMillis=200 \

    -XX:+UnlockExperimentalVMOptions \

    -XX:+DisableExplicitGC \

    -XX:+AlwaysPreTouch \

    -XX:G1NewSizePercent=30 \

    -XX:G1MaxNewSizePercent=40 \

    -XX:G1HeapRegionSize=8M \

    -XX:G1ReservePercent=20 \

    -XX:G1HeapWastePercent=5 \

    -XX:G1MixedGCCountTarget=4 \

    -XX:InitiatingHeapOccupancyPercent=15 \

    -XX:G1MixedGCLiveThresholdPercent=90 \

    -XX:G1RSetUpdatingPauseTimePercent=5 \

    -XX:SurvivorRatio=32 \

    -XX:+PerfDisableSharedMem \

    -XX:MaxTenuringThreshold=1 \

    -Dusing.aikars.flags=https://mcflags.emc.gs \

    -Daikars.new.flags=true \

    -jar server.jar nogui

 

A savoir que cette configuration est adaptée pour mon serveur qui dispose de 48go de ram : vous devrez l'adapter selon vos ressources. Voici les explications les plus importantes selon Gemini :

1. La Gestion de la Mémoire (Le "Cœur" du réglage)

-Xms8G : C'est la RAM allouée au démarrage.

-Xmx16G : C'est la limite maximale.

Ne dépassez pas 24-30 Go pour Minecraft lui-même, car au-delà, l'optimisation Java (G1GC) devient moins efficace.

2. Le Garbage Collector (G1GC)

Le but ici est d'éviter que le serveur se fige pour "nettoyer" la RAM.

-XX:+UseG1GC : Active le Garbage Collector "G1", le plus moderne pour les grosses quantités de RAM.

-XX:MaxGCPauseMillis=200 : L'objectif de pause. On dit à Java : "Essaie de ne jamais arrêter le jeu plus de 200 millisecondes pour nettoyer la mémoire". C'est imperceptible pour les joueurs.

-XX:+AlwaysPreTouch : Demande à Java de réserver toute la RAM dès le début au niveau du noyau Linux. Cela garantit que la RAM est physiquement disponible immédiatement.

3. Les Flags d'Optimisation Fine

-XX:G1HeapRegionSize=8M : Divise la mémoire en blocs de 8 Mo. Pour un serveur entre 8 et 16 Go de RAM, c'est idéal. Si on monte à 24 Go ou plus, on passe parfois à 16M.

-XX:InitiatingHeapOccupancyPercent=15 : Java commence à nettoyer quand seulement 15% de la RAM est occupée. C'est très bas, mais ça permet de faire des petits nettoyages fréquents plutôt qu'un gros nettoyage qui ferait ramer tout le monde.

-XX:+DisableExplicitGC : Empêche les plugins mal codés d'appeler manuellement un nettoyage de RAM, ce qui est souvent source de crashs.

 

A quoi sert ce script ? En gros il lance le serveur "server.jar" avec des flags qui définissent la quantité de ram allouée à Java ainsi que des flags d'optimisation.

OK, maintenant on va rendre ce script executable :

chmod +x start.sh

Et on essaie de le lancer :

./start.sh

Le serveur va planter, c'est normal au premier lancement. Il va générer un fichier eula.txt qu'il va falloir éditer pour dire "oui on accepte les conditions ..."

nano eula.txt

on passe false en true -> Ctrl +X | Y | Entrée

On peut maintenant quitter l'utilisateur minecraft : exit

Le service systemd

Il existe d'autres façon de faire,  j'ai choisis d'utiliser un service systemd. Voici les différents avantages :

1. Démarrage Automatique (Boot)

C'est le plus gros avantage. Si votre VPS redémarre systemd relancera Minecraft automatiquement dès que le système est prêt.

Le serveur est disponible pour les joueurs dès que la machine est up.

2. Auto-Restart en cas de Crash

Minecraft (surtout avec des mods Fabric) peut parfois "crash" à cause d'un dépassement de mémoire ou d'un bug de plugin.

Avec l'option Restart=on-failure, systemd détecte que le processus s'est arrêté brutalement et le relance immédiatement.

Cela garantit une disponibilité maximale sans intervention de votre part.

3. Gestion Propre des Ressources et Sécurité

En configurant le service, on indique explicitement :

User=minecraft : Le serveur ne tournera jamais avec les droits root (sécurité).

WorkingDirectory=/opt/minecraft : Tout ce qui est généré reste dans le bon dossier.

Nice=-5 : Moi je ne l'ai pas fait mais on pourrait utiliser Nice pour donner une priorité CPU légèrement plus haute à Minecraft par rapport à d'autres tâches de fond pour réduire le lag.

4. Centralisation des Logs (Journald)

Au lieu de chercher le fichier latest.log à chaque fois, on peut utiliser la puissance de Linux pour surveiller ce qui se passe :

journalctl -u minecraft -f : Vous permet de voir les logs en temps réel, exactement comme on le ferait pour un autre service.

5. Facilité d'administration

Une fois en place, on gère notre jeu comme n'importe quel service système standard :

sudo systemctl start minecraft

sudo systemctl stop minecraft

sudo systemctl status minecraft (pour voir si tout va bien en un coup d'œil)

C'est beaucoup plus propre que de laisser une session screen ou tmux ouverte pendant des semaines.

Allons-y !

On crée et édite le fichier de config du service :

sudo nano /etc/systemd/system/minecraft.service

contenu :

[Unit]

Description=Minecraft Fabric Server de Wendy

After=network.target



[Service]

User=minecraft

Group=minecraft

WorkingDirectory=/opt/minecraft/server

# Commande de démarrage

ExecStart=/opt/minecraft/server/start.sh

# Redémarrage automatique en cas de crash (attente de 10s)

Restart=always

RestartSec=10

# Tuer proprement le processus Java

KillSignal=SIGTERM

StandardOutput=journal

StandardError=journal



[Install]

WantedBy=multi-user.target

 

Vous l'avez compris ce service va s'occuper de lancer notre script "start.sh" en utilisant l'utilisateur "minecraft"

On recharge les daemon, active le service au démarrage du système et autorise les connexions externes sur le port 25565 utilisé par Minecraft dans le firewall (UFW) :

sudo systemctl daemon-reload

sudo systemctl enable minecraft

sudo ufw allow 25565/tcp

Bien, maintenant on va démarrer notre service :

sudo systemctl start minecraft

Et on vérifie si tout va bien :

sudo systemctl status minecraft

Pour rappel si vous voulez voir la console du serveur :

sudo journalctl -u minecraft -f

Voilà ! Alors OK c'est peut être un peu casse pieds la première fois, mais après vous avez un serveur qui tourne seul h24 et une femme qui ne vous les casse pas (les pieds !).

Whitelist

Parmis les fichiers indispensables à éditer il y a le "whitelist.json" vous le trouverez à la racine de votre serveur Minecraft. Il va permettre de créer une liste blanche des personnes autorisées à se connecter. Contrairement à une liste noire qui dirait "tout le monde peut entrer sauf toi et toi" la whitelist dit "personne ne rentre sauf toi et toi", beaucoup plus secure si vous ne voulez pas que des petits malins trouvent votre adresse ip et viennent piller vos ressources ou détruire vos builds.

Avec notre utilisateur minecraft :

nano whitelist.json

Voici la syntaxe attendue :

[

  {
    "uuid": "full UUID de votre compte minecraft java",
    "name": "votre nom de compte minecraft java"
  }

]

Pour obtenir votre UUID rendez-vous ici et cherchez avec votre nom de compte Minecraft Java (pas votre gamertag xbox si javais vous avez). Votre UUID à un format comme ceci : 123ab456-a1b2-1234-a123-1234abcd5678

L'idée est de vous mettre en whitelist puis vous vous connectez au serveur et vous pourrez ajouter vos compagnons plus simplement avec la commande /whitelist en plein jeu ou alors si vous aimez le json vous pouvez ajouter tous vos copains dans le fichier, vous séparez chaque bloc { } avec une virgule et le dernier sans comme ceci :

[

  {
    "uuid": "full UUID de votre compte minecraft java",
    "name": "votre nom de compte minecraft java"
  },

 {
    "uuid": "full UUID de votre compte minecraft java",
    "name": "votre nom de compte minecraft java"
  },

 {
    "uuid": "full UUID de votre compte minecraft java",
    "name": "votre nom de compte minecraft java"
  },

 {
    "uuid": "full UUID de votre compte minecraft java",
    "name": "votre nom de compte minecraft java"
  }

]

Bien sûr vous sauvegardez votre fichier avec Ctrl + X | Y pour yes | Entrée

Maintenant on va éditer le fichier server.properties pour activer la whitelist

nano server.properties

On va rechercher avec Ctrl + W "whitelist"

On passe le paramètre "enforce-whitelist" à true

On sauvegarde avec Ctrl + X | Y pour yes | Entrée

Pour faire bien on va redémarrer notre serveur (merci notre service systemd) avec notre utilisateur habituel (autorisé à sudo)

sudo systemctl restart minecraft

sudo systemctl status minecraft

Maintenant vous pouvez vous connecter à votre serveur ainsi que vos camarades que vous avez autorisé, vous pouvez en whitelister d'autres avec /whitelist.

Vous lancez votre jeu (attention ici on a installé un serveur Fabric il vous faut aussi installer fabric sur votre machine de jeu ou utiliser un launcher minecraft alternatif (ex: Prism Launcher), vous allez dans "multijoueurs" et "nouveau serveur". Vous renseignez l'adresse ip de votre serveur et vous choisissez un nom pour votre serveur.

Après avoir enregistré vous devriez voir votre serveur qui ping.

Conclusion

On a parlé juste au dessus du fichier server.properties, c'est un fichier essentiel et je vous conseil fortement d'ajuster certains paramètres selon votre environnement et vos préférences. Je ne vais pas détailler ici l'utilisation de ce fichier car il y a déjà des sites spécialisés qui vont vous expliquer le fonctionnement de ce fichier de manière bien plus pro que moi. Par exemple minecraft.wiki

Discussion

Laisser un commentaire