{ "_comment": "IW4X egg rebuilt for a custom 32-bit wine image. No Steam login. Game files supplied by you; IW4X files fetched from GitHub at install.", "meta": { "version": "PTDL_v2", "update_url": null }, "exported_at": "2026-07-03T00:00:00+00:00", "name": "IW4x (Custom 32-bit Wine)", "author": "you@yourlab.local", "description": "IW4x dedicated server for Call of Duty: Modern Warfare 2 (2009), running on a custom 32-bit Wine image. Game files are provided by the operator; IW4X client files are fetched from GitHub via the official launcher.", "features": null, "docker_images": { "IW4X Wine (custom 32-bit)": "REGISTRY.your-lab.local/iw4x-wine:latest" }, "file_denylist": [], "startup": "bash ./start-iw4x.sh", "config": { "files": "{\r\n \"userraw/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"set g_password\": \"set g_password \\\"{{server.build.env.SERVER_PASSWORD}}\\\"\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Sending heartbeat to master\"\r\n}", "logs": "{}", "stop": "^C" }, "scripts": { "installation": { "script": "#!/bin/bash\r\n# IW4X install script - NO STEAM LOGIN.\r\n# Game (MW2) files are supplied by the operator via upload / volume.\r\n# This script only lays down the IW4X launcher, client dll, rawfiles,\r\n# server configs, and the startup wrapper.\r\n\r\nset -e\r\napt-get update && apt-get install -y --no-install-recommends curl wget unzip tar xz-utils ca-certificates\r\n\r\ncd /mnt/server\r\n\r\n## --- IW4X launcher (Linux) ---\r\necho \"Fetching IW4X launcher...\"\r\nwget -q https://github.com/iw4x/launcher/releases/latest/download/launcher-x86_64-linux-glibc.tar.xz -O launcher.tar.xz || \\\r\n wget -q https://github.com/iw4x/launcher/releases/download/v1.1.8-b.18/launcher-1.1.8-b.18-x86_64-linux-glibc.tar.xz -O launcher.tar.xz\r\ntar xf launcher.tar.xz\r\nrm -f launcher.tar.xz\r\nchmod +x iw4x-launcher || true\r\n\r\n## --- IW4X client dll (the mod itself) ---\r\necho \"Fetching iw4x.dll...\"\r\ncurl -L https://github.com/iw4x/iw4x-client/releases/latest/download/iw4x.dll -o iw4x.dll\r\n\r\n## --- IW4X raw files (assets + iw4x.exe) ---\r\necho \"Fetching raw files...\"\r\ncurl -L https://github.com/iw4x/iw4x-rawfiles/releases/latest/download/release.zip -o release.zip\r\nunzip -o release.zip -d /mnt/server\r\nrm -f release.zip\r\n\r\n## --- Server configs + launch scripts ---\r\necho \"Fetching server configs...\"\r\nwget -q https://github.com/iw4x/iw4-server-configs/archive/refs/heads/main.zip -O configs.zip\r\nunzip -o configs.zip\r\ncp -rf iw4-server-configs-main/* /mnt/server/ 2>/dev/null || true\r\nrm -rf iw4-server-configs-main configs.zip\r\nrm -f LICENSE README.md 2>/dev/null || true\r\n\r\necho \"-----------------------------------------\"\r\necho \"IW4X files installed.\"\r\necho \"IMPORTANT: upload your legally-owned MW2 game files into /home/container\"\r\necho \"(iw4mp.exe and the game assets) if they are not already present.\"\r\necho \"Also upload start-iw4x.sh to /home/container and it will be used at boot.\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io/pterodactyl/installers:debian", "entrypoint": "bash" } }, "variables": [ { "name": "Mod Dir", "description": "Name of the directory where the mod lives (fs_game). Leave blank for none.", "env_variable": "MOD_DIR", "default_value": "", "user_viewable": true, "user_editable": true, "rules": "nullable|string", "field_type": "text" }, { "name": "Server Port", "description": "UDP port the server listens on (default 28960).", "env_variable": "SERVER_PORT", "default_value": "28960", "user_viewable": true, "user_editable": true, "rules": "required|integer", "field_type": "text" }, { "name": "LAN Mode", "description": "0 = public (send heartbeats to master list). 1 = LAN/unlisted.", "env_variable": "LAN_MODE", "default_value": "0", "user_viewable": true, "user_editable": true, "rules": "required|boolean", "field_type": "text" }, { "name": "Server Config File", "description": "Which cfg in userraw/ to exec. server.cfg (dedicated) or partyserver.cfg (lobby).", "env_variable": "SERVER_CFG", "default_value": "server.cfg", "user_viewable": true, "user_editable": true, "rules": "required|string", "field_type": "text" }, { "name": "Log File", "description": "Enable server logging (1 on, 0 off).", "env_variable": "LOG_FILE", "default_value": "1", "user_viewable": true, "user_editable": true, "rules": "required|boolean", "field_type": "text" }, { "name": "Server Name", "description": "Sets sv_hostname. Color codes: ^1 Red ^2 Green ^3 Yellow ^4 Blue ^5 Cyan ^6 Pink ^7 White.", "env_variable": "SERVER_NAME", "default_value": "My IW4X Server", "user_viewable": true, "user_editable": true, "rules": "required|string|max:100", "field_type": "text" }, { "name": "Server Password", "description": "Leave blank for public, or set a password for a private server.", "env_variable": "SERVER_PASSWORD", "default_value": "", "user_viewable": true, "user_editable": true, "rules": "nullable|string|max:100", "field_type": "text" } ] }