Aller au contenu principal

Comment créer un serveur Minecraft sur un VPS ou un serveur dédié

Ce guide vous explique comment installer et configurer un serveur Minecraft Java Edition sur votre VPS ou serveur dédié Linux.

Commander un serveur​

Pour héberger votre serveur Minecraft, HostMyServers propose plusieurs offres adaptées au gaming :

Prérequis​

  • Accès SSH root ou utilisateur avec sudo
  • Système Debian/Ubuntu à jour
  • Minimum 2 Go de RAM (4 Go recommandés pour 10+ joueurs)
  • Port 25565 accessible (TCP)
  • Connexion internet stable

Configuration requise​

Nombre de joueursRAM minimaleRAM recommandée
1-51 Go2 Go
5-102 Go4 Go
10-204 Go6 Go
20+6 Go8 Go+

Mise à jour du système​

sudo apt update && sudo apt upgrade -y

Installation de Java​

Minecraft 1.17+ nécessite Java 17 minimum. Pour les versions récentes (1.20+), Java 21 est recommandé.

Installer Java 21 (recommandé)​

sudo apt install -y openjdk-21-jdk

Vérifier l'installation​

java --version

Vous devriez voir une sortie similaire à :

openjdk 21.0.x 2024-xx-xx
OpenJDK Runtime Environment (build 21.0.x+xx-xx)
OpenJDK 64-Bit Server VM (build 21.0.x+xx-xx, mixed mode, sharing)

Création d'un utilisateur dédié​

Pour des raisons de sécurité, ne faites jamais tourner le serveur en root. Créez un utilisateur dédié :

sudo adduser --system --home /opt/minecraft --shell /bin/bash minecraft

Installation des outils nécessaires​

sudo apt install -y screen wget curl unzip
  • screen : permet de garder le serveur actif après la déconnexion SSH
  • wget/curl : pour télécharger les fichiers
  • unzip : pour extraire les archives

Téléchargement du serveur Minecraft​

Connectez-vous en tant qu'utilisateur minecraft​

sudo -u minecraft bash
cd /opt/minecraft
mkdir server
cd server

Téléchargez le serveur officiel​

Récupérez le lien de la dernière version sur minecraft.net/download/server puis :

wget -O server.jar https://piston-data.mojang.com/v1/objects/XXXXXXX/server.jar
Note

Remplacez l'URL par le lien officiel de la version souhaitée.

Acceptation du EULA​

Vous devez accepter le contrat de licence Minecraft :

echo "eula=true" > eula.txt

Premier lancement​

Lancez le serveur une première fois pour générer les fichiers de configuration :

java -Xms1G -Xmx2G -jar server.jar nogui

Paramètres de mémoire :

  • -Xms1G : mémoire initiale (1 Go)
  • -Xmx2G : mémoire maximale (2 Go)
  • nogui : désactive l'interface graphique

Arrêtez le serveur avec stop ou Ctrl+C après le premier lancement.

Configuration du serveur​

Modifiez le fichier server.properties selon vos besoins :

nano server.properties

Paramètres importants​

# Port du serveur (par défaut : 25565)
server-port=25565

# Nombre maximum de joueurs
max-players=20

# Mode de jeu (survival, creative, adventure, spectator)
gamemode=survival

# Difficulté (peaceful, easy, normal, hard)
difficulty=normal

# Message affiché dans la liste des serveurs
motd=Mon Serveur Minecraft

# Distance de rendu (réduire si lag)
view-distance=10

# Activer la whitelist
white-list=false

# Mode online (vérification des comptes Mojang)
online-mode=true

# Activer le PvP
pvp=true

# Spawn protection (rayon en blocs)
spawn-protection=16

Configuration du pare-feu​

Ouvrez le port Minecraft dans le pare-feu :

Avec UFW​

sudo ufw allow 25565/tcp
sudo ufw reload

Avec iptables​

sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4

Lancement avec screen​

Pour garder le serveur actif après la déconnexion SSH :

Démarrer le serveur dans screen​

screen -S minecraft
cd /opt/minecraft/server
java -Xms1G -Xmx2G -jar server.jar nogui

Détacher la session​

Appuyez sur Ctrl+A puis D pour détacher la session.

Revenir à la session​

screen -r minecraft

Lister les sessions​

screen -ls

Configuration en tant que service systemd​

Pour un démarrage automatique au boot du serveur :

Créer le fichier de service​

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

Contenu du fichier :

[Unit]
Description=Minecraft Java Server
After=network.target

[Service]
User=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms1G -Xmx2G -jar /opt/minecraft/server/server.jar nogui
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure
RestartSec=20
StandardInput=null

[Install]
WantedBy=multi-user.target

Activer et démarrer le service​

sudo systemctl daemon-reload
sudo systemctl enable minecraft.service
sudo systemctl start minecraft.service

Commandes de gestion​

# Vérifier le statut
sudo systemctl status minecraft.service

# Arrêter le serveur
sudo systemctl stop minecraft.service

# Redémarrer le serveur
sudo systemctl restart minecraft.service

# Voir les logs
sudo journalctl -u minecraft.service -f

Gestion du serveur​

Commandes console utiles​

Une fois connecté à la console du serveur (via screen) :

CommandeDescription
stopArrête le serveur proprement
save-allSauvegarde le monde
listAffiche les joueurs connectés
op <joueur>Donne les droits admin à un joueur
deop <joueur>Retire les droits admin
kick <joueur>Expulse un joueur
ban <joueur>Bannit un joueur
whitelist add <joueur>Ajoute un joueur à la whitelist
whitelist remove <joueur>Retire un joueur de la whitelist
gamemode <mode> <joueur>Change le mode de jeu
difficulty <niveau>Change la difficulté

Optimisation des performances​

Script de démarrage optimisé​

Créez un script de lancement avec des flags optimisés :

nano /opt/minecraft/server/start.sh
#!/bin/bash
cd /opt/minecraft/server

java -Xms2G -Xmx4G \
-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 \
-jar server.jar nogui

Rendez le script exécutable :

chmod +x /opt/minecraft/server/start.sh

Réduire le lag​

Dans server.properties :

# Réduire la distance de rendu
view-distance=8

# Réduire la distance de simulation
simulation-distance=6

# Limiter les entités
max-tick-time=60000

Sauvegarde automatique​

Script de sauvegarde​

sudo nano /opt/minecraft/backup.sh
#!/bin/bash
BACKUP_DIR="/opt/minecraft/backups"
SERVER_DIR="/opt/minecraft/server"
DATE=$(date +%Y-%m-%d_%H-%M-%S)

mkdir -p $BACKUP_DIR

# Sauvegarde du monde
tar -czf $BACKUP_DIR/world_$DATE.tar.gz -C $SERVER_DIR world world_nether world_the_end

# Supprimer les sauvegardes de plus de 7 jours
find $BACKUP_DIR -name "world_*.tar.gz" -mtime +7 -delete

echo "Sauvegarde terminée : world_$DATE.tar.gz"
chmod +x /opt/minecraft/backup.sh

Planifier la sauvegarde​

sudo crontab -e

Ajoutez :

# Sauvegarde quotidienne à 4h du matin
0 4 * * * /opt/minecraft/backup.sh

Connexion au serveur​

Les joueurs peuvent se connecter en utilisant :

  • Adresse : IP_DE_VOTRE_SERVEUR ou votre_domaine.com
  • Port : 25565 (par défaut)

Dans Minecraft : Multijoueur → Ajouter un serveur → Entrer l'adresse

En cas de problème​

Le serveur ne démarre pas​

  • Vérifiez les logs : tail -f /opt/minecraft/server/logs/latest.log
  • Vérifiez que Java est installé : java --version
  • Vérifiez que le EULA est accepté : cat eula.txt

Les joueurs ne peuvent pas se connecter​

  • Vérifiez que le port 25565 est ouvert : sudo ufw status
  • Vérifiez que le serveur tourne : sudo systemctl status minecraft.service
  • Testez le port : nc -zv IP_SERVEUR 25565

Problèmes de performance​

  • Augmentez la RAM allouée (-Xmx)
  • Réduisez view-distance dans server.properties
  • Utilisez Paper ou Spigot au lieu du serveur vanilla pour de meilleures performances