Skip to content

Installation et Gestion d'un Serveur Minecraft

Ce guide vous explique comment installer, configurer et administrer un serveur Minecraft de deux façons : en installation directe (sans Docker) ou via Docker et Docker Compose.


1. Prérequis

Avant de commencer, assurez-vous de disposer de :

  • Une machine sous Linux (Debian/Ubuntu recommandé)
  • Java installé (version selon la cible) :
java -version
Version Java Usage recommandé
Java 8 Anciennes versions Minecraft et modpacks 1.7.x
Java 17 Minecraft 1.17 et versions supérieures
Java 21 Minecraft 1.21 et versions supérieures
  • Pour l'installation Docker : Docker et Docker Compose installés — voir Installation Docker

2. Installation sans Docker

2.1 Installer Java

# Java 8 (modpacks anciens)
sudo apt install openjdk-8-jdk -y

# Java 17 (Minecraft 1.17+)
sudo apt install openjdk-17-jdk -y

# Vérifier l'installation
java -version

2.2 Télécharger et configurer Forge ou Fabric

  1. Téléchargez l'installateur correspondant à votre modpack :
  2. Forge : https://files.minecraftforge.net/
  3. Fabric : https://fabricmc.net/use/

  4. Lancez l'installateur et sélectionnez "Installer un serveur".

  5. Acceptez le EULA :

sed -i 's/eula=false/eula=true/' eula.txt
  1. Configurez le serveur via server.properties (port, difficulté, whitelist, etc.).

2.3 Démarrer le serveur

java -Xmx8G -Xms2G -jar server.jar nogui

💡 Ajustez -Xmx (mémoire max) et -Xms (mémoire initiale) selon les ressources disponibles.


3. Installation avec Docker

3.1 Créer le répertoire du projet

mkdir -p /opt/docker-compose/minecraft
cd /opt/docker-compose/minecraft

3.2 Choisir une configuration docker-compose.yml

Créez le fichier adapté au type de serveur souhaité.

3.2.1 Serveur Forge — GT New Horizons

version: "3"
services:
  mc:
    container_name: GT_New_Horizon
    image: itzg/minecraft-server:java8  # Image Java 8 (requis par GTNH)
    restart: unless-stopped
    stdin_open: true                    # Permet de saisir des commandes via docker attach
    ports:
      - 25566:25566                     # Port d'écoute du serveur
    environment:
      MEMORY: 8G                        # Mémoire allouée au serveur Java
      TYPE: "FORGE"                     # Type de serveur (FORGE pour les modpacks Forge)
      EULA: "TRUE"                      # Acceptation du EULA Minecraft (obligatoire)
      VERSION: 1.7.10                   # Version de Minecraft ciblée par le modpack
      GENERIC_PACK: "https://downloads.gtnewhorizons.com/ServerPacks/GT_New_Horizons_2.7.0_Server_Java_8.zip"  # URL du pack serveur à télécharger automatiquement
      FORGE_VERSION: "10.13.4.1614"    # Version de Forge correspondante
    volumes:
      - Forge_GTNH:/data               # Données du serveur (monde, configs, mods)
volumes:
  Forge_GTNH:

3.2.2 Serveur Forge — Ragnamod 7

version: "3.8"
services:
  mc:
    image: itzg/minecraft-server:java17-alpine  # Image Java 17 allégée
    container_name: Minecraft-Ragnamod-7
    restart: unless-stopped
    tty: true                          # Maintient un pseudo-terminal pour la console
    stdin_open: true                   # Permet de saisir des commandes via docker attach
    ports:
      - "25565:25565"                  # Port d'écoute du serveur
    environment:
      EULA: "true"                     # Acceptation du EULA Minecraft (obligatoire)
      TYPE: FORGE                      # Type de serveur (FORGE pour les modpacks Forge)
      VERSION: "1.18.2"                # Version de Minecraft ciblée par le modpack
      FORGE_VERSION: "40.2.21"         # Version de Forge correspondante
      INIT_MEMORY: 6G                  # Mémoire initiale allouée au serveur Java (heap)
      MAX_MEMORY: 12G                  # Mémoire maximale allouée au serveur Java (heap)
    volumes:
      - Ragnamod-7:/data               # Données du serveur (monde, configs, mods)
volumes:
  Ragnamod-7:

3.2.3 Serveur Fabric — Prominence II RPG

version: '3.8'
services:
  mc-prominence-2-rpg:
    container_name: prominence
    image: itzg/minecraft-server:latest
    restart: unless-stopped
    ports:
      - "25568:25565"                   # Port dédié à cette instance
    environment:
      EULA: "TRUE"                      # Acceptation du EULA Minecraft (obligatoire)
      OPS: |-
        Batponney
      TYPE: "FABRIC"                    # Type de serveur (FABRIC pour les modpacks Fabric)
      VERSION: "1.20.1"                 # Version de Minecraft ciblée par le modpack
      #FABRIC_LAUNCHER_VERSION: "0.16.24"  # Décommenter pour forcer une version précise du launcher Fabric
      GENERIC_PACK: "https://download944.mediafire.com/..."  # URL du pack serveur Prominence II v3.9.0
      MEMORY: "8G"                      # Mémoire allouée au serveur Java
    volumes:
      - ./data:/data                    # Données du serveur (monde, configs, mods)

💡 Remplacez l'URL GENERIC_PACK par le lien de téléchargement du pack serveur correspondant à la version souhaitée depuis le site officiel du modpack.


3.2.4 Serveur NeoForge — MagicMecanism

⚠️ Import manuel requis : MagicMecanism ne dispose pas de pack serveur officiel. Les mods doivent être importés manuellement depuis le client, puis triés pour ne conserver que ceux compatibles côté serveur (les mods client-only comme OptiFine, Sodium, etc. doivent être retirés). Placez les mods sélectionnés dans ./mods/ et les fichiers de configuration dans ./config/.

version: "3.8"

services:
  mc:
    container_name: MagicMecanism
    image: itzg/minecraft-server:java21  # Image Java 21 (requis pour Minecraft 1.21+)
    tty: true
    stdin_open: true                     # Permet de saisir des commandes via docker attach
    restart: unless-stopped
    ports:
      - "25569:25565"                    # Port dédié à cette instance
    environment:
      EULA: "TRUE"                       # Acceptation du EULA Minecraft (obligatoire)
      TYPE: NEOFORGE                     # Type de serveur (NEOFORGE pour les modpacks NeoForge)
      VERSION: "1.21.1"                  # Version de Minecraft ciblée par le modpack
      NEOFORGE_VERSION: "21.1.230"       # Version de NeoForge correspondante
      INIT_MEMORY: 4G                    # Mémoire initiale allouée au serveur Java (heap)
      MAX_MEMORY: 8G                     # Mémoire maximale allouée au serveur Java (heap)
      JVM_OPTS: |
        -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
    volumes:
      - magicmecanism:/data              # Données du serveur (monde, world state)
      - ./mods:/data/mods                # Mods importés manuellement (voir avertissement ci-dessus)
      - ./config:/data/config            # Fichiers de configuration des mods

volumes:
  magicmecanism:
    name: magicmecanism

💡 Les options JVM_OPTS utilisent le garbage collector G1GC, recommandé pour les serveurs Minecraft avec de nombreux mods — elles réduisent les pics de lag et les pauses GC.


3.2.5 Serveur Vanilla

version: "3.8"
services:
  mc:
    container_name: Vanilla_latest
    image: itzg/minecraft-server       # Image Minecraft Vanilla (dernière version stable)
    restart: unless-stopped
    tty: true                          # Maintient un pseudo-terminal pour la console
    stdin_open: true                   # Permet de saisir des commandes via docker attach
    ports:
      - "25567:25567"                  # Port personnalisé (évite les conflits avec d'autres instances)
    environment:
      EULA: "TRUE"                     # Acceptation du EULA Minecraft (obligatoire)
      SERVER_PORT: "25567"             # Port d'écoute (doit correspondre au port mappé ci-dessus)
    volumes:
      - Vanilla:/data                  # Données du serveur (monde, configs)
volumes:
  Vanilla:

4. Lancer et Gérer le Serveur

4.1 Démarrage

cd /opt/docker-compose/minecraft
docker-compose up -d

4.2 Vérification

docker ps

5. Commandes Utiles

Action Commande
🔁 Redémarrer le serveur docker-compose restart
⛔ Arrêter le serveur docker-compose down
📜 Logs en direct docker-compose logs -f
🐚 Accès console serveur docker attach <container_name>
🐚 Accès shell conteneur docker exec -it <container_name> /bin/bash
🔄 Mettre à jour l'image docker-compose pull && docker-compose up -d
🧼 Nettoyage complet docker-compose down -v --rmi all --remove-orphans

💡 Pour quitter docker attach sans arrêter le serveur : Ctrl+P puis Ctrl+Q.


6. Administration du Serveur

Ces commandes s'exécutent depuis la console du serveur (via docker attach ou directement en mode standalone).

6.1 Commandes de base

Commande Description
stop Arrête proprement le serveur
save-all Sauvegarde toutes les données du monde
save-on / save-off Active / désactive la sauvegarde automatique
list Affiche les joueurs connectés
difficulty <peaceful\|easy\|normal\|hard> Change la difficulté du serveur
say <message> Envoie un message global à tous les joueurs
time set <day\|night\|valeur> Change l'heure du jeu
weather <clear\|rain\|thunder> Change la météo

6.2 Gestion des joueurs

Commande Description
op <joueur> / deop <joueur> Attribue / retire le statut opérateur (admin)
kick <joueur> [raison] Expulse un joueur du serveur
ban <joueur> [raison] Bannit un joueur
pardon <joueur> Lève le bannissement d'un joueur
whitelist on / whitelist off Active / désactive la liste blanche
whitelist add <joueur> Ajoute un joueur à la liste blanche
whitelist remove <joueur> Retire un joueur de la liste blanche
tp <source> <destination> Téléporte un joueur vers un autre joueur
tp <joueur> <x> <y> <z> Téléporte un joueur vers des coordonnées

6.3 Commandes monde et terrain

Commande Description
give <joueur> <objet> [quantité] Donne un objet à un joueur
summon <entité> [x] [y] [z] Invoque une entité
effect give <joueur> <effet> [durée] [amplification] Applique un effet de potion
effect clear <joueur> Retire tous les effets d'un joueur
kill <cible> Tue une entité ou un joueur
fill <x1> <y1> <z1> <x2> <y2> <z2> <bloc> Remplit une zone avec un bloc
clone <x1> <y1> <z1> <x2> <y2> <z2> <dest> Copie une zone vers un autre endroit
setblock <x> <y> <z> <bloc> Place un bloc à une position précise
scoreboard objectives add <nom> <critère> Crée un objectif de tableau de score

6.4 Sélecteurs de cibles

Sélecteur Cible désignée
@p Joueur le plus proche
@a Tous les joueurs
@r Joueur aléatoire
@e Toutes les entités
@s L'entité qui exécute la commande

Exemple : kill @e[type=!minecraft:player] — supprime toutes les entités sauf les joueurs.


7. Connexion au Serveur

7.1 Depuis le jeu

🎮 Lancez Minecraft, allez dans "Multijoueur""Connexion directe" et saisissez :

<IP_PUBLIQUE>:25565

7.2 Ports nécessaires

Assurez-vous que les ports suivants sont ouverts dans votre pare-feu et redirigés via votre NAT :

Instance Port
Ragnamod-7 25565 TCP
GT New Horizons 25566 TCP
Vanilla 25567 TCP
Prominence II RPG 25568 TCP
MagicMecanism 25569 TCP

8. Arborescence des fichiers

/opt/docker-compose/minecraft/
└── docker-compose.yml           # Fichier Docker principal

# Les données des serveurs sont dans des volumes Docker nommés :
# - Forge_GTNH      → GT New Horizons
# - Ragnamod-7      → Ragnamod 7
# - Vanilla         → Serveur Vanilla
# - magicmecanism   → MagicMecanism (+ montages locaux ./mods et ./config)

# Prominence II RPG utilise un bind mount local :
/opt/docker-compose/Minecraft/Prominence-II-RPG/
├── docker-compose.yml
└── data/                        # Données du serveur (monde, configs, mods)

# MagicMecanism nécessite une structure avec les mods triés manuellement :
/opt/docker-compose/Minecraft/magicmecanism/
├── docker-compose.yml
├── mods/                        # Mods compatibles serveur (import manuel depuis client)
└── config/                      # Fichiers de configuration des mods

9. Conseils Pratiques

  • Mémoire : allouez au moins 4 Go pour un serveur Vanilla, 8–12 Go pour les modpacks lourds.
  • Sauvegardes : exportez régulièrement les volumes Docker (docker cp ou docker run --volumes-from).
  • Console : utilisez docker attach pour accéder à la console et exécuter des commandes sans quitter le conteneur.
  • Plusieurs instances : utilisez des ports différents pour chaque serveur (25565, 25566, 25567…).
  • Modpacks : l'image itzg/minecraft-server supporte de nombreux loaders (FORGE, FABRIC, QUILT, etc.) via la variable TYPE.

10. Sécurité

  • Activez la whitelist (whitelist on) pour limiter l'accès aux joueurs autorisés.
  • N'ouvrez que les ports strictement nécessaires dans votre pare-feu (ufw, iptables).
  • Désignez un minimum d'opérateurs (op) — les ops ont un accès total au serveur.
  • Sauvegardez régulièrement vos volumes pour éviter toute perte de monde.

Conclusion

Grâce à Docker, vous pouvez héberger plusieurs instances Minecraft (Vanilla, Forge, Fabric) sur la même machine avec une gestion simplifiée des mises à jour et des sauvegardes. Bonne aventure ! ⛏️🌍