Here's a quickguide to running a Q3A dedicated server on a debian system.
I assume you have running Quake3Arena for linux running on your client computer already. We'll use this installation as base.
#> useradd -u 666 -g games -d /opt/games/quake3 quake3 #> mkdir -p /opt/games/quake3 #> chown games:games /opt/games #> chown quake3:games /opt/games/quake3
#> su - quake3 $> scp -r you@workstation:games/quake3 .
$> ln -s /opt/games/quake3 .q3a
baseq3/autoexec.cfg with the following basic valuesset vm_game 2 set vm_cgame 2 set vm_ui 2 set dedicated 1 //dedicated but no announce set com_hunkmegs 32 //How much RAM for your server set net_port 32000 //The network port
base3/server.cfg file with additonal parametersseta sv_hostname "My Q3A Server" seta sv_maxclients 8 seta g_motd "=== Happy fragging ===" seta g_quadfactor 4 //### team deathmatch ### //seta g_gametype 3 //seta g_teamAutoJoin 1 //seta g_teamForceBalance 1 //seta timelimit 15 //seta fraglimit 25 //### free for all ### seta g_gametype 0 seta timelimit 10 seta fraglimit 15 seta bot_nochat 1 seta g_weaponrespawn 2 seta g_inactivity 3000 seta g_forcerespawn 0 seta g_log server.log seta logfile 3 seta rconpassword "secret" seta rate "12400" seta snaps "40" seta cl_maxpackets "40" seta cl_packetdup "1"
baseq3/levels.cfg file which contains all maps you want to use in rotationset dm1 "map q3dm1; set nextmap vstr dm2" set dm2 "map q3dm2; set nextmap vstr dm3" set dm3 "map q3dm3; set nextmap vstr dm1" vstr dm1
baseq3/bots.cfgseta bot_enable 1 seta bot_minplayers 4 addbot doom 3 blue 10 addbot orbb 3 red 10 addbot bones 3 blue 10 addbot major 3 red 10
Okay thats it. Now you can run your server with
$> ./quake3.x86 +exec server.cfg +exec levels.cfg +exec bots.cfg
To automate this have a look at the init script below. Oh and be sure to open your firewall or your buddies can't connect.
This script starts and stops the dedicated server. Installed to /etc/init.d/q3a_server and optionally linked to the default runlevel.
#! /bin/sh
set -e
BASEPATH="/opt/games/quake3"
BINARY="quake3.x86"
DAEMON="$BASEPATH/$BINARY"
OPTIONS="+exec server.cfg +exec levels.cfg +exec bots.cfg"
RUNAS="quake3:games"
PIDFILE="$BASEPATH/$BINARY.pid"
test -x $DAEMON || exit 0
export HOME=$BASEPATH
case "$1" in
  start)
        echo -n "Starting Q3A"
        cd $BASEPATH
        start-stop-daemon --start --quiet -c $RUNAS --pidfile $PIDFILE \
                -N -10 -m -b -d $BASEPATH --exec $DAEMON -- $OPTIONS
        echo "."
        ;;
  stop)
        echo -n "Stopping Q3A"
        start-stop-daemon --stop --quiet --pidfile $PIDFILE \
                --exec $DAEMON
        echo "."
        ;;
  restart|force-reload)
        $0 stop
        sleep 3
        $0 start
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac
exit 0