Paper est le serveur Minecraft Java le plus utilisé pour les serveurs communautaires : il reste compatible avec le jeu officiel, accepte les plugins Bukkit et Spigot, et corrige de nombreux problèmes de performance du serveur de Mojang. Ce guide l'installe sur un VPS Linux, avec démarrage automatique, console à distance et sauvegardes.
1. Quel VPS pour Minecraft
Comme FiveM, un serveur Minecraft s'appuie surtout sur un seul cœur pour la simulation du monde : un processeur rapide vaut mieux que beaucoup de cœurs. La mémoire dépend du nombre de joueurs, de la distance de vue et des plugins.
| Serveur | Mémoire allouée à Minecraft | VPS conseillé |
|---|---|---|
| Entre amis, moins de 10 joueurs, peu de plugins | 3 à 4 Go | 4 Go de RAM |
| Communauté de 10 à 40 joueurs | 6 Go | 8 Go de RAM |
| Serveur public, nombreux plugins ou pack de mods | 10 à 12 Go | 16 Go de RAM |
Laissez toujours 1 à 2 Go au système : si Java prend toute la mémoire du VPS, le système arrête brutalement le serveur.
2. Installer Java
Les versions 1.20.5 à 1.21 de Minecraft demandent Java 21. Vérifiez la version exigée pour votre version de Minecraft sur la page de téléchargement de Paper.
apt update && apt install -y openjdk-21-jre-headless tmux
java -version
Créez ensuite un utilisateur dédié : le serveur ne doit pas tourner en root.
adduser --system --group --home /opt/minecraft minecraft
3. Installer Paper
Sur papermc.io/downloads/paper, choisissez votre version de Minecraft et copiez le lien du dernier build.
cd /opt/minecraft
sudo -u minecraft wget -O paper.jar "LIEN_COPIE_DEPUIS_PAPERMC"
sudo -u minecraft java -Xmx2G -jar paper.jar --nogui
Le premier lancement s'arrête aussitôt : il génère les fichiers et vous demande d'accepter le contrat de licence de Minecraft. Si vous l'acceptez :
sudo -u minecraft sed -i 's/eula=false/eula=true/' /opt/minecraft/eula.txt
4. Régler la mémoire
Donnez à Java la même valeur pour la mémoire minimale (-Xms) et maximale (-Xmx) : il réserve tout dès le départ au lieu d'agrandir sa mémoire en cours de partie. Les options ci-dessous sont celles recommandées par l'équipe de Paper pour le ramasse-miettes G1 ; exemple pour 6 Go :
java -Xms6G -Xmx6G -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:G1RSetUpdatingPauseIntervalPercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem \
-XX:MaxTenuringThreshold=1 -jar paper.jar --nogui
Au-delà de 12 Go alloués, les recommandations changent légèrement ; la page de Paper consacrée aux options de démarrage les détaille. Plus de mémoire n'est pas toujours mieux : une allocation trop grande allonge les pauses du ramasse-miettes.
5. Service systemd
Enregistrez la commande précédente dans /opt/minecraft/start.sh, rendez-le exécutable avec chmod +x, puis créez le service :
cat > /etc/systemd/system/minecraft.service <<'EOF'
[Unit]
Description=Serveur Minecraft Paper
After=network-online.target
Wants=network-online.target
[Service]
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/opt/minecraft/start.sh
Restart=on-failure
RestartSec=15
TimeoutStopSec=90
[Install]
WantedBy=multi-user.target
EOF
chown minecraft:minecraft /opt/minecraft/start.sh
systemctl daemon-reload
systemctl enable --now minecraft
Paper sauvegarde le monde et s'arrête proprement quand systemd lui envoie le signal d'arrêt. TimeoutStopSec=90 lui laisse le temps de tout écrire sur un gros monde.
6. Accéder à la console
Lancé par systemd, le serveur n'a pas de terminal. Pour taper des commandes comme op ou whitelist, activez la console à distance RCON dans server.properties :
enable-rcon=true
rcon.port=25575
rcon.password=UN_MOT_DE_PASSE_LONG
Redémarrez le serveur, puis utilisez un client RCON en ligne de commande comme mcrcon depuis le VPS lui-même. N'ouvrez pas le port 25575 dans le pare-feu : RCON transmet le mot de passe en clair. Les journaux s'affichent avec journalctl -u minecraft -f ou dans /opt/minecraft/logs/latest.log.
7. Ports et nom de domaine
ufw allow 25565/tcp comment 'Minecraft Java'
Pour que vos joueurs se connectent avec play.monserveur.fr au lieu d'une adresse IP, créez un enregistrement A vers le VPS. Si vous utilisez un autre port que 25565, ajoutez un enregistrement SRV nommé _minecraft._tcp.play qui indique le port : le jeu le lit automatiquement. Voir configurer les DNS.
Les joueurs Bedrock, sur console ou mobile, peuvent rejoindre un serveur Java grâce au plugin Geyser, qui utilise le port 19132 en UDP.
8. Optimiser
- Pré-générez le monde avec un plugin comme Chunky avant d'ouvrir le serveur : la génération de nouveaux terrains est l'opération la plus coûteuse.
- Réduisez
simulation-distancedansserver.properties, par exemple à 6, en gardant uneview-distanceplus grande : les joueurs voient loin, mais le serveur ne simule que près d'eux. - Mesurez avant de changer avec le profileur spark, intégré à Paper : la commande
spark profilermontre quel plugin ou quelle zone du monde ralentit le serveur.
9. Sauvegarder le monde
Un monde Minecraft se corrompt facilement s'il est copié pendant une écriture. Avant chaque sauvegarde, forcez l'écriture et suspendez-la, puis réactivez-la à la fin. Avec RCON :
mcrcon -p UN_MOT_DE_PASSE_LONG "save-off" "save-all flush"
# copie ou sauvegarde Borg du dossier /opt/minecraft
mcrcon -p UN_MOT_DE_PASSE_LONG "save-on"
Envoyez la copie hors du serveur chaque nuit : voir sauvegardes avec Borg.
Pour dimensionner la mémoire selon votre nombre de joueurs et vos plugins, utilisez notre calculateur de serveur.