ETL Server Setup Guide - Linux

Installation

This guide assumes you have an up and running as well as web accessible Ubuntu headless server.

Navigate to your /home/user folder and create a folder to hold the installation and configuration files:

mkdir ET

Now navigate into your newly created folder:

cd ET

Now we need to download the installation file from etlegacy.com. Have a look at the download page, you can right click on the 32bit installer for Linux and copy the url. Now we can use wget command to download and rename the file like so:

wget  https://www.etlegacy.com/download/file/128 -O etlegacy.sh

Once the download is complete, we need to make this file executable so that we can run the installation:

chmod +x etlegacy.sh

Now you can run the installer:

./etlegacy.sh

Now the installer will launch in the terminal. You will be asked to accept the terms and conditions.

Be careful, the installer will as you whether you want to install the files directly into your folder or make a sub folder. I find it neater to install directly into the folder, since we made it explicitly for this.

Once the installation is complete you should have a similar set up of files in your ET folder:

drwxr-xr-x 3 YourUsername YourUsername      4096 Mar 16  2005 bin
-rw-r--r-- 1 YourUsername YourUsername      3691 Mar 15  2005 CHANGES
-rw-r--r-- 1 YourUsername YourUsername     35842 Jan  6 12:12 COPYING.txt
drwxr-xr-x 3 YourUsername YourUsername      4096 Mar 16  2005 Docs
-rwxr-xr-x 1 YourUsername YourUsername   5538960 Jan  6 12:24 etl
-rwxr-xr-x 1 YourUsername YourUsername       149 Jan  6 12:12 etl_bot.sh
-rwxr-xr-x 1 YourUsername YourUsername   2018368 Jan  6 12:28 etlded
-rwxr-xr-x 1 YourUsername YourUsername       187 Jan  6 12:12 etlded_bot.sh
-rwxrwxr-x 1 YourUsername YourUsername  50016987 Jan 13 20:54 etlegacy-v.76-i386.sh
-rwxrwxr-x 1 YourUsername YourUsername 270965248 Jan 15 16:28 et-linux-2.60.x86.run
-rwxr-xr-x 1 YourUsername YourUsername       195 Jan  6 12:12 etl_renderer2.sh
drwxr-xr-x 3 YourUsername YourUsername      4096 Jan 13 20:31 etmain
-rw-r--r-- 1 YourUsername YourUsername        11 Jan 16 10:29 etserver.log
-rw-r--r-- 1 YourUsername YourUsername      1290 Mar 15  2005 ET.xpm
-rw-r--r-- 1 YourUsername YourUsername      2578 Jan  6 12:12 INSTALL.txt
drwxr-xr-x 5 YourUsername YourUsername      4096 Jan 13 20:31 legacy
-rw-r--r-- 1 YourUsername YourUsername   2054216 Jan  6 12:26 librenderer_opengl1_i386.so
-rw-r--r-- 1 YourUsername YourUsername   2538344 Jan 13 20:31 librenderer_opengl2_i386.so
-rwxr-xr-x 1 YourUsername YourUsername       287 Mar 15  2005 openurl.sh
drwxr-xr-x 3 YourUsername YourUsername      4096 Mar 16  2005 pb
-rw-r--r-- 1 YourUsername YourUsername       625 Mar 15  2005 README
drwxr-xr-x 4 YourUsername YourUsername      4096 Mar 16  2005 setup.data
-rwxr-xr-x 1 YourUsername YourUsername      7151 Mar 15  2005 setup.sh

Now we need to ensure that the required ports are open.

Assuming you are using iptables and assuming that your rules are in the file located at /etc/iptables.firewall.rules

Let us open the file with nano (you don’t have to use nano, you can use a command line editor of your choice) and edit it:

sudo nano /etc/iptables.firewall.rules

Now let us add these rules:

# Allow for ET Server
-A INPUT -p udp --dport 27960 -j ACCEPT
-A INPUT -p tcp --dport 27960 -j ACCEPT
-A INPUT -p udp --dport 27950 -j ACCEPT
-A INPUT -p tcp --dport 27950 -j ACCEPT
-A INPUT -p udp --dport 27951 -j ACCEPT
-A INPUT -p tcp --dport 27951 -j ACCEPT

You may not need all these ports. I found them mentioned while reading up on how to install an ET server. Some of them may not be relevant anymore (hopefully this can be corrected in this tutorial).

Now refresh your iptables so that the new rules can take effect (alternatively you can restart your server).

Depending on your configuration, one of the following may work. For me it is the first one:

/etc/init.d/networking restart  

/etc/init.d/iptables restart  

/etc/init.d/firewall restart

This concludes the installation steps, now we can look at configuration.

Configuration

Now back in our /home/User/ET folder we have to sub folders, one called etmain/ and one called etlegacy/.

These are the interesting ones for our server configuration.

In etmain/ you will find a sample config file called etl_server.cfg

Let us make a copy of it so we can edit the copy:

cp etl_server.cfg server.cfg

Now we can edit our newly created server.cfg

You should be able to do this without elevating your credentials with "sudo", so just this should be enough (assuming you own the file):

nano server.cfg

If that does not work you can use sudo

sudo nano server.cfg

The file is quite nicely commented. The interesting bits are:

// LOGGING & PROTECTION

set logfile "2"                                 // enables console logging - 'etconsole.log' (1: enabled 2: enabled and sync'ed)
set sv_protect "1"                              // getstatus response limit protection
set sv_protectLog "sv_protect.log"              // when set all sv_protect and server security related messages are written into this log file
set sv_floodProtect "1"                         // prevent server flooding
set sv_pure "1"                                 // enable hash check of client pk3 files

// NETWORK

set dedicated "2"                               // 1: dedicated server for lan 2: dedicated server for internet
set sv_advert "1"                               // send hartbeats to master server - important to set!
//set net_ip ""                                 // set to override the default IPv4 ET uses
//set net_port "27960"                          // set to override the default port ET uses
//set net_ip6 ""                                // set to override the default IPv6 ET uses
//set net_port6 "27960"                         // set to override the default port ET uses
sv_timeout "40"                                 // seconds without any message from connected clients
sv_dl_timeout "240"                             // seconds without any message from downloading or preparing clients
set sv_minping "0"                              // minimum ping required on connect (0: no minimum)
set sv_maxping "0"                              // maximum ping allowed on connect (0: no maximum)
set sv_ipMaxClients "0"                         // limits connections per IP to cvar value (0: no maximum)

// PASSWORDS & CLIENTS

set g_password ""                               // set to password protect the server
set sv_maxclients "24"                          // number of players including private slots
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 ""                             // remote console access password
set refereePassword ""                          // referee status password

// MOTD ETC

set sv_hostname "ET Legacy Host"                // name of server here
// max length is "12345678901234567890123456"   // (message should not be longer than this without the color codes)
set server_motd0 " ^NET Legacy ^7MOTD "         // message in right corner of join screen here
set server_motd1 "" 
set server_motd2 "" 
set server_motd3 "" 
set server_motd4 "" 
set server_motd5 "" 

Look through the file and edit as you see fit.

Some more explanations to these CVARS can be found here: https://dev.etlegacy.com/projects/etlegacy/wiki/List_of_Cvars

Once you are done, save your changes and exit the file.

In theory you now have the basics in place to start your rather default and vanilla ETL server.

Starting the Server

To start the server make sure you are back in your parent folder /home/user/ET

Here we can issue various combinations of the following plain command:

./etlded +set fs_basepath /home/user/ET +exec server.cfg

If you get an error saying:

bash: ./etlded: No such file or directory

Then it means we are missing some files to allow this 32bit installation of ETL to run on our 64bit operating system.

As a side note, we installed the 32bit version and not the 64bit - because many clients use the 32bit version and would not be able to connect to our server had we used the 64bit version.

To fix the issue see the troubleshooting section below.

Now you can try the command above again and you should see your server start and initialize. To test it, fire up an ETL client and check to see the list of online servers. Hopefully your server is listed somewhere in the list.

Troubleshooting

bash: ./etlded: No such file or directory

To fix it see: https://askubuntu.com/questions/454253/how-to-run-32-bit-app-in-ubuntu-64-bit/454254#454254