Skip to content

Latest commit

 

History

History
149 lines (107 loc) · 12.6 KB

File metadata and controls

149 lines (107 loc) · 12.6 KB

PastureStack Server

Server assembles the compatible control-platform runtime, orchestration engine, web console, node agent, authentication, proxy, catalog, and database components into a deployable source package.

PastureStack is an independent community effort to preserve, audit, and modernize the Rancher 1.6 ecosystem. It is not affiliated with or endorsed by Rancher Labs or SUSE.

Upstream: rancher/rancher. This GitHub fork preserves upstream history, authorship, dates, tags, licenses, and copyright notices. PastureStack maintenance is consolidated into one commit after the preserved upstream boundary.

Project status

This is a compatibility-focused modernization project. Existing Ubuntu 26.04, Java 25, MariaDB, modern Docker, non-root runtime, artifact-integrity, authentication, WebSocket, backup/restore, and test work is retained. Server v1.6.356 combines Orchestration Engine 0.183.281, Node Agent 0.13.22, Authentication Service 0.4.35, and the reviewed Ember 6.12 LTS Web Console 1.6.69.

Authoritative host-port and volume preflight protects create and upgrade operations without weakening project ownership checks. Managed-network checks cover every eligible host in the environment, while bridge and host-network checks remain scoped to the selected host. Stopped owners produce an explicit warning and unknown live-inspection state is never reported as safe. The runtime registers the complete volume-preflight schema set and rejects an image that cannot resolve the live action schemas.

The Web Console keeps storage pagination, selected-volume removal, direct host container routes, relationship refresh, natural sorting, column selection, search, and live statistics synchronized. It also retains readable WCAG AA Catalog documentation, reactive Catalog upgrade versions, localized questions, writable OpenID Connect configuration, broker-aware terminal recovery, single-owner project WebSocket reconnect, API Explorer 1.1.15, administrator-controlled MFA, and all 13 reviewed production locales. SMTP is configured once per installation; individual accounts store only their own verified recovery address. Passing compatibility gates does not by itself make a deployment production-ready.

The embedded MariaDB configuration keeps the established transaction behavior by disabling MariaDB 11.8 snapshot isolation. This avoids error 1020 during concurrent system-stack creation while retaining the control platform's own optimistic locking and retry logic. External MariaDB deployments must use the same compatibility setting.

GitHub distribution model

PastureStack is designed not to require operators to host a separate download site, container registry, or catalog server. Reviewed container images are published through the public GitHub Container Registry and operational references use semantic version tags. Digests remain release-verification evidence and are never written into Catalog, Compose, API, or web-console image fields. Versioned binary and web assets are published as flat attachments to the matching PastureStack/server GitHub Release. Catalog templates are read directly from the public PastureStack/catalog-templates Git repository and must be verified against a full pinned commit SHA.

Catalog stack definitions, their documentation, and referenced public images must remain usable directly from GitHub and GHCR. Catalog entries pin images by semantic version tag and may not require an operator-maintained HTTP mirror, GitHub Pages site, catalog service, or private registry. GitHub Release assets are reserved for immutable Runtime payloads; the catalog itself remains a commit-pinned Git source so stack discovery and version history stay auditable.

Version coordinates are available only when the matching GitHub Release and public GHCR package both exist. Each release is held until its assets, checksums, SBOM, license records, anonymous downloads, and isolated-VM gates pass.

Server v1.6.356 registers the complete live volume-preflight schema model and preserves the project-scoped authorization required by driver-aware volume configuration, accessible path completion, and an authoritative volumepreflight check. The server validates container and service create or upgrade requests again at save time, including storage-driver state, host coverage, existing volume ownership, and the pasturestack-nfs environment-wide multiHostRW contract. The Web Console keeps at most eight naturally sorted path suggestions and combines port and volume checks with deterministic status precedence.

The Web Console formats schema-validation field names without legacy String prototype extensions, so a missing localized field label cannot leave a container or service form stuck in the saving state.

Web Console 1.6.69 gives the loading overlay a deterministic lifecycle and a distinct rectangular PastureStack stack-panel loading state. Only the newest route transition may change its state; successful, rejected, aborted, and overlapping transitions release it safely, with a 30-second watchdog as a final recovery path. The retired grass, celestial-body, and orbit scene is rejected by the packaged image gate. Reduced-motion mode retains a low-displacement layer pulse and progress-colour cycle instead of leaving the overlay visually frozen.

Authentication Service 0.4.35 is installed from its checksum-verified public release without replacing the established launch wrapper. The packaged image requires the reviewed archive digest, extracted-binary digest, exact source commit, static binary, and exact version output before publication.

The embedded Catalog snapshot is pinned to commit bc446236c16f1170eb9130b4901af3d57dd82db4. It retains prior immutable template revisions and adds Resource Scheduler v0.8.16 as a new revision, using only the public semantic-version GHCR coordinate.

The Create button remains disabled during an ordinary live volume check. If a same-tick recheck races with a click, it no longer becomes a stale client-side error; the create or upgrade request proceeds to the authoritative server-side volume and storage-driver validation.

Quick start

The versioned image is public and does not require a registry login:

docker run -d --name pasturestack-server --restart unless-stopped -p 8080:8080 ghcr.io/pasturestack/server:v1.6.356

Keep operational image references in semantic vMAJOR.MINOR.PATCH form. The matching GitHub Release records the resolved digest for verification without exposing digest-qualified strings to the platform UI. Persistent database and platform state use the image-declared Docker volumes; manage or bind those volumes explicitly before relying on the container for durable workloads.

Existing databases can retain old image, download, and Catalog coordinates even when the new image contains correct defaults. Audit and migrate only the reviewed allowlist with scripts/migrate-approved-runtime-coordinates.sh after first restoring the latest database into an isolated environment. The default action is read-only; apply and rollback require --yes and use a checksum-protected rollback bundle. See the upgrade and persisted-coordinate migration guide.

The versioned Windows node-agent ZIP is an artifact candidate only. Windows host support remains unavailable until its replacement bootstrap runtime and privileged Windows VM validation have passed; artifact validation alone must not be represented as working Windows host support.

The machine-management dependency is supplied by the independently maintained PastureStack/machine-driver-bundle artifact. Its two licensed upstream executables, full license texts, source coordinates, deterministic archive, and provider-plugin handshake are verified before assembly. Real provider provisioning, deletion, upgrade, and rollback remain release gates.

The vSphere command-line dependency is supplied by the independently maintained PastureStack/vsphere-cli-bundle artifact. The current recipe builds govc 0.55.1-pasturestack.1 from the exact Apache-2.0 upstream commit with Go 1.26.5 and golang.org/x/text 0.39.0, verifies the injected version metadata, and carries complete source and license records. Offline command checks do not prove authenticated vSphere inventory, clone, power, delete, upgrade, rollback, or failure recovery; those remain isolated-VM release gates.

Secret encryption and rewrap operations are supplied by the PastureStack/secret-delivery-api GitHub fork. The artifact preserves the official v0.2.2 history, carries complete Apache-2.0 and third-party license text, rejects malformed keys and path-like key names, and passes a loopback local-key API smoke test. Server installs the neutral executable and exposes the historical secrets-api filename only as an internal compatibility symlink; database key continuity, restart persistence, backup restore, and Vault integration remain isolated-VM release gates.

Optional aggregate usage reporting is supplied by the true fork PastureStack/usage-telemetry-agent. The standard-library-only artifact carries its Apache-2.0, source, third-party, and privacy records; Server verifies both archive and executable digests, installs the neutral executable, and retains telemetry only as an internal launcher symlink. Publishing is disabled without a new explicit HTTPS target and never inherits the retired destination.

Webhook-driven service scaling, host scaling, service upgrades, and controlled forwarding are supplied by the true fork PastureStack/webhook-automation-service. Server verifies the deterministic archive and static executable digests, installs the neutral executable, moves its license and source records into the PastureStack license tree, and retains the historical filename only as an internal compatibility link. The launcher no longer exposes the control-plane private key to this child process.

Metrics mapping uses the unchanged official Prometheus Graphite Exporter v0.2.0 Linux AMD64 release asset. Server pins the archive, executable, source commit, license, and notice digests; installs the executable from the official archive layout; and retains its Apache-2.0 license and notice under /usr/share/licenses/graphite-exporter. PastureStack does not claim authorship of this external component.

Process supervision uses the unchanged official s6-overlay v1.19.1.1 AMD64 release asset. The build pins its archive digest and source commit, validates the required init and supervision entries, and carries the upstream ISC license in the Runtime license bundle. The public filename adds only a version suffix; the archive bytes remain identical to the upstream GitHub Release asset.

Binary-only compatibility archives are accompanied by the deterministic pasturestack-runtime-licenses-1.6.278.tar.xz release asset. It maps every flat Runtime asset to an exact public source commit, preserves tracked license, notice, patent, privacy, and origin files, includes legal files already embedded in archives, and carries its own internal checksum list. The Server image verifies and installs this bundle under /usr/share/licenses/pasturestack-runtime.

Automatic CI/CD triggers remain disabled. Release preparation and publication use manually dispatched, gated GitHub workflows so public runners carry the build load without running on every push. Publication is not a production-readiness claim.

Build and validation

The repository is a packaging layer. Build inputs must be pinned to reviewed source commits and verified artifacts. Run source and shell checks locally before any container build:

bash scripts/test
bash scripts/check-server-source-gates.sh

Full startup, database migration, node registration, web console, backup/restore, upgrade, and rollback checks require isolated VMs. See COMPATIBILITY.md, SECURITY.md, and ORIGIN.md.

Language support

The assembled web console provides English, German, Persian, Filipino, French, Hungarian, Japanese, Korean, Brazilian Portuguese, Russian, Ukrainian, Simplified Chinese, and Traditional Chinese for Taiwan. The console owns its complete message contract, regional date formatting, and right-to-left layout.

New server bootstrap messages use PASTURESTACK_LOCALE=en-US or zh-TW; protocol fields, persisted identifiers, and third-party output are not translated.

License and attribution

The inherited project remains licensed under Apache License 2.0, with additional attribution in COPYRIGHT_DETAILS.md. Bundled components retain their own licenses and notices. PastureStack contributors claim authorship only for their own changes.