How to setup exile server - jamieb452/exileserver GitHub Wiki
Welcome to the exileserver wiki! 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://exile.majormittens.co.uk/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.