C1: migrate homepage dashboard to ringtail k3s

Repoint the ArgoCD Application destination from minikube to ringtail and
bump the image tag to the new amd64 nix-built v1.11.0-b87f62e-nix.

Rework services.yaml for the autodiscovery shift: 11 services that
previously auto-populated via minikube Ingress annotations (ArgoCD,
Immich, Kiwix, Mealie, Miniflux, Grafana, Prometheus, Navidrome,
Paperless, TeslaMate, Transmission) become explicit static entries with
their widget configs preserved. Conversely, the ringtail services that
will now auto-populate (Frigate/NVR, Authentik, Ntfy) are removed from
the static list to avoid duplicates; Ollama becomes newly visible.

Add a Content group for Immich/Kiwix/Miniflux which previously lived
under the autodiscovered "Content" group from annotations.
This commit is contained in:
Erich Blume 2026-05-10 20:37:03 -07:00
commit be54cc3411
4 changed files with 75 additions and 14 deletions

View file

@ -14,7 +14,7 @@ spec:
targetRevision: main
path: argocd/manifests/homepage
destination:
server: https://kubernetes.default.svc
server: https://ringtail.tail8d86e.ts.net:6443
namespace: homepage
syncPolicy:
syncOptions:

View file

@ -17,7 +17,7 @@ resources:
images:
- name: registry.ops.eblu.me/blumeops/homepage
newTag: v1.11.0-e375859
newTag: v1.11.0-b87f62e-nix
configMapGenerator:
- name: homepage-config

View file

@ -1,3 +1,6 @@
# Homepage runs on ringtail (k3s) — its k8s autodiscovery only sees ringtail
# Ingresses (frigate→NVR, authentik, ntfy, ollama). Services that live on
# minikube (and indri-native) need explicit static entries here.
- Host Services:
- Forgejo:
href: https://forge.eblu.me
@ -57,10 +60,6 @@
# type: caddy
# url: http://indri.tail8d86e.ts.net:2019
- Home:
- NVR:
href: https://nvr.ops.eblu.me
icon: frigate.png
description: Network video recorder
- Jellyfin:
href: https://jellyfin.ops.eblu.me
icon: jellyfin
@ -72,15 +71,61 @@
enableBlocks: true
enableNowPlaying: false
fields: ["movies", "series", "episodes"]
- Mealie:
href: https://meals.ops.eblu.me
icon: mealie.png
description: Recipe manager
- DJ:
href: https://dj.ops.eblu.me
icon: navidrome.png
description: Music streaming server
widget:
type: navidrome
url: https://dj.ops.eblu.me
user: "{{HOMEPAGE_VAR_NAVIDROME_USER}}"
token: "{{HOMEPAGE_VAR_NAVIDROME_TOKEN}}"
salt: "{{HOMEPAGE_VAR_NAVIDROME_SALT}}"
- Paperless:
href: https://paperless.ops.eblu.me
icon: paperless-ngx.png
description: Document management
- Content:
- Immich:
href: https://photos.ops.eblu.me
icon: immich.png
description: Photo management
- Kiwix:
href: https://kiwix.ops.eblu.me
icon: kiwix.png
description: Offline Wikipedia
- Miniflux:
href: https://feed.ops.eblu.me
icon: miniflux.png
description: RSS reader
widget:
type: miniflux
url: https://feed.ops.eblu.me
key: "{{HOMEPAGE_VAR_MINIFLUX_API_KEY}}"
fields: ["unread"]
- Infrastructure:
- Authentik:
href: https://authentik.ops.eblu.me
icon: authentik
description: Identity provider
- Ntfy:
href: https://ntfy.ops.eblu.me
icon: ntfy.png
description: Push notifications
- ArgoCD:
href: https://argocd.ops.eblu.me
icon: argo-cd.png
description: GitOps CD
- Grafana:
href: https://grafana.ops.eblu.me
icon: grafana.png
description: Metrics dashboards
widget:
type: grafana
url: https://grafana.ops.eblu.me
username: "{{HOMEPAGE_VAR_GRAFANA_USERNAME}}"
password: "{{HOMEPAGE_VAR_GRAFANA_PASSWORD}}"
fields: ["dashboards", "totalalerts", "alertstriggered"]
- Prometheus:
href: https://prometheus.ops.eblu.me
icon: prometheus.png
description: Metrics storage
- Services:
# CV and Docs were previously auto-discovered from k8s Ingresses; after
# the indri-native migration ([[cv-on-indri]], [[docs-on-indri]]) there
@ -93,3 +138,11 @@
href: https://docs.eblu.me
icon: mdi-book-open-page-variant
description: BlumeOps Documentation
- TeslaMate:
href: https://tesla.ops.eblu.me
icon: teslamate.png
description: Tesla data logger
- Transmission:
href: https://torrent.ops.eblu.me
icon: transmission.png
description: Torrent client