This is the low-cost target deployment path: Linux x86_64 VPS, Docker Engine, one container per Nuclear Option dedicated server, and the panel bound to localhost.
Use a current Debian or Ubuntu x86_64 host. Install Docker Engine and the Compose plugin from Docker's official packages.
Open only the ports you need:
- Panel: keep on
127.0.0.1:5000; expose through a reverse proxy only. - Game UDP: default
7777/udp. - Query UDP: default
7778/udp. - Command TCP: default
7779/tcp, keep local/private unless explicitly required.
cp .env.example .envEdit .env:
- set
SERVER_NAME - keep
MAX_PLAYERS=16unless you have benchmark data - set unique
GAME_PORT,QUERY_PORT, andCOMMAND_PORTper server - keep
ENABLE_COMMAND_PORT=falsefor public deployments unless admin access requires it
Build the panel and the dedicated-server image:
docker compose -f docker/compose/base.yml -f docker/compose/linux.yml buildFor a syntax/base-image check that does not download the game:
SKIP_STEAMCMD=true docker compose -f docker/compose/base.yml -f docker/compose/linux.yml build nuclear-option-serverInstall/update the game files into the persistent server volume:
docker compose -f docker/compose/base.yml -f docker/compose/linux.yml run --rm nuclear-option-server updateStart the panel:
docker compose -f docker/compose/base.yml -f docker/compose/linux.yml up -d panelStart the example game server profile:
docker compose -f docker/compose/base.yml -f docker/compose/linux.yml --profile servers up -d nuclear-option-serverThe panel is available on the VPS itself at:
http://127.0.0.1:5000
For external access, put a TLS reverse proxy in front of the panel and keep the Flask service local.
Per-server data lives under:
data/servers/<name>/
Each server gets persistent directories for server files, config, missions, bans, logs, and recordings. Server binaries are installed into the server directory by the explicit update command, not baked into the image layer.
Use these assumptions until measured on your exact host:
- 16-player server:
1 vCPUand2-3 GB RAM - above 16-20 players: plan closer to
3-5 GB RAM - host reserve: at least
1 GB RAM + 0.5 vCPU
Tune CPU and memory limits after collecting real metrics.
Run the real validation on Linux x86_64:
./scripts/validate_nuclear_option_linux_server.sh --verbose --no-cache
./scripts/validate_docker_server.sh --platform linux/amd64 --verbose --no-cache