libreverse/README.md

322 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Service LIBREVERSE
Service de mondes virtuels en 3D du candidat chaton de Libre en communs.
Responsable: Christian Momon (@cpm)
La première version de ce document est librement adaptée d'une fiche de Devinsy.
/!\/!\/!\/!\/!\/!\/!\/!\/!\
Rédaction en cours
/!\/!\/!\/!\/!\/!\/!\/!\/!\
# 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
```
Installer Postgresql :
```
apt-get install postgresql postgresql-contrib
```
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
chown Debian-minetest.games /srv/libreverse.chalec.org/worlds/fooland/world.mt
systemctl start minetest-server@fooland.service
```
## 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
```