MinetestEDU/Installation of Minetest on a Linux server/fr

From Minetest
Revision as of 02:11, 7 January 2020 by >Twoelk (cat)

Debian Buster (10) :

Une installation de base est suffisante (via apt-get) sachant que vous aurez par la suite une main complète pour configurer la bête :

 ~ # apt-get install minetest

Par défaut, à l'heure où j'écris ces quelques lignes, avec une distribution Debian Buster standard, c'est la version 0.4.17.1 qui est installée. En passant par les backports (via modification de votre /etc/apt/sources.list), on passe à la version 5.1.0 (indispensable car les clients sont désormais uniquement disponibles en v5.1.0 et ne sont pas rétrocompatibles vers 0.4.17.1).

Lorsque l'installation est terminée, je vous recommande vivement de prendre le temps d'explorer la logique de l'arborescence du dossier ".minetest" se trouvant dans /home du serveur. Par défaut ce dossier est assez vide, mais vous pouvez le compléter et le personnaliser avec des mods, textures, worlds... en respectant l'organisation suivante :

Pour résumé à l'extrême, concrètement :

  • le fichier minetest.conf vous permet de configurer finement les options du serveur (à vous de voir, mais on le place souvent dans le /home/user/.minetest/ lrqu'on ne fait q'une instance du service),
  • le dossier ./worlds contient l'ensemble des mondes créés,
  • dans le dossier /home/user/.minetest/worlds/nomdumonde/ se trouve le dossier "mods" et (entre autre) le fichier /auth.sqlite rassemblant les utilisateurs connectés et leurs options, ainsi que la map au format par défaut maps.sqlite.
  • le dossier /mods/ contient les mods ! (n'en n'abusez pas et surtout assurez-vous toujours qu'ils sont compatibles avec la version de votre serveur et entre eux !)
  • un dossier /schems peut-être placé dans le /nomdumonde pour y placer les fichiers *.mts ou *.we de map à importer. Cela facilitera les imports directement via les commandes de worldedit.
  • Pour forcer le serveur à imposer par défaut un jeu de texture, placez vos textures directement dans le dossier /home/user/.minetest/textures/server ; Puis renseignez dans le fichier minetest.conf du monde le lien.
  • Le dossier /usr/share/games/minetest/games contient la liste des jeux (mondes), vous pouvez y placer le minetest.conf si l'objectif est d'y faire tourner plusieurs instances.

De manière à mieux isoler l’application, nous allons créer un utilisateur dédié à Minetest, du même nom que le logiciel :

 ~ # useradd -mU minetest 

Cette commande crée l’utilisateur minetest ainsi qu’un groupe du même nom. Il lui assigne comme répertoire personnel /home/minetest, que minetest utilisera pour stocker ses données (monde, mods, textures, données utilisateurs…). Nous allons aussi créer quelques dossiers qui nous serviront par la suite pour installer les mods et les textures :

 ~ # mkdir -p /home/minetest/.minetest/textures /home/minetest/.minetest/worlds
 ~ # chown -R minetest: /home/minetest/.minetest/ 

Une fois l'installation et la personnalisation finalisée, pour démarrer le serveur une première fois et vérifier les erreurs éventuelles, il suffit d'appliquer la commande suivante :

 ~ $ minetestserver --config /home/user/minetest.conf 

Une fois votre configuration validée, c'est justement dans le fichier minetest.service de systemd /etc/systemd/system/minetest.service qu'on détermine le lien vers le fichier minetest.conf à utiliser.

Exemple de contenu de fichier minetest.service :

   [Unit]
   Description=Minetest multiplayer server minetest.conf server config
   Documentation=man:minetestserver(6)
   After=network.target postgresql.service
   Requires=postgresql.service
   RequiresMountsFor=/home/minetest
   [Service]
   Restart=on-failure
   User=minetest
   Group=minetest
   ExecStart=/usr/lib/minetest/minetestserver --config /home/minetest/minetest.conf --logfile /var/log/minetest/minetest.log
   [Install]
   WantedBy=multi-user.target 

Je ne détaille pas ici le contenu de ce fichier car si vous lisez ces lignes, vous connaissez normalement déjà (et puis il s'agit d'expressions suffisamment explicites).

Vous l'aurez compris, c'est dans le dossier ./mods qu'on dépose les mods à activer dans le jeu. Mais attention, plus vous ajouter de mods, plus le serveur nécessitera de ressources.

Pour des raisons triviales de sécurité, un logiciel à destination des utilisateurs ne doit jamais être démarré et utilisé en mode "root" (càd administrateur). S'il s'agit d'une précaution élémentaire chez les linuxiens, il en va tout autre dans le monde Windows... (Ok, TROLL !!! LOL) Bref, ici un utilisateur dédié au service à lancer, avec des privilèges réduits au maximum est absolument nécessaire.

Fedora Server 31

Sur les grands principes, la démarche est la même aux détails suivants :

   Installation : ~# dnf install minetest
   Fichier *.service à placer dans /usr/lib/systemd/system (et donc contenu légèrement différent)
   Par défaut, les serveurs Fedora sont fournis avec une interface Cockpit à l'adresse https://ip:9090, particulièrement pratique pour administrer le serveur !
   [Unit]
   Description=LOT Minetest (à vous de choisir !)
   After=syslog.target network.target
   [Service]
   # EnvironmentFile=/etc/sysconfig/minetest/%i.conf
   Restart=on-failure
   User=minetest
   Type=simple
   ExecStart=/usr/bin/minetestserver --gameid LOT --config /usr/share/minetest/games/LOT/minetest.conf --map-dir /home/minetest/.minetest/worlds/nomdumonde/ --port 30001
   [Install]
   WantedBy=multi-user.target

Pour en savoir plus, je vous recommande d'aller jeter un oeil au Wiki dédié. Quelques conseils élémentaires pour la configuration :

Qui dit serveur, dit sécurité ! Par conséquent, les principes élémentaires de sécurité ci-dessous devront être respectés à la lettre :

  • Choisir des mots de passe sûrs, utiliser des clés de chiffrements lorsque c'est possible, tout comme l'authentification à deux facteurs,
  • Ne jamais utiliser de dépôts tiers, ne pas utiliser de dépôts propriétaires,
  • Utiliser un outil de monitoring du serveur (cockpit par exemple) et se plonger régulièrement dans les logs,
  • Avoir une gestion quotidienne des mises à jours de sécurité,
  • Utiliser et configurer correctement le parefeu,
  • Facultatif : mettre en place un IPS/IDS (Hôte et Réseau), Fail2ban est indispensable (mais on peut aller plus loin).

Le fichier minetest.conf permet l'activation (en décomentant la ligne correspondante) de l'annonce du serveur comme étend un serveur public (et uniquement lorsqu'il est démarré) sur la liste des serveurs publics mon serveur personnel.