Wer sich ernsthaft mit dem Betrieb eines dedicated Servers für Running with Rifles unter Linux beschäftigt, endet derzeit unweigerlich in einem Schreikrampf. Nicht nur, dass die Server-Dokumentation im Internet größtenteils veraltet ist, auch die Umsetzung des Server-Konzeptes mit Binaries & PHP (ja, PHP!) verpackt in einem Dschungel voller Config-Files… endet mit Kopfschütteln und Verzweiflung.

Aber wir Linux`er geben nicht auf und deshalb findest du hier eine möglichst einfache Anleitung für deinen eigenen RwR dedicated Server. Ich gehe davon aus, dass du wie ich tmux benutzt um die beiden Server-Skripte parallel starten zu können.

In diesem Tutorial hier setzen wir ein Debian Wheezy (Stable) 64Bit ein. Auf den Ubuntu Server ab 14.04 gehe ich weiter unten explizit darauf ein. Am Ende dieses Tutorials befindet sich dein Server in dieser offiziellen Serverliste, das ist also unser Ziel dieser Übung.

Zusammenfassend gesagt, besteht die Installation aus fünf Schritten:

  1. Download der aktuellen Server-Files über das offizielle SteamCMD-Repository
  2. Installation der 32-Bit Linux-Libraries und Start ./launch_server Script
  3. Installation von PHP und
  4. Starten der beiden Instanzen (Binär & PHP)
  5. Config-Files anpassen; wir kopieren & editieren
    1. Weiterführende Links

Ganz unten erkläre ich noch, wie der Server kinderleicht gepatcht werden kann.
Vertrödeln wir also keine Zeit, los gehts.

1. Download & Installation der Server-Files

Wir erstellen einen neuen User rwr-server und benutzen diesen für alles, was nicht Root benötigt. Download von SteamCMD und entpacken:

apt-get install lib32gcc1
adduser rwr-server
su - rwr-server
wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
tar xvzf steamcmd_linux.tar.gz

Jetzt starten wir ./steamcmd.sh und loggen uns bei Steam im Text-Modus ein. Im Falle von RwR ist das Spiel und der Server in der gleichen ID 270150.

./steamcmd.sh
login username passwort
app_update 270150
STRG+C

2. Server 32-Bit Architektur nachinstallieren

Besitzer eines 32Bit Linux-Servers dürfen diesen Schritt überspringen.

In diesem Schritt lädt es zwar Unmengen an i386 Paketen herunter, jedoch gefährdet es dein System i.d.R. nicht, denn die 64Bit Pakete sind weiterhin vorhanden und vom System als default referenziert. Dies muss als Root gemacht werden, also verlassen wir rwr-server mit exit, danach:

dpkg --add-architecture i386
apt-get update
apt-get install ia32-libs

Auf Ubuntu 14.04+ gibt es ia32-libs nicht. Ubuntu Admins scrollen bitte nach ganz unten für die Ubuntu-Lösung an dieser Stelle. Jetzt kannst du vorab einmal testen, ob noch Fehlermeldungen beim ./launch_server erscheinen. Bitte als rwr-server , keinesfalls als Root:

su - rwr-server
cd ~/Steam/steamapps/common/RunningWithRifles
./launch_server

Das war aber noch nicht alles. Wir brauchen einen zweiten Prozess der mit PHP läuft um innerhalb von ./launch_server eine echte Spielmodus-Instanz zu starten.

3. Installation PHP, starten des 2. Prozesses PHP

Jetzt wird es heikel. Du musst abwägen ob du auf deinem Server eine komplette PHP-Installation haben möchtest. Wenn du auf Debian nämlich einfach blind apt-get install php5 ausführst, installiert es dir automatisch einen Apache mit. Damit wäre dann unter deiner IP:Port80 (http://IP/) eine hässliche „It Works!“ Default-Webseite online und damit einhergehend das erhöhte Risiko auf Sicherheitslücken.

Aber irgendwo her müssen wir PHP bekommen, der RwR-Server setzt dies voraus. Das verrückte dabei ist, dass die Entwickler im binären File ./launch_php einen hardkodierten Link auf ein altes PHP 5.3 32Bit mit Pfad /usr/lib/php5/20090626+lfs/ auf deinem Server erwarten. Das ist einmal kompletter Mist, wir werden auf unserem Server in diesem Ordner ganz sicher kein PHP haben.

Auf meinem Spiele-Server befand sich sowieso bereits PHP für eine andere Webseite. Wenn das bei dir auch so ist, kannst du mit php –version herausfinden welches PHP installiert ist:

php --version

PHP 5.4.39-0+deb7u2 (cli) (built: Mar 25 2015 08:33:29)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

Damit hast du auch bereits alles was du brauchst. Wenn du tatsächlich PHP mit der automatischen Hammer-Methode installieren willst, überprüfe was du machst und sei dir sicher, dass du auf diesem Server keine allfällig anderen Webseiten stören wirst!

apt-get install php5 #Überlege, bevor du es eintippst!

Jetzt sind wir Ready, um auch den 2. Prozess mittels PHP zu starten.

4. Starten der beiden Instanzen (Binär & PHP)

Gleich haben wir es geschafft.

Wir starten

a) die Server Runtime-Files mit ./launch_server und
b) die Spiel-Instanz mit Modus „Invasion“ (oder nach Wahl, durchsuche den Ordner nach anderen Start-Scripten) auf der rechten Seite.

Zuerst:

./launch_server

Danach parallel dazu:

php media/packages/vanilla/scripts/start_invasion.php debug_output

Wie gesagt, ich benutze tmux um die Session zu splitten und wenn ich mein Terminal schliesse, bleibt dank tmux der Server immer noch online. Siehe Screenshot zur Erkärung:

Einerseits muss ./launch_server gestartet werden, danach erst parallel mit php das jeweilige Spielmodi-Startscript.
Einerseits muss ./launch_server gestartet werden, danach erst parallel mit php das jeweilige Spielmodi-Startscript.

Sobald alles geklappt hat, schaut es so aus:

Während mit "php start*.php debug_outpout" rechts hochfährt, rattert links im ./launch_server erneut ein Loading durch.
Während „php start*.php debug_outpout“ rechts hochfährt, rattert links im ./launch_server erneut ein Loading durch.

Gratuliere, dein Server läuft. Wohl noch mit Default-Namen und ohne eigene Einstellungen, aber da habe ich dir auch schon eine Beispiel-Vorlage

5. Config-Files anpassen

Konfigurationsdateien hat Running with Rifles wie Sand am Meer, eindeutig zu viele wenn du mich fragst. Ich möchte dir anhand eines Invasion-Spielemodus Server’s zeigen, wie deine Config ausschauen könnte.

Wir gehen ins Verzeichnis mit den PHP-Config Dateien und kopieren eine Example-Datei zu einer echten Version.

cd ~/Steam/steamapps/common/RunningWithRifles
cd media/packages/vanilla/scripts/
cp server_settings_invasion.example.php server_settings_invasion.php

Jetzt editieren wir die neue Datei server_settings_invasion.php nach unseren Wünschen. Ich benutze dazu vi/vim, für Linux-Anfänger empfehle ich den Editor nano.

nano server_settings_invasion.php

Mein Config-Beispiel in server_settings_invasion.php:

<?php

// invasion server command
function get_start_server_command() {
// CUSTOMIZE YOUR SERVER SETTINGS HERE
// $command = "";

$command =
"<command class='start_server' " .
" server_name='Mein erster Linux-Server' " .
" server_port='27050' ".
" comment='Persistent Profiles, COOP Invasion. Server by Games4Linux.de' ".
" url='http://Games4Linux.de' ".
" register_in_serverlist='1' ".
" mode='COOP'".
" max_players='64'".
" persistency='forever'>".
" <client_faction id='0' />".
"</command>";

return $command;

}

?>

Fertig.

Weiterführende Links

Running with Rifles Server Updaten:
RWR Server Updaten
Stoppe deinen Server. Dann als User rwr-server:

./steamcmd.sh
login username passwort
app_update 270150
STRG+C

Starte jetzt, wie in Schritt 4) erklärt, den gepatchten Server erneut.

GeoLocation in der Serverliste:

Geoinfo.xml anlegen

Damit dein Server nicht im Land „Unknown“ sich befindet, muss im Ordner ~/Steam/steamapps/common/RunningWithRifles die Datei geoinfo.xml angelegt werden:

cd ~/Steam/steamapps/common/RunningWithRifles
touch geoinfo.xml

In diese Datei muss folgender Inhalt:

<?xml version="1.0"?>
<geoinfo>
<location value="Germany"/>
</geoinfo>

Derzeit kann das Land noch geändert werden, auch fiktive Namen sind möglich.

Fehlerbehebung:
Ubuntu Server 14.04+ , ia32-libs alternative Lösung

Da Ubuntu Server 14.04+ kein Metapaket ia32-libs anbietet, müssen die nötigen 32-Bit Libraries für ./launch_server von Hand installiert werden:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libx11-6:i386 libxext6:i386

Running with Rifles: Segmentation Fault

$ ~/Steam/steamapps/common/RunningWithRifles$ ./launch_server
RUNNING WITH RIFLES (c) Modulaatio Games 2015, 1.01, server build
Loading.
Loading..
Loading…
Loading….
Loading
Loading.
Loading..
Loading…
Loading….
Loading
Loading.
Loading..
Loading…
Loading….
Loading
Loading.
Loading..
Loading…
Loading….
Game loaded
>Segmentation fault
$

Lösung: Möglicherweise ist der UDP Port mit einem hängenden PHP Prozess bereits blockiert. Mit netstat -anp kannst du die PID des betreffenden Ports herausfinden, und dann killen:

netstat -anp | grep 1238 #Die Port-Nummer angeben, die dein Server i.d.R. benutzt
kill -9 PID #Die PID Zahl ganz rechts, in der Ausgabe der vorherigen netstat-Zeile

Running with Rifles: error while loading shared libraries: libX11.so.6
./launch_server
/home/rwr-server/Steam/steamapps/common/RunningWithRifles/rwr_server: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory

Lösung: Du hast den Schritt „2. Server 32-Bit kompatibel machen“ nicht, oder nicht vollständig durchgeführt. Der Server will nämlich libX121.so.6 (und viele weitere Libs!) als 32-Bit (i386) Version haben.

TEILEN
elysium
Elysium spielt seit 2012 unter Linux, aktuell mit Linux Mint 18. Beruflich bin ich im Bereich Middleware auf Linux-Server unterwegs. Für diverse Adobe Applikationen bleibt mein Dualboot Linux/Windows bestehen. Und in seltenen Fällen für DirectX only Games..

3 KOMMENTARE

    • Hey JackMayol,
      danke vielmals, da hat sich die Mühe doch gelohnt 🙂

      Habe die Anleitung für Ubuntu Server 14.04+ erweitert, mit Ubuntu Server müssen zwei i386 Libaries von Hand installiert werden.

  1. Hi,

    ich hatte das Problem, dass ich für meine Kills keine XP bekommen habe. Nach einiger Recherche mit den Jungs von RWR haben wir raus gefunden, dass es am deutschen PHP lag. Die „.“ Notation wurde nicht richtig an den Server weiter gegeben und dadurch war die Eingabe ungültig. Mit dem vorgegebenen launch_php funktioniert es aber ohne Probleme.
    Nur zur Info.

HINTERLASSE EINE ANTWORT