No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-12 01:08:08 +01:00
examples/blueprints Aligning colour options as whats available in nexus and gameops 2026-08-12 01:08:08 +01:00
web Aligning colour options as whats available in nexus and gameops 2026-08-12 01:08:08 +01:00
blueprint.schema.json Aligning colour options as whats available in nexus and gameops 2026-08-12 01:08:08 +01:00
README.md Aligning colour options as whats available in nexus and gameops 2026-08-12 01:08:08 +01:00
VERSION Aligning colour options as whats available in nexus and gameops 2026-08-12 01:08:08 +01:00

GameOps Blueprint Builder

The Blueprint Builder is the configuration stage for a GameOps dashboard. It asks how an existing game server is run, updated, observed, and published, then downloads a reviewable *.blueprint.json file.

It does not connect to the game server, run commands, or install the dashboard. After reviewing the downloaded file, give it to the separate GameOps Host Dashboard installer on the game server.

Companion project

The generated blueprint is installed by the GameOps Host Dashboard. Keep the two repositories separate: this project creates configuration, while the Host Dashboard validates it and manages the operational services.

Use the builder

Publish the contents of web/ with any static HTTPS server, or run it locally:

python3 -m http.server 8080 --directory web

Open http://127.0.0.1:8080/, complete the sections, and select Download manifest. Draft answers stay in the current browser's local storage.

The builder cannot confirm that a Linux account, path, service, container, certificate, or telemetry endpoint exists. The host installer validates the blueprint against the actual server.

For games that implement the Steam A2S query protocol, choose Steam A2S (UDP) and enter the game's documented local query port. A2S uses UDP, but its port is game-specific: it may be separate from or shared with the gameplay port, so do not assume game port + 1.

The supplied Valheim example uses game port 2456 and A2S query port 2457. Confirm that example against the local ports reported by LinuxGSM. Steam queries may be unavailable when Valheim is started with -crossplay; in that case choose a real HTTP JSON status service or leave player totals unavailable. Runtime uptime does not require telemetry: the Host Dashboard derives LinuxGSM uptime from the explicitly configured named tmux session through a fast local process probe.

Choose a dashboard board

The Dashboard board step changes both the interface and the host integration that will be installed. The live preview changes with the selection and the questionnaire shows only that board's host settings.

  • GameOps works with systemd, LinuxGSM, Compose, a named container, a fixed GNU screen session, or fixed executable argument arrays. It is the correct choice for Valheim and for any game without a dedicated profile.
  • Vana'diel Operations requires a LandSandBoat Docker Compose stack with services named exactly database, connect, search, world, and map, plus the expected MariaDB character/session schema.
  • Palworld Operations requires a Palworld server controlled by GNU screen or systemd. Its richer metrics and graceful save/warning flow require the local Palworld REST API.
  • Minecraft Server Dashboard requires Minecraft Java Edition Vanilla under systemd. Its installer adopts the selected unit, protects RCON credentials, and manages the official Mojang stable-release update workflow. Do not use it for Paper, Fabric, Forge, or a modpack without first adapting that profile.

Tailored profiles are deliberately game-locked. Their profile acknowledgement means the listed runtime, data model, and private API requirements were reviewed; it is not a compatibility override. Every tailored board also requires edge.fail2ban: true and a working fail2ban installation on the host; its installer does not support --no-fail2ban.

Only the universal GameOps board supports appearance settings. Its blueprint can seed an allowlisted preset, colours, density, and corner style. After deployment, an authenticated operator can change the shared appearance or reset it to that seed, upload bounded PNG/JPEG background artwork, and accept or edit locally suggested colours. With HTTP JSON telemetry it can also map up to eight fixed-format text widgets. The LinuxGSM updater gives an existing LinuxGSM server installed-build reporting, a Steam public-build check, and its native update action without custom helper scripts. SteamCMD or paired advanced custom reporting commands cover other servers. Selecting No updates omits the maintenance section from the deployed dashboard. Tailored boards keep their native game-specific design and do not use the universal appearance editor.

The first two appearance choices are the shared product foundations: GameOps appearance and Nexus appearance. New manifests use gameops or nexus; the older violet identifier remains accepted as a compatibility alias for nexus.

Next step

Copy the downloaded JSON file to the game host and run the Host Dashboard installer:

sudo ./install.sh --blueprint my-game.blueprint.json

For a tailored board, include the acknowledgement printed by the Builder:

sudo ./install.sh \
  --blueprint palworld.blueprint.json \
  --confirm-tailored-profile palworld

The installer collects the dashboard password separately. The Palworld profile can also read its REST/AdminPassword from a root-readable --game-secret-file; Minecraft creates and protects its RCON credential, and FFXI reads its existing database container environment. Passwords, API tokens, RCON credentials, and private keys never belong in the downloaded JSON.

The host package README documents TLS paths, Apache/Nginx, authentication, upgrades, removal, and all supported adapters.

Blueprint safety

Treat the generated JSON as system configuration. Review every account, path, service, container, executable, argument, URL, and allowed action before it is installed. Do not put passwords, API tokens, RCON secrets, or private keys in a blueprint.