From 4d544f6941cb6ad62c22aefb043608c3b6de880a Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Fri, 30 Jan 2026 12:05:44 -0800 Subject: [PATCH] Replace hajimari with gethomepage Hajimari has been unmaintained since 2022 with broken helm chart dependencies. Switching to gethomepage which is actively maintained (28k stars, monthly releases) and has similar k8s autodiscovery. - Remove hajimari ArgoCD app and manifests - Add homepage ArgoCD app with jameswynn helm chart - Migrate custom apps, bookmarks, and search config - Enable RBAC for k8s service autodiscovery - Configure Tailscale ingress at go.tail8d86e.ts.net Co-Authored-By: Claude Opus 4.5 --- argocd/apps/hajimari.yaml | 33 ---------- argocd/apps/homepage.yaml | 30 +++++++++ argocd/manifests/hajimari/values.yaml | 95 --------------------------- argocd/manifests/homepage/values.yaml | 95 +++++++++++++++++++++++++++ 4 files changed, 125 insertions(+), 128 deletions(-) delete mode 100644 argocd/apps/hajimari.yaml create mode 100644 argocd/apps/homepage.yaml delete mode 100644 argocd/manifests/hajimari/values.yaml create mode 100644 argocd/manifests/homepage/values.yaml diff --git a/argocd/apps/hajimari.yaml b/argocd/apps/hajimari.yaml deleted file mode 100644 index f43e42e..0000000 --- a/argocd/apps/hajimari.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# Hajimari - Service Dashboard / Start Page -# -# Using custom fork from forge.ops.eblu.me/eblume/hajimari -# Fork enables custom builds with search auto-focus, weather widget, etc. -# -# Auto-discovers k8s services via ingress annotations and displays -# custom apps for non-k8s services (Forge, Registry, NAS). -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: hajimari - namespace: argocd -spec: - project: default - sources: - # Helm chart from our fork - - repoURL: ssh://forgejo@forge.ops.eblu.me:2222/eblume/hajimari.git - targetRevision: v0.3.1-blumeops.1 - path: charts/hajimari - helm: - releaseName: hajimari - valueFiles: - - $values/argocd/manifests/hajimari/values.yaml - # Values from blumeops repo - - repoURL: ssh://forgejo@forge.ops.eblu.me:2222/eblume/blumeops.git - targetRevision: main - ref: values - destination: - server: https://kubernetes.default.svc - namespace: hajimari - syncPolicy: - syncOptions: - - CreateNamespace=true diff --git a/argocd/apps/homepage.yaml b/argocd/apps/homepage.yaml new file mode 100644 index 0000000..4521eaf --- /dev/null +++ b/argocd/apps/homepage.yaml @@ -0,0 +1,30 @@ +# Homepage - Service Dashboard / Start Page +# +# Replaced hajimari with gethomepage for active maintenance and better features. +# Auto-discovers k8s services via ingress annotations. +# +# Helm chart: https://github.com/jameswynn/helm-charts/tree/main/charts/homepage +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: homepage + namespace: argocd +spec: + project: default + sources: + - repoURL: https://jameswynn.github.io/helm-charts + chart: homepage + targetRevision: 2.1.0 + helm: + releaseName: homepage + valueFiles: + - $values/argocd/manifests/homepage/values.yaml + - repoURL: ssh://forgejo@forge.ops.eblu.me:2222/eblume/blumeops.git + targetRevision: main + ref: values + destination: + server: https://kubernetes.default.svc + namespace: homepage + syncPolicy: + syncOptions: + - CreateNamespace=true diff --git a/argocd/manifests/hajimari/values.yaml b/argocd/manifests/hajimari/values.yaml deleted file mode 100644 index ebafe6c..0000000 --- a/argocd/manifests/hajimari/values.yaml +++ /dev/null @@ -1,95 +0,0 @@ -# Hajimari values for blumeops -# Service dashboard at go.ops.eblu.me - -# Use custom image from our fork -image: - repository: registry.ops.eblu.me/blumeops/hajimari - tag: v0.3.1-blumeops.1 - -# Page settings -hajimari: - title: BlumeOps - name: Erich - defaultEnable: true - - # Display settings - showAppGroups: true - showAppUrls: false - showAppInfo: true - - # Search - default to Kagi - defaultSearchProvider: Kagi - searchProviders: - - name: Kagi - token: k - icon: simple-icons:kagi - searchUrl: https://kagi.com/search?q={query} - url: https://kagi.com - - name: Google - token: g - icon: simple-icons:google - searchUrl: https://www.google.com/search?q={query} - url: https://www.google.com - - name: DuckDuckGo - token: d - icon: simple-icons:duckduckgo - searchUrl: https://duckduckgo.com/?q={query} - url: https://duckduckgo.com - - # Discover ingresses from all namespaces - namespaceSelector: - any: true - - # Non-k8s services (hosted on indri or LAN) - customApps: - - group: Host Services - apps: - - name: Forgejo - url: https://forge.ops.eblu.me - icon: simple-icons:forgejo - info: Git forge - - name: Registry - url: https://registry.ops.eblu.me - icon: mdi:docker - info: Container registry - - name: Sifaka NAS - url: https://nas.ops.eblu.me - icon: simple-icons:synology - info: NAS dashboard - - # Useful external bookmarks - globalBookmarks: - - group: Admin - bookmarks: - - name: Tailscale Admin - url: https://login.tailscale.com/admin - - name: 1Password - url: https://my.1password.com - - name: Pulumi - url: https://app.pulumi.com/eblume/blumeops-tailnet - -# Service account for reading ingresses across namespaces -serviceAccount: - create: true - -# Tailscale Ingress - exposes at go.tail8d86e.ts.net -# Caddy will proxy go.ops.eblu.me to this -ingress: - main: - enabled: true - ingressClassName: tailscale - annotations: - hajimari.io/enable: "false" - hosts: - - host: go - paths: - - path: / - pathType: Prefix - tls: - - hosts: - - go - -# No persistence needed - config is in values.yaml -persistence: - data: - enabled: false diff --git a/argocd/manifests/homepage/values.yaml b/argocd/manifests/homepage/values.yaml new file mode 100644 index 0000000..09e9c47 --- /dev/null +++ b/argocd/manifests/homepage/values.yaml @@ -0,0 +1,95 @@ +# Homepage values for blumeops +# Service dashboard at go.ops.eblu.me + +# Enable RBAC for Kubernetes service autodiscovery +enableRbac: true + +serviceAccount: + create: true + +# Tailscale Ingress - exposes at go.tail8d86e.ts.net +# Caddy proxies go.ops.eblu.me to this +ingress: + main: + enabled: true + ingressClassName: tailscale + annotations: + gethomepage.dev/enabled: "false" + hosts: + - host: go + paths: + - path: / + pathType: Prefix + tls: + - hosts: + - go + +env: + - name: HOMEPAGE_ALLOWED_HOSTS + value: "go.tail8d86e.ts.net,go.ops.eblu.me" + +config: + # Host services (non-k8s, on indri or LAN) + services: + - Host Services: + - Forgejo: + href: https://forge.ops.eblu.me + icon: forgejo + description: Git forge + - Registry: + href: https://registry.ops.eblu.me + icon: docker + description: Container registry + - Sifaka NAS: + href: https://nas.ops.eblu.me + icon: synology + description: NAS dashboard + + # External bookmarks + bookmarks: + - Admin: + - Tailscale Admin: + - href: https://login.tailscale.com/admin + icon: tailscale + - 1Password: + - href: https://my.1password.com + icon: 1password + - Pulumi: + - href: https://app.pulumi.com/eblume/blumeops-tailnet + icon: pulumi + + # Widgets on the page + widgets: + - search: + provider: custom + url: https://kagi.com/search?q= + target: _blank + suggestionUrl: https://kagi.com/api/autosuggest?q= + - kubernetes: + cluster: + show: true + cpu: true + memory: true + showLabel: true + label: "k8s.tail8d86e.ts.net" + nodes: + show: true + cpu: true + memory: true + showLabel: true + + # Kubernetes autodiscovery + kubernetes: + mode: cluster + + # Layout and styling + settingsString: | + title: BlumeOps + headerStyle: boxed + layout: + Host Services: + style: row + columns: 3 + Admin: + style: row + columns: 3