From 8c6f2386974ed71252975ae2d5f18a5413739a37 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Wed, 25 Mar 2026 11:00:38 +0200 Subject: [PATCH] add default Homepage annotations to ingress_factory for auto-discovery - ingress_factory now injects gethomepage.dev/* annotations on all ingresses (name, group, href, icon) with namespace-to-group mapping - Stacks with explicit annotations override defaults via merge order - New homepage_enabled var allows opt-out for internal-only ingresses - Homepage search widget switched to in-page quicklaunch (Ctrl+K / tap) - Added hideErrors and quicklaunch settings for clean service directory - Result: 116/134 ingresses now discoverable (up from ~30) --- modules/kubernetes/ingress_factory/main.tf | 52 +++++++++++++++++++++- stacks/homepage/values.yaml | 9 +++- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/modules/kubernetes/ingress_factory/main.tf b/modules/kubernetes/ingress_factory/main.tf index f90408e9..f688a549 100644 --- a/modules/kubernetes/ingress_factory/main.tf +++ b/modules/kubernetes/ingress_factory/main.tf @@ -76,8 +76,58 @@ variable "anti_ai_scraping" { default = true } +variable "homepage_group" { + type = string + default = null # auto-detect from namespace +} + +variable "homepage_enabled" { + type = bool + default = true +} + locals { effective_host = var.full_host != null ? var.full_host : "${var.host != null ? var.host : var.name}.${var.root_domain}" + + ns_to_group = { + monitoring = "Infrastructure" + prometheus = "Infrastructure" + technitium = "Infrastructure" + traefik = "Infrastructure" + metallb-system = "Infrastructure" + kyverno = "Infrastructure" + authentik = "Identity & Security" + crowdsec = "Identity & Security" + woodpecker = "Development & CI" + forgejo = "Development & CI" + immich = "Media & Entertainment" + frigate = "Smart Home" + home-assistant = "Smart Home" + ollama = "AI & Data" + dbaas = "Infrastructure" + servarr = "Media & Entertainment" + navidrome = "Media & Entertainment" + nextcloud = "Productivity" + n8n = "Automation" + changedetection = "Automation" + finance = "Finance & Personal" + homepage = "Core Platform" + reverse-proxy = "Smart Home" + mailserver = "Infrastructure" + } + + homepage_group = coalesce( + var.homepage_group, + lookup(local.ns_to_group, var.namespace, "Other") + ) + + homepage_defaults = var.homepage_enabled ? { + "gethomepage.dev/enabled" = "true" + "gethomepage.dev/name" = replace(replace(var.name, "-", " "), "_", " ") + "gethomepage.dev/group" = local.homepage_group + "gethomepage.dev/href" = "https://${local.effective_host}" + "gethomepage.dev/icon" = "${replace(var.name, "-", "")}.png" + } : {} } @@ -126,7 +176,7 @@ resource "kubernetes_ingress_v1" "proxied-ingress" { var.custom_content_security_policy != null ? "${var.namespace}-custom-csp-${var.name}@kubernetescrd" : null, ], var.extra_middlewares))) "traefik.ingress.kubernetes.io/router.entrypoints" = "websecure" - }, var.extra_annotations) + }, local.homepage_defaults, var.extra_annotations) } spec { diff --git a/stacks/homepage/values.yaml b/stacks/homepage/values.yaml index d424e001..dc51033d 100644 --- a/stacks/homepage/values.yaml +++ b/stacks/homepage/values.yaml @@ -42,7 +42,8 @@ config: cpu: true memory: true - search: - provider: duckduckgo + provider: [] + focus: true target: _blank - kubernetes: cluster: @@ -60,6 +61,12 @@ config: mode: cluster docker: settings: + hideErrors: true + quicklaunch: + searchDescriptions: true + hideInternetSearch: true + showSearchSuggestions: true + hideVisitURL: false layout: Core Platform: style: row