====== Service minetest.chapril.org ======
Minetest n'est pas vraiment un jeu en soi, même s'il y a déjà de quoi s'amuser de base, mais plutôt un moteur de jeux.
Les instances existantes au sein du Chapril sont :
* [[admin:services:minetest:test|Test]] - l'instance pour tester les mods, configurations, etc.
* [[admin:services:minetest:mineclone2|Mineclone2]] - un jeu basé sur Minetest moddé pour être très proche du jeu Minecraft.
===== Installation façon Chapril =====
==== VM ====
Création de la VM [[admin:machines_virtuelles:ludo]] avec la procédure [[admin:procedures:creation_machine_virtuelle|Création d'une machine virtuelle « bling »]].
==== Service de base minetest ====
Nous installons minetest à partir des dépôts Debian stable, et parfois si on a besoin d'une version plus récente de Minetest on passe sur les dépôts Debian backports ou carrément sur les dépôts Debian testing.
apt install minetest-server
Pour des raisons qui sont propres au Chapril, nous préférons modifier le dossier //home// du compte //Debian-minetest//. Par défaut ce dossier est ''/var/games/minetest-server'', mais nous l'avons modifié pour qu'il soit dans ''/srv/minetest.chapril.org/home''.
systemctl stop minetest-server.service
usermod -m -d /srv/minetest.chapril.org/home
systemctl start minetest-server.service
==== Organisation des sous-services ====
Dès lors, minetest est déjà joignable sur le port 30000. Mais il ne s'agit là que d'un simple bac à sable, sans //mobs// ni aucune règle quelconque, permettant essentiellement de tester le moteur de jeu.
Mais ce serveur peut maintenant faire tourner un ou plusieurs autres jeux disponibles par exemple sur [[https://content.minetest.net/packages/?type=game|Minetest ContentDB]].
En prévision des futurs jeux que nous aurions envie déployer sur ce serveur, nous avons décidé de l'organisation suivante. Pour chaque jeu :
* un port TCP dédié (on n'a pas le choix, chaque jeu doit écouter sur un port séparé)
* un fichier de configuration systemd dont le nom commence par le numéro de port
* un sous-dossier dédié pour le code du jeu, dans ''/srv/minetest.chapril.org/instances/'' (paramètre ''map-dir'' dans la configuration systemd)
* 2 bases de données Postgresql nommées ''minetest-users-xxx'' et ''minetest-world-xxx'' (une troisième base nommée ''minetest-auth'' est créée une seule fois et est utilisée pour tous les jeux)
* un fichier de configuration du monde ''world.mt'' situé dans le répertoire de l'instance
On a créé le fichier ''/etc/minetest/minetest.conf.template'' pour servir de base à l'installation d'une nouvelle instance.
Le fichier ''/etc/minetest/minetest.conf.example'' reprend les configurations possibles en les expliquant
===== Supervision =====
Plusieurs sondes ont été mises en place pour surveiller le service Minetest. Les scripts personnalisés sont situés dans le répertoire ''/srv/minetest.chapril.org/tools/monitoring/'', un lien dans ''/usr/local/lib/nagios/plugins/'' permet de les rendre accessibles à nagios.
* le script ''check_minetestchaprilorg_updateGames'' vérifie que les jeux installés soient à jour
* le script ''check_minetestchaprilorg_updateMods'' vérifie que les mods installés soient à jour
* le script ''check_minetestchaprilorg_services'' vérifie que les services des instances soient UP et que les ports UDP correspondant soient en écoute
* on vérifie que le service ''postgresql@13-main.service'' soit actif
===== Sauvegarde =====
La sauvegarde globale des VMs permet de sauvegarder les données clés à savoir :
* le contenu du répertoire ''/etc/''
* le contenu du répertoire ''/srv/minetest.chapril.org/''
* les bases de données postgresql
===== Procédures diverses =====
==== Effacer un monde ====
L'idée est de supprimer toutes les données pour recommencer une partie de zéro. Ou nettoyer un serveur de test :)
* supprimer la base de données ''minetest-world-xxx'' (données du monde)
* supprimer la base de données ''minetest-users-xxx'''(données des joueurs)
* (quand minetest-server 5.7 sera dans les dépôts) supprimer la base de données ''minetest-mods-xxx''' (données des mods)
* supprimer le fichier instance_xxx/env_meta.txt (reset temps, localisation des joueureuses...)
* supprimer le fichier instance_xxx/map_meta.txt (pour génération d'une nouvelle seed et création d'une nouvelle map et en cas de changement de mode de génération de map)
* supprimer le fichier instance_xxx/awards.txt (les hauts-faits des joueuses et joueurs)
* supprimer le fichier instance_xxx/doc.mt (??)
* supprimer le fichier instance_xxx/settlements.txt (??)
Plus d'informations : https://wiki.minetest.net/Worlds
==== Installer un mod ====
- Récupérer le lien de téléchargement de l'archive du mod
- Télécharger l'archive avec wget et l'extraire dans ''/srv/minetest.chapril.org/home/.minetest/mods''
- Renommer le répertoire avec le nom technique du mod (voir la page contentdb pour trouver le nom technique)
- Activer le mod dans le fichier ''world.mt'' avec la directive ''load_mod_ = true''
- Changer la propriété des fichiers ajoutés pour Debian-minetest:minetest
Plus d'informations : https://wiki.minetest.net/Installing_Mods/fr
===== Procédures de modération =====
==== Gestion des privilèges ====
Pour comprendre les privilèges : https://wiki.minetest.net/Privileges/fr
Pour comprendre les commandes serveur : https://wiki.minetest.net/Server_commands/fr
Donner un privilège
/grant
Révoquer un privilège
/revoke
Exclure un compte (ie le déconnecter du serveur, la personne peut revenir)
/kick [reason]
==== Bannissement ====
La documentation est disponible ici : https://content.minetest.net/packages/kaeza/xban2/
Bannir un compte définitivement
/xban
Bannir un compte temporairement :
/xtempban
Le temps peut être exprimé en secondes, minutes, heures, jours, semaines, mois, années et les valeurs sont combinables, par exemple "//1Y3M3D7h//" pour bannir 1 an, 3 mois, 3 jours et 7 heures.
Lister l'historique de bannissement pour un compte
/xban_record
Dé-bannir un compte
/xunban
==== Filtre automatique du chat ====
La documentation est disponible ici : https://github.com/minetest-mods/filter
Active le filtre automatique
/filtre enable
Ajouter un mot interdit
/filtre add
Lister les mots interdits
/filtre list
Les mots interdits sont stockés dans le "//mod_storage//", actuellement un simple fichier.
Le mod est implémenté avec sa propre politique à savoir :
* 1ère occurrence : avertissement
* 2e et 3e occurrences : mis en muet pendant 1 minute
* au-delà, expulsion du compte du serveur
Modifier le code pour correspondre à la politique envisagée et pour changer les messages en français.
==== Antigrief ====
La documentation est disponible ici : https://notabug.org/tenplus1/protector
Le mod permet aux joueuses et joueurs de créer des blocs servant à protéger des zones. Les comptes ayant les droits admins sur le serveur peuvent passer outre ces protections.
Le mod est configurable.
Tester le mod et :
* voir s'il faut ajuster la configuration
* voir s'il faut activer ou désactiver des options spécifiques à ce mod
* décrire la configuration en vigueur.