Voici comment installer un serveur e-amusement, via bemaniutils, sur un Raspberry pi (testé sur un 2B et un 3B). Bemaniutils est un ensemble d'outils open source, principalement programmés en Python, permettant de manipuler certains types de fichiers utilisés par les jeux bemani, de décoder/consulter les paquets réseaux envoyés aux serveurs e-amusement, ... et inclus un serveur simulant le comportement des serveurs officiels.
On part du principe que l'on a une installation Raspbian 2021-05-07 toute fraîche. Après la configuration initiale, mettez à jour votre distribution :
sudo apt-get update sudo apt-get upgrade
Installez ensuite les dépendances et outils nécessaires.
sudo apt install libssl-dev zlib1g-dev mariadb-server mariadb-client libmariadbclient-dev dnsmasq uwsgi nginx uwsgi-plugin-python3 python3-pip git python3-venv libopenjp2-7
Configurez ensuite votre serveur MariaDB
sudo mysql_secure_installation #mettez un mot de passe root et répondez oui au reste sudo service mariadb restart sudo mysql -u root -p #saisissez ensuite votre mot de passe root
Exécutez ensuite ces commandes SQL afin de créer la base et l'utilisateur associé (vous pouvez modifier le mot de passe ou le nom utilisateur)
CREATE DATABASE bemani; CREATE USER 'bemani'@'localhost' IDENTIFIED BY 'motdepasse'; GRANT ALL PRIVILEGES ON bemani.* TO 'bemani'@'localhost'; FLUSH PRIVILEGES; exit
Installez ensuite le compilateur Rust (installez-le avec la config par défaut)
curl https://sh.rustup.rs -sSf | sh
Quittez votre session bash et ouvrez-en une nouvelle afin de pouvoir appeler le compilateur Rust directement.
Clonez ensuite le repo git de bemaniutils
git clone https://github.com/DragonMinded/bemaniutils.git cd bemaniutils
Modifiez ensuite le fichier requirements.txt (via nano par ex) afin de rajouter les 2 lignes suivantes ;
importlib-metadata==4.2.0 greenlet
Créez ensuite un environnement virtuel Python et installez les dépendances (cela peut prendre beaucoup de temps selon la puissance de votre Raspberry)
python3 -m venv /home/pi/bemaniutils/ source /home/pi/bemaniutils/bin/activate pip3 install -r requirements.txt
Modifiez le fichier config/server.yaml :
- Mettez le bon utilisateur/mot de base de base de donnée
- Mettez l'adresse 192.168.100.1 comme adresse server et keepalive
- Modifiez le secret_key
- Adaptez les autres paramètres selon votre config et sauvegardez
Quittez ensuite l'éditeur et lancez un "ifconfig -a" afin de noter l'adresse mac de votre port réseau eth0.
Modifiez ensuite le fichier /etc/dnsmasq.conf en sudo et insérez la config suivante (pensez à remplacer <mac> par votre adresse mac).
no-resolv address=/eamuse.konami.fun/192.168.100.1 dhcp-range=192.168.100.50,192.168.100.150,24h dhcp-host=<mac>,192.168.100.1
Modifiez ensuite le fichier /etc/dhcpcd.conf en sudo afin de configurer l'IP fixe du Raspberry
interface eth0 static ip_address=192.168.100.1
Créez le fichier /etc/nginx/sites-available/server.nginx en sudo et insérez le contenu suivant (modifiez le port si vous le souhaitez)
server { listen 5730; server_tokens off; location / { include uwsgi_params; uwsgi_pass unix:/home/pi/bemaniutils/sock/services.sock; } }
Créez le fichier /etc/nginx/sites-available/frontend.nginx en sudo et insérez le contenu suivant (modifiez le port si vous le souhaitez)
server { server_name _; listen 8573; server_tokens off; gzip on; gzip_types text/html text/css text/plain application/javascript application/xml application/json; gzip_min_length 1000; location / { include uwsgi_params; uwsgi_pass unix:/home/pi/bemaniutils/sock/frontend.sock; } location ^~ /static/ { include /etc/nginx/mime.types; root /home/pi/bemaniutils/bemani/frontend/; } }
Créez les liens symboliques de ces 2 fichiers dans /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/server.nginx /etc/nginx/sites-enabled/server.nginx sudo ln -s /etc/nginx/sites-available/frontend.nginx /etc/nginx/sites-enabled/frontend.nginx
Créez le fichier /etc/uwsgi/apps-available/server.ini en sudo et insérez le contenu suivant
[uwsgi] plugins = python3 chdir = /home/pi/bemaniutils wsgi-file = /home/pi/bemaniutils/services.wsgi callable = app socket = /home/pi/bemaniutils/sock/services.sock processes = 4 threads = 2 virtualenv = /home/pi/bemaniutils
Créez le fichier /etc/uwsgi/apps-available/frontend.ini en sudo et insérez le contenu suivant
[uwsgi] plugins = python3 chdir = /home/pi/bemaniutils wsgi-file = /home/pi/bemaniutils/frontend.wsgi callable = app socket = /home/pi/bemaniutils/sock/frontend.sock processes = 4 threads = 2 virtualenv = /home/pi/bemaniutils
Créez les liens symboliques de ces 2 fichiers dans /etc/uwsgi/apps-enabled
sudo ln -s /etc/uwsgi/apps-available/server.ini /etc/uwsgi/apps-enabled/server.ini sudo ln -s /etc/uwsgi/apps-available/frontend.ini /etc/uwsgi/apps-enabled/frontend.ini
Exécutez ces commandes dans le dossier bemaniutils
mkdir sock ./dbutils --config config/server.yaml create cp bemani/wsgi/services.wsgi . cp bemani/wsgi/frontend.wsgi .
Modifiez les 2 fichiers services.wsgi/frontend.wsgi afin d'indiquer d'utiliser le fichier config/server.yaml
Redémarrez votre Raspberry Pi.
Et voila ! Vous voici avec un serveur e-amusement fonctionnel (en dehors des étapes supplémentaires en fonction des jeux. Consultez README.md pour cela).
Il suffira de faire pointer votre jeu sur l'adresse http://192.168.100.1:5730 (sauf si vous modifiez le port dans la configuration nginx). Le Raspberry attribuera automatiquement une IP entre 192.168.100.50 et 192.168.100.150 aux machines connectées à celui-ci.
L'interface est accessible via l'adresse http://192.168.100.1:8573 (sauf si vous modifiez le port dans la configuration nginx)