====== Installer serveur Trackmania avec contrôleur ====== L'objectif est de monter de façon stable, un serveur Trackmania avec son controleur. Je vais prendre exemple de deux contrôleurs, **ManiaControl** et **Pyplanet**. Il ne faut en choisir qu'un seul ! L'ensemble des manipulations sont faites sous Debian 10 Buster. Pour info, il vous faut obligatoirement une édition CLUB pour avoir un serveur. ==== Installation du serveur Trackmania ==== Pour commencer, créez un dossier ou seront stockés toutes les données de serveur : # mkdir -p /opt/server1/server Allez dans le dossier et téléchargez la dernière version de serveur : # wget http://files.v04.maniaplanet.com/server/TrackmaniaServer_Latest.zip Décompressez l'archive et supprimez l'archive # unzip TrackmaniaServer_Latest.zip && rm TrackmaniaServer_Latest.zip Copiez le fichier suivant : # cp UserData/Config/dedicated_cfg.default.txt UserData/Config/dedicated_cfg.txt et il va falloir impérativement le modifier. Premièrement, dans la catégorie **authorization_levels**, il faut remplacer les trois valeurs **password**. Mettez un mot de passe aléatoire. Ensuite, il va falloir lui fournir les identifiants de la plateforme de Nadeo. Connectez-vous sur https://players.trackmania.com/ puis allez dans **Manage** , **Dedicated Servers** et cliquez sur **Create a new Dedicated Server Account**. Entrez un nom de serveur, cliquez sur **Submit**. Il devrait vous retourner un mot de passe. Ce nom de serveur et ce mot de passe, il va falloir les mettre respectivement comme **login** et **password** de la section **masterserver_account**. Si vous avez plusieurs serveurs sur la même machine, il faudra changer les options **server_port** et **xmlrpc_port** Pour le reste, je vous laisse jeter un œil aux options si il y a en a qui vous intéressent. Ensuite, copiez la configuration des cartes : # cp UserData/Maps/MatchSettings/example.txt UserData/Maps/MatchSettings/tracklist.txt Puis modifiez-le. Par défaut, il vous configure les 5 premières maps de la saison actuelle mais les fichiers de maps ne sont pas présentes dans votre serveur. Je vous invite donc à aller sur https://trackmania.exchange/ et de trouver une map qui vous plait, et de la télécharger sur le serveur, et donc d'ajuster la configuration de votre fichier **tracklist.txt** Maintenant on va créer un service systemd permettant de lancer un ou plusieurs serveurs Trackmania. Pour cela il faut créer le fichier suivant : [Unit] Description=Trackmania 2020 %i Server After=syslog.target After=network.target [Service] Type=simple WorkingDirectory=/opt/%i/server SyslogIdentifier=tm2020-%i ExecStart=/opt/%i/server/TrackmaniaServer /title=Trackmania /game_Settings=Matchsettings/tracklist.txt /dedicated_cfg=dedicated_cfg.txt /nodaemon Restart=always [Install] WantedBy=multi-user.target et pour lancer votre serveur, faite : # systemctl start trackmania@server1 Si vous avez un firewall, il vous faudra autoriser uniquement le port **server_port** configuré en TCP et UDP. Il n'est pas recommandé d'ouvrir le port XMLRPC. Et pour finir, il va falloir l'ajouter dans le jeu. Dans votre CLUB (créez en un si vous en avez pas), cliquez sur le **+** puis **Salon** puis **Utilisez votre serveur**. Mettez un nom, et sélectionnez dans la liste le login de serveur que vous venez d'utiliser. Et voila, vous devriez pouvoir vous connecter a votre serveur. ==== Installation du contrôleur ManiaControl ==== On va commencer par installer les packets nécessaires : # apt install mariadb-server php-cli php-mysql php-curl php-xmlrpc php-zip php-mbstring php-xml Ensuite, il faut créer la base de données : # mysql -e "CREATE DATABASE mc1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" puis créer l'utilisateur : # mysql -e "GRANT ALL PRIVILEGES ON mc1.* TO 'mc1'@'localhost' IDENTIFIED BY 'password';" Ensuite on va créer le dossier ManiaControl pour le serveur 1 : # mkdir /opt/server1/controller Il faut ensuite télécharger la dernière version de Maniacontrol et l'extraire. Rendez-vous sur https://www.maniacontrol.com/download et récupérez le lien pour télécharger la dernière version beta. Entrez dans le dossier précédemment créé et tapez la commande suivante avec le bon lien et nom de fichier : wget https://download.maniacontrol.com/beta/ManiaControl_beta_0-256.zip && unzip ManiaControl_beta_0-256.zip && rm ManiaControl_beta_0-256.zip Ensuite copiez le fichier de configuration d'exemple : # cp configs/server.default.xml configs/server.xml Ensuite, il faut modifier la configuration du contrôleur dans le fichier **pyplanet/settings/base.py**. Parmi les options, il faut : * Dans la section **server**, remplacer le port par celui du **XMLRPC** * Dans la section **server**, remplacer le pass par le mot de passe du compte **SuperAdmin** * Dans la section **database**, remplacer les valeurs par celle que vous avez créé plus tot * Dans la section **masteradmins**, remplacer la valeur par celle de votre ID UPLAY. Il est affiché dans les logs du serveur quand vous vous y connectez. Ensuite, on va créer le service systemd pour Maniacontrol : [Unit] Description=Maniacontrol %i Controller After=syslog.target After=network.target After=trackmania@%i.service [Service] Type=simple WorkingDirectory=/opt/%i/controller SyslogIdentifier=mc-%i ExecStart=php /opt/%i/controller/ManiaControl.php Restart=always [Install] WantedBy=multi-user.target Et pour finir, lancez Maniacontrol : # systemctl start maniacontrol@mc1 ==== Installation du contrôleur Pyplanet ==== Pour commencer on va installer les packets necessaires : # apt install mariadb-server virtualenv python3-pip Ensuite, il faut créer la base de données : # mysql -e "CREATE DATABASE pyplanet1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" puis créer l'utilisateur : # mysql -e "GRANT ALL PRIVILEGES ON pyplanet1.* TO 'pyplanet1'@'localhost' IDENTIFIED BY 'password';" Ensuite on va créer le dossier de pyplanet pour le serveur 1 : # mkdir /opt/server1/controller Ensuite il faut aller dans ce dossier, et créer l'environnement dédié : # virtualenv --python python3.7 ./env Ensuite, et à chaque fois que vous voudrez modifier cet environnement, il faudra le charger en tapant : # source ./env/bin/activate Ensuite, il faut installer pyplanet : (env) # pip install pyplanet --upgrade Ensuite on crée le contrôleur : (env) # pyplanet init_project pyp Ensuite, il faut modifier la configuration du controleur dans le fichier **controller/settings/base.py**. Parmi les options, il faut : * **OWNERS** : remplacer la valeur par celle de votre ID UPLAY. Il est affiché dans les logs du serveur quand vous vous y connectez. * **DATABASES** : Il faudra remplacer le **NAME** par le nom de la database, et dans les **OPTIONS** le nom d'utilisateur et le mot de passe. * **DEDICATED** : Ajuster le port pour le **XMLRPC** et le mot de passe du compte **SuperAdmin** * **MAP_MATCHSETTINGS** : y mettre la valeur **tracklist.txt** Ensuite, on va créer le service systemd pour pyplanet : [Unit] Description=PyPlanet %i Controller After=syslog.target After=network.target After=trackmania@%i.service [Service] Type=simple WorkingDirectory=/opt/%i/controller SyslogIdentifier=pyplanet-%i ExecStart=/opt/%i/controller/env/bin/python /opt/%i/controller/pyp/manage.py start Restart=always [Install] WantedBy=multi-user.target Et pour finir, lancer pyplanet : # systemctl start pyplanet@server1