Outils pour utilisateurs

Outils du site


admin:services:minetest.chapril.org

Ceci est une ancienne révision du document !


/!\ Le service est en court de refonte et n'est plus accessible pour le moment; la documentation est aussi en cours de remaniements

Service minetest.chapril.org

Minetest, initialement basé sur le jeu non libre Minecraft, a évolué et permet non seuleument des modification mais de créer des jeux à part entière. Maintenant le moteur de jeu se nomme Luanti et le jeu Minetest a évolué dans plusieurs projets qui ont pris des directions différentes: Minetest/MTG qui est le jeu original mais ne recoit qu'une maintenance minimale, Mineclonia qui prend le relay et Voxelibre qui veut rester proche mais tout en s'autorisant des innovations.

Les instances existantes au sein du Chapril sont :

  • VoxeLibre - Minetest avec de plus en plus d'innovations
  • Asuna - Monde beau et coloré

Installation façon Chapril

VM

Création de la VM ludo avec la procédure Création d'une machine virtuelle « bling ».

Service de base Luanti

Luanti a été empaqueté dans Debian unstable mais n'est pas encore disponible en version stable; un backport est prévu mais il n'est pas encore prêt. L'un des mainteneur du paquet a créé une branche de travail sur Salsa et le paquet fonctionne déjà bien donc nous allons l'utiliser: https://salsa.debian.org/twrightsman/minetest/-/tree/debian/bookworm-backports?ref_type=heads Si on clique sur le CI et dans l'étape “build” on peut télécharger un zip et les packages donc on a besoin. Malheureusement le jeu minetest originel est une dépendance forte pour le moment et doit être installé même si nous n'allons pas l'utiliser. Ce paquet est en cours d'acceptation dans Debian et doit aussi être installé via Salsa comme le précédant en utilisant l'URL suivante: https://salsa.debian.org/games-team/luanti-game-minetest On peut ensuite installer les paquets nécessaires, ce qui va causer une erreur, attendue, car des dépendances manquent mais nous pouvons demander au gestionnaire de paquet de les installer pour nous:

cd debian/output
dpkg -i luanti-server_*.deb luanti-data_*.deb luanti-game-minetest_*.deb
apt -f install

Le paquet luanti permet déjà de lancer de multiple jeux grâce a systemd. Le jeu configuré par defaut n'étant pas utilisé nous allons le désactiver:

systemctl stop minetest-server.service
systemctl disable minetest-server.service

Nous avons besoin de créer un utilisateur pour lancer le service:

adduser --disabled-password --system --home /srv/minetest.chapril.org/home --gecos "Minetest dedicated server" --ingroup games --force-badname Debian-minetest

Dans le paquet de Luanti chaque instance est lancée avec un utilisateur dynamique; c'est bien pour la sécurité mais celui nous empêche de stoker les données dans /srv comme c'est l'usage au Chapril. C'est pour cela que l'utilisateur crée précédemment sera utilisé mais nous allons malgré tout activer des mesures de sécurité pour compenser. Pour cela nous allons modifier la configuration systemd du service. Créons un répertoire pour mettre cette configuration:

mkdir /etc/systemd/system/luanti-server@.service.d

Et créons le fichier /etc/systemd/system/luanti-server@.service.d/chapril.conf:

[Service]
DynamicUser=no
User=Debian-minetest
Group=games
SupplementaryGroups=minetest
RemoveIPC=yes
PrivateTmp=yes
NoNewPrivileges=yes
RestrictSUIDSGID=yes
ProtectSystem=strict
PrivateDevices=yes
ReadWritePaths=/srv/minetest.chapril.org/instances/%i
Environment=MINETEST_USER_PATH=/srv/minetest.chapril.org/instances/%i
Environment=LUANTI_GAMEID=instancegame

Puis activons ces changements:

systemctl daemon-reload

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 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

  1. Récupérer le lien de téléchargement de l'archive du mod
  2. Télécharger l'archive avec wget et l'extraire dans /srv/minetest.chapril.org/home/.minetest/mods
  3. Renommer le répertoire avec le nom technique du mod (voir la page contentdb pour trouver le nom technique)
  4. Activer le mod dans le fichier world.mt avec la directive load_mod_<nom technique> = true
  5. 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 <player> <privilege>

Révoquer un privilège

/revoke <player> <privilege>

Exclure un compte (ie le déconnecter du serveur, la personne peut revenir)

/kick <player> [reason]

Bannissement

La documentation est disponible ici : https://content.minetest.net/packages/kaeza/xban2/

Bannir un compte définitivement

/xban <player_or_ip> <reason>

Bannir un compte temporairement :

/xtempban <player_or_ip> <time> <reason>

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 <player_or_ip>

Dé-bannir un compte

/xunban <player_or_ip>

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 <insult>

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.
admin/services/minetest.chapril.org.1740491355.txt.gz · Dernière modification : 2025/02/25 13:49 de duck