Docker-based runner for Plutonium T6 / Call of Duty: Black Ops II dedicated servers.
This project helps you run Plutonium T6 dedicated servers on Linux or Docker-compatible systems using Wine, Docker and Docker Compose.
It is designed to make the setup faster, cleaner and easier to reproduce.
This repository does not include, distribute, download or provide:
- Call of Duty: Black Ops II game files
- Plutonium client/server binaries
- Plutonium bootstrapper files
- Server keys
- Cracks, bypasses or copyrighted game assets
You must provide your own legitimate files:
- Your own Black Ops II / T6 game files
- Your own Plutonium installation files
- Your own Plutonium server key
This repository only provides:
- Dockerfile
- startup scripts
- Docker Compose examples
- server configuration templates
- helper scripts
- documentation
- Run Plutonium T6 servers inside Docker
- Supports T6 Multiplayer
- Supports T6 Zombies examples
- Wine-based isolated runtime
- Configurable server key, port and config file
- Optional custom
gamesettings - Works well for private servers with friends
- Can be adapted for public servers
- No Plutonium or game files included
- Docker
- Docker Compose plugin
- Linux server recommended
- Windows with Docker Desktop should also work, but Linux is the recommended host
You need your own BO2/T6 files mounted into:
./gameThe folder should contain files like:
game/
├── t6mp.exe
├── t6zm.exe
├── zone/
├── redist/
├── binkw32.dll
└── ...You need your own Plutonium files mounted into:
./plutoniumThe folder must contain the Plutonium bootstrapper somewhere inside it:
plutonium-bootstrapper-win32.exeUsually this comes from your local Plutonium app data folder.
You need your own Plutonium server key.
Create or view your keys here:
https://platform.plutonium.pw/serverkeysPlace the key in your .env file.
plutonium-t6-docker/
├── docker/
│ ├── Dockerfile
│ └── start.sh
├── examples/
│ ├── .env.example
│ ├── docker-compose.build.yml
│ └── docker-compose.image.yml
├── servers/
│ ├── t6mp-basic/
│ │ ├── dedicated.cfg
│ │ └── gamesettings/
│ │ ├── dm.cfg
│ │ ├── tdm.cfg
│ │ ├── sas.cfg
│ │ ├── oic.cfg
│ │ └── gun.cfg
│ └── t6zm-tranzit/
│ └── dedicated_zm.cfg
├── scripts/
│ └── check-files.sh
├── game/
│ └── your own game files here
├── plutonium/
│ └── your own Plutonium files here
├── .env
├── .gitignore
├── .dockerignore
└── README.mdgit clone https://github.com/iglnierod/plutonium-t6-docker.git
cd plutonium-t6-dockercp examples/.env.example .env
nano .envExample:
SERVER_KEY_MP=CHANGE_ME
SERVER_KEY_ZM=CHANGE_ME
SERVER_PORT_MP=4976
SERVER_PORT_ZM=4977Replace CHANGE_ME with your own Plutonium server keys.
You can create or view your server keys here:
https://platform.plutonium.pw/serverkeysCreate the game folder:
mkdir -p gameCopy your own BO2/T6 game files into:
./gameThe folder should contain at least:
game/t6mp.exe
game/t6zm.exe
game/zone/Create the plutonium folder:
mkdir -p plutoniumCopy your own Plutonium files into:
./plutoniumThe startup script will look for:
plutonium-bootstrapper-win32.exeinside that folder.
chmod +x scripts/check-files.sh
./scripts/check-files.shExpected result:
Basic checks passed.Use this if you want to build the Docker image locally.
docker compose -f examples/docker-compose.build.yml --env-file .env up -d t6mpView logs:
docker compose -f examples/docker-compose.build.yml --env-file .env logs -f t6mpStop the server:
docker compose -f examples/docker-compose.build.yml --env-file .env downUse this if you want to use the prebuilt Docker image.
docker compose -f examples/docker-compose.image.yml --env-file .env up -d t6mpView logs:
docker compose -f examples/docker-compose.image.yml --env-file .env logs -f t6mpStop the server:
docker compose -f examples/docker-compose.image.yml --env-file .env downFrom Plutonium T6 Multiplayer, open the game console and run:
connect SERVER_IP:4976Example for LAN:
connect 192.168.1.50:4976Example for public connection:
connect YOUR_PUBLIC_IP:4976Default T6 Multiplayer port:
4976/udpDefault T6 Zombies port:
4977/udpFor public servers, forward the UDP port in your router:
4976 UDP → your Linux server LAN IPExample:
4976 UDP → 192.168.1.50TCP is usually not required for the game server, but opening it does not normally hurt. UDP is the important one.
On Ubuntu with UFW:
sudo ufw allow 4976/udp
sudo ufw allow 4977/udp
sudo ufw statusCheck Docker port publishing:
docker compose ps
docker port plutonium-t6mpExpected:
4976/udp -> 0.0.0.0:4976The public server name is controlled by sv_hostname inside your server config file.
Example:
set sv_hostname "^2Plutonium T6 Docker Server"The name used when creating a Plutonium server key is not necessarily the same as the server browser name.
Example servers/t6mp-basic/dedicated.cfg:
//////////////////////////////////////////////////
// Plutonium T6 MP - Basic Server
//////////////////////////////////////////////////
set sv_hostname "^2Plutonium T6 Docker Server"
set sv_motd "Powered by Docker"
set rcon_password "CHANGE_ME_RCON"
set g_password ""
set sv_maxclients 18
set sv_voice 1
set g_log "logs/games_mp.log"
set g_logSync 2
set sv_maprotation "execgts tdm.cfg map mp_raid map mp_hijacked map mp_village map mp_express"The gamesettings folder allows you to define reusable game mode configs.
Recommended structure:
servers/t6mp-basic/
├── dedicated.cfg
└── gamesettings/
├── dm.cfg
├── tdm.cfg
├── sas.cfg
├── oic.cfg
└── gun.cfgFree-for-all
// Plutonium T6 - Free-for-all
execgts gamesettings_default.cfg
execgts gamesettings_dm.cfg
set_gametype dm
gts prematchperiod 15
gts preroundperiod 5
gts timelimit 10
gts scorelimit 30
gts allowSpectating 1
gts spectateType 1
gts allowFinalKillcam 1
gts loadoutKillstreaksEnabled 1
gts perksEnabled 1
gts disableweapondrop 0
gts allowHitMarkers 2Team Deathmatch
// Plutonium T6 - Team Deathmatch
execgts gamesettings_default.cfg
execgts gamesettings_tdm.cfg
set_gametype tdm
gts prematchperiod 15
gts preroundperiod 5
gts timelimit 10
gts scorelimit 75
gts allowSpectating 1
gts spectateType 1
gts allowFinalKillcam 1
gts loadoutKillstreaksEnabled 1
gts perksEnabled 1
gts disableweapondrop 0
gts allowHitMarkers 2Sticks and Stones
// Plutonium T6 - Sticks and Stones
execgts gamesettings_default.cfg
execgts gamesettings_sas.cfg
set_gametype sas
gts prematchperiod 15
gts preroundperiod 5
gts timelimit 10
gts scorelimit 1500
// Setback weapon:
// 0 = None
// 1 = Combat Axe
// 2 = Crossbow
// 3 = Ballistic Knife
gts gunSelection 1
// Points lost when killed by setback weapon
gts setbacks 0
gts pointsPerPrimaryKill 10
gts pointsPerSecondaryKill 10
gts pointsPerPrimaryGrenadeKill 5
gts pointsPerMeleeKill 5
gts allowSpectating 1
gts spectateType 1
gts allowFinalKillcam 1
gts forceradar 1One in the Chamber
// Plutonium T6 - One in the Chamber
execgts gamesettings_default.cfg
execgts gamesettings_oic.cfg
set_gametype oic
gts prematchperiod 15
gts preroundperiod 5
gts timelimit 10
gts scorelimit 0
gts playerNumlives 3
gts pointsPerWeaponKill 10
gts pointsPerMeleeKill 10
gts pointsForSurvivalBonus 5
gts allowSpectating 1
gts spectateType 1
gts allowFinalKillcam 1
gts forceradar 1Gun Game
// Plutonium T6 - Gun Game
execgts gamesettings_default.cfg
execgts gamesettings_gun.cfg
set_gametype gun
gts prematchperiod 15
gts preroundperiod 5
gts timelimit 10
gts scorelimit 0
gts setbacks 1
gts gunSelection 3
gts allowSpectating 1
gts spectateType 1
gts allowFinalKillcam 1
gts forceradar 1set sv_maprotation "execgts tdm.cfg map mp_raid map mp_hijacked map mp_village map mp_express"set sv_maprotation "execgts dm.cfg map mp_raid map mp_hijacked map mp_village map mp_express"set sv_maprotation "execgts sas.cfg map mp_nuketown_2020 execgts oic.cfg map mp_hijacked execgts gun.cfg map mp_village"set sv_maprotation "execgts dm.cfg map mp_raid execgts tdm.cfg map mp_hijacked execgts sas.cfg map mp_nuketown_2020 execgts oic.cfg map mp_carrier execgts gun.cfg map mp_village"Some common T6 Multiplayer map names:
| Map | Internal name |
|---|---|
| Raid | mp_raid |
| Nuketown 2025 | mp_nuketown_2020 |
| Standoff | mp_village |
| Hijacked | mp_hijacked |
| Carrier | mp_carrier |
| Express | mp_express |
| Slums | mp_slums |
| Meltdown | mp_meltdown |
| Overflow | mp_overflow |
| Plaza | mp_nightclub |
| Aftermath | mp_la |
| Drone | mp_drone |
| Cargo | mp_dockside |
| Yemen | mp_socotra |
| Turbine | mp_turbine |
| Mode | Config |
|---|---|
| Team Deathmatch | tdm.cfg |
| Free-for-all | dm.cfg |
| Sticks and Stones | sas.cfg |
| One in the Chamber | oic.cfg |
| Gun Game | gun.cfg |
To make the server private:
set g_password "yourpassword"Players connect with:
connect SERVER_IP:4976; password yourpasswordOr they can enter the password from the Plutonium UI if prompted.
Example:
docker compose -f examples/docker-compose.build.yml --env-file .env up -d t6zmView logs:
docker compose -f examples/docker-compose.build.yml --env-file .env logs -f t6zmDefault Zombies port:
4977/udpView container logs:
docker compose logs -f t6mpView recent logs:
docker compose logs --tail=120 t6mpSearch for important server events:
docker compose logs t6mp | grep -Ei "heartbeat|sv_mapRotation|Setting map|execing|client|connected"Show live container usage:
docker statsShow only the T6 MP container:
docker stats plutonium-t6mpOne-shot output:
docker stats --no-stream plutonium-t6mpCompact output:
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" plutonium-t6mpRecommended config backup:
mkdir -p ~/backups/plutonium-t6
BACKUP_NAME="plutonium-t6-config-$(date +%Y%m%d-%H%M%S)"
mkdir -p ~/backups/plutonium-t6/$BACKUP_NAME
cp docker-compose.yml ~/backups/plutonium-t6/$BACKUP_NAME/ 2>/dev/null || true
cp .env ~/backups/plutonium-t6/$BACKUP_NAME/.env 2>/dev/null || true
cp -r docker ~/backups/plutonium-t6/$BACKUP_NAME/ 2>/dev/null || true
cp -r servers ~/backups/plutonium-t6/$BACKUP_NAME/ 2>/dev/null || true
echo "Backup created at: ~/backups/plutonium-t6/$BACKUP_NAME"Do not commit .env to Git.
Your .env is missing a valid server key.
Create or view server keys here:
https://platform.plutonium.pw/serverkeysThen set:
SERVER_KEY_MP=your_real_key_hereYou did not mount your Plutonium files correctly.
Expected:
./plutonium/.../plutonium-bootstrapper-win32.exeYour BO2/T6 game files are missing or mounted incorrectly.
Expected:
./game/t6mp.exeThe server config file was not copied or the SERVER_CONFIG value is wrong.
Check:
ls -lha servers/t6mp-basic/And verify:
SERVER_CONFIG=dedicated.cfgUsually caused by a broken or empty map rotation.
Check your config:
set sv_maprotation "execgts tdm.cfg map mp_raid"Watch logs:
docker compose logs t6mp | grep -Ei "sv_mapRotation|Setting map|map_rotate"The mode config is probably not being executed.
Check that the mode file exists:
servers/t6mp-basic/gamesettings/sas.cfg
servers/t6mp-basic/gamesettings/oic.cfg
servers/t6mp-basic/gamesettings/gun.cfgAnd check logs for:
couldn't exec sas.cfg
couldn't exec oic.cfg
couldn't exec gun.cfgCheck:
docker compose ps
docker port plutonium-t6mp
sudo ufw statusYour router should forward:
4976 UDP → your server LAN IPYour friend should connect with:
connect YOUR_PUBLIC_IP:4976Not with your local 192.168.x.x address.
The Docker image contains only:
- Debian
- Wine
- Xvfb
- tini
- startup script
It does not contain:
- BO2 files
- Plutonium files
- server keys
- copyrighted assets
Example:
docker pull iglnierod/plutonium-t6-server:latestdocker build -t plutonium-t6-server:local ./dockerTag a version:
git tag v0.1.0
git push origin v0.1.0A GitHub Actions workflow can build and publish the Docker image to DockerHub.
- Do not publish your
.env - Do not publish server keys
- Do not publish player IP logs
- Use a strong
rcon_password - Use
g_passwordfor private servers - Keep your server updated
- Only expose the ports you need
- This project does not install Plutonium automatically
- This project does not download game files
- Linux/amd64 is the recommended platform
- ARM64 is not officially targeted
- Windows support depends on Docker Desktop and volume mounting
- Public server visibility depends on router, firewall, ISP and Plutonium master server behavior
Contributions are welcome.
Good contributions include:
- better documentation
- more server config examples
- safer startup checks
- cleaner Docker Compose examples
- troubleshooting notes
Do not submit:
- game files
- Plutonium binaries
- server keys
- copyrighted assets
- private logs with IPs
MIT License.
See:
LICENSEThis project is not affiliated with Activision, Treyarch or Plutonium.
It is a community Docker runner intended to help users run their own dedicated servers using files and keys they already own or are authorized to use.