Outils pour utilisateurs

Outils du site


admin:services:minetest:mineclone2

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
admin:services:minetest:mineclone2 [2023/01/15 09:49] pitchumadmin:services:minetest:mineclone2 [2023/08/18 02:34] (Version actuelle) – ajout rapport d'activité obitanz
Ligne 7: Ligne 7:
 C'est un jeu sous licence GPLv3, développé à partir du le moteur de jeu [[https://www.minetest.net/|Minetest]], sous licence LGPL 2.1. C'est un jeu sous licence GPLv3, développé à partir du le moteur de jeu [[https://www.minetest.net/|Minetest]], sous licence LGPL 2.1.
  
 +Avant d'installer cette instance, il est nécessaire d'installer [[admin:services:minetest|minetest]].
  
-===== Mise à jour =====+====== Installation ====== 
 +===== Configuration du service ===== 
 +  * port TCP dédié : 30009 (on rejoint le serveur sur minetest.chapril.org:30009) 
 +  * configuration systemd dans ''/etc/minetest/30009-mineclone2.conf'' (on utilise le service ''minetest-server@30009-mineclone.service''
 +  * instance située dans ''/srv/minetest.chapril.org/instances/30009-mineclone2'' 
 +  * 2 bases de données postgresql : ''minetest-users-mineclone2'' et ''minetest-world-mineclone2''
  
-<note important>Il peut arriver qu'une version plus récente de Mineclone2 exige également une mise à jour de Minetest. Dans notre cas, ce n'est pas toujours une chose possible, donc il faut prévoir la possibilité de revenir en arrière si besoinPour permettre cela, nous utilisons la branche //git// locale nommée ''chapril-ludo'' et on créé localement un //tag// sur la révision //git// actuelle avant chaque tentative de mise à jour.</note>+===== Jeu ===== 
 +Le jeu est disponible sur [[https://content.minetest.net/packages/Wuzzy/mineclone2/|contentDB]]. 
 +On l'installe via git dans le répertoire ''/srv/minetest.chapril.org/home/.minetest/games/''.
  
 <code bash> <code bash>
-cd /srv/minetest.chapril.org/home/.minetest/games/mineclone2+cd /srv/minetest.chapril.org/home/.minetest/games/ 
-git tag chapril-ok-$(date +%F) # pour un éventuel retour en arrière +git clone https://git.minetest.land/MineClone2/MineClone2.git 
-git fetch --all +mv MineClone2 mineclone2 && cd mineclone2 
-git pull origin master +git checkout -b chapril-ludo
-systemctl restart minetest-server@30009-mineclone2.service+
 </code> </code>
  
-Il faut maintenant tester un minimum. +La création de la branche ''chapril-ludo'' servira pour la mise à jour du jeu, voir la section dédiée plus bas
-Si jamais un bug bloquant survient, on peut revenir à la version précédente grâce au ''tag'' qu'on avait créé+ 
-<note tip>La procédure décrite si après est "sale", mais elle fonctionneSi quelqu'un connait une façon plus propre de procédé, ça m'intéresse :)</note>+===== Mods ===== 
 +Un travail de recherche et de comparaison a été fait et est consultable sur https://wiki.april.org/w/Chapril:services:minetest:revue_mods 
 +==== Pour la gestion du serveur ==== 
 +=== eXtended Ban 2 === 
 +Ce mod étend les possibilités d'exclusions du serveur, facilite les actions de modération et enregistre les actions pour une meilleure communication entre les membres de la modération. Plus d'informations sur la page [[https://content.minetest.net/packages/kaeza/xban2/|contentDB]].
  
 <code bash> <code bash>
-cd /srv/minetest.chapril.org/home/.minetest/games/mineclone2# si jamais vous étiez parti ailleurs :) +cd /srv/minetest.chapril.org/home/.minetest/mods 
-git tag | grep chapril # pour retrouver votre tag, par exemple "chapril-ok-2023-01-15" ici +git clone https://github.com/minetest-mods/xban2.git
-git checkout chapril-ok-2023-01-15 # on se retrouve alors dans un état temporaire "HEAD detached at chapril-ok-2023-01-15" +
-git branch -m chapril-ludo chapril-ludo-broken # on met de côté l'ancienne branche +
-git switch -c chapril-ludo # on recréé la branche +
-git branch -D chapril-ludo-broken # on jette l'ancienne +
-systemctl restart minetest-server@30009-mineclone2.service+
 </code> </code>
  
 +=== Filter ===
 +Ce mod permet plusieurs actions automatiques en réponse à une tenue de propos injurieux sur le chat. Plus d'informations sur la page [[https://content.minetest.net/packages/sofar/filter/|contentDB]].
  
-===== Installation sous Debian Bullseye =====+<code bash> 
 +cd /srv/minetest.chapril.org/home/.minetest/mods 
 +git clone https://github.com/minetest-mods/filter.git 
 +</code>
  
-Mineclone2 étant basé sur minetest, on commence par installer ce dernier :+On définit une liste des mots soumis à action automatique :
  
-<code> +Ce mod filtera automatique chaque message contenant ces mots. 
-apt install minetest-server +La politique est : 
-</code>+  3 avertissements 
 +  - mute temporaire de 5 minutes (le joueur ou la joueuse ne peut plus poster de messages dans le chat) 
 +  - 3 avertissements 
 +  - mute temporaire de 1h
  
-Par défaut, un service minetest est alors lancé sur le port TCP/30000. Son fichier de configuration est ''/etc/minetest/minetest.conf''+L'équipe de modération ayant accès à l'historique des actions pourra prendre des mesures d'exclusion temporaire ou définitive du joueur ou de la joueuse si 
-Mais nous ne touchons pas à ce service. Au lieu de ça, nous allons profiter du mécanisme de templates systemd (plus d'infos dans le fichier ''/usr/share/doc/minetest-server/README.Debian'') pour créer service à part, qui écoutera sur le port TCP/30009. +
-Pour cela, nous créons le fichier ''/etc/minetest/30009-mineclone2.conf'' contenant ceci :+
  
-<file /etc/minetest/30009-mineclone2.conf> +=== Mod Antigrief ==
-port 30009 +Le principe d'un mod antigrief est de permettre aux joueuses et joueurs de protéger leurs création contre un potentiel vendalisme. 
-server_name Chapril - Mineclone 2 [FR] +Le jeu Mineclone2 propose dans son installation le mod "ProtectorAera".
-server_description Un univers inspiré de Minecraft +
-server_address minetest.chapril.org +
-motd = Bienvenue sur MC2, un clone de Minecraft basé sur le moteur Minetest. Pour les inconditionnels de Minecraft.+
  
-map-dir /srv/minetest.chapril.org/instances/30009-mineclone2+==== Pour le gameplay du serveur ==== 
 +Pour le moment, on se contente du jeu originel, on pourra ajouter des mods en fonction des demandes.
  
-# À activer lorsque le service sera prêt à être ouvert au public +===== Configuration du monde ===== 
-#server_announce = true+Il s'agit du fichier ''world.mt'' placé dans le répertoire de l'instance : 
 + 
 +<file /srv/minetest.chapril.org/instances/30009-mineclone2/world.mt> 
 +gameid = mineclone2        
 +                                           
 +backend = postgresql       
 +pgsql_connection = host=127.0.0.1 port=5432 user=minetest password=common-outrank-cruelly dbname=minetest-world-mineclone2 
 +                                           
 +auth_backend = postgresql                
 +pgsql_auth_connection = host=127.0.0.1 port=5432 user=minetest password=common-outrank-cruelly dbname=minetest-auth 
 +                                           
 +player_backend = postgresql  
 +pgsql_player_connection = host=127.0.0.1 port=5432 user=minetest password=common-outrank-cruelly dbname=minetest-users-mineclone2 
 + 
 +Not supported yet, we have to wait for minetest 5.7.0 
 +#mod_storage_backend = postgresql 
 +#pgsql_mod_storage_connection = host=127.0.0.1 port=5432 user=minetest password=common-outrank-cruelly dbname=minetest-mod-storage-mineclone2 
 + 
 +mod_storage_backend = sqlite3 
 + 
 + 
 +load_mod_xban2 = true 
 +load_mod_filter = true 
 + 
 +load_mod_whitelist = false
 </file> </file>
  
-Notre service pourra alors être lancé/stoppé/redémarré/surveillé comme ceci :+On crée les bases de données postgres : 
 +<code bash> 
 +su - postgres 
 +psql 
 +CREATE DATABASE "minetest-users-mineclone2" WITH OWNER minetest; 
 +CREATE DATABASE "minetest-world-mineclone2" WITH OWNER minetest; 
 +</code>
  
 +===== Vérification par principe =====
 +<code bash>
 +chown -R Debian-minetest:minetest /srv/minetest.chapril.org/home/.minetest
 +chown -R Debian-minetest:games /srv/minetest.chapril.org/instances/30009-mineclone2
 +</code>
 +
 +===== Démarrage du service =====
 <code bash> <code bash>
 systemctl start minetest-server@30009-mineclone2.service systemctl start minetest-server@30009-mineclone2.service
-systemctl stop minetest-server@30009-mineclone2.service 
-systemctl restart minetest-server@30009-mineclone2.service 
-systemctl status minetest-server@30009-mineclone2.service 
 </code> </code>
  
-Mais pas tout de suite, car pour le moment il n'est pas fonctionnel du tout.+===== Création du rapport d'activité ===== 
 +Le script pour créer le rapport d'activité est situé dans : ''/srv/minetest.chapril.org/tools/rapport_activite/rapport_activite_mineclone2.sh''. Il est exécuté chaque mois par une tâche cron dont une copie se trouve dans le même répertoire.
  
-Il faut préparer le dossier ''/srv/minetest.chapril.org/instances/30009-mineclone2/'' qui est mentionné dans la configuration mais qui n'existe pas encore.+Les logs sont situés dans le répertoire ''/srv/minetest.chapril.org/exploitation''
 + 
 +Le script ''/srv/minetest.chapril.org/tools/rapport_activite/update_redmine_script.sh'' permet de nourrir le ticket "Tâche récurrente" n°6220 pour diffuser publiquement les statistiques de l'instance. 
 + 
 +====== Maintenance ====== 
 +===== Mise à jour du jeu ===== 
 + 
 +On suit les releases du jeu, à chaque release un tag est créé sur le dépôt git, on peut suivre ça sur la [[https://git.minetest.land/MineClone2/MineClone2/tags|forge de Minetest]]. 
 + 
 +<note important>Il peut arriver qu'une version plus récente de Mineclone2 exige également une mise à jour de Minetest. Puisque on utilise les paquets Debian, ce n'est pas toujours une chose possible, donc il faut prévoir la possibilité de revenir en arrière si besoin. Pour permettre cela, nous utilisons la branche //git// locale nommée ''chapril-ludo'' et on créé localement un //tag// sur la révision //git// actuelle avant chaque tentative de mise à jour.</note> 
 + 
 +Le projet étant toujours en développement sur la branche //master//, on suit les releases via les tags. Quand une nouvelle release sort, on va sur le dépôt gitea pour récupérer le commit de la release. On s'en servira pour la mise à jour de notre instance.
  
 <code bash> <code bash>
-mkdir /srv/minetest.chapril.org/instances/30009-mineclone2/ +cd /srv/minetest.chapril.org/home/.minetest/games/mineclone2/ 
-chown Debian-minetest:/srv/minetest.chapril.org/instances/30009-mineclone2/+git tag chapril-ok-$(date +%F) # pour un éventuel retour en arrière 
 +git fetch --all 
 +git merge <sha1 commit du dernier tag> 
 +systemctl restart minetest-server@30009-mineclone2.service
 </code> </code>
  
-Dans ce dossier, il faut au minimum un fichier ''world.mt'', qui définit notamment le type de jeu (ici Mineclone2) et les types de bases de données à utiliser ([[https://wiki.minetest.net/Database_backends|database backends]]). +En cas de conflit pendant le mergerésoudre manuellement les différentes en se basant au maximum sur la release puis :
-Chez chaprilon a choisi d'utiliser des bases de données postgresql pour les 3 bases map, players et authentication.+
  
-<file +<code bash
-gameid = mineclone2+git add <les fichiers édités> 
 +git commit -m "fix merge with commit from 0.83.1 tag" 
 +</code>
  
-backend = postgresql +On peut ensuite redémarrer le service.
-pgsql_connection = host=127.0.0.1 port=5432 user=minetest password=common-outrank-cruelly dbname=minetest-world-mineclone2+
  
-auth_backend = postgresql +Il faut maintenant tester un minimum. 
-pgsql_auth_connection = host=127.0.0.1 port=5432 user=minetest password=common-outrank-cruelly dbname=minetest-auth+Si jamais un bug bloquant survient, on peut revenir à la version précédente grâce au ''tag'' qu'on avait créé. 
 +<note tip>La procédure décrite çi-après est "sale", mais elle fonctionneSi quelqu'un connait une façon plus propre de procéder, ça m'intéresse :)</note>
  
-player_backend = postgresql +<code bash> 
-pgsql_player_connection = host=127.0.0.1 port=5432 user=minetest password=common-outrank-cruelly dbname=minetest-users-mineclone2+cd /srv/minetest.chapril.org/home/.minetest/games/mineclone2/ # si jamais vous étiez parti ailleurs :) 
 +git tag | grep chapril # pour retrouver votre tag, par exemple "chapril-ok-2023-01-15" ici 
 +git checkout chapril-ok-2023-01-15 # on se retrouve alors dans un état temporaire "HEAD detached at chapril-ok-2023-01-15" 
 +git branch -m chapril-ludo chapril-ludo-broken # on met de côté l'ancienne branche 
 +git switch -c chapril-ludo # on recréé la branche 
 +git branch -D chapril-ludo-broken # on jette l'ancienne 
 +systemctl restart minetest-server@30009-mineclone2.service 
 +</code>
  
-creative_mode false +===== Mise à jour des mods =====
-enable_damage true +
-</file>+
  
-<note important> 
-TODO à documenter :  
-  * créer les bases de données pgsql 
-  * récupérer le code du jeu mineclone2 dans /srv/minetest.chapril.org/home/.minetest/games/mineclone2/ 
-    * avec une branche ''chapril-ludo'' 
-</note> 
admin/services/minetest/mineclone2.1673776162.txt.gz · Dernière modification : 2023/01/15 09:49 de pitchum