Sign in to follow this  
Followers 0
snorp

Tutorial - Linux Server

4 posts in this topic

Posted (edited)

Hallo guys,

This article was written by me in German. I have decided to translate it into English now. You are welcome to correct me! Feel free to criticize me, too!

 

 

ARMA III Linux Installation Guide

After a Linux distribution has been installed, in this case Debian 8 (8.9), we create a user responsible for the ARMA server and its administration.

adduser steam

 

ARMA III and SteamCMD need some libraries to install.

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

 

Furthermore, we need a SQL Server, unzip and nano the text editor. We install it with the following command. Important: When creating the sql server, make sure that you enter your data correctly, because password etc., you will have to save it in your config file later!

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 zip
apt-get install nano

 

We log in with the created user and add a folder that we enter directly.

sudo -i -u steam

 

From the Valve Developer Community page we download the current SteamCMD and run it after unpacking the package.

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

 

It is recommended to create an extra Steam account for hosting dedicated servers. We log in with the account in the SteamCMD and start the download of ARMA III.

login username
force_install_dir ./arma3/
app_update 233780
exit

 

 

EXILE Mod installation

To use the Exile Mod for our ARMA III server we will download the server data from the official exilemod. com site (version may vary). Go to the arma3 folder and save the zip data in an extra folder.

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

 

After unpacking the data, we move all relevant data.

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/

 

We build the database by executing the following command and feeding it with the exile. sql file.

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

 

An important step is configuring the config files. Here you should adjust the server name, password etc. For example, the map to be played can be changed in config. cfg (template = Exile. Malden). Access to the database must also be guaranteed. For this reason we edit the extdb-conf. ini and insert the access data from our created database.

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

 

 

Fault analysis

As now, check whether the extDB works with the following command.

ldd extDB2.so

 

If there is "not found" after a line, we will execute the following as root.

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

 

To start the server we go to the folder where the arma3server file is located and execute this command.

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

-autoinit
Starts the mission, including all related tasks, otherwise this is only done after the first connection by a client to the server.
>> serverlog.rpt
Creates the "serverlog.rpt" log file in our server directory.

 

Bambi Creation Timeout 

If the problem arises that players cannot join the server because "Bambi" cannot be loaded correctly, the mysqld. cnf file must be edited as root.

sudo nano /etc/mysql/my.cnf

 

Adds the following line after [mysqld].

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

 

Restarts the service to make the changes effective.

service mysql restart

 

 

Modify Exile Mod

coming soon...

 

 

Server AdminToolkit

To manage the inGame server I decided to use a free variant. I use the AdminToolkit von Ole from Ole which works really well. 
First we load the data from GitHub and unpack the @AdminToolServer folder into our server directory.

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

 

Afterwards we move the key file.

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

 

We unpack the admintoolkit_servercfg. pbo archive and add the admin's UID?s to the config. cpp (this can be found in the Arma 3 menu > Profile). Moderators can also be added to this file. After we have saved the file again we pack the data back to a. pbo archive. 

Next we need to customize our Missions. pbo file. We unpack them and open the description. ext file. There we add behind

class ExileServer_system_network_dispatchIncomingMessage
{
allowedTargets = 2;
};

the following

class AdminToolkit_network_receiveRequest
{
allowedTargets = 2;
};

 

We stay in our missions directory and open the config. cpp there we search for the line

class CfgExileCustomCode

and add the following before the above line.

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"},
	};
};

 

Last but not least, we copy the atk folder from the @MissionsFile folder, which we downloaded, into our missions folder on our server and put it back into the. pbo archive. Now all we have to do is adjust the start parameter.

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

 

 

ExileZ Mod + Ryan Zombies & Demons

First of all we download all important data, starting with the ExileZ Mod and then the Zombie Mod. To do this, we go back to our data folder by packing all relevant data for Exile. Please make sure that you check the links I posted here again! I put the Zombies & Demons Zip file on my private server, because I don't get a direct link via google drive.

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

 

As usual we unpack both archives with unzip (master. zip. 1, because there is already a master. zip in our data folder).

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

 

We receive two folders, the ExileZ-Mod-master and the ZombiesDemonsV5.0 folder, which we will now go into in more detail. This contains another folder @Ryanzombies which we move into our arma3 directory.

mv @Ryanzombies ../

 

Now it is important that we copy the key located in the @Ryanzombies folder.

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

 

Unfortunately, I noticed that there were problems starting the server. I have received an error message that may indicate that the directories in the @Ryanzombies folder are not all written in lower case. For this reason, we have to provide all folders with lowercase letters. To do this, we go back to our basic directory.

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

 

After that we can check the @ryanzombies folder and now we are working on the ExileZ Mod. This mod is sent with an exilez_mod. pbo file. We can unpack these to change some values, like spawning the zombies etc. (more about this later). For simplicity's sake, we take the finished exilez_mod. pbo directly and add it to our @ExileServer Addons folder.

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

 

Now we have to adjust the mission file. To do this, we go to the arma3 folder in the mpmissions folder and unpack the. pbo archive, which we have on the server. We add ryanzombies and ryanzombiesfunctions to the missions. sqm file, so it should look like this.

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

 

After this is done we pack all the data back into a. pbo archive and put it in our mpmissions folder, which is located directly in the arma3 directory. Finally, we adjust the start parameter by adding @Ryanzombies;. The whole thing looks like this.

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

 

 

Konfiguration Exilez Mod

Theoretically, the configuration files are self-explanatory, as they have been well commented. But let's start with the first one, which data is relevant for us. First we should unpack the exilez_mod. pbo file and open the config. sqf. I won't explain every setting in this step, because that would go beyond the tutorial. That is why I would like to make the most important points.

These two settings represent the maximum number of zombies to be created on the server and the fraction that each zombie receives. For example, if we place the Zombies' faction on West, they don't attack us anymore and run directly to a pre-defined point without paying attention to us.

EZM_MaxZombies = 100
EZM_ZombieSide = EAST

 

Furthermore, I deactivated the demons and the exploding zombies.

EZM_ryanzombieshealthdemon  = -1;
EZM_ExplosiveZombies = false;

 

The option of throwing is a bit too much and in my opinion it seems to be "robust" (which it is not). For this reason, the following settings.

EZM_ryanzombiescanthrow = -1;
EZM_ryanzombiescanthrowtank = -1;

 

Horde building and spawning settings around the player have all been left on default. I think it's also a question of taste and server performance. If there is a real need for further explanation, you are welcome to comment on it here.

 

 

Restart/Backup Script

After the server shuts down by the integrated RCON commands, it has to be restarted properly. I have created a small shell script which is called up every 3h via crontab. The script itself looks like this.

#################################################################################
# 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

 

There are certainly even better and more elegant methods than these! For this reason I ask the community to help me customize this script. It is important to insert the SQL password! SECURITY RISKO! otherwise the backup function will not work. In addition, the backup will be executed at 10.00 and 22.00 hours, these values can be changed as desired. An automatic cleaning after one week, for example, has to be added, of course, but I haven't yet been able to do that.
To execute the script every 3h we create a crontab with the following command and select 2. /bin/nano.

crontab -e 

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

 

Of course, the time of the server should be adjusted with that of the crontab. I decided on the runtime of 2:59h.

 

 

For the topic Arma 3 / Exile configuration I will add the tutorial a little later.

Edited by snorp
1 person likes this

Share this post


Link to post
Share on other sites

Posted (edited)

Thanks for sharing Snorp.

I am a beginner to linux and I have tried your scripts on Ubuntu 16.04 LTS  on AWS free tier(t2.micro)

I tried to launch a server with only exile mod and I think I am few steps away from successfully launching a server

 

It is fine when i checked with following command where extDB2.so file is located

ldd extDB2.so

but there are problems when launching a server(eg. spawning a vehicle)

It is also weird that it looked fine according to serverlog.rpt

 

I also have ran following command

apt-get install libc6 tmux lib32gcc1 libtbb2 lib32gcc1 lib32stdc++6 libtbb2:i386

rather than 

apt-get install libc6 tmux lib32gcc1 lib32gcc1 lib32stdc++6 libtbb2:i386

 

I also checked free memory with free -m command and it was over 900mb before I executed 'arma3server' with parameters.

 

I will create another instance in few days follow those steps again and try to launch the server and get back to this post with screenshots.

 

Thanks again for your time translating your guide to English and sharing.

Cheers from New Zealand

Edited by dayznz

Share this post


Link to post
Share on other sites
Advertisement
On 5.10.2017 at 1:31 PM, dayznz said:

Thanks for sharing Snorp.

I am a beginner to linux and I have tried your scripts on Ubuntu 16.04 LTS  on AWS free tier(t2.micro)

I tried to launch a server with only exile mod and I think I am few steps away from successfully launching a server

 

It is fine when i checked with following command where extDB2.so file is located


ldd extDB2.so

but there are problems when launching a server(eg. spawning a vehicle)

It is also weird that it looked fine according to serverlog.rpt

 

I also have ran following command


apt-get install libc6 tmux lib32gcc1 libtbb2 lib32gcc1 lib32stdc++6 libtbb2:i386

rather than 


apt-get install libc6 tmux lib32gcc1 lib32gcc1 lib32stdc++6 libtbb2:i386

 

I also checked free memory with free -m command and it was over 900mb before I executed 'arma3server' with parameters.

 

I will create another instance in few days follow those steps again and try to launch the server and get back to this post with screenshots.

 

Thanks again for your time translating your guide to English and sharing.

Cheers from New Zealand

Hello Dayznz,

have you already created a new instance? What do you get when you type "ldd extDB2.so" into the console?

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.