Couldn't load default.cfg
The server exits immediately after printing it.
Cause
default.cfg lives inside pak0.pk3 (CoD1/UO) or iw_00.iwd (CoD2+). If the engine
cannot read it, it could not find or open the stock paks at all.
Which means one of:
fs_basepathpoints at a directory that does not contain the gamedir.- The paks are missing, or you copied the binary without them.
- The paks are there but the process cannot read them (permissions).
fs_gamenames a mod directory that does not exist.- For United Offensive: you copied
uo/but not the basemain/paks.
Fix
Check the layout. The engine expects <fs_basepath>/<gamedir>/:
ls -la /opt/cod2/main/ | head
You should see iw_00.iwd onwards. For CoD1, pak0.pk3 through pakb.pk3 plus the
localized paks — and note the localized set legitimately skips one
(localized_english_pak0, 1, 2, 3, 5, no 4), so that gap is not your problem.
Pass the paths explicitly rather than relying on the working directory:
./cod2_lnxded +set fs_basepath /opt/cod2 +set fs_homepath /opt/cod2 ...
Check permissions, especially after copying files as root and running the server as a service user:
sudo chown -R cod2:cod2 /opt/cod2
In Docker, check the bind mount actually landed:
docker compose run --rm cod2 ls -la /server/main
An empty directory here means the volume path is wrong on the host side.
United Offensive
UO needs both pak sets: the base Call of Duty paks in main/ and the UO paks in
uo/, started with +set fs_game uo. Copying only uo/ produces exactly this error.
See the UO setup guide.
