Jump to content
Sign in to follow this  
RazorFlint

Arma 2 OA Dedicated Server Setup Help (Linux)

Recommended Posts

Hi,

I couldn't find a tutorial/helpful page which really helped with creating a dedicated server on a Linux server. I started by zipping my ArmA 2 OA contents from Windows into a ZIP file then transferring them over through SFTP to my server, then unzipping and adding to the directory /arma/server.

I then downloaded the dedicated server files for Linux from the BI wiki here. Created a server.cfg file with the correct details and information, then ran the 'tolower' script to remove all capitals from files. Everything runs smoothly but it doesn't show up on the ArmA 2 OA server browser, I feel like I'm missing something blatantly obvious.

Below is my directory structure and errors which may (hopefully) help.

Feedback would be greatly appreciated, thanks.

Share this post


Link to post
Share on other sites

Not sure I understand what you mean by "Server Start Error". The "error" message is not an error, it's an output from the start script. Just press enter and you will return to command prompt. Server is running in "background", check with: ./run status

If status show OK, then start looking into your A2oa server configuration and your firewall.

Share this post


Link to post
Share on other sites

Well it seems I sort of fixed it but now it spams this error in the log file:

WATCHDOG (1645): [sat Nov 24 14:15:58 GMT 2012] Starting server (port 2302)...
WATCHDOG (1645): [sat Nov 24 14:15:58 GMT 2012] Server died, waiting to restart...
WATCHDOG (1645): [sat Nov 24 14:16:03 GMT 2012] Starting server (port 2302)...
WATCHDOG (1645): [sat Nov 24 14:16:03 GMT 2012] Server died, waiting to restart...
WATCHDOG (1645): [sat Nov 24 14:16:08 GMT 2012] Starting server (port 2302)...
WATCHDOG (1645): [sat Nov 24 14:16:08 GMT 2012] Server died, waiting to restart...

Share this post


Link to post
Share on other sites

RazorFlint, the "Server check" screenshot looks a bit off... what actual values do you have for the ARMA_DIR value in the configuration section of the server start script (arma2oaserver originally, yours is renamed to "run")?

Based on the screenshot showing the directory you're running the "run" script from, it should read

ARMA_DIR=/arma/server

Oh, BTW - don't run the game server using the root account. Create a normal user to do that instead. Why? It's good practice because there could be bugs in the ArmA server script or binaries that could cause damage to the file system if running as root. A process running as a normal user can't do that.

Edited by Killswitch

Share this post


Link to post
Share on other sites
RazorFlint, the "Server check" screenshot looks a bit off... what actual values do you have for the ARMA_DIR value in the configuration section of the server start script (arma2oaserver originally, yours is renamed to "run")?

Based on the screenshot showing the directory you're running the "run" script from, it should read

ARMA_DIR=/arma/server

Oh, BTW - don't run the game server using the root account. Create a normal user to do that instead. Why? It's good practice because there could be bugs in the ArmA server script or binaries that could cause damage to the file system if running as root. A process running as a normal user can't do that.

Well I actually redid everything, this is what my start script looks like, called 'arma':

ARMA_DIR=/arma-def
CONFIG=server.cfg
CFG=aoconfig.cfg
PORT=2302
PIDFILE=${ARMA_DIR}/${PORT}.pid
RUNFILE=${ARMA_DIR}/${PORT}.run
LOGFILE=${ARMA_DIR}/log.${PORT}.txt
SERVER=${ARMA_DIR}/server
OTHERPARAMS=-cpucount=2

And now my directory structure looks like this: (All files are in the directory /arma-def/ not in /home/arma-def/)

http://piclair.com/data/h8wed.jpg (141 kB)

And also, this is the output from my log:

WATCHDOG (4361): [sat Nov 24 15:23:51 GMT 2012] Starting server (port 2302)...
WATCHDOG (4361): [sat Nov 24 15:23:51 GMT 2012] Server died, waiting to restart...

And yes, I have ran ./tolower to convert existing files.

Thanks.

Share this post


Link to post
Share on other sites

Check to see if there are "old" ArmA processes running from a previous run attempt. Sometimes, the start/stop script fails in stopping the arma server. Then, as you try to start a new one, it fails.

After doing "./arma stop", wait a sec or so and then use "ps aux" to get a list of running processes. If there still is an older arma process running along with the watchdog bash process, kill them both.

They would look something similar to this:

# ps aux
...
...
12345 pts/0   S     /bin/bash ./arma watchdog
12347 pts/0   Rl    /arma-def/server -server -config=/arma-def/server.cfg <other launch parameters follow here>...

Use the kill command to get rid of any and all old, lingering ArmA-related processes. In the example above, the two process ID:s would be stopped by

# kill 12345 12347

Then, once there are no ArmA-related things running, try launching your ArmA server again.

Share this post


Link to post
Share on other sites
Check to see if there are "old" ArmA processes running from a previous run attempt.

Checked and didn't show up, to double check this is the processes running:

root@ubuntu-server-a1:/arma-def# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.1   3536  1900 ?        Ss   17:58   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    17:58   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    17:58   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S    17:58   0:00 [kworker/0:0]
root         5  0.1  0.0      0     0 ?        S    17:58   0:00 [kworker/u:0]
root         6  0.0  0.0      0     0 ?        S    17:58   0:00 [migration/0]
root         7  0.0  0.0      0     0 ?        S    17:58   0:00 [watchdog/0]
root         8  0.0  0.0      0     0 ?        S<   17:58   0:00 [cpuset]
root         9  0.0  0.0      0     0 ?        S<   17:58   0:00 [khelper]
root        10  0.0  0.0      0     0 ?        S    17:58   0:00 [kdevtmpfs]
root        11  0.0  0.0      0     0 ?        S<   17:58   0:00 [netns]
root        12  0.0  0.0      0     0 ?        S    17:58   0:00 [sync_supers]
root        13  0.0  0.0      0     0 ?        S    17:58   0:00 [bdi-default]
root        14  0.0  0.0      0     0 ?        S<   17:58   0:00 [kintegrityd]
root        15  0.0  0.0      0     0 ?        S<   17:58   0:00 [kblockd]
root        16  0.0  0.0      0     0 ?        S<   17:58   0:00 [ata_sff]
root        17  0.0  0.0      0     0 ?        S    17:58   0:00 [khubd]
root        18  0.0  0.0      0     0 ?        S<   17:58   0:00 [md]
root        20  0.1  0.0      0     0 ?        R    17:58   0:00 [kworker/0:1]
root        21  0.0  0.0      0     0 ?        S    17:58   0:00 [khungtaskd]
root        22  0.0  0.0      0     0 ?        S    17:58   0:00 [kswapd0]
root        23  0.0  0.0      0     0 ?        SN   17:58   0:00 [ksmd]
root        24  0.0  0.0      0     0 ?        SN   17:58   0:00 [khugepaged]
root        25  0.0  0.0      0     0 ?        S    17:58   0:00 [fsnotify_mark]
root        26  0.0  0.0      0     0 ?        S    17:58   0:00 [ecryptfs-kthrea]
root        27  0.0  0.0      0     0 ?        S<   17:58   0:00 [crypto]
root        35  0.0  0.0      0     0 ?        S<   17:58   0:00 [kthrotld]
root        37  0.0  0.0      0     0 ?        S    17:58   0:00 [kworker/0:2]
root        56  0.0  0.0      0     0 ?        S<   17:58   0:00 [devfreq_wq]
root       200  0.0  0.0      0     0 ?        S<   17:58   0:00 [firewire]
root       206  0.0  0.0      0     0 ?        S    17:58   0:00 [scsi_eh_0]
root       207  0.0  0.0      0     0 ?        S    17:58   0:00 [scsi_eh_1]
root       211  0.0  0.0      0     0 ?        S    17:58   0:00 [kworker/u:3]
root       212  0.0  0.0      0     0 ?        S    17:58   0:00 [scsi_eh_2]
root       213  0.0  0.0      0     0 ?        S    17:58   0:00 [scsi_eh_3]
root       219  0.0  0.0      0     0 ?        S<   17:58   0:00 [ttm_swap]
root       229  0.0  0.0      0     0 ?        S<   17:58   0:00 [kdmflush]
root       237  0.0  0.0      0     0 ?        S<   17:58   0:00 [kdmflush]
root       287  0.0  0.0      0     0 ?        S    17:58   0:00 [jbd2/dm-0-8]
root       288  0.0  0.0      0     0 ?        S<   17:58   0:00 [ext4-dio-unwrit]
root       307  0.0  0.0      0     0 ?        S    17:58   0:00 [flush-252:0]
root       309  0.0  0.1   5264  1332 ?        S    17:58   0:00 mountall --daemon
root       370  0.0  0.0   2832   608 ?        S    17:58   0:00 upstart-udev-bridge --daemon
root       374  0.0  0.1   2972  1148 ?        Ss   17:58   0:00 /sbin/udevd --daemon
root       470  0.0  0.0   2968   640 ?        S    17:58   0:00 /sbin/udevd --daemon
root       471  0.0  0.0   2968   648 ?        S    17:58   0:00 /sbin/udevd --daemon
root       508  0.0  0.0      0     0 ?        S<   17:58   0:00 [cfg80211]
root       511  0.0  0.0      0     0 ?        S<   17:58   0:00 [kpsmoused]
root       617  0.0  0.0   2844   344 ?        S    17:58   0:00 upstart-socket-bridge --daemon
root       715  0.0  0.0   2928   404 ?        Ss   17:58   0:00 dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leas
root       749  0.0  0.0      0     0 ?        S<   17:58   0:00 [kdmflush]
root       758  0.0  0.0      0     0 ?        S<   17:58   0:00 [kcryptd_io]
root       759  0.0  0.0      0     0 ?        S<   17:58   0:00 [kcryptd]
root       813  0.0  0.2   6680  2356 ?        Ss   17:58   0:00 /usr/sbin/sshd -D
102        814  0.0  0.0   3256   648 ?        Ss   17:58   0:00 dbus-daemon --system --fork --activation=upstart
syslog     826  0.0  0.1  30036  1432 ?        Sl   17:58   0:00 rsyslogd -c5
root       889  0.0  0.0   4632   840 tty4     Ss+  17:58   0:00 /sbin/getty -8 38400 tty4
root       895  0.0  0.0   4632   836 tty5     Ss+  17:58   0:00 /sbin/getty -8 38400 tty5
root       905  0.0  0.0   4632   836 tty2     Ss+  17:58   0:00 /sbin/getty -8 38400 tty2
root       907  0.0  0.0   4632   828 tty3     Ss+  17:58   0:00 /sbin/getty -8 38400 tty3
root       914  0.0  0.0   4632   836 tty6     Ss+  17:58   0:00 /sbin/getty -8 38400 tty6
root       933  0.0  0.0   2620   864 ?        Ss   17:58   0:00 cron
daemon     934  0.0  0.0   2468   348 ?        Ss   17:58   0:00 atd
mysql      954  0.1  3.2 317900 33516 ?        Ssl  17:58   0:00 /usr/sbin/mysqld
root       979  0.0  0.6  34280  6984 ?        Ss   17:58   0:00 /usr/sbin/apache2 -k start
www-data   992  0.0  0.3  34304  3800 ?        S    17:58   0:00 /usr/sbin/apache2 -k start
www-data   993  0.0  0.3  34304  3800 ?        S    17:58   0:00 /usr/sbin/apache2 -k start
www-data   994  0.0  0.3  34304  3800 ?        S    17:58   0:00 /usr/sbin/apache2 -k start
www-data   995  0.0  0.3  34304  3800 ?        S    17:58   0:00 /usr/sbin/apache2 -k start
www-data   996  0.0  0.3  34304  3800 ?        S    17:58   0:00 /usr/sbin/apache2 -k start
root      1031  0.0  0.0   4632   832 tty1     Ss+  17:58   0:00 /sbin/getty -8 38400 tty1
root      1139  0.0  0.0      0     0 ?        S    17:58   0:00 [flush-8:0]
root      1140  0.0  0.0      0     0 ?        S    17:58   0:00 [flush-252:2]
root      1142  0.0  0.3  11404  3364 ?        Ss   18:02   0:00 sshd: root@pts/0
root      1156  0.1  0.3   7204  3508 pts/0    Ss   18:02   0:00 -bash
root      1221  0.0  0.3  11404  3236 ?        Ss   18:02   0:00 sshd: root@notty
root      1235  0.0  0.0   2432   768 ?        Ss   18:02   0:00 /usr/lib/openssh/sftp-server
root      1553  0.0  0.1   4944  1104 pts/0    R+   18:06   0:00 ps aux

All I could see was this line which involved the terms 'watchdog' which relates to the error log:

root         7  0.0  0.0      0     0 ?        S    17:58   0:00 [watchdog/0]

It's starting to really bug me why this keeps happening. It still spams this in the error log as well:

WATCHDOG (1214): [sat Nov 24 18:02:20 GMT 2012] Starting server (port 2302)...
WATCHDOG (1214): [sat Nov 24 18:02:22 GMT 2012] Server died, waiting to restart...

:/

Share this post


Link to post
Share on other sites

Could anyone else help with this matter? Sorry for bumping :-( / Quick question to anyone really, do I have to merge both Arma 2 And Arma 2: OA together?

Edited by RazorFlint

Share this post


Link to post
Share on other sites

Can you list contents of your server.cfg? From the directory structure screenshot it also seems like your aoconfig.cfg has no content, is that intentionally?

Share this post


Link to post
Share on other sites

Here's what I've got,

server.cfg:

// GLOBAL SETTINGS
hostname = "Domination West - Hosted By Tzeale.com";			// The name of the server that shall be displayed in the public server list
password = "";						// Password for joining, eg connecting to the server
passwordAdmin = "password";					// Password to become server admin. When you're in Arma MP and connected to the server, type '#login xyz'
//reportingIP = "armedass.master.gamespy.com";		// For ArmA1 publicly list your server on GameSpy. Leave empty for private servers
//reportingIP = "arma2pc.master.gamespy.com";		// For ArmA2 publicly list your server on GameSpy. Leave empty for private servers
reportingIP = "arma2oapc.master.gamespy.com";		// For Arma2: Operation Arrowhead
logFile = "server_console.log";				// Tells ArmA-server where the logfile should go and what it should be called


// 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[] = {
"", "",  
"Two empty lines above for increasing interval",
"Welcome to our server",
"", "",  
"We are looking for fun - Join us Now !",
"http://www.example.com",
"One more empty line below for increasing interval",
""
};
motdInterval = 5;					// Time interval (in seconds) between each message


// JOINING RULES
checkfiles[] = {};					// Outdated.
maxPlayers = 40;					// Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
kickDuplicate = 1;					// Each ArmA version has its own ID. If kickDuplicate is set to 1, a player will be kicked when he joins a server where another player with the same ID is playing.
verifySignatures = 2;					// Verifies .pbos against .bisign files. Valid values 0 (disabled), 1 (prefer v2 sigs but accept v1 too) and 2 (only v2 sigs are allowed). 
equalModRequired = 0;					// Outdated. If set to 1, player has to use exactly the same -mod= startup parameter as the server.
//requiredBuild = 12345					// Require clients joining to have at least build 12345 of game, preventing obsolete clients to connect


// VOTING
voteMissionPlayers = 1;					// Tells the server how many people must connect so that it displays the mission selection screen.
voteThreshold = 0.33;					// 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 = 0;					// since 1.62.95417 supports range 1-20 //since 1.63.x will supports range 1-30 //8kHz is 0-10, 16kHz is 11-20, 32kHz is 21-30
persistent = 1;						// If 1, missions still run on even after the last player disconnected.
timeStampFormat = "short";				// Set the timestamp format used on each report line in server-side RPT file. Possible values are "none" (default),"short","full".
BattlEye = 0;                                           // Server to use BattlEye system


// SCRIPTING ISSUES
onUserConnected = "";					//
onUserDisconnected = "";				//
doubleIdDetected = "";					//
//regularCheck = "{}";                                  //  Server checks files from time to time by hashing them and comparing the hash to the hash values of the clients. Causes heavy I/O, uncomment to disable feature - READ WARNING ABOVE - makes cheating possible!


// SIGNATURE VERIFICATION
onUnsignedData = "kick (_this select 0)";		// unsigned data detected
onHackedData = "ban (_this select 0)";			// tampering of the signature detected
onDifferentData = "";					// data with a valid signature, but different version than the one present on server detected


// MISSIONS CYCLE (see below)
class Missions {};

aoconfig.cfg:

// These options are created by default
language="English";
adapter=-1;
3D_Performance=1.000000;
Resolution_W=800;
Resolution_H=600;
Resolution_Bpp=32;


// These options are important for performance tuning

MinBandwidth = 131072;			// Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded. Default: 131072
MaxBandwidth = 10000000000;		// Bandwidth the server is guaranteed to never have. This value helps the server to estimate bandwidth available.

MaxMsgSend = 128;			// Maximum number of messages that can be sent in one simulation cycle. Increasing this value can decrease lag on high upload bandwidth servers. Default: 128
MaxSizeGuaranteed = 512;		// Maximum size of guaranteed packet in bytes (without headers). Small messages are packed to larger frames. Guaranteed messages are used for non-repetitive events like shooting. Default: 512
MaxSizeNonguaranteed = 256;		// Maximum size of non-guaranteed packet in bytes (without headers). Non-guaranteed messages are used for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag. Default: 256

MinErrorToSend = 0.001;			// Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother. Default: 0.001
MinErrorToSendNear = 0.01;		// Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well. Default: 0.01

MaxCustomFileSize = 0;			// (bytes) Users with custom face or custom sound larger than this size are kicked when trying to connect.

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
Sign in to follow this  

×