og-cod-plutainer/examples/single-server.yml
Amos df24be7446
docs: split the README into task-focused pages, rework the examples
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.
2026-08-15 17:22:30 +01:00

38 lines
1.2 KiB
YAML

# One Black Ops II zombies server — the smallest thing that works.
#
# 1. Point the gamefiles path at your own copy
# 2. Put T6ZM_KEY in a .env file beside this one (see env.example)
# 3. docker compose up -d
#
# Swap the three PLUTAINER_* values to run a different game — see
# docs/games.md for the tags, config names and default ports.
services:
t6zm-1:
image: ghcr.io/ayymoss/plutainer:latest
container_name: t6zm-1
hostname: t6zm-1
restart: unless-stopped
ports:
- "4976:4976/udp"
volumes:
# Your game files. Read-only, and shareable with other servers.
- /opt/game-files/T6ServerFiles:/home/plutainer/gamefiles:ro
# Server data: configs, logs, downloaded binaries. Yours to keep.
- ./t6zm-1:/home/plutainer/app
environment:
PLUTAINER_GAME: t6zm
PLUTAINER_CONFIG_FILE: dedicated_zm.cfg
PLUTAINER_PORT: "4976"
# Plutonium titles only (t4/t5/t6/iw5). Get one at
# https://platform.plutonium.pw/serverkeys
PLUTO_SERVER_KEY: ${T6ZM_KEY}
# Optional. RCON is disabled until a password exists.
PLUTAINER_RCON_PASSWORD: ${T6ZM_RCON}
# After first start, edit ./t6zm-1/configs/dedicated_zm.cfg and restart.