2021-12-04 22:32:20 +01:00
# Service LIBREVERSE
2021-12-05 13:03:25 +01:00
Service de mondes virtuels en 3D du candidat chaton de Libre en communs.
Responsable: Christian Momon (@cpm)
2021-12-08 23:42:57 +01:00
La première version de ce document est librement adaptée d'une fiche de Devinsy.
# Site web
Pour l'instant n'utilise pas de flux web. Cela n'empêchera pas les gens d'essayer d'aller sur la page web https://libreverse.chalec.org/.
Donc une page d'information permet d'apporter une réponse à ce cas, par exemple en donnant des informations sur comment se connecter, comment configurer son client, où trouver un client…
Il s'agit d'une simle page XHTML faite à la main et placée dans `/var/www/libreverse.chalec.org/` .
## Installation basique
Installation d'un service nginx pour :
- l'installation d'une page d'information sur comment se connecter à Libreverse ;
- une redirection vers la page du service sur le site https://www.chalec.org/ ;
- l'éventuel déploiement de StatoolInfos ;
- …
Installer les paquets :
```
apt-get install nginx python3-certbot-nginx
```
Ouvrir les ports http (80) et https (443) :
```
ufw allow 'Nginx HTTP'
ufw allow 'Nginx HTTPS'
```
Configurer a minima le site web dans `/etc/nginx/sites-available/libreverse.chalec.org` :
```
server
{
listen 80;
listen [::]:80;
server_name libreverse.chalec.org;
access_log /var/log/nginx/libreverse.chalec.org-access.log;
error_log /var/log/nginx/libreverse.chalec.org-error.log;
}
```
Activer la configuration :
```
cd /etc/nginx/sites-enabled/
ln -s ../sites-available/libreverse.chalec.org
```
Vérifier que c'est bon et recharger :
```
nginx -t & & systemctl reload nginx
```
Configurer le certificat SSl :
```
certbot --nginx
```
Mettre beau le fichier `/etc/nginx/sites-enabled/libreverse.chalec.org` :
```
server
{
listen 80;
listen [::]:80;
server_name libreverse.chalec.org;
access_log /var/log/nginx/libreverse.chalec.org-access.log;
error_log /var/log/nginx/libreverse.chalec.org-error.log;
#return 302 https://$host$request_uri;
return 302 https://libreverse.chalec.org$request_uri;
}
server
{
set_real_ip_from 192.169.1.1;
real_ip_header proxy_protocol;
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
server_name libreverse.chalec.org;
access_log /var/log/nginx/libreverse.chalec.org-access.log;
error_log /var/log/nginx/libreverse.chalec.org-error.log;
ssl_certificate /etc/letsencrypt/live/libreverse.chalec.org/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/libreverse.chalec.org/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
root /var/www/libreverse.chalec.org;
location = /
{
index index.xhtml;
}
}
```
Vérifier que c'est bon et recharger :
```
nginx -t & & systemctl reload nginx
```
# Installation de Minetest
Ouvrir le port par défaut :
```
ufw allow 30000/udp
```
Installer le serveur Minetest :
```
apt-get install minetest-server minetestmapper
```
Pour privilégier le nommage des mondes, désactiver le monde par défaut :
```
systemctl stop minetest-server
systemctl disabled minetest-server
systemctl disabled minetest-server@minetest
```
2021-12-09 02:22:48 +01:00
Installer Postgresql :
```
apt-get install postgresql postgresql-contrib
```
2021-12-08 23:42:57 +01:00
Optimiser la configuration de Postgresql :
- avoir au moins 512MB de mémoire disponible pour Minetest hors Postgresql ;
- modifier `/etc/postgresql/13/main/postgresql.conf` :
```
-shared_buffers = 128MB # min 128kB
+shared_buffers = 512MB # min 128kB
```
# Mineclone2
## Install
Récupérer le zip :
* https://content.minetest.net/packages/Wuzzy/mineclone2/
* cliquer sur le bouton `Download`
Décompresser :
```
unzip mineclone2_6745.zip
```
Ranger dans l'arborescence de Minetest :
```
mv mineclone2 /usr/share/games/minetest/games/
```
## Création d'un monde
Choisir un port et l'ouvrir (remplacer X par un chiffre dédié) :
```
ufw allow 3000X/udp
```
Créer un fichier de configuration élémentaire :
```
cp /etc/minetest/minetest.conf /etc/minetest/fooland.conf
```
Éditer le fichier de configuration `/etc/minetest/fooland.conf` :
```
- server_name = My Minetest server
+ server_name = Chalec – Mineclone2 – Fooland
- server_description = Minetest server powered by Debian
+ server_description = Le libreverse pour tout le monde sur Chalec
-# server_address = game.minetest.net
+ server_address = libreverse.chalec.org
-# server_url = http://minetest.net
+ server_url = https://libreverse.chalec.org/
-port = 30000
+port = 3000X
- default_game = minetest
+ default_game = mineclone2
- motd = Welcome to Minetest. Enjoy your stay!
+ motd = Bienvenue sur le Libreverse de Chalec \o/
-# map-dir =
+map-dir = /srv/libreverse.chalec.org/worlds/fooland
- max_users = 15
+ max_users = 64
- enable_damage = false
+ enable_damage = true
- # disallow_empty_password = false
+ disallow_empty_password = true
```
Créer le dossier des mondes dans l'espace du service :
```
mkdir -p /srv/libreverse.chalec.org/worlds
chown Debian-minetest /srv/libreverse.chalec.org/worlds
```
Créer le nouveau monde :
```
systemctl start minetest-server@fooland.service
```
Le démarrer au prochain boot :
```
systemctl enable minetest-server@fooland.service
```
Tester le nouveau monde en se connectant avec un client Minetest.
## Migration dans Posgreql
Créer un compte dédié (si pas déjà fait) :
```
su - postgres -c "psql -c \"create user minetestdba with password 'XXXXXXXX'; \" "
```
Créer une base de données :
```
su - postgres -c "psql -c \"CREATE DATABASE minetestdb_fooland OWNER minetestdba; \""
```
Associer le compte dédié avec la base fraîchement créée :
```
su - postgres -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE minetestdb_fooland TO minetestdba; \""
```
Définir la base de données dans `/srv/libreverse.chalec.org/worlds/fooland/world.mt` :
```
pgsql_connection = host=127.0.0.1 port=5432 user=minetestdba password=XXXXX dbname=minetestdb_fooland
pgsql_auth_connection = host=127.0.0.1 port=5432 user=minetestdba password=XXXXXX dbname=minetestdb_fooland
pgsql_player_connection = host=127.0.0.1 port=5432 user=minetestdba password=XXXXXX dbname=minetestdb_fooland
```
Migrer le nouveau monde vers le backend Postgres :
```
systemctl stop minetest-server@fooland.service
/usr/games/minetestserver --migrate postgresql --world /srv/libreverse.chalec.org/worlds/fooland
/usr/games/minetestserver --migrate-auth postgresql --world /srv/libreverse.chalec.org/worlds/fooland
/usr/games/minetestserver --migrate-players postgresql --world /srv/libreverse.chalec.org/worlds/fooland
2021-12-09 03:36:19 +01:00
chown Debian-minetest.games /srv/libreverse.chalec.org/worlds/fooland/world.mt
2021-12-08 23:42:57 +01:00
systemctl start minetest-server@fooland.service
```
2021-12-09 03:40:34 +01:00
## IPV4 vs IPV6
Pour l'instant, pas trouvé comment activer et ipv4 et ipv6. Donc activation de ipv6 dans `/etc/minetest/minetest.conf` :
```
serverlist_url = v6.servers.minetest.net
ipv6_server = true
```
2021-12-08 23:42:57 +01:00
## Jouer
Liens utiles :
- Mineclone2 : https://wiki.minetest.net/Games/MineClone_2/Differences_from_Minetest_Game
- Database backends : https://wiki.minetest.net/Database_backends
- Server commands : https://wiki.minetest.net/Server_commands
- Item strings : https://wiki.minetest.net/Itemstrings
- Privileges : https://wiki.minetest.net/Privilegesc
## Génération une carte du monde
### Migration du backend
La procédure utilise `minetestmapper` qui ne gère pas Postgresql, donc une étape va consister à convertir la base de donnée.
Copier temporairement la base :
```
su - postgres -c "psql -c \"CREATE DATABASE test with template minetestdb_libremine; \""
```
Copier temporairement l'arborescence du monde :
```
cp /srv/libreverse.chalec.org/worlds/libremine /srv/libreverse.chalec.org/worlds/test
```
Modifier le paramétrage de la base de données dans le fichier de paramétrage du monde :
```
sed -i 's/minetestdb_libremine/test/g' /srv/libreverse.chalec.org/worlds/test/world.mt
```
Migrer le `backend` du monde (minetestmapper ne sais pas gérer postgresql):
```
/usr/games/minetestserver --migrate sqlite3 --world /srv/libreverse.chalec.org/worlds/test
/usr/games/minetestserver --migrate-players sqlite3 --world /srv/libreverse.chalec.org/worlds/test
```
### Correspondance des couleurs
Minetestmapper sait traduire les blocs Minetest en pixel de couleur mais Mineclone2 apporte de nouveaux blocs. La liste des correspondances de couleurs est donc à générer :
```
./mtsedit -m Mineclone2 -C > mineclone-colors.txt
```
### Génération
```
/usr/games/minetestmapper -i /srv/libreverse.chalec.org/worlds/test/ -o /srv/libreverse.chalec.org/foo.png --colors /srv/libreverse.chalec.org/mineclone-colors.txt --draworigin --drawscale
```
### Nettoyage
Supprimer la base temporaire :
```
su - postgres -c "psql -c \"DROP DATABASE test; \""
```
Supprimer l'arborescence temporaire :
```
rm -fr /srv/libreverse.chalec.org/worlds/test
```