21 posts in this topic

Posted (edited)

Hallo Leute,

ich bin relativ neu in der Szene Arma, Exile und Co. und habe festgestellt, dass häufig die Fragen aufkommt wie ein Linux Server inkl. Mods erstellt wird. Durch mehrere Forenbeiträge habe ich ein Tutorial zusammengefasst, welches das Erstellen eines Servers auf Linux evtl. vereinfachen soll. Dieses Tutorial werde ich ständig erweitern. Beispielsweise soll die Installation der Ryanzombies Mod folgen (hier muss ich selber noch einiges in Erfahrung bringen, gerne nehme ich dort auch Hilfe und Tips an), sowie das Konfigurieren des gesamten Servers. Gerne könnt Ihr mir Verbesserungen sowie Änderungen mitteilen, um der Community ein stetig aktuelles Tutorial anbieten zu können. Kritik könnt ihr mir ebenfalls gerne äußern!

 

 

ARMA III Linux Installation Guide

Nachdem eine Linux Distribution installiert wurde, in diesem Fall Debian 8 (8.9), erstellen wir einen Benutzer der für den ARMA Server und dessen Verwaltung zuständig ist.

adduser steam

 

ARMA III und SteamCMD benötigen einige Bibliotheken dir wir installieren sollten.

sudo apt-get install lib32stdc++6
sudo apt-get install lib32gcc1

 

Des Weiteren brauchen wir, wenn noch nicht vorhanden, einen SQL Server, unzip sowie nano den Text Editor. Diese installieren wir mit folgendem Befehl. !Wichtig: Achtet beim Erstellen des sql-Servers auf die richtige Eingabe eurer Daten, denn Passwort und co. müsste ihr später korrekt in eure config Datei hinterlegen!

apt-get update
apt-get upgrade

apt-get install software-properties-common
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.netcologne.de/mariadb/repo/10.2/debian jessie main'

apt-get update
apt-get install mariadb-server

apt-get install unzip
apt-get install nano

 

Wir melden uns mit dem erstellen Benutzer an und fügen einen Ordner hinzu den wir direkt betreten.

sudo -i -u steam

 

Von der Valve Developer Community Seite laden wir uns die aktuelles SteamCMD herunter und führen diese aus, nachdem wir das Paket entpackt haben.

wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
tar xf steamcmd_linux.tar.gz
./steamcmd.sh

 

Es ist empfehlenswert ein extra Steam Konto zu erstellen der rein für das Hosten von Dedicated Servern zu nutzen ist. Wir melden uns mit dem Konto in der SteamCMD ein und starten den Download von ARMA III.

login username
force_install_dir ./arma3/
app_update 233780
exit

 

 

EXILE Mod installieren

Um die Exile Mod für unseren ARMA III Server zu nutzen laden wir uns als nächstes die Server Daten von der offiziellen exilemod.com Seite herunter (Version kann variieren). Geht dazu in den arma3 Ordner und sichert euch die zip Daten in einen extra Ordner.

cd arma3
mkdir data
cd data
wget http://www.exilemod.com/download-all-the-files/@ExileServer-1.0.3e.zip
wget http://bravofoxtrotcompany.com/exile/@Exile-1.0.3.zip
unzip \@ExileServer-1.0.3e.zip
unzip \@Exile-1.0.3.zip

 

Nachdem wir die Daten entpackt haben verschieben wir alle relevanten Daten.

mv @Exile ../
cd Arma\ 3\ Server/
mv LICENSE.txt ../../
mv tbbmalloc.dll ../../
mv @ExileServer/ ../../
mv battleye/* ../../battleye/
mv keys/* ../../keys/
mv mpmissions/* ../../mpmissions/
cd ..
rm -r Arma\ 3\ Server/

 

Wir erstellen die Datenbank indem wir folgenden Befehl ausführen und füttern diese mit der exile.sql Datei.

mysql -u root -p
create database if not exists exile;
GRANT ALL ON exile.* TO 'exile'@localhost IDENTIFIED BY 'password';
flush privileges;
source /home/steam/arma3/data/MySQL/exile.sql
quit

 

Ein wichtiger Schritt ist das Konfigurieren der jeweiligen config Dateien. Hier sollten Servername , Passwort usw. angepasst werden. Beispielsweise kann die zu spielende Map in der config.cfg geändert werden (template = Exile.Malden). Auch der Zugriff auf die Datenbank muss gewährleistet werden. Aus diesem Grund bearbeiten wir die extdb-conf.ini und fügen die Zugangsdaten aus unser erstellten Datenbank ein.

cd ~/arma3/@ExileServer 
nano config.cfg
nano extdb-conf.ini

 

 

Fehleranalyse

Kontrollieren wie jetzt, ob die extDB funktioniert, mit folgendem Befehl.

ldd extDB2.so

 

Sollte hinter einer Zeile „not found“ stehen dann führen wir als root folgendes aus.

dpkg --add-architecture i386
apt-get update
apt-get install libc6 tmux lib32gcc1 lib32gcc1 lib32stdc++6 libtbb2:i386

 

Um den Server zu starten gehen wir in den Ordner, indem sich die arma3server Datei befindet und führen diesen Befehl aus.

./arma3server -cfg=@ExileServer/basic.cfg -config=@ExileServer/config.cfg -autoinit -mod=@Exile\; -servermod=@ExileServer\; >> serverlog.rpt

-autoinit
Startet die Mission inkl. allem dazugehörigen, dies geschieht sonst erst nach der ersten Verbindung durch einen Client zum Server.
>> serverlog.rpt
Erstellt die "serverlog.rpt" Log-Datei in unser Server Verzeichnis. 

 

Bambi Creation Timeout 

Bei dem Problem, dass Player den Server nicht beitreten können, da „Bambi“ nicht richtig geladen werden kann, muss die Datei mysqld.cnf als root bearbeitet werden.

sudo nano /etc/mysql/my.cnf

 

Fügt folgende Zeile hinter [mysqld] hinzu.

sql-mode="ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"

 

Startet den Dienst neu um die Änderungen wirksam zu machen.

service mysql restart

 

 

Exile Mod modifizieren

coming soon...

 

 

Server AdminToolkit

Um den Server inGame zu verwalten habe ich mich für eine kostenlose Variante entschieden. Ich benutze das AdminToolkit von Ole welches wirklich super funktioniert. 
Zuerst laden wir uns die Daten von GitHub und entpacken den @AdminToolServer Ordner in unser Server Verzeichnis.

cd ~/arma3/data
wget https://github.com/ole1986/a3-admintoolkit/archive/master.zip
unzip master.zip
cd a3-admintoolkit-master
mv @AdminToolkitServer ../../

 

Im Anschluß verschieben wir die Schlüssel Datei.

mv admintoolkit.bikey ../../keys/

 

Wir entpacken das admintoolkit_servercfg.pbo Archiv und fügen die UID´s der Admins in die config.cpp hinzu (diese findet man im Arma 3 Menu > Profil). Auch können in dieser Datei Moderatoren hinzugefügt werden. Nachdem wir die Datei wieder gespeichert haben packen wir die Daten wieder zu einem .pbo Archiv. 

Als nächstes müssen wir unsere Missions .pbo Datei anpassen. Diese entpacken wir und öffnen die description.ext Datei. Dort fügen wir hinter

class ExileServer_system_network_dispatchIncomingMessage
{
allowedTargets = 2;
};

folgendes hinzu

class AdminToolkit_network_receiveRequest
{
allowedTargets = 2;
};

 

 Wir bleiben in unserem Missions Verzeichnis und öffnen die config.cpp dort suchen wir nach der Zeile 

class CfgExileCustomCode

 und fügen folgendes vor die oben genannten Zeile hinzu.

class CfgAdminToolkitCustomMod {
	/* Exclude some main menu items
	 * To only show the menus loaded from an extension, use:
	 * 
	 * ExcludeMenu[] = {"Players", "Vehicles", "Weapons" , "Other"};
	 */
	ExcludeMenu[] = {};
	
	Extensions[] = {
		{"Exile Mod","ExileMod"}
	};
	
	/* 4 Quick buttons allowing to add any action you want - See example below*/
	QuickButtons[] = {
		/* send a chat message to selected player containing 'Test 123' */
		{"Chat", "['message', [AdminToolkit_Player, 'Test 123']] call AdminToolkit_doAction"},
		/* send a message to everyone using the parameters text field */
		{"Msg To All", "['messageall', AdminToolkit_Params] call AdminToolkit_doAction"},
		/* Quickly get a Helicopter */
		{"Heli", "['getvehicle', 'B_Heli_Light_01_armed_F'] call AdminToolkit_doAction"},
	};
};

 

Zu guter Letzt kopieren wir den atk Ordner aus dem @MissionsFile Ordner, den wir heruntergeladen haben, in unseren Missions Ordner von unserem Server und packen diesen wieder in ein .pbo Archiv. Jetzt passen wir nurnoch den Startparameter.

./arma3server -cfg=@ExileServer/basic.cfg -config=@ExileServer/config.cfg -autoinit -mod=@Exile\; -servermod=@ExileServer\;@AdminToolkitServer\; >> serverlog.rpt

 

 

ExileZ Mod + Ryan Zombies & Demons

Zu aller erst laden wir alle wichtigen Daten herunter, angefangen mit der ExileZ Mod und danach dementsprechend die eigentlich Zombie Mod. Dazu gehen wir wieder in unseren data Ordner, indem wir auch alle relevanten Daten für Exile gepackt habe. Achtet bitte darauf, dass ihr die Links noch einmal kontrolliert, die ich hier gepostet habe! Die Zombies & Demons Zip Datei habe ich auf meinen privaten Server gepackt, da ich keinen direkten Link über google drive erhalte.

cd ~/arma3/data
wget https://github.com/kuplion/ExileZ-Mod/archive/master.zip
wget http://thunderfire.net/download/ZombiesDemonsV5.0.zip

 

Wie gewohnt entpacken wir beide Archive mit unzip (master.zip.1, da sich bereits eine master.zip in unserem data Ordner befindet).

unzip ZombiesDemonsV5.0.zip
unzip master.zip.1

 

Wir erhalten zwei Ordner einmal den ExileZ-Mod-master und den ZombiesDemonsV5.0 Ordner, auf den wir jetzt erst einmal genauer eingehen. Dieser enthält einen weiteren Ordner @Ryanzombies welchen wir in unser arma3 Verzeichnis verschieben.

mv @Ryanzombies ../

 

Wichtig ist jetzt, dass wir den Schlüssel kopieren der sich im @Ryanzombies Ordner befindet.

cd ../@Ryanzombies/Keys
cp RyanD.bikey ../../keys

 

Leider habe ich festgestellt, dass es Probleme beim Starten des Servers gab. Ich habe eine Error Meldung erhalten die wohl darauf zu schließen ist, dass die Verzeichnisse im @Ryanzombies Ordner nicht alle kleingeschrieben sind. Aus diesem Grund müssen wir alle Ordner mit Kleinbuchstaben ausstatten. Dazu gehen wir wieder in unser Grundverzeichnis.

cd ~/arma3
mv @Ryanzombies @ryanzombies
cd @ryanzombies
mv Addons addons
mv Keys keys

 

Nachdem das erledigt ist können wir den Ordner @ryanzombies abhaken und beschäftigen uns nun mit der ExileZ Mod. Diese Mod wird mit einer exilez_mod.pbo Datei verschickt. Diese können wir entpacken um einige Werte, wie das Spawnen der Zombies etc. , zu verändern (dazu später mehr). Der Einfachheit halber nehmen wir direkt die fertige exilez_mod.pbo und fügen diesen in unseren @ExileServer Addons Ordner.

cd ../data/ExileZ-Mod-master/
mv exilez_mod.pbo ../../@ExileServer/addons

 

Jetzt müssen wir die mission Datei anpassen. Dazu gehen wir im arma3 Ordner in den Ordner mpmissions und entpacken das .pbo Archiv, welches wir auf dem Server laufen haben. Der missions.sqm Datei fügen wir ryanzombies sowie ryanzombiesfunctions hinzu, sodass es wie folgt aussehen sollte.

addOns[]=
{
	"exile_client",
	"a3_map_altis",
	"ryanzombies",
	"ryanzombiesfunctions"
};

 

Nachdem das erledigt ist packen wir die gesamten Daten wieder in ein .pbo Archiv und legen es in unseren mpmissions Ordner ab, welcher sich direkt im arma3 Verzeichnis befindet. Zu guter Letzt passen wir den Startparameter an, indem wir @Ryanzombies; hinzufügen. Das ganze sieht dann ungefähr wie folgt aus.

./arma3server -cfg=@ExileServer/basic.cfg -config=@ExileServer/config.cfg -autoinit -mod=@Exile\; -servermod=@ExileServer\;@AdminToolkitServer\;@ryanzombies\; >> serverlog.rpt

 

 

Konfiguration Exilez Mod

Theoretisch sind die Konfigurationsdateien selbsterklärend, da diese vorbildlich gut Kommentiert wurden. Fangen wir aber erste einmal damit an, welche Daten für uns relevant sind. Als erstes sollten wir die exilez_mod.pbo Datei entpacken und öffnen danach die config.sqf . Ich werde in diesem Schritt nicht jede Einstellung erklären, denn das würde das Tutorial sprengen. Aus diesem Grund nenne ich die meiner Meinung nach wichtigsten Punkte. 


Diese beiden Einstellungen stehen für die maximale Anzahl der auf dem Server zu erzeugenden Zombies dar und die Fraktion die jeder Zombie erhält. Stellen wir Beispielsweise die Fraktion der Zombies auf West so greifen uns diese nicht mehr an und laufen direkt auf einen vordefinierten Punkt ohne uns zu beachten.

EZM_MaxZombies = 100
EZM_ZombieSide = EAST

 

Des Weiteren habe ich die Demons als auch die explodierenden Zombies deaktiviert.

EZM_ryanzombieshealthdemon  = -1;
EZM_ExplosiveZombies = false;

 

Die Option des Werfens empfinde ich als etwas zu übertrieben und meiner Meinung nach wirkt es als wäre es „verbugged“ (was es nicht ist). Aus diesem Grund folgende Einstellungen. 

EZM_ryanzombiescanthrow = -1;
EZM_ryanzombiescanthrowtank = -1;

 

Einstellungen der Hordenbildung sowie das Spawnen rund um den Spieler habe ich alle auf default gelassen. Ich denke das ist nachher auch wieder eine Frage des Geschmacks als auch der Serverperformance. Wenn tatsächlich der Bedarf weiterer Erklärung besteht könnt ihr das gerne hier Kommentieren.

 

 

Restart/Backup Script

Nachdem der Server durch die integrierten RCON Befehle eigenständig runter fährt, muss dieser ordnungsgemäß neu gestartet werden. Dazu habe ich ein kleines Shellscript erstellt welches alle 3h per Crontab abgerufen wird.  Das Script selber sieht wie folgt aus.

#################################################################################
# NAME: BACKSTART SCRIPT
# AUTHOR: SNORP (THUNDERFIRE.NET)
# VERSION: 1.3
# DATE: 2017/09/14
#################################################################################
#
# VARIABLE
#
BACKUP_DIR=/home/steam/backup
CURRENT_HOUR=$(date +"%H")
CURRENT_DATE=$(date +"%F_%H")
SERVER_PROCESS=$(ps axf | grep arma3server | grep -v grep)
# CHECK SERVER IS RUNNING
while [ ! -z "$SERVER_PROCESS" ]; do
  sleep 5
  echo "The server is still running!"
  SERVER_PROCESS=$(ps axf | grep arma3server | grep -v grep)
done
echo "The server is offline, the script is now started."
# CHECK THE TIME FOR A BACKUP
if [ "$CURRENT_HOUR" -eq 10 ] || [ "$CURRENT_HOUR" -eq 22 ]; then
  # ITS TIME FOR A BACKUP
  echo "A backup is created."
  mysqldump --user=exile --password=PASSWORDHERE exile > $BACKUP_DIR/db_$CURRENT_DATE.sql
  zip -r $BACKUP_DIR/bu_$CURRENT_DATE.zip /home/steam/arma3/battleye /home/steam/arma3/@AdminToolkitServer /home/steam/arma3/@ExileServer /home/steam/arma3/@ryanzombies /home/steam/arma3/mpmissions
  #BACKUP COMPLETE NOW RESTART THE SERVER
  screen -S A3Server -X stuff './arma3server -cfg=@ExileServer/basic.cfg -config=@ExileServer/config.cfg -autoinit -mod=@Exile\; -servermod=@ExileServer\;@AdminToolkitServer\;@ryanzombies\;>> serverlog.rpt\n'
  echo "Backup was created successfully, the server is now restarted."
else
  # ITS NOT TIME FOR A BACKUP JUST RESTART
  echo "No backup is performed. The server is restarted."
  screen -S A3Server -X stuff './arma3server -cfg=@ExileServer/basic.cfg -config=@ExileServer/config.cfg -autoinit -mod=@Exile\; -servermod=@ExileServer\;@AdminToolkitServer\;@ryanzombies\; >> serverlog.rpt\n'
fi

 

Es gibt sicher noch bessere und elegantere Methoden als diese! Aus dem Grund bitte ich die Community mir dabei zu helfen dieses Script anzupassen. Wichtig wäre noch das einfügen des SQL Passworts !SICHERHEITSRISKO! ansonsten funktioniert die Backup-Funktion nicht. Außerdem wird das Backup jeweils um 10.00 und um 22.00 Uhr ausgeführt, diese Werte können natürlich nach belieben geändert werden. Eine automatische Reinigung nach Beispielsweise einer Woche muss natürlich noch hinzugefügt werden, dazu bin ich bis jetzt noch nicht gekommen.
Um das Script alle 3h auszuführen erstellen wir ein Crontab mit folgendem Befehl und wählen 2. /bin/nano .

crontab -e 

0 0,3,6,9,12,15,18,21 * * * /home/steam/backup.sh

 

Natürlich sollte die Zeit des Servers mit dem des Crontabs angepasst werden. Ich habe mich für die Laufzeit von 2:59h entschieden.

 

 

Zum Thema Arma 3 / Exile Konfiguration werde ich das Tutorial etwas später ergänzen.

Edited by snorp
Installation mit Grundsystem Debian 8 minimal

Share this post


Link to post
Share on other sites

Posted (edited)

Startscript/Verwaltung und Auslastung

coming soon...

 

 

.pbo Dateien

Leider habe ich bisher nur einen .pbo Manager für Windows gefunden, aus diesem Grund bearbeite ich die Daten immer lokal und lade diese dann später auf meinen Linux Server mit dem Programm WinSCP (Übertragungsprotokoll = SFTP) hoch.

Edited by snorp
1 person likes this

Share this post


Link to post
Share on other sites
Advertisement

Hi snorp

Endlich mal ein Tut das verständlich ist ich bin schon am überlegen auf Linus umzustellen.

Habe einen Debian und werde dies mal probieren, bin nicht so der Linux User.

Gruß

Micha

Share this post


Link to post
Share on other sites

Hi Micha,

das Problem ist, so wie ich mich recht entsinne, Debian unterstützt nicht die mysql Version die für Arma III erforderlich ist. Es gibt sicher ein paar Wege Debian mit der aktuellen Version von mysql zu installieren, dieses Problem hast du bei Ubuntu nicht. Debian wäre auch meine erste Wahl gewesen aufgrund der extrem guten Stabilität. 

Share this post


Link to post
Share on other sites

Posted (edited)

Guten morgen Snorp

Hier ein kleines update wir haben es geschaft Arma3 und Exile unter Debian 9.1 LAMP zu installieren und läuft wirklich sehr gut. Auch MySQL läuft wunderbar. Es sind auch schon einige Mods installiert, nur mit den Zombie and Damons habe ich etwas Schwierigkeiten.

Hier mal ein Auzug aus der RTP:

19:52:32 Warning Message: Addon 'exilez_crashes' requires addon 'Ryanzombies'
Addon 'exilez_crashes' requires addon 'Ryanzombies'
19:52:32 Warning Message: Addon 'exilez_crashes' requires addon 'ryanzombiesfunctions'
19:52:32 Warning Message: Addon 'exilez_crashes' requires addon 'Ryanzombiesanims'
19:52:32 Warning Message: Addon 'exilez_crashes' requires addon 'Ryanzombiesfaces'
19:52:32 Warning Message: Addon 'exilez_mod' requires addon 'Ryanzombies'
19:52:32 Warning Message: Addon 'exilez_mod' requires addon 'ryanzombiesfunctions'
19:52:32 Warning Message: Addon 'exilez_mod' requires addon 'Ryanzombiesanims'
19:52:32 Warning Message: Addon 'exilez_mod' requires addon 'Ryanzombiesfaces'

21:43:51 Missing addons detected:
21:43:51   ryanzombies
21:43:51   ryanzombiesfunctions
21:43:51 Warning Message: You cannot play/edit this mission; it is dependent on downloadable content that has been deleted.ryanzombies, ryanzombiesfunctions
21:43:51 Mission Exile.Chernarus: Missing 'description.ext::Header'

Und hier meine Startparameter:

mods="@Exile\;@CUP_Terrains_Core\;@CUP_Terrains_Maps\;@Extended_Base_Mod\;@ryanszombies\;"

servermods="@ExileServer\;@infiSTAR_Exile\;"

Hier die Lösung:

richtige Ordnerstrucktur

@Zombie and Damons umbenennen in @Ryanzombies und in den Unterordnern addon und key kleinschreiben. Danach alles neu auf den Server laden, Startparameter anpassen.

zb. mods="@Exile\;@CUP_Terrains_Core\;@CUP_Terrains_Maps\;@Extended_Base_Mod\;@Ryanzombies\;"

Gruß

Micha

Edited by Micha

Share this post


Link to post
Share on other sites

@Micha

Öffne deine mpmission\mission.sqm und füge diese 2 Einträge unter addOns[]= hinzu

"Ryanzombies", 
 "ryanzombiesfunctions"

Könnte dann so aussehen

addOns[]=
    {
        "exile_client",
        "dsr_chernarus",//andere Map
        "Ryanzombies", 
        "ryanzombiesfunctions"
    };

 

Sollte dann klappen, wenn der Rest "StartPara, Key" richtig eingefuchst wurden:D

Share this post


Link to post
Share on other sites

außerdem sollte man beachten, dass Linux zwischen Groß und Kleinschreibung unterscheidet,
was bei laden von AddOns gerne mal vergessen wird.

@ZombiesandDemons ist nicht gleich @zombiesanddemons

 

Share this post


Link to post
Share on other sites

Moin

Soweit läuft ja echt wirklich alles gut, nur der restart des Servers alle vier stunden haut noch nicht so hin. Bekomme folgende Fehler:

20:43:15 String id 2389 is not registered
20:43:15
20:43:25 Critical:Destroying running thread!
20:43:25 Critical:Destroying running thread!
20:43:25 Critical:Destroying running thread!
20:43:25 Critical:Destroying running thread!
20:43:25 Critical:Destroying running thread!
20:43:25 Critical:Destroying running thread!

Share this post


Link to post
Share on other sites

Guten Abend Micha,

hast du den Fehler schon beheben können? Ich selber habe es noch nicht bis zum Restart gebracht, da ich immer wieder Änderungen vornehme. Aber ich kontrolliere morgen einmal, ob ich den selben Fehler erhalte. 

Share this post


Link to post
Share on other sites

@Micha mit welchem Befehl willst du den Restart einleiten?
Meines Wissens kannst du beim start von arma "-pid" verwenden, dadurch wird eine Datei angelegt worin die prozess id steht.
Diese in eine Variable einlesen und "killen"

prozessID=`cat pid-datei`
kill -9 $prozessID 2>> /home/arma/err.log
# bisserl warten, bis der Prozess auch tot ist
sleep 5
# ArmA neu starten
/pfad/zur/arma -mit -parametern 

Das ganze in ein script und über die crontabs alle 4 Stunden aufrufen.
Du kannst mit der Prozess ID auch testen ob der Prozess noch läuft.

war jetzt einfach mal nen Schnellschuß, probiert habe ich das nicht.

Edited by Sir_Joker
Rächtschreipfeller
1 person likes this

Share this post


Link to post
Share on other sites
Advertisement

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.