call-of-duty-2-docker-server
call-of-duty-2-docker-server copied to clipboard
Minimal & lightweight Call of duty 2 server docker image - include libcod library
Call of Duty 2 server meets docker
Launch a minimal & lightweight containarized Call of Duty 2 multiplayer game server, including libcod.
📦 Supported tags and respective Dockerfile
links
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.
🔧 What's inside
- 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 !
📝 Requirements
- 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.
🚀 Usage
Setup the server
- 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).
Launch the server
From the project root:
docker-compose up -d
Server interactions
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
💻 Development guidelines
If you wish to contribute to and improve this project, you can do so by cloning it and then follow theses guidelines :
Start / restart the server locally
./scripts/dev-up.sh
Note that you will need the game files in the main folder, as specified in the "Requirements" section.
Show server logs
./scripts/dev-logs.sh
Execute server commands
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`
Run a shell in the server container
You can debug directly inside the server container (show file structure, tail logs, etc):
./scripts/dev-exec.sh
Cleanup
Remove everything once your tests are over:
./scripts/dev-down.sh
🗂️ Notes & resources
- 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
🚧 Roadmap
Project roadmap & issues can be tracked on the project page.
🙏 Contribution
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.
📖 License
This project is under the MIT License.