{{template "icon_sprite"}}

Felhom Hub

Offsite

{{if eq .Flash "endpoint_saved"}}
Endpoint saved.
{{end}} {{if eq .Flash "endpoint_deleted"}}
Endpoint deleted.
{{end}}

Offsite pool box

{{if not .OffsiteBox.Configured}}

Offsite pool metrics not configured (no Hetzner token / pool box id on this hub).

{{else if .OffsiteBox.Pending}}

Pool metrics loading — the first refresh has not landed yet.

{{else}}
Box{{.OffsiteBox.BoxType}}
Capacity{{.OffsiteBox.CapacityStr}}
Used{{.OffsiteBox.UsedStr}} · {{formatFloat .OffsiteBox.FillPercent}}% full (data {{.OffsiteBox.DataStr}} + snapshots {{.OffsiteBox.SnapshotStr}})
Σ shared soft quotas{{.OffsiteBox.SumQuotaStr}}
Oversubscription{{.OffsiteBox.RatioStr}} Σ(shared quotas) ÷ capacity
Fetched{{timeAgo .OffsiteBox.FetchedAt}}{{if .OffsiteBox.Degraded}} STALE — last refresh failed{{end}}
{{if .OffsiteCusts}}

Per-customer usage

{{range .OffsiteCusts}} {{end}}
CustomerUsageQuota
{{.CustomerName}}{{if .Dedicated}} (dedicated){{end}} {{if .NoUsage}}no usage reported yet{{else}}{{.UsageStr}}{{end}} {{if .Dedicated}}dedicated{{else if .QuotaStr}}{{.QuotaStr}}{{else}}{{end}} {{if .HasBar}}
{{end}}
{{end}} {{end}}

PBS DR datastore

{{if not .PBSBox.Configured}}

PBS DR metrics not configured (no offsite endpoint / tenantsync key on this hub).

{{else if .PBSBox.Pending}}

PBS DR metrics loading — the first poll has not landed yet.

{{else if .PBSBox.Unavailable}}

PBS DR usage not available — the endpoint script update (felhom-tenantsync v1.2.0) is pending. The gauge lights up on the next poll once ep0 is updated (no hub redeploy).

{{else if .PBSBox.HasFill}}
Datastorefelhom-offsite (ep0)
Capacity{{.PBSBox.CapacityStr}}
Used{{.PBSBox.UsedStr}} · {{formatFloat .PBSBox.FillPercent}}% full
Polled{{timeAgo .PBSBox.FetchedAt}}{{if .PBSBox.Degraded}} STALE — last poll failed{{end}}
{{else}}

PBS DR usage temporarily unavailable (endpoint poll failed).

{{end}}

The endpoint below IS the PBS DR host. Peer allocation and endpoint sync currently use the lowest endpoint id (ep0); per-endpoint allocation is a future work item.

{{if .HasEndpoints}} {{range .Endpoints}}

Endpoint {{.EndpointID}}

Address{{.DNSName}}:{{.WGPort}} (WireGuard, UDP)
Server public key{{.ServerPubkeyShort}}
Tunnel subnet{{.TunnelSubnet}}
PBS tunnel address{{.PBSTunnelIP}}:8007
Peers in subnet{{.PeerCount}}
{{end}} {{else}}

Endpoint

Not configured. Add one below (or via PUT /api/v1/admin/wg/endpoint, runbook: offsite-endpoint.md).

{{end}}

Add endpoint

{{if .Peers}}
{{range .Peers}} {{end}}
Public key Assigned IP Endpoint Host Note Created
{{.PubkeyShort}} {{.AssignedIP}} {{if .EndpointID}}{{.EndpointID}}{{else}}—{{end}} {{if .HostID}}{{.HostID}}{{else}}—{{end}} {{if .Note}}{{.Note}}{{else}}—{{end}} {{.CreatedAt}}
{{else}}

No WireGuard peers registered.

A peer appears here when a box registers via POST /hosts/<id>/wg or the operator adds one via the admin API.

{{end}}