IW4x

Games
Report Issue

IW4x is a community-driven modification for Call of Duty Modern Warfare 2 (2009) that enhances the game with improved security, dedicated servers, and extensive modding capabilities.

Contributors:
README

IW4X

IW4x is a community-driven modification for Call of Duty Modern Warfare 2 (2009) that enhances the game with improved security, dedicated servers, and extensive modding capabilities. See https://iw4x.io/

Author & Contributers

Name Github Profile
brainshead https://github.com/brainshead

Server Ports

IW4X requires up to 1 ports

Port default
Game 28960

This can be changed to any port.

[!IMPORTANT]

Before installing IW4x, you need to obtain a legitimate copy of Call of Duty: Modern Warfare 2 (2009) from Steam.

  • This is required for installation of the server files.
  • Client also need need to use the IW4x files installed to connect to the server.

Files can be found on

[!CAUTION] [Only Steam is supported] IW4x does not support game copies from the Microsoft Store!

Install Notes

Memory 1GB and 20 GB storage is needed at least without modicification.

Settings

Most setting can be done by opening userraw/server.cfg and edit settings inside

Server hosting rules

Can be found at IW4X Docs.

Violation of any rule may result in your server being delisted.

If you are unsure about the rules or want to report a server please do so via our Discord server. Discord Server IW4X

Docker Images (2)
Name Image
Wine Latest ghcr.io/ptero-eggs/yolks:wine_latest
Wine Staging ghcr.io/ptero-eggs/yolks:wine_staging
Startup Command
./iw4x-launcher --update && wine iw4x.exe -dedicated -stdout +set fs_game $MOD_DIR +set sv_lanonly 0 +set net_port $SERVER_PORT +exec server.cfg +set party_enable "0" +map_rotate
Variables (11)

Steam User

This is a required setting and cannot be set to anonymous.

Environment:
STEAM_USER
Default:
None
User Viewable:
User Editable:
Rules:
required|string

Steam Password

Steam User Password

Environment:
STEAM_PASS
Default:
None
User Viewable:
User Editable:
Rules:
required|string

Game ID

The ID corresponding to the game to download and run using SRCDS

Environment:
SRCDS_APPID
Default:
10190
User Viewable:
User Editable:
Rules:
string

Steam Auth

Steam account auth code. Required if you have 2fa enabled

Environment:
STEAM_AUTH
Default:
None
User Viewable:
User Editable:
Rules:
nullable|string|max:5

Auto Update Server

This is to auto-update the game server

Environment:
AUTO_UPDATE
Default:
1
User Viewable:
User Editable:
Rules:
required|boolean

Windows Install

Environment:
WINDOWS_INSTALL
Default:
1
User Viewable:
User Editable:
Rules:
required|string|max:20

Winetricks

Environment:
WINETRICKS_RUN
Default:
vcrun2022
User Viewable:
User Editable:
Rules:
required|string|max:20

Wine Debug

Environment:
WINEDEBUG
Default:
-all
User Viewable:
User Editable:
Rules:
required|string|max:20

Mod Dir

Name of the Dir where the mod are.

Environment:
MOD_DIR
Default:
None
User Viewable:
User Editable:
Rules:
nullable|string

Server Name

Sets the server hostname. SERVER COLORS ^1 = Red, ^2 = Green, ^3 = Yellow, ^4 = Blue, ^5 = Cyan, ^6 = Pink, ^7 = White, ^8 = Depends on the team colors playing., ^9 = Grey, ^0 = Black, ^: = Rainbow colors.

Environment:
SERVER_NAME
Default:
Pterodactyl IW4X
User Viewable:
User Editable:
Rules:
required|string|max:100

Server Password

Password Protected Server. Leave blank if you want players to join or set password if you want to keep public out.

Environment:
SERVER_PASSWORD
Default:
None
User Viewable:
User Editable:
Rules:
nullable|string|max:100
Installation Script
Container: ghcr.io/ptero-eggs/installers:debian
Entrypoint: bash
#!/bin/bash
# steamcmd Base Installation Script


## just in case someone removed the defaults.
if [ "${STEAM_USER}" == "" ]; then
    echo -e "steam user is not set.\n"
    echo -e "Using anonymous user.\n"
    STEAM_USER=anonymous
    STEAM_PASS=""
    STEAM_AUTH=""
else
    echo -e "user set to ${STEAM_USER}"
fi

## download and install steamcmd
cd /tmp
mkdir -p /mnt/server/steamcmd
curl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzvf steamcmd.tar.gz -C /mnt/server/steamcmd
cd /mnt/server/steamcmd

# SteamCMD fails otherwise for some reason, even running as root.
# This is changed at the end of the install process anyways.
chown -R root:root /mnt
export HOME=/mnt/server

## install game using steamcmd
./steamcmd.sh +force_install_dir /mnt/server +login anonymous +app_update 1628350 validate +quit ## other flags may be needed depending on install. looking at you cs 1.6
./steamcmd.sh +force_install_dir /mnt/server +login anonymous  +app_update 1493710 validate +quit ## other flags may be needed depending on install. looking at you cs 1.6

./steamcmd.sh +force_install_dir /mnt/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6

## set up 32 bit libraries
mkdir -p /mnt/server/.steam/sdk32
cp -v linux32/steamclient.so ../.steam/sdk32/steamclient.so

## set up 64 bit libraries
mkdir -p /mnt/server/.steam/sdk64
cp -v linux64/steamclient.so ../.steam/sdk64/steamclient.so



#Install IW4X launcher
cd /mnt/server
wget https://github.com/iw4x/launcher/releases/latest/download/iw4x-launcher-x86_64-unknown-linux-gnu.tar.gz
tar xfv iw4x-launcher-x86_64-unknown-linux-gnu.tar.gz
rm  iw4x-launcher-x86_64-unknown-linux-gnu.tar.gz
chmod +x iw4x-launcher

#Getting server configs
cd /mnt/server
wget -q https://github.com/iw4x/iw4-server-configs/archive/main.zip
unzip main.zip
mv -f iw4-server-configs-main/* . 
rmdir iw4-server-configs-main
rm main.zip
rm LICENSE
rm README.md

## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"