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.
J’espère que cela va vous aider. bonne journée