• Announcements

    • Jervant

      Bohemia Store Steam Redeem   06/24/17

      We started experiencing problems with the Steam redeem from our Store on Friday June 23rd.   For anyone that got affected by this, please go to your store account, after you select the product you purchased, you should see your steam key with a link to a how to article to activate it manually through Steam.   We apologize for the inconvenience.
terox

Tutorial: Installation & Configuration of ArmA3 Dedicated Server

715 posts in this topic

Why all this long tutorial and the copying of those files? You only need to copy the server exe and the config to the main game path subfolders:

Example with 3 servers:

[arma3_path]/folder_1/arma3server_1.exe

[arma3_path]/folder_1/config.cfg

[arma3_path]/folder_2/arma3server_2.exe

[arma3_path]/folder_2/config.cfg

[arma3_path]/folder_3/arma3server_3.exe

[arma3_path]/folder_3/config.cfg

then you can launch all those three with:

cd [arma3_path]

@start folder_1\arma3server_1.exe -port=3314 -config=folder_1\config.cfg -cfg=basic.cfg -name=Server -profiles=folder_1\logs\ -noPause -noSound

@start folder_2\arma3server_2.exe -port=3324 -config=folder_2\config.cfg -cfg=basic.cfg -name=Server -profiles=folder_1\logs\ -noPause -noSound

@start folder_3\arma3server_3.exe -port=3334 -config=folder_3\config.cfg -cfg=basic.cfg -name=Server -profiles=folder_1\logs\ -noPause -noSound

Share this post


Link to post
Share on other sites
Why all this long tutorial and the copying of those files? You only need to copy the server exe and the config to the main game path subfolders:

Example with 3 servers:

[arma3_path]/folder_1/arma3server_1.exe

[arma3_path]/folder_1/config.cfg

[arma3_path]/folder_2/arma3server_2.exe

[arma3_path]/folder_2/config.cfg

[arma3_path]/folder_3/arma3server_3.exe

[arma3_path]/folder_3/config.cfg

then you can launch all those three with:

cd [arma3_path]

@start folder_1\arma3server_1.exe -port=3314 -config=folder_1\config.cfg -cfg=basic.cfg -name=Server -profiles=folder_1\logs\ -noPause -noSound

@start folder_2\arma3server_2.exe -port=3324 -config=folder_2\config.cfg -cfg=basic.cfg -name=Server -profiles=folder_1\logs\ -noPause -noSound

@start folder_3\arma3server_3.exe -port=3334 -config=folder_3\config.cfg -cfg=basic.cfg -name=Server -profiles=folder_1\logs\ -noPause -noSound

As and when I have time , i was going to try mlinking files and folders to the master such as the addons folders etc.

Having not actually tested this yet my concern was that for example, if server 1 was running, wouldnt it lock all the addons, like it does MpMissions, and therefore not allowing another server instance the useage of the master addons folder.

If this is working as you have described and doesn't "LOCK" the master files except the .exe then fantastic. Your solution is much better in most circumstances

A question though,

1) How do you define different keys for each server, running differing mods etc

2) Do you hae to shut down all servers to edit the content of the MpMissions folder

INITIAL POST UPDATED TO THIS POINT

(Major rewrite taking into consideration the release of the arma3server.exe and the ability to run multiple instances of the same server

Edited by Terox

Share this post


Link to post
Share on other sites
1) How do you define different keys for each server, running differing mods etc

The keys are stored in the @mod folder given in the command line, so there shouldn't be any problem (at least I had no problem.. i'm using this for A2 as well);

2) Do you hae to shut down all servers to edit the content of the MpMissions folder

Only if you want to edit a mission that was there already when you started one of the shared folders. But there's a tip to circumvent it, if you're forced to do so and you cannot shut down all the server, you can copy the mission with another name, edit it, and launch the server with it (you only need to change the name in the config after all) ... then you can remove the old one when it's convenient to do so.

Share this post


Link to post
Share on other sites
The keys are stored in the @mod folder given in the command line, so there shouldn't be any problem (at least I had no problem.. i'm using this for A2 as well);

I wasn't aware you could run .bikeys from a mod folder

path being @Mod\keys ?

Share this post


Link to post
Share on other sites
I wasn't aware you could run .bikeys from a mod folder

path being @Mod\keys ?

I believed you were talking about the client signatures (that are stored in the addons folder..), the server sig files are all stored in the /Keys/ top folder, and none of them (so far) had the same name (they are named versus the mod) so I didn't found any problem... so far.

Share this post


Link to post
Share on other sites
Jman;2402471']Here's an update to my old ArmA2 dedicated server tutorial which now covers ArmA3 using SteamCMD' date=' no Steam client install required and running multiple instances on the same box.

[url']http://www.kellys-heroes.eu/files/tutorials/dedicated/arma3dedicated.php[/url]

Thank's Kelly's. Have added a link to your tutorial in the first post

I believed you were talking about the client signatures (that are stored in the addons folder..), the server sig files are all stored in the /Keys/ top folder, and none of them (so far) had the same name (they are named versus the mod) so I didn't found any problem... so far.

Your system is a good choice in a lot of circumstances, but it has limitations, pro's and cons as do all methods

So for anyone reading this thread, I will go through the different Multi server options available to us

Multiple servers on the same machine

Each method requires the following / server instance

  • Port forwarding
  • Config_***.cfg
  • -profile=
  • -port=

METHOD 1

Setup

  • Each virtual server is a mirror copy of the folder of the originally installed server

Pro's

  • Very Robust

  • Runs it's own "Keys" folder

  • Runs it's own "MPMissions" folder

  • Allows you to run Development and Stable versions for the Alpha

Cons

  • Uses more disk space than the alternative methods

  • Requires more effort to update (be it done manually or having to write .cmd files to automate the process)

  • More likely to make mistakes especially when copying files manually

METHOD 2

Setup

  • This uses One server instance

  • The server install has Sub folders where the "virtual" arma3server.exe's are run

  • Each arma3server.exe is renamed to make it unique, eg. arma3server_1.exe; arma3server_2.exe

Pro's

  • Requires much less disk space than Method 1

  • Requires less effort to update (one click and the one install of ArmA3 is updated for every virtual server)

Cons

  • Uses a shared "Keys" folder

  • Uses a shared "MPMissions" folder

  • Does not allow for a combination of Stable & Development branch servers at the same time

  • MpMissions folder needs additional administration, tagging missions with correct @MOD tag etc

METHOD 3

Setup

  • This is a hybrid of method 1

  • All required files and folders, (apart from perhaps MpMissions, keys cfg's) are
    to the original master install

Pro's

  • Requires much less disk space than Method 1

  • Requires less effort to update (one click and the one install of ArmA3 is updated for every virtual server)

  • Very Robust

  • Can Run it's own "Keys" folder if desired

  • Can Runs it's own "MPMissions" folder if desired

Cons

  • Does not allow for a combination of Stable & Development branch servers at the same time

  • May require some additional .cmd files etc to tweak it to your requirements

This is probably the best option in most scenarios



FAQ

1) Why would you not want to share the "Keys" folder ?

If you have 2 virtual servers sharing the same keys folder and running the following scenario:

  • Server 1 is running -mod=@MOD_A and has MOD_A.bikey in the keys folder
  • Server 2 was running -mod=@MOD_B and has MOD_B.bikey

Then a client could run MOD_A on server 2 or vice versa.

This is not very desirable under any circumstances

2) Why would you not want to share the "MpMissions" folder ?

If you have 2 virtual servers sharing the same MpMissions folder and running the following scenario:

  • Server 1 is running -mod=@MOD_A
  • Server 2 was running -mod=@MOD_B

Then a client could attempt to launch @MOD_A missions on server 2 or vice versa because both @MOD missions reside in the same folder

This is problematic and ideally should be avoided where possible

MpMissions folder needs additional administration, tagging missions with correct @MOD tag etc



One additional issue to think about

If you want your Server icon to appear "Green" in the client's server browser, then you do not want to be running wioth a -mod line as this will create a yellow icon with a "?" next to your server for any client that is not running the same -mod line

this is not the ideal situation if youn want to run a public, open server for recruitment etc.

What does this mean to your Multi Server Setup?

Well if you want to run serverside only addon, eg @CBA, Zeu_A3briefing, Zeu_Serverskill then the only way to create your "Green Icon" in the server browser is to put these addons directly into your ArmA3\Addons folder.

This is not the most desireable setup, even though it is a paractical solution and will likely cause issues when updating your ArmA3 install regardless of the method used.

This can be worked around using .cmd and robocopy after the A3 Update and therefore requires additional administration time to set up which is the one thing you want to cut down on

Edited by Terox

Share this post


Link to post
Share on other sites

How do you get your server to show up with the correct type (Coop) or loaded mission in the server browser? I can get mine to show up with the description I've given it, but if you filter to Co-Op in the server browser it then drops out even though it's a co-op mission (Whole Lotta Stratis .63 co-op).

Thanks

Share this post


Link to post
Share on other sites
How do you get your server to show up with the correct type (Coop) or loaded mission in the server browser? I can get mine to show up with the description I've given it, but if you filter to Co-Op in the server browser it then drops out even though it's a co-op mission (Whole Lotta Stratis .63 co-op).

Thanks

This is down to mission design and adding some code to the Description.EXT

class Header
{
gameType = COOP; //game type
minPlayers = 1; //min # of players the mission supports
maxPlayers = 10; //max # of players the mission supports
playerCountMultipleOf = 1; //OFP:Elite option.
};

Also make sure your ports are forwarded correctly and you are running the config you defined

Further Reading: http://community.bistudio.com/wiki/Description.ext

Edited by Terox

Share this post


Link to post
Share on other sites

TY Terox for a mind blowing comprehensive, notwithstanding, dynamically updated guide.

Without which, idiots, like me, would be asking ALOT more stoopid questions.

This guide has made A3 Alpha completely playable and viable for a Home Server / Client on the same machine for myself and 5 friends.

Share this post


Link to post
Share on other sites

Just a headsup that your steam account only needs to be associated with ArmA3 for the install, not updates. I used my personal account to install the server, and have been using our SERVER account for updates ever since, which is in no way associated with ArmA3.

Also if anybody knows how to run the steamcmd everytime BEFORE the server starts, that would be awesome. I have automated the steamcmd with a script, but unsure how to get it to run each time the server starts, wihtout interfering with the startup of the server.

Share this post


Link to post
Share on other sites
Just a headsup that your steam account only needs to be associated with ArmA3 for the install, not updates. I used my personal account to install the server, and have been using our SERVER account for updates ever since, which is in no way associated with ArmA3.

Also if anybody knows how to run the steamcmd everytime BEFORE the server starts, that would be awesome. I have automated the steamcmd with a script, but unsure how to get it to run each time the server starts, wihtout interfering with the startup of the server.

How are you starting your server ?

best way is to probably call the arma3server.exe with the required parameters at the end of the updater script and then just run that

Share this post


Link to post
Share on other sites

For a Win2003 server, I simply copied my c:\Program Files (x86)\Steam\*.* to my win2003 c:\Program Files\Steam\*.* (including the updated 0.58 Alpha). Then created the desktop icon on Win2003 using the target "c:\Program Files\Steam\Steamapps\common\Arma 3\arma3server.exe" -config=server.cfg -port=2302 and start in path to the Arma 3 folder in steam, everything loaded and runs just fine.

No need to use Steamcmd or run Steam at all.

Alternately, you can install Steam (only) as you normally would and copy your Arma3 folder from your gaming pc to the Win2003 as mention above.

I also copy my missions.pbo's from my mission editor saves into the same Arma3 MPMissions folder on the Win2003 server. (c:\Program Files\Steam\Steamapps\common\Arma 3\MPMissions)

Edited by tomturner

Share this post


Link to post
Share on other sites
For a Win2003 server, I simply copied my c:\Program Files (x86)\Steam\*.* to my win2003 c:\Program Files\Steam\*.* (including the updated 0.58 Alpha). Then created the desktop icon on Win2003 using the target "c:\Program Files\Steam\Steamapps\common\Arma 3\arma3server.exe" -config=server.cfg -port=2302 and start in path to the Arma 3 folder in steam, everything loaded and runs just fine.

No need to use Steamcmd or run Steam at all.

Alternately, you can install Steam (only) as you normally would and copy your Arma3 folder from your gaming pc to the Win2003 as mention above.

I also copy my missions.pbo's from my mission editor saves into the same Arma3 MPMissions folder on the Win2003 server. (c:\Program Files\Steam\Steamapps\common\Arma 3\MPMissions)

Thx Tom, thats the first post that states they can run A3 on Win2003

Share this post


Link to post
Share on other sites
Also if anybody knows how to run the steamcmd everytime BEFORE the server starts, that would be awesome. I have automated the steamcmd with a script, but unsure how to get it to run each time the server starts, wihtout interfering with the startup of the server.

There is a comprehensive list of Steam command line options that may help you here.

https://developer.valvesoftware.com/wiki/Command_Line_Options

Of particular note are the silent, and appstart switches. I believe it is possible to do just about everything including updates without ever entering the client GUI which is probably the most desirable on a server. You may need to introduce Steam to the dedicated server as a non steam app first though.

Share this post


Link to post
Share on other sites
How are you starting your server ?

best way is to probably call the arma3server.exe with the required parameters at the end of the updater script and then just run that

I'm running it as a service using UGCC. http://www.brainless.us/products.aspx

So I have setup the Update Page so that we can manually update the server, but then figured it would be so much nicer if we could call the update script first, each time it starts.

Bit of a first world problem I know, but never hurts to ask right?

Share this post


Link to post
Share on other sites
I'm running it as a service using UGCC. http://www.brainless.us/products.aspx

So I have setup the Update Page so that we can manually update the server, but then figured it would be so much nicer if we could call the update script first, each time it starts.

Bit of a first world problem I know, but never hurts to ask right?

This I believe would require you to be in session 0, because you need to run a cmd console window for the steam updater.

I use Firedeamon and have been trying to create a service to remotely launch the .cmd file which runs the A3 updater and to date have failed to do so.

This may be of interest to you. I don't fully undertand it

http://blogs.technet.com/b/askds/archive/2008/10/22/getting-a-cmd-prompt-as-system-in-windows-vista-and-windows-server-2008.aspx

Share this post


Link to post
Share on other sites
Someone here maybe has an Idea to fix this?!

http://forums.bistudio.com/showthread.php?155933-You-were-kicked-of-the-Game

Also my Day would be fixed too. :-(

Not enough info

Can you explain exactly what set up you hve for your server/client scenario

Eg dedicated server on remote box

using the arma3server.exe or arma3.exe with -server switch

stable or dev?

and much more

Share this post


Link to post
Share on other sites

Yes sure. Here the Infos.

I use the arma3server.exe. In the Mainfolder i have an Folder for the server.cfg and the basic.cfg. I also have an dedicated Machine histed by Hetzner, where i have an second Steam Account with ArmA2/OA/3.

server.cfg

// GLOBAL SETTINGS
hostname         = "[TWT]Testing|Regular|hostet by thewinningteam.de";        // The name of the server that shall be displayed in the public server list
password         = "";                // Password for joining, eg connecting to the server
passwordAdmin         = "xxx";                // Password to become server admin. 


// WELCOME MESSAGE ("message of the day")
// It can be several lines, separated by comma
// Empty messages "" will not be displayed at all but are only for increasing the interval

motd[] = {

   "this contains my mesages";
};
motdInterval = 30;                         // Time interval (in seconds) between each message

// JOINING RULES

maxPlayers          = 50;                // Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.

// VOTING
voteMissionPlayers     = 99;             // Tells the server how many people must connect so that it displays the mission selection screen.
voteThreshold         = 1.5;          // 33% or more players need to vote for something, for example an admin or a new map, to become effective

// INGAME SETTINGS
disableVoN         = 1;                   // If set to 1, Voice over Net will not be available
vonCodecQuality     = 10;             // Quality from 1 to 10
persistent         = 1;                    // If 1, missions still run on even after the last player disconnected.

// MISSIONS CYCLE (see below)
class Missions 
{
class Wasteland
{
	template="mission1.Stratis";
	difficulty="Regular";
};
};

basic.cfg

language="English";
adapter=-1;
3D_Performance=100000;
Resolution_Bpp=32;
Windowed=0;
MinBandwidth=157200000;
MaxBandwidth=813741824;
MaxMsgSend=92;
MaxSizeGuranteed=128;
MaxSizeNonguaranteed=64;
MaxCustomFileSize=0;
serverLongitude=-115;
serverLatitude=36;
serverLongitudeAuto=-115;
serverLatitudeAuto=36;

To start the Server i have the Serverstart.bat File:

start /high arma3server.exe -ip=78.46.99.70 -port=2342 "-config=xxx\server.cfg" "-profiles=xxx" "-name=Server1" "-cfg=xxx\basic.cfg" -noPause -noSound -cpuCount=2 -exThreads=1 -maxMem=2048
exit

I dont use the Dev-Patch on the Root Server and my Home PC. Is there anything else you need, please let me know. For this, thank you for your Post.

Greetings

Kero81 | Markus

Edited by kero81

Share this post


Link to post
Share on other sites

@Kero81

Your server.cfg doesnt have any steam ports defined (See the first post in this tutorial for more info)

Als0 check out the Port forwarding section

rethink your command line params.

Do you really need

-noPause

-noSound (Dedicated server exe's dont run sound or graphics)

cpuCount=2 -

exThreads=1

-maxMem=2048

-name is kind of redundant when defining "hostname" in your server.cfg

you may want to add -world=empty (For now this is kind of redundant as the only island that can possibly load is .stratis, however later that is going to change)

Share this post


Link to post
Share on other sites

Problem solved. Restarting the Root Server fixed it! =) Im happy now. =)

Edit:

No Fu.k!! Same Problem again!!!!!!!!!!!!!!!!! But i guess i know whats wrong. I host three ArmA2 Wasteland, 1 ArmA2 Dayz and this ArmA3 Server. I guess the Problems are the Ports. Maybe its a Problem with the 2302 Port?!

@Terox

Later i will check the first Post and add the Ports in server.cfg. Thanks for your Post mate. =)

Share this post


Link to post
Share on other sites

Finally, its working now. The Problem was my "The Haunted: Hells Reach" Server. This Server uses Port that ArmA3 needs to use. I had to switch Ports for the "THHR-Server" and now its working! =)

@Terox

Thank you very much for your Hind with the Ports! =) +1 for Terox.

Share this post


Link to post
Share on other sites
This I believe would require you to be in session 0, because you need to run a cmd console window for the steam updater.

I use Firedeamon and have been trying to create a service to remotely launch the .cmd file which runs the A3 updater and to date have failed to do so.

This may be of interest to you. I don't fully undertand it

http://blogs.technet.com/b/askds/archive/2008/10/22/getting-a-cmd-prompt-as-system-in-windows-vista-and-windows-server-2008.aspx

Well actually UGCC runs everything as SYSTEM, including the steamcmd (from the update page). All I can't figure out is how to run steamcmd (and exit it) BEFORE the server starts, given the amount of time to update will always vary.

Share this post


Link to post
Share on other sites
Well actually UGCC runs everything as SYSTEM, including the steamcmd (from the update page). All I can't figure out is how to run steamcmd (and exit it) BEFORE the server starts, given the amount of time to update will always vary.

Call the updater.cmd from UGGC and then attach the "start XYZservice code to the end of that script

This is how you get a service to run a console window (.cmd file)

Big thanks to killswitch for providing me with this information

Following are how you would set this up for firedeamon, am sure UGCC is similar

EXECUTABLE: C:\Windows\System32\cmd.exe

working directory: C:\PathToCmdFile

Parameters /C C:\PathToCmdFile\UpdateAndStartArmA3.cmd

and then the .cmd file itself

UpdateAndStartArmA3.cmd

Take note, all the "pause" commands have been removed from this copy of the updater.cmd that I listed in the initial post

The new lines have been added in blue, to highlight them

You would define the blue section of this line of code as the service name you are using to start your ArmA3 server in UGCC

SET A3Service=MyArmA3Service

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

:: DEFINE the following variables where applicable to your install

SET STEAMLOGIN=mylogin mypassword

SET A3BRANCH=107410 -beta development

:: For stable use 107410 -beta

:: For Dev use 107410 -beta development

:: Note, the missing qotation marks, these need to be wrapped around the entire "+app_data......"

SET A3Path=D:\Games\A3Master

SET STEAMPATH=D:\apps\Steam

SET A3Service=MyArmA3Service

:: Make sure the service is stopped, otherwise you wont be able to update the files

Net stop %A3Service%

:: _________________________________________________________

echo.

echo You are about to update ArmA3

echo Dir: %A3Path%

echo Branch: %A3BRANCH%

echo.

%STEAMPATH%\steamcmd.exe +login %STEAMLOGIN% +force_install_dir %A3Path% +"app_update %A3BRANCH%" validate +quit

echo .

echo Your ArmA3 is now up to date

:: Now that the update is complete, lets start the server

Net start %A3Service%

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now