Installing and Configuring Wolfenstein's Enemy Territory Server on the GNU/Linux Operating System

Category: Software and Systems Engineering
Author: Sean O'Donnell
Thu, Feb. 20th, 2003 @ 2:20:22 (MST)

This will help guide Game Server Admins on how to get their ET Server running using the GNU/Linux Operating System. (Tested on Slackware Linux 9.0)

Step 1: Download The Latest Wolfenstein's Enemy Territory Server for Linux. (v2.56-2)

Click Here to Download Wolfenstein's ET Server v2.56-2 for Linux or execute the command below from your terminal:

#
# DOWNLOAD COMMANDS VIA BASH/SH
#
wget http://3dgamers.gameservers.net/pub/3dgamers/games/wolfensteinet/et-linux-2.56-2.x86.run

filename: et-linux-2.56-2.x86.run
size: 264MB

*** The URL above is only used as an example, you may need to find the file from a differnt download mirror/site.*

Step 2: Switch to the super-user 'root' account, and then execute the et-linux-2.56-2.x86.run file to install the Enemy Territory Server.

#
# SWITCH TO THE SUPER-USER 'root' ACCOUNT
#
su

#
# ENSURE EXECUTION PERMISSION
#
chmod +x et-linux-2.56-2.x86.run

#
# EXECUTE THE INSTALLATION FILE
#
./et-linux-2.56-2.x86.run

You will then be guided through the installation procedures, which are very self-explanitory.

When the installation process prompts for the path to install it too, we will just leave it to the default path (/usr/local/games/enemy-territory) for simple/example purposes.

Once the installation is complete, we move on to step 3...

*** Make sure you are logged in as root when executing the installer, or you probably won't make it this far.

I had no hardware conflictions during my installation process, nor was I missing any gcc librarys.

Hardware used for this tutorial:

AMD ATHLON XP 2700+ (Thoroughbred) CPU, ZALMAN CNPS7000A-CU Silent Copper CPU Heatsink/Fan, ASUS A7N8X-E DELUXE Motherboard w/ 400MHZ FSB, KINGSTON 512MBx2 DDR400 RAM, SEAGATE 320GB (160GBx2) 7200RPM Hard Drive Space, 2 NIC Cards (1-wan/1-lan) and an ATI RADEON 9600SE 128MB AGP Video Card W/ DUAL VGA. (Yea I said it... a Radeon card on an nForce2 board/chipset, so? =)

Step 3: Create a User and Group for the ET Server.

Seeing as we don't want any sort of root-exploit to occur, it is safer to run the ET Server Process under it's own user/group, rather than running it under the 'root' user/group.

#
# CREATE GROUP FOR THE ET SERVER'S USER ACCOUNT
#
groupadd et

#
# CREATE USER ACCOUNT FOR THE
# ET SERVER APPLICATION PROCESS
#
useradd -g et et

#
# SET THE PASSWD FOR THE 'et' USER ACCOUNT
#
passwd et

#
# CREATE A HOME DIRECTORY FOR THE 'et' USER ACCOUNT (no need to use a skeleton directory)
#
mkdir /home/et

#
# CHANGE OWNERSHIP OF THE 'et' USER ACCOUNT HOME DIRECTORY
#
chown et:et /home/et

#
# CHANGE OWNERSHIP OF THE ET SERVER APPLICATION FILES  
# SO THAT ONLY THE 'et' USER CAN EXECUTE THE ET SERVER
#
chown -R et:et /usr/local/games/enemy-territory

Once you have successfully executed the commands above, you can now move on to step 4 and configure the server.

Step 4: Switch to the 'et' User Account, and begin modifying the ET Server Configuration Script. (/usr/local/games/enemy-territory/etmain/server.cfg)

#
# SWITCH TO 'et' USER ACCOUNT
#
su et

#
# EDIT THE SERVER CONFIGURATION SCRIPT
#
vim /usr/local/games/enemy-territory/etmain/server.cfg

Edit your IP Address and Other Settings, refer to the sample configuration below...

// filename: server.cfg
//
// DEDICATED ENEMY TERRITORY SERVER 
// CONFIGURATION EXAMPLE FOR THE LINUX OS
//
set dedicated "2"                               // 1: dedicated server for lan 2: dedicated server for internet
set net_ip "0.0.0.0"                // set to override the default IP ET uses
set net_port "27960"                            // set to override the default udp port ET uses (27960)

// PASSWORDS & CLIENTS

set sv_maxclients "15"                          // number of players including private slots
set g_password ""                               // set to password protect the server
set sv_privateclients "4"                       // if set > 0, then this number of client slots will be reserved for connections
set sv_privatepassword ""                       // that have "password" set to the value of "sv_privatePassword"
set rconpassword "[edit_here]"                  // remote console access password
set refereePassword ""                          // referee status password

// DL, RATE

set sv_maxRate "30000"                          // 10000 standard but poor for ET
set sv_dl_maxRate "42000"                       // increase/decerease if you have plenty/little spare bandwidth
set sv_allowDownload "0"                                // global toggle for both legacy download and web download
set sv_wwwDownload "0"                          // toggle to enable web download
set sv_wwwBaseURL ""                            // base URL for redirection
set sv_wwwDlDisconnected "0"                    // tell clients to perform their downloads while disconnected from the server
set sv_wwwFallbackURL ""                        // URL to send to if an http/ftp fails or is refused client side

// MOTD ETC

set sv_hostname "MyLinux.ET.Server"             // name of server here
set server_motd0 "pwnd!"                // message in right corner of join screen here
set server_motd1 ""
set server_motd2 ""
set server_motd3 ""
set server_motd4 ""
set server_motd5 ""

// MISC SETTINGS

set g_heavyWeaponRestriction "100"
set g_antilag "1"
set g_altStopwatchMode "0"
set g_autofireteams "1"
set g_complaintlimit "6"
set g_ipcomplaintlimit "3"
set g_fastres "0"
set g_friendlyFire "1"
//set g_gametype "4"                            // Game type should be set from map rotation script
set g_minGameClients "8"
set g_maxlives "0"
set g_alliedmaxlives "0"
set g_axismaxlives "0"
set g_teamforcebalance "1"
set g_noTeamSwitching "0"
set g_voiceChatsAllowed "4"
set g_doWarmup "0"
set g_warmup "0"
set g_spectatorInactivity "0"
set sv_floodProtect "1"
set sv_allowDownload "1"
set sv_pure "1"
set sv_minping "0"
set sv_maxping "0"
set match_latejoin "1"
set match_minplayers "2"
set match_mutespecs "0"
set match_readypercent "100"
set match_timeoutcount "0"
set match_warmupDamage "1"
set team_maxplayers "0"
set team_nocontrols "1"
set pmove_fixed "0"
set pmove_msec "8"

// LMS ONLY SETTINGS

set g_lms_teamForceBalance "1"
set g_lms_roundlimit "3"
set g_lms_matchlimit "2"
set g_lms_currentMatch "0"
set g_lms_lockTeams "0"
set g_lms_followTeamOnly "1"

// VOTING

set g_allowVote "1"
set vote_limit "5"
set vote_percent "50"
set vote_allow_comp "1"
set vote_allow_gametype "0"
set vote_allow_kick "0"
set vote_allow_map "1"
set vote_allow_matchreset "0"
set vote_allow_mutespecs "1"
set vote_allow_nextmap "1"
set vote_allow_pub "1"
set vote_allow_referee "0"
set vote_allow_shuffleteams "1"
set vote_allow_swapteams "1"
set vote_allow_friendlyfire "1"
set vote_allow_timelimit "0"
set vote_allow_warmupdamage "0"
set vote_allow_antilag "1"
set vote_allow_balancedteams "1"
set vote_allow_muting "1"

// PUNKBUSTER

// sv_punkbuster is a readonly variable. Use +set sv_punkbuster on command line or use the command pb_sv_enable in the console
//pb_sv_enable

// LOGGING

set g_log "etserver.log"                        // Game logging
set g_logsync 0
set logfile 0                                   // Console logging ( 1: enable 2: enable and sync )

// MAP ROTATION

exec campaigncycle.cfg                          // Campaign mode
//exec objectivecycle.cfg                       // Objective mode
//exec lmscycle.cfg                             // Last Man Standing mode

// WATCHDOG

// in case the game dies with an ERR_DROP
// or any situation leading to server running with no map
//set com_watchdog 10                           // defaults 60
set com_watchdog_cmd "exec campaigncycle.cfg"   // defaults to quit

You can modify this configuration as you need. Once the configuration script is completed, we're ready to test it out!

Step 5: Run your ET Server!

/usr/local/games/enemy-territory/etded +exec server.cfg

Your server should now be up & running! Cheers! =)

Step 6 (Optional): Modifying your iptables firewall rules to allow users to connect to your ET Server.

If you are using the 'iptables' Open-Source Firewall/NAT/Router Software Application from The NetFilter Organization, then you may need to add the following rule to your iptables INPUT chain in order to allow users to connect to your ET Server remotely from the internet.

/usr/sbin/iptables -A INPUT -p udp --destination-port 27960 -i eth0 -j ACCEPT

The iptables rule above should allow users to connect to your ET Server remotely from the internet, if you are using iptables.

Copyleft (<) 1998-2019 www.seanodonnell.com