Replace hajimari with gethomepage #75

Merged
eblume merged 7 commits from feature/replace-hajimari-with-homepage into main 2026-01-30 13:21:13 -08:00
4 changed files with 125 additions and 128 deletions
Showing only changes of commit 4d544f6941 - Show all commits

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 <noreply@anthropic.com>
Erich Blume 2026-01-30 12:05:44 -08:00

View file

@ -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

30
argocd/apps/homepage.yaml Normal file
View file

@ -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

View file

@ -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

View file

@ -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