{{template "icon_sprite"}}

Felhom Hub

Configuration

{{if eq .Flash "assets_refreshed"}}
Assets refreshed successfully from image seed.
{{end}} {{if eq .Flash "assets_error"}}
Asset refresh failed. Check server logs for details.
{{end}} {{if eq .Flash "assets_not_configured"}}
Asset manager is not configured.
{{end}} {{if eq .Flash "floor_set"}}
Controller-version floor saved.
{{end}} {{if eq .Flash "floor_invalid"}}
Invalid version — use X.Y.Z (or blank to clear).
{{end}} {{if eq .Flash "artifacts_set"}}
Artifact manifest saved.
{{end}} {{if eq .Flash "artifact_ver_invalid"}}
Invalid artifact version — use X.Y.Z (or blank to clear).
{{end}} {{if eq .Flash "artifact_sha_invalid"}}
Couldn't set the checksum — the Gitea sha lookup failed (version missing / Gitea unreachable) or the manually-entered sha is invalid. Manifest unchanged.
{{end}}

Managed updates — global floor

The minimum controller version every box auto-updates to (unless a per-customer override is set). Boxes below the floor update on their next report — no customer action. Blank = no global floor.

{{.CSRFField}} Current: {{if .GlobalFloor}}v{{.GlobalFloor}}{{else}}unset{{end}}

Day-0 artifacts — agent & golden

The current agent binary + golden archive the host-bootstrap script fetches from Gitea and verifies (sha256) before installing. The hub vouches for these checksums (a different trust root than Gitea). Pick a version — the sha256 is read from Gitea automatically (no manual copy). Choose — none — to clear an artifact.

{{.CSRFField}} {{if .AgentChoices}} {{else}} {{end}} {{if .GoldenChoices}} {{else}} {{end}}

Assets

App logos and screenshots served to controllers. Assets are seeded from the Docker image and synced to controllers daily via the asset manifest API.

Files in manifest {{.AssetCount}}
Manifest generated {{if .AssetLastSync}}{{.AssetLastSync}}{{else}}—{{end}}

Re-reads the baked-in asset seed directory and updates changed files. Controllers will pick up changes on their next daily sync or manual trigger.