Launch a minimal & lightweight containarized Call of Duty 2 multiplayer game server, including libcod.
This repository use a multi-build setup to provide images for all server binaries located in the /bin
folder.
All image tags can be found on the Docker Hub registry.
The following convention is applied:
bgauduch/cod2server:latest
- Dockerfile- uses latest available cracked server binary and libcod library, build from
master
branch.
- uses latest available cracked server binary and libcod library, build from
bgauduch/cod2server:3.0
- Dockerfile - equivalent tolatest
on release tag.bgauduch/cod2server:X_Y_zzzzzz
X_Y
is the server binary and libcod library version in [1_0
,1_2
,1_3
];zzzzzz
is the server binary declination. Report to the readme in the/bin
folder for explanations.
Please report to the releases section for the changelogs. Any other image tag is not supported.
- The
cod2_lnxded
server binary from Killtube by Kung Foo Man, Mitch and anyone that contributed; - The custom
libcod
from Voron00, follow the repository forks for a complete list of creators and contributors.
Full credits goes to them for their awesome work !
- The orginal game, as it's content is used by the dedicated server;
- A host machine of your choice with x86_64 architecture;
- Docker and Docker Compose installed and configured on your host machine. Minimal knowledge in using both is recommended.
- Clone or download this repository on your host machine;
- Copy required data from the
main
folder of your original game (install directory or retail DVD) to the server:- Copy all the
iw_XX.iwd
from 00 to 15 to thecod2server/main
folder; - Copy all the localizations
localized_english_iwXX.iwd
to thecod2server/main
(it might be another language).
- Copy all the
- Edit the config file located in
cod2server/main/server_mp.cfg
to suits your needs:- [MANDATORY] Set the RCON password to something strong and private!
- Tweak the rest as you see fit, don't forget to updated the placeholders (server name, admin, etc).
- [Optional] If you need Punkbuster:
- Activate it by changing
sv_punkbuster
from0
to1
in the command arguments of thedocker-compose.yaml
file; - Edit the
cod2server/main/punkbuster.cfg
configuration to suits your needs. - [Optional] Edit the
bgauduch/cod2server
image tag indocker-compose.yaml
to choose a different server version; - Depending on your setup, you might have some port-forwarding and firewalling to do in order to make your server publicly available (see required open ports in the
EXPOSE
section of the Dockerfile).
From the project root:
docker-compose up -d
From the project root, you can:
- Restart the server (to pick up config change for instance):
docker-compose restart
- Tail the server logs:
# cod2_server refer to the name of the service in the compose file docker-compose logs -f cod2_server
- Attach a shell to the server to run commands, see available commands in /doc/readme.md:
docker container attach call-of-duty-2-docker-server_cod2_server_1 # exemple commands status map_rotate # Use the escape sequence to detach: `CTRL+P`, `CTRL+Q`
- Completely stop the server:
docker-compose down
If you wish to contribute to and improve this project, you can do so by cloning it and then follow theses guidelines :
./scripts/dev-up.sh
Note that you will need the game files in the main folder, as specified in the "Requirements" section.
./scripts/dev-logs.sh
Attach a shell to the running server process to run a command, see available commands in /doc/readme.md:
./scripts/dev-attach.sh
# Exemple commands
status
map_rotate
# Use the escape sequence to detach: `CTRL+P`, `CTRL+Q`
You can debug directly inside the server container (show file structure, tail logs, etc):
./scripts/dev-exec.sh
Remove everything once your tests are over:
./scripts/dev-down.sh
- This setup was tested on an ubuntu server 18.04.3 LTS x86_64 and should work on any platform with the same architecture.
- Threads on setting up a cod2 server are availables on Killtube:
- on ubuntu 14.04 by IzNoGoD
- using Docker by Lonsofore
- There is a similar repository on github proposing a Call of Duty 2 server based on CentOS: hberntsen/docker-cod2
- Original and cracked server binaries can be found in the
bin
folder, have a look at thereadme
- If you need to use iptables in conjonction with Docker, please follow the official documentation tips
Project roadmap & issues can be tracked on the project page.
Any contribution to this project is welcome ! Feel free to open an issue to ask for help or a new feature, and it will be discussed there.
If you wish to contribute to the code, start by reading the development guidelines and then feel free to open a pull-request.
This project is under the MIT License.