ManiaPlanet Dedicated Server auf Linux installieren (TrackMania 2 + ShootMania)

Viele Anleitungen im Internet sind leider zu diesem Thema nicht mehr aktuell, daher habe ich mir mal die Aufgabe angenommen, eine neue zu erstellen.
Mit Hilfe dieser Anleitung, schaffst du es, einen TrackMania 2 / ShootMania Dedicated Server auf einem Linux Server mit aktueller Distribution zu installieren und uAseco zum laufen zu bekommen.
Stückweise habe ich diese Anleitung auch noch in Videoform verfügbar. Die Videos sind in der Regel aktuell, doch der Text ist aktueller! 🙂
Diese Anleitung wurde so geschrieben, das es mit ManiaPlanet 4 (MP4) funktioniert.

Was werden wir alles in dieser Anleitung machen?
0. Vorbereitung des Servers
1. Einen Webserver installieren [nginx]
2. PHP installieren [php7.X]
3. Einen SQL-Server installieren [mySQL]
4. OPTIONAL: Den Webserver via HTTPS (SSL) absichern [Let‘s Encrypt] (Domain notwendig!)
5. PHPMyAdmin installieren
6. Einen TrackMania Server-Account anlegen
7. Den ManiaPlanet Dedicated Server aufsetzen
8. uaseco installieren
9. AdminServ installieren
10. OPTIONAL: Abschotten des TM-Servers mit einer Firewall

Dieses Tutorial ist für Anfänger ausgelegt und für die „Nix denken, code kopieren“-Menschen unter euch 🙂
Ein paar grundlegende Befehle und Funktionen eines Linux-Betriebssystems sollten allerdings vorhanden sein.


Die Anforderungen:

– Einen Linux-Server mit aktuellem System (Debian 9 / Ubuntu 18.X oder neuer)
– 1 Kern CPU mit minimum 1.5GHz + min 512MB RAM oder besser / mehr
– Vollen SSH-Zugang mit Root-Rechten
– Einen ManiaPlanet Account, mit dem ein Serveraccount in der Playerpage via ManiaPlanet-Login erstellt werden kann
– OPTIONAL: Für schönere Anpassungsmöglichkeiten ist ein SFTP-Client wie FileZilla oder WinSCP empfehlenswert. Wer Windows nutzt, kann gerne Notepad++ als Editor verwenden.

Hinweis: Es wird empfohlen, das ganze auf einem frisch installierten Server umzusetzen! So treten am Ende weniger Probleme auf.


Die Gegebenheiten:

Dieses Tutorial wurde auf auf den aktuellen Debian-Distributionen getestet und erstellt.
Debian 9 / 10 und Ubuntu 18.04 LTS / 19.10 sollten 100% funktionieren.


Los gehts!

Hinweis vorne weg: Es gibt einige Punkte die frei angepasst werden können oder ggf. gar nicht 1:1 übernommen werden müssen. Es gibt viel Spielraum. Wer von der Anleitung abweichen möchte, muss mit den daraus folgenden Konsequenzen umgehen. Ich werde in solchen Fällen nicht helfen.

0. Vorbereitung

Damit wir gut loslegen können und alles auf dem System installiert haben, was wir benötigen, müssen wir ein paar Vorbereitungen treffen.
Sollte dein Server schon einiges an Software installiert haben und du kennst dich mit Linux schon aus, kannst du den Schritt überspringen.

Meldet euch auf eurem Linux-Server (als root) an und aktualisiert ihn, damit alle Pakete auf dem neusten Stand sind.
apt install update && apt install upgrade -y

Empfehlenswert sind auch noch folgende Programme:
apt install htop iftop nano zip unzip

Wir verwenden als Webserver nginx, da der Webserver weniger Ressourcen benötigt als z.B. Apache2 oder lighttpd und dabei noch schneller ist. Wer ein „kleinen“ Linux-Server (z.B. nur eine vCore CPU) für den TM-Server nutzt, wird davon ggf. profitieren.
Daher gehen wir auf Nummer sicher, das kein anderer Webserver auf dem System läuft:
apt remove apache2*
Einige Distributionen der Serverhoster haben automatisch einen Webserver installiert, der könnte stören 😉

Wir legen für den TM-Server nun ein seperaten User an, denn ein Gameserver mit Root-Rechten zu starten, ist keine gute Idee.
Mit:
adduser NUTZERNAME
Beispiel:
adduser gameserver
können wir ein neuen Nutzer anlegen.
Vergebt ein sicheres Passwort für den Nutzer!

 

Lege dir nun eine Textdatei auf dem Desktop an oder nutze ein analoges Speichermedium (ein Blatt Papier) und notiere schon einmal folgendes, denn das werden wir später befüllen können:

MySQL
Benutzer: root
Passwort:

Benutzer: phpmyadmin
Passwort:

Benutzer: Nutzername deiner Wahl
Passwort:

TM-Server
Serverlogin:
Passwort:

Dedicated Server-Login
Benutzer: SuperAdmin
Passwort:

Adminserv
Passwort:

Diese Zugangsdaten solltest du dir an einem sicheren Ort aufbewahren, da diese für die Administration des Servers notwendig sind.

1. nginx installieren

Wir installieren nginx über die offiziellen Paketquellen
apt install nginx -y
Ist alles installiert, legen wir nun eine Konfigurationsdatei an, welcher auf die IP-Adresse / Domain des Servers hört, den korrekten Pfad zu später AdminServ kennt und auf Wunsch das ganze via HTTPS ausliefert.
Möchtest du deine Server im Internet zur Verfügung stellen und auch Zugang zum Webinterface ermöglichen, sollte es für DEINE Sicherheit per HTTPS abgesichert werden. Eine lokale Installation bei dir Zuhause, kann auch ohne HTTPS auskommen.
Benötigst du kein HTTPS, so entferne die Zeilen für SSL und verschiebe die PHP-Config-Zeilen in den HTTP-Bereich (listen 80).

cd /etc/nginx/sites-enabled/
nano adminserv

Wir erstellen nun eine Config mit dem Namen „adminserv“. Der Name kann frei angepasst werden.
Ich habe hier einmal eine Beispiel-Config, welche du ab kopieren kannst. Du musst nur die FETT markierten stellen editieren.
Du musst eigentlich nur deine Domain und den Pfad zu den Daten (root) anpassen. Die Config ist so aufgebaut, das eine weiterleitung zu HTTPS gemachtg wird und der Certbot am Ende nur das Zertifikat einbauen muss.

ACHTUNG: Soweit du SSL nutzen möchtest, entferne kurzfristig bei der Erstellung des SSL-Zertifikats das „ssl“ hinter der Portangabe 443! Nach der Erstellung kann dies wieder hinzugefügt werden!

server {
listen 80;
listen [::]:80;
server_name deinedomain.de www.deinedomain.de;
# enforce https
return 301 https://$server_name$request_uri;

}

server {
listen 443 ssl;
listen [::]:443 ssl;

root /var/www/html;

index index.php index.html index.htm;

server_name deinedomain.de www.deinedomain.de;
client_max_body_size 100M;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

# Hier kannst du später dein SSL-Zertifikat einfügen. Es müssen hier die Rauten entfernt werden (Auskommentierung aufgeben)
# ssl_certificate /etc/letsencrypt/live/deinedomain.de/fullchain.pem; # managed by Certbot
# ssl_certificate_key /etc/letsencrypt/live/deinedomain.de/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

}

Hinweis: Nutzt du eine Sub-Domain, musst du bei server_name nur deine.domain.de angeben und kannst das www. weg lassen.
Später muss in der Config die Rauten bei ssl_certificate und ssl_certificate_key entfernt werden, damit das SSL-Zertifikat eingebunden wird.
Mit STRG + X und anschließend ein Y mit ENTER, kannst du alles Speichern und nano schließen.
Wir können die Config nun testen, indem wir in das Terminal folgendes eingeben:
nginx -t
Der Test wird fehlschlagen! Unter Umständen kann der Test aber auch erfolgreich verlaufen.
Denn uns fehlt php und das SSL-Zertifikat.
Das kommt gleich 🙂

2. PHP installieren (php7.3)

Mit einer aktuellen Distribution bekommen wir auch ein aktuelles php. Aktuell ist dort Version 7.3 im Umlauf und sollte auch verwendet werden.
Nicht nur AdminServ sondern auch uaseco benötigen php. Also geben wir den zwei Tools die neuste Version!
Die Vorteile von php7.X zu 5.X sind klar, sicherer & schneller!
Folgende Pakete sollten für den TM-Server ausreichen:
apt install php-fpm php-mysql php-gd php-xml php-curl -y
Ist die Installation durch, kann jetzt noch ggf. in der nginx-Config (adminserv) die PHP-Version bei fastcgi_pass angepasst werden.
Nun kannst du versuchen den Webserver neu zu starten. Das sollte jetzt funktionieren.
Tipp: Wenn du eine andere PHP-Version nutzen möchtest, füge bei den Paketen die jeweilige Version hinzu.
Beispiel:
apt install php7.4-fpm php7.4-mysql php7.4-gd php7.4-xml php7.4-curl -y
Hinweis: Die Tools nutzen von der Programmierung her immer die neuste PHP-Version! Hast du mehrere Installiert, so wird immer die neuste davon genutzt. Pass daher bei Updates von php auf!

3. MySQL Server installieren

Damit die Rekorde auch irgendwo gespeichert werden können, brauchen wir ein SQL-Server.
Hierfür nutzen wir MySQL.
Wir installieren den SQL-Server und sichern ihn gleichzeitig noch ab.
apt install mysql-server -y
Um ihn jetzt sicher zu machen, schicken wir folgenden Befehl ab:
mysql_secure_installation
Wir werden nach folgendem Befragt, das wir wie folgt beantworten:
VALIDATE PASSWORD PLUGIN: y|Y (yes)
Password policy: Empfehlung liegt hier ganz klar bei 2
New password: Hier ein sicheres Passwort für den Root-Account angeben
WICHTIG: Das ist NICHT der Root-Account des SSH-Zugangs (also dem System) sondern des MySQL-Servers. Der besitzt auch einen Account namens root. Er hat aber NICHTS mit dem vom System zu tun.
Gebt hier ein sicheres Passwort an.
Continue with the password: y|Y (yes)
Remove anonymous users: y|Y (yes)
Disallow root login remotely: y|Y (yes)
Remove test database and access to it: y|Y (yes)
Reload privilege tables now: y|Y (yes)

Es ist nun empfehlenswert, direkt einen Nutzer für den TM-Server anzulegen, eine Tabelle zu erstellen und dem Nutzer die Rechte für die Tabelle zu geben.
Es ist absolut nicht empfehlenswert, mit dem Root-Nutzer von MySQL die TM-Datenbank zu verwenden.

Mit folgendem Befehl gehen wir nun auf den SQL Server:
mysql -u root -p
Ihr werdet nach dem Root-Passwort abgefragt, welches ihr gerade beim Absichern angegeben habt.

Wir legen einen neuen Nutzer mit folgendem Befehl an:
CREATE USER 'NUTZERNAME'@'localhost' IDENTIFIED BY 'SUPER-SICHERES-PASSWORT-NACH-VORGABEN';
Beispiel: CREATE USER 'tm-server'@'localhost' IDENTIFIED BY 'SuperDuper123';

Wir legen nun eine Datenbank für den Nutzer an:
Editiert hier die FETT markierten Bereiche mit euren Wunschwerten.
CREATE DATABASE datenbankname;

Beispie:CREATE DATABASE tmserverdb;

Zum Schluss erlauben wir dem Nutzer Zugriff auf die Datenbank zu haben:
GRANT ALL PRIVILEGES ON datenbankname . * TO 'NUTZERNAME'@'localhost';
Beispiel: GRANT ALL PRIVILEGES ON tmserverdb . * TO 'tm-server'@'localhost';

Damit alles übernommen wird, flashen wir die Regeln noch kurz mit:
FLUSH PRIVILEGES;

Mit einem
exit
kommen wir wieder aus MySQL raus.

4. OPTIONAL: HTTPS via Let‘s Encrypt

Damit wir ein sicheren Zugriff auf AdminServ + phpmyadmin ermöglichen können, sichern wir den Server mit HTTPS ab und damit keine doofe Meldung im Browser erscheint, holen wir uns ein Let‘s Encrypt-Zertifikat. Kost ja nix 🙂

Damit wir aber ein Zertifikat bekommen, brauchen wir eine Domain!
Egal ob Sub-Domain oder eine komplette, egal ob .de .net .com …. oder gar eine kostenlose .tk. Hauptsache eine Domain, die auf den Server zeigt.

Mein Tipp: Wenns nur ein Spaß-Server ist, holt euch einfach eine .tk-Domain. Ist doch voll egal, ob es eine Top-Level-Domain ist, hauptsache es ist eine. Auch eine Sub-Domain wäre möglich, falls dir jemand eine zur Verfügung stellt.

apt-get update
apt-get install software-properties-common
add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install python-certbot-nginx

Testen wir ob der Certbot läuft mit:
certbot renew --dry-run

Gut, nun erstellen wir uns ein Zertifikat mit folgendem Befehl:
certbot --nginx -d deinedomain.de -d www.deinedomain.de

Wenn du eine Subdomain nutzt, kann der Befehl genau gleich genutzt werden:
certbot --nginx -d deine.subdomain.de

Wir werden beim Anlegen nach einer E-Mail-Adresse gefragt, bei der ihr eine gültige Mail-Adresse eingeben müsst.
Anschließend müssen wir von der Lizenzbestimmung zustimmen und können auf Wunsch den Newsletter bestellen.

Am Ende werden wir gefragt, ob ein Redirect (Weiterleitung) zu HTTPS erstellt werden soll.
Drückt hier 1, da wir diesen schon in meiner Beispielconfig mit HTTPS drin haben.
Der Certbot fügt nun nur die Zertifikate in der Config (adminserv) ein und startet nginx einmal neu.
Überprüfe die Config von nginx nach diesem Schritt, nicht das nginx die Config verhauen hat 😉

Ein Test ob die Standardseite von nginx nun via HTTPS aufgerufen werden kann, kann nun durchgeführt werden 🙂

5. phpMyAdmin installieren

phpmyAdmin ermöglicht es, die SQL-Daten schön und einfach zu importieren und zu verwalten. Wir können auch so Cheater manuell aus den Datenbanken löschen, ohne mit komplizierten SQL-Befehlen arbeiten zu müssen.
MEIN TIPP: Aktiviert phpMyAdmin nur dann, wenn ihr es auch wirklich braucht! Somit bieten wir den doofen Hackern weniger Angriffsfläche auf unserem Server.

apt install phpmyadmin -y

Wir werden abgefragt, welchen Webserver wir verwenden.
Wir setzten hier nirgendwo einen Punkt, sondern gehen mit TAB direkt auf <OK>.

phpmyadmin möchte gerne noch eine Datenbank installieren, dass das Tool funktionieren kann. Dies müssen wir mit <Yes> bestätigen.

Ist der Installationsprozess durchgelaufen, müssen wir ein sicheres Passwort für den Nutzer phpmyadmin vergeben.
Schreibt nun in die Textbox ein sicheres Passwort hinein und geht per TAB auf OK. Wiederholt anschließend noch einmal das Passwort.

Anschließend müssen wir nun noch die Webseite von phpMyAdmin zu nginx leiten, was wir mit folgendem Befehl durchführen:
ln -s /usr/share/phpmyadmin /var/www/html

TIPP: Wird PHPMyAdmin nicht mehr benötigt, kann der Link wieder aus dem html-Ordner gelöscht werden. So bieten wir den „Hackern“ keine Angriffsfläche in diesem Bereich.

Nun sollte phpMyAdmin wie folgt aufrufbar sein:
https://DeineIP/phpmyadmin
oder
https://DeineDomain.de/phpmyadmin

Ein Login sollte nun nur mit dem vorhin erstellten MySQL-Account (z.B. tm-server) möglich sein. Der Root-Account sollte sich hier NICHT anmelden dürfen. Auch der phpmyadmin-User sollte sich anmelden können.

Falls diverse Meldungen erscheinen sollten, darf hier kurz die Suchmaschine eures Vertrauens befragt werden.
Je nach Distribution müssen die Meldungen unterschiedlich unterdrückt werden. Ein Sicherheitsproblem besteht aktuell hier nicht.
Ich werde deshalb hier auch keinen Lösungsweg nennen.

6. Einen Dedicated Server Account anlegen

Wir müssen nun mit unserem ManiaPlanet Account einen Dedicated Server Account erstellen. Dieser benötigt der Server, um sich bei ManiaPlanet zu Authendifizieren und wir müssen unseren echten Login nicht angeben.

Logge dich dazu bei ManiaPlanet ein.

Drücke rechts oben auf dein Name und wähle die Playerpage aus.

Klicke auf der linken Seite bei „Dedicated Servers“ auf „Accounts“.
Gebe dort dann bei „Create an account“ deine Wunschdaten an.
Wir brauchen ein Login, ein sicheres Kennwort und der Serverstandort. Sind alle Daten eingetragen, klick auf „Create“.

Merke dir jetzt auf jedenfall den Login-Namen, Passwort und die letzten DREI Ziffern deines Keys, den du beim Kauf des Spiels erhalten hast.

7. Den ManiaPlanet Dedicated Server aufsetzen

Endlich beginnt nun die eigentliche Gameserver-Installation!
Als erstes loggen wir uns nun per SSH mit dem aus Schritt 0 (Vorbereitung) extra angelegten Account ein (z.B. der User gameserver).

Falls wir mehrere Server hosten möchten, packen wir die am besten in ein extra Ordner.
Deshalb erstellen wir erst mal einen und erstellen darin ein separaten Ordner für den TM-Server.
mkdir ManiaPlanet
cd ManiaPlanet
mkdir tm-server
cd tm-server

Wir werden am Ende folgende Ordnerstrucktur haben:
HOME-Verzeichnis
=> ManiaPlanet-Server
==> Der Eigentliche Server (tm-server)
==> Das Rekordeverwaltungs-Tool (uaseco)
Wer möchte kann die Stucktur gerne auf seine Bedürfnisse anpassen. Bedenke hierbei auch, das diverse Konfigurationen dementsprechend angepasst werden müssen.

Nun laden wir die aktuellen Serverdaten herunter. Die findest du HIER und kannst sie direkt mit folgendem Befehl herunterladen:
wget http://files.v04.maniaplanet.com/server/ManiaplanetServer_2019-10-23.zip

Jetzt entpacken wir das ganze noch mit:
unzip ManiaplanetServer_2019-10-23.zip

Gut!
Nun müssen wir die Einstellungen noch anpassen.
Als erstes die Gameserver-Config
cd /home/gameserver/ManiaPlanet/tm-server/UserData/Config
nano dedicated_cfg.txt

Hier habe ich mal die Stellen heraus kopiert, die geändert werden müssen.
Einfach mit dem Editor suchen und deine Werte einsetzen:

<authorization_levels>
<level>
<name>SuperAdmin</name>
<password>PASSWORT ÄNDERN</password>
</level>
<level>
<name>Admin</name>
<password>PASSWORT ÄNDERN</password>
</level>
<level>
<name>User</name>
<password>PASSWORT ÄNDERN</password>
</level>
</authorization_levels>


<masterserver_account>
<login>LOGIN-NAME</login>
<password>PASSWORT</password>
<validation_key>XXX</validation_key>
</masterserver_account>


<server_options>
<name>Name des Servers hier angeben - hoerli.net</name>
<comment>Serverbeschreibung hier festlegen - hoerli.net</comment>
<hide_server>0</hide_server> <!-- value is 0 (always shown), 1 (always hidden), 2 (hidden from nations) -->


<max_players>40</max_players>
<password></password>


<max_spectators>40</max_spectators>
<password_spectator></password_spectator>

……..
<server_port>2354</server_port>
<server_p2p_port>3454</server_p2p_port>
<xmlrpc_port>5004</xmlrpc_port>

mit STRG + X und ein Y mit ENTER könnt ihr es wieder speichern und schließen.
Es können aber gerne noch weitere Parameter angepasst werden, um z.B. den Cache-Speicher zu vergrößern oder P2P-Downloads erlauben.

Nun müssen wir noch eine Tracklist anlegen. Das ist die Datei, die alle Maps die auf dem Server aktiv sein sollen beinhaltet.
Hierzu kopieren wir einfach eine schon vorhandene von Nadeo und benennen diese um. So haben wir gleich Maps auf dem Server und der Server wird am Ende starten können.

cd /home/gameserver/ManiaPlanet/tm-server/UserData/Maps/MatchSettings/
cp TMStadiumA.txt /home/gameserver/ManiaPlanet/tm-server/UserData/Maps/MatchSettings/maplist.txt

Wir kopieren hier die Tracklist von TM2 Stadium! Wenn du lieber Valley oder Canyon spielen möchtest, kopiere eine Liste davon.

Wunderbar!

Nun gehen wir in das Hauptverzeichnis des TM-Servers und editieren noch die Startdatei, damit wir den Server bequem starten können.
cd /home/gameserver/ManiaPlanet/tm-server
Für TM-Server: nano RunSrvTM.sh
Für SM-Server: nano RunSrvSM.sh

In diese Datei editieren wir falls Notwendig, den „title“ des Spiels von TMStadium auf z.B. TMCanyon, sofern statt Stadium Canyon gespielt werden möchte. Falls ihr die Maplist in einem Unteroder gespeichert habt, könnt ihr bei „game_settings“ noch den Pfad anpassen.
<code#!/bin/sh
./ManiaPlanetServer /[email protected] /game_settings=MatchSettings/maplist.txt /dedicated_cfg=dedicated_cfg.txt

Mit STRG + X und ein Y mit ENTER könnt ihr es wieder speichern und schließen.

Jetzt muss die Datei nur noch ausführbar gemacht werden.
Das geht recht flott mit:
chmod +x RunSrvTM.sh ODER chmod +x RunSrvSM.sh

Super! Nun ist der reine, „nackte“ MP-Server einsatzbereit!
Per ./RunSrvTM.sh oder ./RunSrvSM.sh können wir den Server nun starten!
Soweit der Server eine Internetverbindung hat und die Ports freigeschaltet sind, sollten wir den Server nun im Spiel finden und beitreten können.

Geht nicht?
Schau in den Logs nach, was du falsch gemacht hast 😉
Sicher ist ein Pfad zum Server falsch gesetzt oder du hast ein Zeichen wie “ oder ; ausversehen gelöscht.

Geht?
Super!

8. uaseco installieren

uaseco soll die Rekorde die gefahren oder geschossen werden in einer Datenbank festhalten und den Spielern etwas mehr Mitbestimmungsrechte geben, sowie dem Admin das Administrieren vereinfachen.
Hier habe ich ein Video produziert, was aktuell immer noch gültig ist.

Lieber in Textform?
Was ist nun zu tun?
Downloade dir uaseco HIER.
Erstelle dazu auch passend einen extra Ordner im MP-Ordner
cd /home/gameserver/ManiaPlanet/
mkdir uaseco
cd uaseco
wget https://www.uaseco.org/downloads/UASECO/UASECO-0.9.6_2019-03-02.zip
unzip UASECO-0.9.6_2019-03-02.zip

Nach dem Entpacken, müssen alle Daten aus dem Ordner „newinstall“, in den Hauptordner von uaseco kopiert / verschoben werden.

Nun müssen wir einige Dateien editieren und mit Informationen befüllen.
Dazu wechseln wir in den Ordner „config“.
Mit dem Editor nano lassen sich in der Regel alle Dateien wunderbar anpassen.

adminops.xml
Du kannst direkt weitere Admins und Operatoren in der Config eintragen.
Entferne dazu die Auskommentierung (das der Text in Notepad++ blau und schwarz wird) und trage zwischen <tmlogin> und </tmlogin> den Loginnamen der weiteren Admins / OPs ein.

dedimania.xml
Den Dedimania-Code bekommst du HIER.
<login>DEIN SERVERLOGIN VON DER MANIAPLANET-SEITE</login>
<dedimaniacode>DER DEDIMANIA-CODE</dedimaniacode>

mania_karma.xml
Damit die Stecken bewertet werden können, müssen wir noch kurz die Serverherkunft bei ManiaKarma hinterlegen. Also editiere einfach die Nation auf deine passende Serverherkunft ab.
<nation>YOUR_SERVER_NATION</nation>
Wie du dein Land korrekt einträgst, findest du z.B. bei Wikipedia.

UASECO.xml
Nun editieren wir noch die wichtigste Datei von allen, die uaseco.xml!
Trage bei dedicated_server nun die Logindaten des TM. oder SM-Servers ein.
Diese solltest du aus Schritt 6 und 7 kennen.
<dedicated_server>
<login>SuperAdmin</login>
<password>PASSWORT ÄNDERN</password>
<ip>127.0.0.1</ip>
<port>5004</port>
<timeout>180</timeout>
</dedicated_server>

Entferne bei masteradmins nun die Auskommentierung und trage dein Login bei tmlogin ein.
Keine Sorge, geht auch für ShootMania obwohl TM dran steht 😉
<masteradmins>
<tmlogin>Dein-TM-Login</tmlogin>
</masteradmins>

Trage bei dbms nun den Zugang zur MySQL-Datenbank an. Diese Daten solltest du aus Schritt 3 kennen.
<dbms>
<host>localhost</host>
<login>LOGIN</login>
<password>PASSWORT</password>
<database>DATENBANKNAME</database>

<table_prefix>uaseco_</table_prefix>
</dbms>

Du kannst nun noch weitere Anpassungen vornehmen, die sind aber alle soweit freiwillig.

Anders als bei xAseco müssen wir für uaseco keine Datenbank in unsere MySQL-Datenbank importieren, da uaseco selbständig eine neue erstellt.

Zum Schluss müssen wir nur noch die Startdateien von uaseco anpassen und ausführbar machen.
Wir müssen den Pfad zur Installation anpassen. Dazu editieren wir zuerst uaseco.sh
#!/bin/sh

DATE=`date +%Y-%m-%d`

cd /home/PFAD/ZU/UNSEREM/UASECO/ORDNER/HIER/EINTRAGEN
php -d allow_url_fopen=on -d safe_mode=0 uaseco.php TM2 2>>logs/$DATE-uaseco-current.log 2>&1 &
echo $!

Dann müssen wir noch die Datei webrequest.sh anpassen. Hier muss ebenfalls der Pfad zum uaseco-Ordner angepasst werden.
#!/bin/sh

DATE=`date +%Y-%m-%d`

cd /home/PFAD/ZU/UNSEREM/UASECO/ORDNER/HIER/EINTRAGEN
php -d allow_url_fopen=on -d safe_mode=0 webrequest.php TM2 2>>logs/$DATE-webrequest-current.log 2>&1 &
echo $!

chmod +x uaseco.sh
chmod +x webrequest.sh

Führen wir nun ./webrequest.sh und anschließend ./uaseco.sh aus, sollte uaseco starten und auf dem Server erscheinen!
Tipp: Sollten mehrere Server betrieben werden, so muss nur von einem useco-System aus, der Prozess webrequest gestartet werden. Die anderen Installationen greifen dann auf diesen ebenfalls zu.

Es kommt nichts?
Fehler gemacht! Die Logs helfen hier bei der Fehlersuche.
Geht?
Super!

9. AdminServ installieren

AdminServ ist ein kostenloses Tool, mit welchen man den TM-Server bequem per Webbrowser steuern kann.
Mittlerweile wurde auch dies von Chris92 etwas angepasst und ein paar Sicherheitsprobleme gefixt.

Dazu wechseln wir in den html-Ordner von nginx und erstellen (wenn erwünscht) noch einen unterordner.
cd /var/www/html
Anschließend laden wir uns das ZIP-Archiv HIER von GitHub herunter / direkt auf den Server und entpacken es.
wget https://github.com/Chris92de/AdminServ/releases/download/v2.1.1-1/AdminServ_v2.1.1.zip
unzip AdminServ_v2.1.1.zip

Hinweis: Es gibt aktuell (01.2020) einen Bug, der uns zwingt, das Webinterface direkt ins Root-Verzeichnis zu entpacken. Unterordner (Bsp. https://deine-domain.de/tm2/interface) ist nicht möglich! Subdomain funktionieren aber (Bsp. https://tm2.deine-domain.de).

Nun gehen wir ein Ordner zurück und erteilen allen Daten und Ordnern im html-Ordner die Rechte des Webservers, damit alle Daten auch Ordnungsgemäß aufgerufen werden können.
cd ..
chown -R www-data:www-data html/

Ist alles entpackt, können wir das ZIP-Archiv auch wieder löschen, das brauchen wir nicht mehr.
rm AdminServ_v2.1.1.zip

Nun müssen wir noch ein paar Berechtigungen setzen, damit AdminServ arbeiten kann:
chmod -R 777 logs/
chmod -R 666 config/adminlevel.cfg.php
chmod -R 666 config/servers.cfg.php
chmod -R 666 config/adminserv.cfg.php

Nun müssen wir noch zwei Ordner anlegen, damit AdminServ dort Daten ablegen kann.
Einmal den Ordner AdminServ im Config-Ordner des TM-Servers und anschließend den Ordner ServerOptions im AdminServ-Ordner.
mkdir /home/gameserver/ManiaPlanet/tm-server/UserData/Config/AdminServ
mkdir ... /home/gameserver/ManiaPlanet/tm-server/UserData/Config/AdminServ/ServerOptions

Da die Webseite per www-data-Benutzer im Normalfall aufgerufen wird, müssen wir dem noch passende Rechte vergeben.
chown -R www-data:www-data /home/gameserver/ManiaPlanet/tm-server/UserData/Config/AdminServ

Nun muss noch alles beschreibbar gemacht werden:
chmod 777 -R /home/gameserver/ManiaPlanet/tm-server/UserData/Config/

Habt ihr die Berechtigungen nicht korrekt verteilt, wird AdminServ direkt eine Fehlermeldung Oben in der Mitte anzeigen.

Anschließend können wir AdminServ über die IP oder Domain im Webbrowser aufrufen.

Wir sollen nun ein Passwort für AdminServ vergeben. Mit diesem Passwort sichern wir AdminServ an sich ab. Es hat nichts mit dem TM-Server oder SQL-Server zu tun! Nur mit diesem Passwort können wir später neue Server zu AdminServ hinzufügen.
Legt also ein sicheres Passwort an.

Ist ein sicheres Passwort vergeben, werden wir gleich gebeten ein Server hinzuzufügen.
Gebt hier die Infos an, die verlangt werden. Notwendige Daten entnehmt ihr aus der TM-Server Dedicated CFG-Datei.
Soweit alle Infos eingetragen wurden, drückt auf SAVE.

Die einzelnen Funktionen von AdminServ werde ich hier nicht erklären. Sie sind recht Selbsterklärend und es gibt auch mehrere Sprachen zur Auswahl. Ihr solltet also damit selbst zurrecht kommen.

10. OPTIONAL: Abschotten des TM-Servers mit einer Firewall

Um den gesamten Server zu schützen, ist eine Firewall empfehlenswert.
Wir nutzen hierfür ufw. Eine sehr einfach zu bedienende Firewall, welche unsere Anforderungen erfüllt.
apt install ufw

Folgende Regeln sollten wir nun hinzufügen, damit wir zum einen weiterhin auf den Server kommen und der TM-Server im Internet verfügbar ist:
ufw allow ssh 'ssh'
ufw allow 22/any comment 'ssh'
ufw allow 80/any comment 'http'
ufw allow 443/any comment 'https'
ufw allow 2354/any comment 'https'
ufw allow 3454/any comment 'https'
ufw allow 5004/any comment 'https'
ufw enable

ACHTUNG: Ändere ggf. die Ports auf deine Werte ab!!! Sind diese falsch definiert, bist du unter Umständen gleich von deinem Server ausgesperrt!


Alles soweit geklappt?
Dein MP-Server ist mit uaseco online und du kannst ihn via AdminServ administrieren?
Dann viel Spaß beim zocken!
Du hast nun erfolgreich den TM-Server installiert!
Fühl dich gut und brich ein paar Dedis!

Damit sind wir auch am Ende des Tutorials angelangt.
Du solltest nun deinem TrackMania 2 oder ShootMania Server im Spiel beitreten können.
Ich wünsche dir nun viel Spaß damit 🙂

Du willst noch was gutes tun?
Join doch einen meiner Server und hinterlasse ein paar Planets!


Noch ein paar Fragen die eventuell hier geklärt werden können:

Brauche ich die in Schritt 0 angegebenen Programme?
Nicht alle. Ich empfehle diese aber, da man damit einen guten Überblick über den Server hat und sie leicht zu bedienen sind. Jeder „gute“ Server hat diese in der Regel installiert 😉

Muss ich nginx nutzen?
Wie in dem Punkt erklärt, ist dies meine Empfehlung. Er ist schnell, nicht so Resourcenhungrig wie andere Webserver und mehr oder weniger leicht zu bedienen.

PhpMyAdmin spuckt viele rote Fehlermeldungen aus, was tun?
Frag eine Suchmaschine des Vertrauens. Diese Meldungen kann man unterdrücken oder tatsächlich mit etwas Aufwand beheben.

Muss ich Let‘s Encrypt nutzen?
Wie beschrieben sollte man den Server mit SSL absichern, soweit dieser im Internet zur Verfügung steht. Mit einem Zertifikat kann man die doofen Browsermeldungen ausblenden. Du hast also nur Vorteile damit.
Steht der Server bei dir Zuhause hinter einem Router und Firewall, brauchst du das in der Regel nicht. Du solltest aber den Webserver nicht im Internet freigeben!

Der Dedicated Server startet nicht, was tun?
Es gibt Logs! Darin steht meist der Fehler und in welcher Datei + Zeile er drin ist.
Die Logs sind hier zu finden: …/tm-server/Logs/
Übliche Probleme sind: Pfad falsch angegeben, Ports bereits belegt, Zugangsdaten (TM-Account) falsch.

uaseco möchte nicht auf dem Server erscheinen, was tun?
Auch bei uaseco gibt es Logs. Diese sind direkt im uaseco-Ordner zu finden. Auch dort steht drin, in welcher Datei und in welcher Zeile der Fehler ist.
Übliche Fehler hier sind: Falsche Zugangsdaten für den TM-Server oder SQL-Server, falsche Pfade in der Startdatei falsch.
Sollten größere Probleme auftreten, kontaktiere doch den Entwickler. Er hilft dir gerne 🙂

Kann ich uaseco mit Plugins ausstatten?
Ja! Teste was geht. Verwendung auf eigene Gefahr! uaseco hat aber schon viel direkt mit an Bort!

Welche Ports muss ich minimum freigeben, damit nur der TM-Server von außen erreichbar ist?
Nur die Ports aus der TM-Server-Config. Also z.B. 2354, 3454 und 5004. Du brauchst kein Webserver (80, 443) oder SSH (22) freigeben.

uaseco automatisch neu starten lassen, wenn es abgestürzt ist?
Ich habe eine Anleitung inkl. passendem Script erstellt. Das findest du HIER!


Ein altes Tutorial auf Windows-Basis hab ich auch mal erstellt.

Kommentar verfassen