Minecraft – Serveur

Bonjour, ici je vous propose une petit script Linux pour faire tourner jusqu’à 3 serveurs Minecraft sur une machine avec Centos d’installée.

Je ne vais pas détailler l’installation de Centos pour le moment, je pars du principe que vous avez une machine physique ou virtuelle avec Centos dessus. Mes tests ont étaient fait sur une Distribution Centos Stream 9

Connectez vous en SSH ou si vous avez une interface graphique ouvrez-un terminal.
Suivez les commandes suivantes.

#Vider l'écran et remettre le curseur en haut du terminal
clear


#Ecrire sur l'ecran
echo "Installation serveur Minecraft"

#Connection en Root pour configuration
if [ "$EUID" -ne 0 ]
  then echo "Merci de vous connecter en Root"
  exit
fi

#Demande le lien pour le telechargement
echo "Lien vers le téléchargement des nouveaux fichiers Serveur ?"
read -p "URL pour le téléchargement: " version

#Crée le dossier /home/Download
mkdir /home/Download
cd /home/Download

#Crée une variable qui sera réutilisée plus loin avec l'url de téléchargement.
wget $version

A partir d’ici vous avez crée un dossier Téléchargement dans le répertoire /Home
et mis en variable l’url de téléchargement du serveur Minecraft.
pour memo l’url de téléchargement des fichiers serveur se trouve ici : Download server for Minecraft

# Config SELinux de Enforcing à Disable sinon le serveur ne se lancera pas
sed -i "s/SELINUX=enforcing/SELINUX=disable/g" /etc/sysconfig/selinux
grubby --update-kernel ALL --args selinux=0

#Telechargement des packages et changement de Version de JAVA.
yum update -y
yum upgrade -y

#Questions
echo ""
echo " 1 - Installation"
echo " 2 - Update"
echo " 3 - Desinstallation"
echo " Q - Quit"
echo ""
read -p "Quel est votre choix ? " choix

if [ "$choix" = "Q" ]; then
choix="q"
fi

Ici dans un premier temps on mets a jour le système, et vous allez crée un formulaire de demande d’installation.

Installation

case $choix in
  1)
    #Choix de la version de java
    yum install java-17-openjdk java-17-openjdk-devel -y
    alternatives --config java

    #Formulaire instances
    echo ""
    echo " 1 - Instance 1"
    echo " 2 - Instance 2"
    echo " 3 - Instance Mod Create Live 3 1.4.4"
    echo " Q - Quit"

    read -p "Quel est le numero de votre demande ? " instances

    if [ "$instances" = "Q" ]; then
    choix="q"
    fi

    case $instances in
      1) echo "Instance 1"

        #Ouverture de port dans le Firewall
        echo "Configuration Firewall"
        firewall-cmd --add-port=25565/tcp --permanent
        firewall-cmd --add-port=25565/udp --permanent
        firewall-cmd --reload


        #Creation dossier Minecraft pour stocker les fichiers serveur
        mkdir -p /home/Instance_1
        cd /home/Instance_1
        cp /home/Download/server.jar /home/Instance_1/server.jar

        #Creation d'un script de lancement du serveur Start.sh
        sh -c 'echo -e "java -Xms2048M -Xmx6144M -jar server.jar nogui" >> Start_Instance_1.sh'
        sh -c 'echo -e "eula=true" >> eula.txt'
        chmod +x Start_Instance_1.sh

        # Config services
        sudo sh -c 'echo -e "
        [Unit]
        Description=Minecraft dedicated server
        Wants=network-online.target
        After=syslog.target network.target nss-lookup.target network-online.target

        [Service]
        type=simple
        Environment="LD_LIBRARY_PATH=./linux64"
        ExecStart=/bin/bash /home/Instance_1/Start_Instance_1.sh
        StandardOutput=journal
        Restart=on-failure
        WorkingDirectory=/home/Instance_1

        [Install]
        WantedBy=multi-user.target
        " >> /etc/systemd/system/Minecraft1.service'

        # Reload du systemctl & Lancement du service
        systemctl daemon-reload
        systemctl enable Minecraft1.service

        #Premier lancement pour initialisation
        systemctl start Minecraft1.service

        echo "Votre serveur est accessible sur $(hostname -i)"
      ;;

Prenons l’exemple suivant. Nous avons demander une instance.
Dans un premier temps le script va ouvrir les ports nécessaires.
Ensuite il va déplacé les fichiers serveur de /home/download à /home/instance_1
Ensuite on crée un bash de lancement de serveur que nous avons appelé : Start_Instance_1.sh
Pour rendre le serveur plus flexible, nous crée un service qui va se lancer AUTOMATIQUEMENT a chaque boot du serveur. Ainsi vont serveur Minecraft sera toujours actif même après un reboot.

Pour l’instance 2 c’est exactement le meme principe que la 1 mais en ouvrant d’autre port comme par exemple 25566
Il faudra egalement modifier la partie fichier serveur et mettre le bon port d’ecoute. Mais le script le fait egalement tout seul. Voici la partie du script pour l’instance numero 2

2) echo "Instances 2"
        #Ouverture de port dans le Firewall
        echo "Configuration Firewall"
        firewall-cmd --add-port=25566/tcp --permanent
        firewall-cmd --add-port=25566/udp --permanent
        firewall-cmd --reload

        #Creation dossier Minecraft pour stocker les fichiers serveur
        mkdir -p /home/Instance_2

        #Telechargement des fichers serveur
        cp /home/Download/server.jar /home/Instance_2/server.jar

        #Creation d'un script de lancement du serveur Start_Instance_2.sh

        sh -c 'echo -e "java -Xms2048M -Xmx8192M -jar server.jar nogui" >> /home/Instance_2/Start_Instance_2.sh'
        sh -c 'echo -e "eula=true" >> /home/Instance_2/eula.txt'

        # Rendre executable le scripts Instance 2
        chmod +x /home/Instance_2/Start_Instance_2.sh

        # Config services Instance 2
        sudo sh -c 'echo -e "
        [Unit]
        Description=Minecraft 2 server
        Wants=network-online.target
        After=syslog.target network.target nss-lookup.target network-online.target

        [Service]
        type=simple
        Environment="LD_LIBRARY_PATH=./linux64"
        ExecStart=/bin/bash /home/Instance_2/Start_Instance_2.sh
        StandardOutput=journal
        Restart=on-failure
        WorkingDirectory=/home/Instance_2

        [Install]
        WantedBy=multi-user.target
        " >> /etc/systemd/system/Minecraft2.service'

        # Reload du systemctl & Lancement des services
        systemctl enable Minecraft2.service
        systemctl start Minecraft2.service
        systemctl daemon-reload

        sleep 30
        systemctl stop Minecraft2.service
        #Configuration du port d'ecoute pour l'instance 2
        sed -i 's/query.port=25565/query.port=25566/g' /home/Instance_2/server.properties
        sed -i 's/server-port=25565/server-port=25566/g' /home/Instance_2/server.properties

        #Reboot des l'instances
        systemctl start Minecraft2.service

        echo "Votre seconde instance est accessible sur $(hostname -i)"
        echo "Instance 2 : Port 25566"
      ;;

Et pour terminer la 3ieme instance est simplement une version avec un mod, ici dans notre exemple ce sera Creative mod

3) echo "1 Mod"
        #Ouverture de port dans le Firewall
        echo "Configuration Firewall"
        firewall-cmd --add-port=25567/tcp --permanent
        firewall-cmd --add-port=25567/udp --permanent
        firewall-cmd --reload

        #Creation dossier Minecraft pour stocker les fichiers serveur
        mkdir -p /home/Instance_Mod

        #Deplacement dossier Instance Mod
        cd /home/Instance_Mod

        #Telechargement les fichers serveur
        yum install unzip -y
        wget https://gameoverblog.com/Scripts/Minecraft/Mod/creativelive3.zip
        unzip creativelive3.zip

        #Installation du Mod
        bash /home/Instance_Mod/install.sh

        # Config services Instance Mod
        sudo sh -c 'echo -e "
        [Unit]
        Description=Minecraft MOD creativelive3 server
        Wants=network-online.target
        After=syslog.target network.target nss-lookup.target network-online.target

        [Service]
        type=simple
        Environment="LD_LIBRARY_PATH=./linux64"
        ExecStart=/bin/bash /home/Instance_Mod/run.sh
        StandardOutput=journal
        Restart=on-failure
        WorkingDirectory=/home/Instance_Mod

        [Install]
        WantedBy=multi-user.target
        " >> /etc/systemd/system/Minecraftmod.service'

        # Reload du systemctl & Lancement du service
        systemctl enable Minecraftmod.service
        systemctl daemon-reload
        systemctl start Minecraftmod.service

        sleep 30
        systemctl stop Minecraftmod.service

        #Configuration du port d'ecoute pour l'instance Mod
        sudo sed -i 's/query.port=25565/query.port=25567/g' /home/Instance_Mod/server.properties
        sudo sed -i 's/server-port=25565/server-port=25567/g' /home/Instance_Mod/server.properties

        #Reboot des l'instances
        systemctl start Minecraftmod.service
        systemctl daemon-reload

        echo "Votre serveur est accessible sur $(hostname -i)"
        echo "Instance Mod : Port 25567"
      ;;

Du coup comme vous pouvez le voir, on ouvre le port 25567 cette fois.
On va également télécharger le mod chez Gameoverblog.com


      q) echo "Quit"
      ;;

      *) echo "Ce n'est pas une valeur correct"
      ;;
      esac
  ;;

voila qui clôture la première parti du script sur l’installation. mais comme vous pouvez le lire plus haut il reste la partie Upgrade et Désinstallation.

Upgrade

2)
    #Formulaire instances
    echo ""
    echo " 1 - Instance 1"
    echo " 2 - Instance 2"
    echo " 3 - Instance Mod"
    echo " Q - Quit"

    read -p "Quelle est l'instance à mettre à jour ?" instance

    if [ "$instance" = "Q" ]; then
    choix="q"
    fi

      case $instance in
      1) echo "Première instance"
    
        #Stop du service
        systemctl stop Minecraft1.service

        #Deplacement dans le repertoire Instance
        cd /home/Instance_1

        #suppression de l'ancien fichier serveur
        rm -f server.jar

        #Telechargement de la nouvelle version
        cp /home/Download/server.jar /home/Instance_1/server.jar

        #Start du service
        systemctl start Minecraft1.service
      ;;

      2) echo "Seconde instance"

        #Stop du service
        systemctl stop Minecraft2.service

        #Deplacement dans le repertoire Instance
        cd /home/Instance_2

        #suppression de l'ancien fichier serveur
        rm -f server.jar

        #Telechargement de la nouvelle version
        cp /home/Download/server.jar /home/Instance_2/server.jar

        #Start du service
        systemctl start Minecraft2.service
      ;;

      3) echo "Instance Mod"
    
        #Stop du service
        systemctl stop Minecraftmod.service

        #Deplacement dans le repertoire Instance
        cd /home/Instance_Mod

        #suppression de l'ancien fichier serveur
        rm -f *.jar

        #Telechargement des fichers serveur
        wget https://gameoverblog.com/Scripts/Minecraft/Mod/creativelive3.zip
        unzip creativelive3.zip

        #Installation du Mod
        bash /home/Instance_Mod/install.sh

        #Start du service
        systemctl start Minecraftmod.service
      ;;

      q) echo "Quit"
      ;;

      *) echo "Pas le bon numero"
      ;;
      esac
  ;;

Ici dans cette partie on vous propose de mettre a niveau chaque instance de façons séparées.

Desinstallation

3) #Suppression des données

    echo ""
    echo " 1 - Instance 1"
    echo " 2 - Instance 2"
    echo " 3 - Instance Mod"
    echo " Q - Quit"

    read "Quelle instance voulez-vous supprimer ? " instances;

    if [ $instances = 'Q' ]; then
    choix="q"
    fi

    case $instance in
        1) #suppression de Instance_1
          cd /home/Instance_1
          rm -f -r *
          systemctl stop Minecraft1.service
          rm /etc/systemd/system/Minecraft1.service
          cd /home/
          rm /home/Instance_1
        ;;

        2) #suppression de Instance_2
          cd /home/Instance_2
          rm -f -r *
          systemctl stop Minecraft2.service
          rm /etc/systemd/system/Minecraft2.service
          cd /home/
          rm /home/Instance_2
        ;;

        3) #suppression de Instance_Mod
          cd /home/Instance_Mod
          rm -f -r *
          systemctl stop Minecraftmod.service
          rm /etc/systemd/system/Minecraftmod.service
          cd /home/
          rm /home/Instance_Mod
        ;;

        q) echo "Sortie du programme"
        ;;

        *) echo "Pas le bon numero"
        ;;
        esac
  ;;
q) echo "Sortie du programme"
;;

*) echo "pas le bon numero"
;;

esac

Voila cela permettra de désinstaller proprement votre serveur.

Pour résumer tout cela voici un fichier bash à lancer sur votre Centos Stream et vous pourrez installer jusqu’à 3 instances de Minecraft.

Telechargement

J’espère que cela va vous aider. bonne journée

Laisser un commentaire