Sys Admin Guide

From ioquake3 wiki
Revision as of 14:24, 28 August 2015 by TimeDoctor (talk | contribs)
Jump to: navigation, search

So, You've Decided to Start a Quake 3: Arena Server.

This guide will help you get started.

You will need a legitimate copy of Quake 3: Arena. It is currently only available through Steam on Windows or if you'd like it on-disc second-hand markets like Ebay may have copies.

Once you have the game downloaded, copy pak0.pk3 to your server's baseq3 directory.


Forward and open port 27960 on your firewall or router and in whatever operating system you use.


  1. Create a new user for your ioquake3 server to run as. You can use the command sudo adduser ioq3srv for example to add a new user named ioq3srv
  2. Switch to the new user su - ioq3srv
  3. Download wget
  4. Install any pre-requisites according to your distribution documentation. If you run into trouble here, please ask for help on our forums after attempting the next command and saving the output to pastebin
  5. sh
  6. Copy pak0.pk3 from your purchased copy of Quake 3: Arena to the baseq3 sub-directory of ioquake3
  7. Download wget
  8. Type screen and then sh You can leave the screen at any time by pressing Ctrl+a then d, and then get access to your running server again by typing screen -drU
  9. You're ready to go, just type map q3dm17 in your new server's console.

Mac OS X


Useful ioquake3 server console commands

banaddr <range>
ban an ip address range from joining a game on this server, valid <range> is either playernum or CIDR notation address range.
exceptaddr <range>
exempt an ip address range from a ban.
bandel <range>
delete ban (either range or ban number)
exceptdel <range>
delete exception (either range or exception number)
reload the banlist from serverbans.dat
delete all bans
restart network subsystem to change latched settings
game_restart <fs_game>
Switch to another mod
kicknum <client number>
kick a client by number, same as clientkick command
kick all clients, similar to "kick all" (but kicks everyone even if someone is named "all")
kick all bots, similar to "kick allbots" (but kicks all bots even if someone is named "allbots")
tell <client num> <msg>
send message to a single client (new to server)

Using HTTP/FTP Download Support

You can enable redirected downloads on your server even if it's not an ioquake3 server. You simply need to use the 'sets' command to put the sv_dlURL cvar into your SERVERINFO string and ensure sv_allowDownloads is set to 1

sv_dlURL is the base of the URL that contains your custom .pk3 files the client will append both fs_game and the filename to the end of this value. For example, if you have sv_dlURL set to "", fs_game is "baseq3", and the client is missing "test.pk3", it will attempt to download from the URL ""

sv_allowDownload's value is now a bitmask made up of the following flags:

   1 - ENABLE
   4 - do not use UDP downloads
   8 - do not ask the client to disconnect when using HTTP/FTP

Server operators who are concerned about potential leeching from their HTTP servers from other ioquake3 servers can make use of the HTTP_REFERER that ioquake3 sets which is "ioQ3://{SERVER_IP}:{SERVER_PORT}". For, example, Apache's mod_rewrite can restrict access based on HTTP_REFERER.

On a sidenote, downloading via UDP has been improved and yields higher data rates now. You can configure the maximum bandwidth for UDP downloads via the cvar sv_dlRate. Due to system-specific limits the download rate is capped at about 1 Mbyte/s per client, so curl downloading may still be faster.

Using Old Versions or Protocols

Sometimes we get asked to help with NoGhost or other mods that require versions of Quake 3 prior to 1.32c. Unfortunately there is no way to make mods that require old versions of Quake 3 work with ioquake3. When id software released the source code which ioquake3 is based on we only received access to the latest version at the time they stopped working on it.


Similarly, we sometimes get asked to support Punkbuster. This is closed source cheat detection software that we don't have the ability to use with ioquake3.