Homarr dashboard as IaC (services defined in repo, not clicks) #44

Open
opened 2026-08-02 12:56:15 +00:00 by lab · 0 comments
Owner

Motivation

Reddit r/selfhosted thread ("My simple homarr dashboard") inspired: build the dashboard declaratively so services come from the repo instead of manual drag-and-drop UI.

Current state

  • Homarr deployed in homarr namespace via k3s-ha-cluster/homarr/ (Helm, OIDC via Authelia).
  • Board/apps are configured only through the web UI — nothing in the repo describes the dashboard.
  • OIDC onboarding done; user may be lab via lldap infra group.

Plan

  • Find an IaC path for Homarr apps/boards. Candidates:
    1. Homarr v0.x stores config in its DB (sqlite) — check if it exposes import/export JSON or a config.yaml seed (v1.x supports config files in /app/data/configs).
    2. Homarr v1 config files: configs/*.json mounted into the container — this is the maintainable option.
  • Define the ~10 services (mirror uptime-kuma monitor list): auth, git, beszel, jellyfin, ntfy, vaultwarden, homarr, stirlingpdf, portfolio, changedetection.
  • Keep secret (OIDC client creds) in secret.yaml, dashboard JSON in repo, document in README.

Notes

  • Value: redeploy from scratch in minutes, no click-config drift.
  • If Homarr v1 config-file support is incomplete, fall back to a documented export/import step in README and re-import manually.

Acceptance

  • git clone + helm install + apply dashboard JSON yields a working dashboard with all services.
## Motivation Reddit r/selfhosted thread ("My simple homarr dashboard") inspired: build the dashboard declaratively so services come from the repo instead of manual drag-and-drop UI. ## Current state - Homarr deployed in `homarr` namespace via `k3s-ha-cluster/homarr/` (Helm, OIDC via Authelia). - Board/apps are configured only through the web UI — nothing in the repo describes the dashboard. - OIDC onboarding done; user may be `lab` via lldap `infra` group. ## Plan - Find an IaC path for Homarr apps/boards. Candidates: 1. Homarr v0.x stores config in its DB (sqlite) — check if it exposes import/export JSON or a config.yaml seed (v1.x supports config files in /app/data/configs). 2. Homarr v1 config files: `configs/*.json` mounted into the container — this is the maintainable option. - Define the ~10 services (mirror uptime-kuma monitor list): auth, git, beszel, jellyfin, ntfy, vaultwarden, homarr, stirlingpdf, portfolio, changedetection. - Keep secret (OIDC client creds) in `secret.yaml`, dashboard JSON in repo, document in README. ## Notes - Value: redeploy from scratch in minutes, no click-config drift. - If Homarr v1 config-file support is incomplete, fall back to a documented export/import step in README and re-import manually. ## Acceptance - `git clone` + `helm install` + apply dashboard JSON yields a working dashboard with all services.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lab/homelab#44
No description provided.