mirror of
https://github.com/Ayymoss/Plutainer
synced 2026-08-24 14:32:06 -04:00
The README had grown to 388 lines of reference material and was reported as too difficult to follow. It is now a 72-line landing page - a working compose block, the game table, and an index - with the detail moved to whichever page owns it: docs/quickstart.md first server, start to finish docs/games.md per game: files, keys, config names, quirks docs/configuration.md environment variable reference docs/volumes-and-configs.md volume layout, config symlinks, logs docs/rcon.md passwords, rcon-cli, who may send RCON docs/iw4madmin.md sidecar setup, parsers, the whitelist trap docs/healthcheck.md what healthy means, restarts, autoheal docs/troubleshooting.md symptom-first FAQ Nothing was dropped; the length came out of duplication. The troubleshooting page is deliberately symptom-first, and every entry is a failure that actually happened - the T5 key that presents as a broken server, the CoD4x RCON password silently refused for being under 8 characters, the IW4MAdmin whitelist. Examples are split by scenario under examples/, replacing the single 228-line file: single-server, per-game (a block for all seven), multi-server, with-iw4madmin, and env.example for secrets. EXAMPLE-docker-compose.yml stays as a signpost because forum posts link to it. The IW4MAdmin example and docs now mount the log FILE rather than the app directory. Pointing IW4MAdmin at Plutainer's logs/ symlink means it silently ingests nothing: it decides whether to read by comparing the file's size, and .NET reports a symlink's size as the length of the link text, so the log never appears to grow. Mounting the file makes Docker resolve the symlink at mount time. Verified across all eleven servers. docs/ and examples/ are excluded from the build context.
3.5 KiB
3.5 KiB
Plutainer
Run a Call of Duty dedicated server in Docker. One image, seven 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-stopped
docker 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.
Supported games
| 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 |
No key. Multiplayer only, amd64 only |
Image: ghcr.io/ayymoss/plutainer:latest — multi-arch (amd64 + arm64), with two exceptions.
Documentation
| 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 |
What Plutainer does for you
- 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. You supply only the base game files.
- 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.
Support
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/.
Credits
- Corey, for a production testing ground @ https://cukservers.net/
- HGM, for the name 'Plutainer' @ https://hgmserve.rs/
- The config authors credited in Games.