Run a dedicated game server in Docker. One image, eleven games, configured with environment variables.
services:
my-server:
image: ghcr.io/ayymoss/plutainer:latest
ports: ["4976:4976/udp"]
volumes:
- /path/to/BO2/files:/home/plutainer/gamefiles:ro
- ./my-server:/home/plutainer/app
environment:
PLUTAINER_GAME: t6zm
PLUTAINER_CONFIG_FILE: dedicated_zm.cfg
PLUTO_SERVER_KEY: your-key-here
restart: unless-stoppeddocker compose up -d and you have a Black Ops II zombies server. Plutainer writes a working config on first start, so there is nothing to prepare beyond the game files you own.
| Game | PLUTAINER_GAME |
Notes |
|---|---|---|
| World at War (T4) | t4mp, t4sp |
Plutonium. Needs a server key |
| Black Ops (T5) | t5mp, t5sp |
Plutonium. Needs a valid server key — see why |
| Black Ops II (T6) | t6mp, t6zm |
Plutonium. Needs a server key |
| Modern Warfare 3 (IW5) | iw5mp |
Plutonium. Needs a server key |
| Modern Warfare 2 (IW4x) | iw4x |
No key. amd64 only |
| Black Ops III (T7x) | t7x |
Alterware. No key |
| Modern Warfare (CoD4x) | cod4x |
Multiplayer only, amd64 only. Needs a masterserver token to appear in the server browser |
| 7 Days to Die | 7dtd |
Native Linux server, amd64 only. Installed by SteamCMD; no gamefiles mount |
| Counter-Strike 2 | cs2 |
Source 2, amd64 only. Installed by SteamCMD; ~67 GB. Needs a GSLT to be listed |
| Left 4 Dead 2 | l4d2 |
Source engine, amd64 only. Installed by SteamCMD; no gamefiles mount |
| Half-Life 2: Deathmatch | hl2dm |
Source engine, amd64 only. Installed by SteamCMD; no gamefiles mount |
Image: ghcr.io/ayymoss/plutainer:latest — multi-arch (amd64 + arm64), with documented architecture exceptions.
| If you want to… | Read |
|---|---|
| Get a first server running | Quickstart |
| Know what your game needs | Games — files, keys, config names, ports |
| Look up an environment variable | Configuration |
| Understand where configs and logs live | Volumes & configs |
| Send RCON commands | RCON |
| Connect IW4MAdmin | IW4MAdmin |
| Know when a server counts as healthy | Healthcheck & restarts |
| Fix something that's broken | Troubleshooting & FAQ |
| Copy a working compose file | Examples |
| Upgrade from v1 | Migration guide |
- Writes a working config on first start. Community defaults are seeded into
app/configs/, and never overwrite files you've edited. - Fetches the server binaries. Plutonium, IW4x and T7x updaters run at startup; CoD4x ships in the image; the SteamCMD games install themselves. You supply base game files only for the games that need them.
- Puts every config in one folder. Edit
app/configs/whatever.cfg; Plutainer symlinks it to wherever the engine expects it. - Keeps logs findable.
app/logs/holds stable symlinks to the active log files, wherever the game moved them. - Fails loudly, not endlessly. A misconfiguration holds the container in
Upwith a readable error instead of a restart loop. - Reports real health. The healthcheck asks the server for its current map — no RCON password required.
Discord: https://discord.gg/JekrGGWAUg — for Plutainer setup and configuration, including IW4MAdmin.
Plutonium-specific game issues are out of scope, and some familiarity with Docker is assumed. New to Docker? Start at https://docs.docker.com/get-started/.
- Corey, for a production testing ground @ https://cukservers.net/
- HGM, for the name 'Plutainer' @ https://hgmserve.rs/
- The config authors credited in Games.