admin:services:minetest.chapril.org
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
admin:services:minetest.chapril.org [2024/12/27 10:37] – supprimée - modification externe (Date inconnue) 127.0.0.1 | admin:services:minetest.chapril.org [2025/03/13 10:03] (Version actuelle) – fhenry2 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | <note important> | ||
+ | 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: | ||
+ | |||
+ | Les instances existantes au sein du Chapril sont : | ||
+ | * [[admin: | ||
+ | * [[admin: | ||
+ | |||
+ | ===== Installation façon Chapril ===== | ||
+ | |||
+ | ==== VM ==== | ||
+ | |||
+ | Création de la VM [[admin: | ||
+ | |||
+ | |||
+ | ==== 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' | ||
+ | Si on clique sur le CI et dans l' | ||
+ | Malheureusement le jeu minetest originel est une dépendance forte pour le moment et doit être installé même si nous n' | ||
+ | https:// | ||
+ | On peut ensuite installer les paquets nécessaires, | ||
+ | <code bash> | ||
+ | cd debian/ | ||
+ | dpkg -i luanti-server_*.deb luanti-data_*.deb luanti-game-minetest_*.deb | ||
+ | apt -f install | ||
+ | </ | ||
+ | |||
+ | Créons l' | ||
+ | <code bash> | ||
+ | mkdir -p / | ||
+ | </ | ||
+ | |||
+ | Le paquet luanti permet déjà de lancer de multiple jeux grâce a systemd. Le jeu configuré par defaut n' | ||
+ | |||
+ | <code bash> | ||
+ | systemctl stop minetest-server.service | ||
+ | systemctl disable minetest-server.service | ||
+ | </ | ||
+ | |||
+ | Nous avons besoin de créer un utilisateur pour lancer le service: | ||
+ | <code bash> | ||
+ | adduser --disabled-password --system --home / | ||
+ | </ | ||
+ | |||
+ | 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' | ||
+ | <code bash> | ||
+ | mkdir / | ||
+ | </ | ||
+ | Et créons le fichier /// | ||
+ | <code ini> | ||
+ | [Service] | ||
+ | DynamicUser=no | ||
+ | User=Debian-minetest | ||
+ | Group=games | ||
+ | SupplementaryGroups=minetest | ||
+ | RemoveIPC=yes | ||
+ | PrivateTmp=yes | ||
+ | NoNewPrivileges=yes | ||
+ | RestrictSUIDSGID=yes | ||
+ | ProtectSystem=strict | ||
+ | PrivateDevices=yes | ||
+ | ReadWritePaths=/ | ||
+ | Environment= | ||
+ | Environment=MINETEST_USER_PATH=/ | ||
+ | Environment=MINETEST_MOD_PATH=/ | ||
+ | Environment=LUANTI_GAMEID=instancegame | ||
+ | </ | ||
+ | Puis activons ces changements: | ||
+ | <code bash> | ||
+ | systemctl daemon-reload | ||
+ | </ | ||
+ | |||
+ | Créons un base de donnée pour authentifier les utilisateurs (elle sera mise en commun pour tous les jeux): | ||
+ | <code bash> | ||
+ | su -l postgres -c " | ||
+ | </ | ||
+ | ==== Organisation des sous-services ==== | ||
+ | |||
+ | Chaque jeu est en fait un sous-service indépendant mais ils partagent quelques éléments en commun: | ||
+ | * la base de donnée des utilisateurs crée précédemment, | ||
+ | * des extensions au jeu, des `mods`, mais chaque jeu utilise uniquement une sélection parmi les mods disponibles | ||
+ | |||
+ | Pour chaque jeu nous avons décidé de l' | ||
+ | * un port UDP dédié (chaque jeu écoute sur un port séparé) | ||
+ | * un port TCP dédié (chaque jeu fourni des métriques d' | ||
+ | * un fichier de configuration ''/ | ||
+ | * 3 bases de données Postgresql nommées '' | ||
+ | * un sous-dossier dédié pour les données du jeu qui ne sont pas dans les bases de données dans ''/ | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | On crée le fichier de configuration ''/ | ||
+ | <code ini> | ||
+ | server_name = Chapril - < | ||
+ | server_description = Instance Luanti / < | ||
+ | motd = Bienvenu à tous ! | ||
+ | |||
+ | server_url = https:// | ||
+ | server_announce = false | ||
+ | ipv6_server = false | ||
+ | port = < | ||
+ | prometheus_listener_address = 127.0.0.1:< | ||
+ | |||
+ | # superadmin | ||
+ | name = Duck | ||
+ | </ | ||
+ | |||
+ | On crée les bases de données: | ||
+ | <code bash> | ||
+ | su - postgres | ||
+ | createdb -O minetest luanti-world-< | ||
+ | createdb -O minetest luanti-users-< | ||
+ | createdb -O minetest luanti-mods-< | ||
+ | </ | ||
+ | |||
+ | On crée les répertoires pour l' | ||
+ | <code bash> | ||
+ | mkdir -p / | ||
+ | mkdir -p / | ||
+ | chown Debian-minetest: | ||
+ | chown Debian-minetest: | ||
+ | </ | ||
+ | |||
+ | On va sur le site [[https:// | ||
+ | <code bash> | ||
+ | cd / | ||
+ | git clone < | ||
+ | cd instancegame | ||
+ | git checkout < | ||
+ | git submodule init | ||
+ | git submodule update | ||
+ | </ | ||
+ | //< | ||
+ | |||
+ | On va ensuite créer la configuration du monde ''/ | ||
+ | <code ini> | ||
+ | world_name = world | ||
+ | gameid = instancegame | ||
+ | |||
+ | backend = postgresql | ||
+ | pgsql_connection = host=127.0.0.1 port=5432 user=minetest password=< | ||
+ | |||
+ | player_backend = postgresql | ||
+ | pgsql_player_connection = host=127.0.0.1 port=5432 user=minetest password=< | ||
+ | |||
+ | mod_storage_backend = postgresql | ||
+ | pgsql_mod_storage_connection = host=127.0.0.1 port=5432 user=minetest password=< | ||
+ | |||
+ | auth_backend = postgresql | ||
+ | pgsql_auth_connection = host=127.0.0.1 port=5432 user=minetest password=< | ||
+ | |||
+ | mg_name = < | ||
+ | creative_mode = false | ||
+ | enable_damage = true | ||
+ | enable_pvp = false | ||
+ | disable_fire = false | ||
+ | enable_tnt = true | ||
+ | |||
+ | load_mod_lib_chatcmdbuilder = true | ||
+ | load_mod_whitelist = true | ||
+ | load_mod_xban2 = true | ||
+ | load_mod_filterpp_lib = true | ||
+ | load_mod_warn = true | ||
+ | load_mod_filterpp = true | ||
+ | </ | ||
+ | Certains mods sont activé par défaut car utiles à la bonne gestion du serveur et leur utilité et installation est expliqué plus loin sur cette page. | ||
+ | |||
+ | La configuration générale du jeu, celle du monde, ainsi que la liste des mods pourront donner lieu à des ajustements selon les jeux, les désirs des joueurs et les décisions des animateurs. | ||
+ | |||
+ | On lance finalement le service: | ||
+ | <code bash> | ||
+ | systemctl start luanti-server@< | ||
+ | </ | ||
+ | |||
+ | ==== Installation des mods ==== | ||
+ | |||
+ | On va sur le site [[https:// | ||
+ | <code bash> | ||
+ | cd / | ||
+ | git clone < | ||
+ | </ | ||
+ | Souvent les mods n'ont pas de version définie mais si c'est le cas on peut vérifier la liste des version ('' | ||
+ | |||
+ | Attention, un mod peux avoir des dépendances listée sur sa page de description et dans ce cas il est nécessaire d' | ||
+ | |||
+ | Ensuite il est nécessaire d' | ||
+ | |||
+ | On relance le services: | ||
+ | <code bash> | ||
+ | systemctl restart luanti-server@< | ||
+ | </ | ||
+ | Puis on modifie le fichier ''/ | ||
+ | <code bash> | ||
+ | systemctl restart luanti-server@< | ||
+ | </ | ||
+ | |||
+ | ==== Mods installés par défaut ==== | ||
+ | |||
+ | Certains mods seront installés et activés pour tous les jeux car ils sont importants pour la bonne gestion du services: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | La liste des mots interdits pour le mod filter est vides. L' | ||
+ | </ | ||
+ | <WRAP center round todo 60%> | ||
+ | Le mod '' | ||
+ | </ | ||
+ | |||
+ | ===== Procédures diverses ===== | ||
+ | |||
+ | ==== Gestion administrateur générale ==== | ||
+ | |||
+ | Pour comprendre les privilèges : https:// | ||
+ | |||
+ | Pour comprendre les commandes serveur : https:// | ||
+ | |||
+ | Donner un privilège | ||
+ | <code bash> | ||
+ | /grant < | ||
+ | </ | ||
+ | |||
+ | Révoquer un privilège | ||
+ | <code bash> | ||
+ | /revoke < | ||
+ | </ | ||
+ | |||
+ | Exclure un compte (ie le déconnecter du serveur, la personne peut revenir) | ||
+ | <code bash> | ||
+ | /kick < | ||
+ | </ | ||
+ | |||
+ | ==== Bannissement ==== | ||
+ | La documentation est disponible ici : https:// | ||
+ | |||
+ | Bannir un compte définitivement | ||
+ | <code bash> | ||
+ | /xban < | ||
+ | </ | ||
+ | |||
+ | Bannir un compte temporairement : | ||
+ | <code bash> | ||
+ | /xtempban < | ||
+ | </ | ||
+ | |||
+ | Le temps peut être exprimé en secondes, minutes, heures, jours, semaines, mois, années et les valeurs sont combinables, | ||
+ | |||
+ | Lister l' | ||
+ | <code bash> | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Dé-bannir un compte | ||
+ | <code bash> | ||
+ | /xunban < | ||
+ | </ | ||
+ | |||
+ | ==== Effacer un monde ==== | ||
+ | |||
+ | L' | ||
+ | |||
+ | * stopper le servive: '' | ||
+ | * supprimer les bases de données '' | ||
+ | * supprimer tous les fichiers dans ''/ | ||
+ | |||
+ | ===== Supervision ===== | ||
+ | Plusieurs sondes ont été mises en place pour surveiller le service Minetest. Les scripts personnalisés sont situés dans le répertoire ''/ | ||
+ | |||
+ | * le script '' | ||
+ | * le script '' | ||
+ | * le script '' | ||
+ | * on vérifie que le service '' | ||
+ | |||
+ | ===== Sauvegarde ===== | ||
+ | La sauvegarde globale des VMs permet de sauvegarder les données clés à savoir : | ||
+ | * le contenu du répertoire ''/ | ||
+ | * le contenu du répertoire ''/ | ||
+ | * les bases de données postgresql | ||