Skip to content

Homepage

The dashboard at https://home.lab.fobiat.dev, Tailscale or LAN only. It is the front door: whatever is worth reaching from here should show up on it automatically.

How services show up

Homepage discovers services from the Kubernetes API rather than a hand-maintained list (config.kubernetes: {mode: cluster, gateway: true} in the HelmRelease, backed by enableRbac: true and its own ServiceAccount). An app appears once its HTTPRoute carries the right annotations:

metadata:
  annotations:
    gethomepage.dev/enabled: "true"
    gethomepage.dev/name: Grafana
    gethomepage.dev/description: Dashboards and metrics explorer
    gethomepage.dev/group: Cluster
    gethomepage.dev/icon: grafana.png

Add those four keys to an app's own httproute.yaml and it shows up on the next Homepage reconcile, no edit to the Homepage HelmRelease itself. See any of Grafana's, Gatus's or Headlamp's httproute.yaml for a working example.

The gotcha that cost a follow-up PR

config.services must be [], not absent. The chart ships its own sample services.yaml and falls back to it whenever the key is missing entirely, so leaving it out (rather than emptying it) renders three "My First/Second/Third Service" demo entries alongside the real ones. Neither flux-local diff nor task lint catches this, since the manifest is valid either way; it only shows up by checking the running pod (kubectl -n default exec deploy/homepage -- wget -qO- http://127.0.0.1:3000/api/services). bookmarks: [] in the same config was already written the empty-list way, which is exactly why bookmarks never showed samples and services briefly did.

Verifying after a change

A merged PR touching an HTTPRoute's annotations or the Homepage HelmRelease does not mean the dashboard has actually updated: Flux's per-app Kustomization reconciles on its own interval, independent of the git source being current. Force it and check the result, don't assume from the diff:

flux reconcile kustomization homepage --with-source
kubectl -n default exec deploy/homepage -- wget -qO- http://127.0.0.1:3000/api/services