We are using 4 CPU / 8GB RAM
configuration, adjust for your requirements.
The operating system is Rocky Linux but this should work on any modern Red Hat system.
Initial server setup and system update:
sudo dnf update
hostnamectl set-hostname q3a.youkewldomain.com
dnf install nano tmux
sudo reboot
Create a user to run Quake3 and give it administrative permissions:
adduser quake
cp -r -p /root/.ssh/ /home/quake/
chown -R quake:quake /home/quake/.ssh
usermod -a -G wheel quake
echo '%wheel ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/nopass
Install build tools and libraries:
sudo dnf group install "Development Tools"
sudo dnf install SDL2-devel
Clone repository and enter it:
git clone https://github.com/ioquake/ioq3.git
cd ioq3
Create custom path for the game and run make:
mkdir -p ~/games/quake3/
make copyfiles COPYDIR=~/games/quake3/
Enter the directory containing your local installation of Quake 3 Arena.
Copy the pack assets to the server:
scp baseq3/* [email protected]:~/games/quake3/baseq3
scp missionpack/* [email protected]:~/games/quake3/missionpack
Download point release patch files and unpack:
cd ~/games
wget https://files.ioquake3.org/quake3-latest-pk3s.zip
unzip quake3-latest-pk3s.zip
Copy patched files into ~/games/quake3
directory:
cd quake3-latest-pk3s
cp baseq3/* ../quake3/baseq3/
cp missionpack/* ../quake3/missionpack/
Install default firewall:
dnf install firewalld
Add QUAKE3 port ranges:
firewall-cmd --add-port=27960-27969/tcp --permanent
firewall-cmd --add-port=27960-27969/udp --permanent
Start firewall and confirm:
systemctl start firewalld.service
firewall-cmd --list-all
Start Server
./ioq3ded.x86_64 +set fs_game missionpack
Create configuration file nano ~/.q3a/missionpack/ctf.cfg
:
set sv_hostname "Kewl Q3 Arena (CTF)"
set sv_maxclients 16
set g_motd "mess with the best, die like the rest."
set g_forcerespawn 10
set g_gametype 4
set bot_minplayers 8
set g_spskill 3
set m1 "capturelimit 8; map q3ctf1; set nextmap vstr m2"
set m2 "capturelimit 8; map q3ctf2 ; set nextmap vstr m3"
set m3 "capturelimit 8; map q3ctf3 ; set nextmap vstr m4"
set m4 "capturelimit 8; map q3wctf1 ; set nextmap vstr m5"
set m5 "capturelimit 8; map q3wctf2 ; set nextmap vstr m6"
set m6 "capturelimit 8; map q3wctf3 ; set nextmap vstr m1"
vstr m1
Create configuration file nano ~/.q3a/missionpack/dm.cfg
:
set sv_hostname "Kewl Q3 Arena (DM)"
set sv_maxclients 16
set g_motd "your welcome message."
set g_forcerespawn 15
set g_gametype 1
set fraglimit 50
set timelimit 20
set bot_minplayers 8
set g_spskill 3
set m1 "map q3dm1; set nextmap vstr m2"
set m2 "map q3dm2; set nextmap vstr m3"
set m3 "map q3dm3; set nextmap vstr m4"
set m4 "map q3tourney1; set nextmap vstr m5"
set m5 "map q3dm4; set nextmap vstr m6"
set m6 "map q3dm5; set nextmap vstr m7"
set m7 "map q3dm6; set nextmap vstr m8"
set m8 "map q3tourney2; set nextmap vstr m9"
set m9 "map q3dm7; set nextmap vstr m10"
set m10 "map q3dm8; set nextmap vstr m11"
set m11 "map q3dm9; set nextmap vstr m12"
set m12 "map q3tourney3; set nextmap vstr m13"
set m13 "map q3dm10; set nextmap vstr m14"
set m14 "map q3dm11; set nextmap vstr m15"
set m15 "map q3dm12; set nextmap vstr m16"
set m16 "map q3tourney4; set nextmap vstr m17"
set m17 "map q3dm13; set nextmap vstr m18"
set m18 "map q3dm14; set nextmap vstr m19"
set m19 "map q3dm15; set nextmap vstr m20"
set m20 "map q3tourney5; set nextmap vstr m21"
set m21 "map q3dm16; set nextmap vstr m22"
set m22 "map q3dm17; set nextmap vstr m23"
set m23 "map q3dm18; set nextmap vstr m24"
set m24 "map q3dm19; set nextmap vstr m25"
set m25 "map q3tourney6; set nextmap vstr m1"
vstr m1