Skip to content

Stratum+nimbus - #1963

Draft
HuguesDePayens wants to merge 53 commits into
CubeCoders:mainfrom
HuguesDePayens:Stratum+Nimbus
Draft

Stratum+nimbus#1963
HuguesDePayens wants to merge 53 commits into
CubeCoders:mainfrom
HuguesDePayens:Stratum+Nimbus

Conversation

@HuguesDePayens

Copy link
Copy Markdown

New pull attempt:

Description

This PR adds AMP GenericModule templates for running a multi-server Vintage Story network using Stratum and Nimbus.

The templates provide three managed services:

  • Vintage Story (Stratum + Nimbus Backend) – Runs an individual Vintage Story backend with Stratum and the Nimbus ServerMod.
  • Nimbus Proxy – Provides the public TCP/UDP endpoint and routes players between backend servers.
  • Nimbus Registry (Optional) – Provides a standalone shared registry for backend discovery, whitelist, and ban information.

The Proxy can use its embedded registry for simpler installations, while the standalone Registry template supports deployments where registry state needs to be managed separately.

Features

  • Windows and Linux support.
  • Automatic installation of the required local .NET 10 runtime.
  • Automatic retrieval of current Stratum and Nimbus GitHub releases.
  • Support for pinned Stratum and Nimbus release tags.
  • Atomic configuration rendering for Nimbus TOML files.
  • Existing shared secrets are preserved during updates.
  • Separate TCP and UDP port definitions where required.
  • Configurable Nimbus backend registration and maintenance state.
  • Configurable proxy backend map, fallback order, registry mode, status listing, whitelist restrictions, and logging.
  • Optional standalone Nimbus Registry configuration.
  • Minimal user-facing configuration focused on settings an AMP administrator is expected to manage.
  • Uses Vintage Story’s official serverconfig.json for normal server configuration.

Network layout

Players connect only to the Nimbus Proxy’s public game port. Individual Vintage Story backend ports should normally remain private and accessible only to the Proxy.

A typical deployment consists of:

  1. One Nimbus Proxy instance.
  2. One optional Nimbus Registry instance.
  3. One or more Vintage Story Stratum backend instances.
  4. A unique backend ID and private port for each backend.
  5. A shared Nimbus secret used by the Proxy, Registry, and backend instances.

Update behavior

The templates:

  • Install application-local .NET runtimes without modifying the host’s system runtime.
  • Download the appropriate Windows or Linux release archive.
  • Preserve administrator-managed configuration files during application updates.
  • Regenerate derived Nimbus TOML configuration safely.
  • Install or update the Nimbus ServerMod on each backend.
  • Use Stratum’s preparation process to obtain compatible Vintage Story server assets.

Validation performed

  • All configuration, port, update, metaconfig, and startup JSON manifests parse successfully.
  • AMP configuration and metaconfig schema validation passes.
  • Backend, Proxy, and Registry semantic validation passes.
  • Proxy and Registry TOML escaping tests pass.
  • Invalid configuration and atomic-write failure tests pass.
  • Shared-secret generation and preservation tests pass.
  • The backend configuration contains no unresolved world-settings hooks or pre-start renderers.
  • Linux renderer definitions were statically validated; runtime-level Linux renderer execution was not available in the local Windows test environment.

Notes

  • Nimbus and Stratum are third-party projects and are downloaded from their respective GitHub release pages.
  • The standalone Nimbus Registry is optional when the Proxy is configured to use its embedded registry.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants