Skip to content

iglnierod/plutonium-t6-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Plutonium T6 Docker Server

Plutonium Docker Linux Windows Docker Desktop DockerHub License

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.


Important legal notice

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

Features

  • 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

Requirements

Host requirements

  • Docker
  • Docker Compose plugin
  • Linux server recommended
  • Windows with Docker Desktop should also work, but Linux is the recommended host

Game requirements

You need your own BO2/T6 files mounted into:

./game

The folder should contain files like:

game/
├── t6mp.exe
├── t6zm.exe
├── zone/
├── redist/
├── binkw32.dll
└── ...

Plutonium requirements

You need your own Plutonium files mounted into:

./plutonium

The folder must contain the Plutonium bootstrapper somewhere inside it:

plutonium-bootstrapper-win32.exe

Usually this comes from your local Plutonium app data folder.

Server key

You need your own Plutonium server key.

Create or view your keys here:

https://platform.plutonium.pw/serverkeys

Place the key in your .env file.


Recommended project structure

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.md

Quick start

1. Clone the repository

git clone https://github.com/iglnierod/plutonium-t6-docker.git
cd plutonium-t6-docker

2. Create the .env file

cp examples/.env.example .env
nano .env

Example:

SERVER_KEY_MP=CHANGE_ME
SERVER_KEY_ZM=CHANGE_ME

SERVER_PORT_MP=4976
SERVER_PORT_ZM=4977

Replace CHANGE_ME with your own Plutonium server keys.

You can create or view your server keys here:

https://platform.plutonium.pw/serverkeys

3. Add your game files

Create the game folder:

mkdir -p game

Copy your own BO2/T6 game files into:

./game

The folder should contain at least:

game/t6mp.exe
game/t6zm.exe
game/zone/

4. Add your Plutonium files

Create the plutonium folder:

mkdir -p plutonium

Copy your own Plutonium files into:

./plutonium

The startup script will look for:

plutonium-bootstrapper-win32.exe

inside that folder.


5. Check your files

chmod +x scripts/check-files.sh
./scripts/check-files.sh

Expected result:

Basic checks passed.

Running with local build

Use this if you want to build the Docker image locally.

docker compose -f examples/docker-compose.build.yml --env-file .env up -d t6mp

View logs:

docker compose -f examples/docker-compose.build.yml --env-file .env logs -f t6mp

Stop the server:

docker compose -f examples/docker-compose.build.yml --env-file .env down

Running with DockerHub image

Use this if you want to use the prebuilt Docker image.

docker compose -f examples/docker-compose.image.yml --env-file .env up -d t6mp

View logs:

docker compose -f examples/docker-compose.image.yml --env-file .env logs -f t6mp

Stop the server:

docker compose -f examples/docker-compose.image.yml --env-file .env down

Connecting to the server

From Plutonium T6 Multiplayer, open the game console and run:

connect SERVER_IP:4976

Example for LAN:

connect 192.168.1.50:4976

Example for public connection:

connect YOUR_PUBLIC_IP:4976

Ports

Default T6 Multiplayer port:

4976/udp

Default T6 Zombies port:

4977/udp

For public servers, forward the UDP port in your router:

4976 UDP → your Linux server LAN IP

Example:

4976 UDP → 192.168.1.50

TCP is usually not required for the game server, but opening it does not normally hurt. UDP is the important one.


Firewall

On Ubuntu with UFW:

sudo ufw allow 4976/udp
sudo ufw allow 4977/udp
sudo ufw status

Check Docker port publishing:

docker compose ps
docker port plutonium-t6mp

Expected:

4976/udp -> 0.0.0.0:4976

Server name

The 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.


Basic Multiplayer config

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"

Game settings examples

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.cfg

gamesettings/dm.cfg

Free-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 2

gamesettings/tdm.cfg

Team 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 2

gamesettings/sas.cfg

Sticks 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 1

gamesettings/oic.cfg

One 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 1

gamesettings/gun.cfg

Gun 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 1

Example rotations

Team Deathmatch rotation

set sv_maprotation "execgts tdm.cfg map mp_raid map mp_hijacked map mp_village map mp_express"

Free-for-all rotation

set sv_maprotation "execgts dm.cfg map mp_raid map mp_hijacked map mp_village map mp_express"

Party mode rotation

set sv_maprotation "execgts sas.cfg map mp_nuketown_2020 execgts oic.cfg map mp_hijacked execgts gun.cfg map mp_village"

Mixed mode rotation

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"

Useful map names

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

Useful game modes

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

Password-protected private server

To make the server private:

set g_password "yourpassword"

Players connect with:

connect SERVER_IP:4976; password yourpassword

Or they can enter the password from the Plutonium UI if prompted.


Running Zombies

Example:

docker compose -f examples/docker-compose.build.yml --env-file .env up -d t6zm

View logs:

docker compose -f examples/docker-compose.build.yml --env-file .env logs -f t6zm

Default Zombies port:

4977/udp

Logs

View container logs:

docker compose logs -f t6mp

View recent logs:

docker compose logs --tail=120 t6mp

Search for important server events:

docker compose logs t6mp | grep -Ei "heartbeat|sv_mapRotation|Setting map|execing|client|connected"

Resource usage

Show live container usage:

docker stats

Show only the T6 MP container:

docker stats plutonium-t6mp

One-shot output:

docker stats --no-stream plutonium-t6mp

Compact output:

docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" plutonium-t6mp

Backup

Recommended 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.


Troubleshooting

SERVER_KEY is not configured

Your .env is missing a valid server key.

Create or view server keys here:

https://platform.plutonium.pw/serverkeys

Then set:

SERVER_KEY_MP=your_real_key_here

/plutonium is empty

You did not mount your Plutonium files correctly.

Expected:

./plutonium/.../plutonium-bootstrapper-win32.exe

Missing /game/t6mp.exe

Your BO2/T6 game files are missing or mounted incorrectly.

Expected:

./game/t6mp.exe

couldn't exec dedicated.cfg

The server config file was not copied or the SERVER_CONFIG value is wrong.

Check:

ls -lha servers/t6mp-basic/

And verify:

SERVER_CONFIG=dedicated.cfg

Server starts but says not running a map

Usually 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"

Game mode does not change

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.cfg

And check logs for:

couldn't exec sas.cfg
couldn't exec oic.cfg
couldn't exec gun.cfg

Friends cannot connect from outside

Check:

docker compose ps
docker port plutonium-t6mp
sudo ufw status

Your router should forward:

4976 UDP → your server LAN IP

Your friend should connect with:

connect YOUR_PUBLIC_IP:4976

Not with your local 192.168.x.x address.


DockerHub image

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:latest

Building the image manually

docker build -t plutonium-t6-server:local ./docker

Publishing a release

Tag a version:

git tag v0.1.0
git push origin v0.1.0

A GitHub Actions workflow can build and publish the Docker image to DockerHub.


Security notes

  • Do not publish your .env
  • Do not publish server keys
  • Do not publish player IP logs
  • Use a strong rcon_password
  • Use g_password for private servers
  • Keep your server updated
  • Only expose the ports you need

Limitations

  • 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

Contributing

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

License

MIT License.

See:

LICENSE

Disclaimer

This 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.

About

Docker-based runner for Plutonium T6 / Call of Duty: Black Ops II dedicated servers.

Topics

Resources

License

Stars

Watchers

Forks

Contributors