How to host a Call of Duty 2 dedicated server

Call of Duty 2cod2_lnxdedUDP 28960Updated 2026-07-25

Call of Duty 2 is the most-hosted game in the classic CoD family, and cod2_lnxded is still a completely reasonable thing to run: a 1.3 server idles at a few MB of RAM and almost no CPU. The parts that trip people up are the 32-bit runtime, the switch from .pk3 to .iwd, and the fact that the Activision master has been unreliable for years.

What you need

Item Notes
Game paks iw_*.iwd plus localized_english_iw*.iwd from a legitimate install
Dedicated binary cod2_lnxded (Linux) or CoD2MP_s.exe +set dedicated 2 (Windows)
Patch 1.3 — the only version worth running
Ports UDP 28960 inbound
RAM ~100 MB per instance

The 1.3 patch is on the war24.net downloads page. Patch 1.0 and 1.2 servers cannot be joined by 1.3 clients, and effectively every client is 1.3.

Directory layout

/opt/cod2/
├── cod2_lnxded
└── main/
    ├── iw_00.iwd … iw_15.iwd
    ├── localized_english_iw00.iwd …
    └── server.cfg

The exact highest iw_NN number depends on your patch level, so copy whatever your install has rather than matching a list from a forum post.

Unlike CoD1, CoD2 pak archives use the .iwd extension. They are still plain zip files: unzip -l iw_00.iwd works.

32-bit libraries

cod2_lnxded is i386. On Debian or Ubuntu:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y libc6:i386 libgcc-s1:i386 lib32stdc++6 libstdc++5:i386

server.cfg

seta sv_hostname "^3My ^7CoD2 Server"
set rcon_password "change-me"
set g_gametype "tdm"
set sv_maxclients 20

set sv_pure 1                   // 0 if you load a mod .iwd
set sv_allowDownload 1
set sv_maxRate 25000
set sv_fps 20
set sv_timeout 60
set sv_floodProtect 1

set g_allowVote 1
set g_antilag 1
set scr_friendlyfire 0
set scr_killcam 1
set scr_teambalance 1
set g_deadChat 1
set logfile 1
set g_log "games_mp.log"
set g_logsync 0

set scr_tdm_timelimit 15        // minutes
set scr_tdm_scorelimit 500
set scr_sd_roundlimit 0
set scr_sd_timelimit 2

set sv_mapRotation "gametype tdm map mp_toujane map mp_carentan map mp_brecourt"
map_rotate

rcon_password has an underscore on CoD2. CoD1 and CoD:UO spell it rconpassword. Copying a CoD1 config across is the single most common reason rcon "does not work" on a new CoD2 server.

Gametype cvars are prefixed per gametype, so the timelimit for Team Deathmatch is scr_tdm_timelimit and for Search & Destroy it is scr_sd_timelimit. Setting scr_dm_timelimit while running tdm does nothing. The full table is on the cvar reference.

Starting the server

cd /opt/cod2
./cod2_lnxded \
  +set fs_basepath /opt/cod2 \
  +set fs_homepath /opt/cod2 \
  +set dedicated 2 \
  +set net_port 28960 \
  +set sv_maxclients 20 \
  +set rcon_password "change-me" \
  +exec server.cfg \
  +map mp_toujane

dedicated 2 is internet, dedicated 1 is LAN. On a 64-bit host, prefix with setarch i386 -R so the 2005 binary gets a non-randomised address space.

systemd unit

[Unit]
Description=Call of Duty 2 dedicated server
After=network-online.target

[Service]
Type=simple
User=cod2
WorkingDirectory=/opt/cod2
ExecStart=/usr/bin/setarch i386 -R /opt/cod2/cod2_lnxded \
  +set fs_basepath /opt/cod2 +set fs_homepath /opt/cod2 \
  +set dedicated 2 +set net_port 28960 \
  +exec server.cfg +map mp_toujane
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

CoD2x

CoD2x is the community extension for 1.3. On the client it adds widescreen support, higher FPS limits and a pile of bug fixes; on the server it is a shared object you preload:

LD_PRELOAD=/opt/cod2/libCoD2x.so ./cod2_lnxded +set dedicated 2 ...

A CoD2x server still accepts stock 1.3 clients, so enabling it costs you nothing in reach. Most of the active competitive scene runs it.

Mods

CoD2 mods live in main/ as .iwd files, or in a separate mod directory selected with fs_game:

set fs_game "mods/zpam336"

With fs_game set, the engine reads mods/zpam336/*.iwd on top of main/. That is how zPAM, ePAM and PAMD ship. Set sv_pure 0 unless you have tested the checksum path.

The long-running competition mods are:

Mod Purpose
zPAM (3.36) The current standard match mod. pam_mode cg, cg_2v2, pub.
ePAM (1.02b) Older match mod, still seen on public servers.
PAMD (1.05) Another PAM derivative with cb, cb_2v2, cb_1v1 modes.
CoDJumper Jump mod, gametype codjumper.

Mod modes are usually selected by a console argument after the config, e.g. +pam_mode cg on the command line.

See installing Call of Duty mods.

Fast download

CoD2 supports HTTP redirect downloads, which is the difference between a 4-second and a 4-minute join for a 40 MB map pack:

set sv_allowDownload 1
set sv_wwwDownload 1
set sv_wwwBaseURL "http://files.example.com/cod2"
set sv_wwwDlDisconnected 0

The URL must serve the same relative path the client asks for, i.e. http://files.example.com/cod2/main/mymap.iwd. Full nginx configuration is in the fast download guide.

Getting listed

cod2master.activision.com:20710 is the original master and is unreliable. In practice most CoD2 players find servers through community lists rather than the in-game browser, so publish your address, and check cod.pm to confirm your server is answering queries from the outside.

Verify from another machine with a raw Quake3 getstatus:

printf '\xff\xff\xff\xffgetstatus' | nc -u -w2 YOUR.IP 28960 | head -c 400

If that returns a config string dump your server is reachable and any browser problem is master-side, not firewall-side.

Map codes

Stock 1.3 ships 13 base maps plus Rostov and Wallendar from the free map packs. The full list with codes is on the Call of Duty 2 map list. The default in most rotations is mp_toujane.

Common problems

Frequently asked

What port does a Call of Duty 2 server use?

UDP 28960 by default, changed with +set net_port. Only that inbound UDP port is required.

Why does rcon not work on my CoD2 server?

The cvar is rcon_password with an underscore on CoD2, CoD4 and World at War. CoD1 and United Offensive use rconpassword as one word. A config copied from a CoD1 server leaves rcon disabled.

Do CoD2 mods use .pk3 or .iwd?

CoD2 and later use .iwd. Only CoD1 and United Offensive use .pk3. Both are plain zip archives, the engine just scans a different extension.

Is CoD2x worth enabling on a server?

Yes for most servers. It loads via LD_PRELOAD, still accepts stock 1.3 clients, and fixes a long list of engine bugs. Most of the active competitive scene expects it.