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