## Summary - Add greeting and datetime info widgets to homepage header - Add Miniflux widget showing unread/read counts (via existing API key in 1Password) - Add Grafana widget showing dashboards/datasources/alerts (via existing credentials in 1Password) - Add ArgoCD to bookmarks section - Add TODO comments for widgets needing additional setup (Forgejo, Caddy, UniFi, Glances, Navidrome, Transmission, Immich) ## Deployment and Testing - [ ] Sync homepage app to deploy new ExternalSecrets - [ ] Verify greeting and datetime appear in header - [ ] Verify Miniflux widget shows unread/read counts - [ ] Verify Grafana widget shows dashboard stats - [ ] Check that services without credentials still display (just without widgets) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/81
216 lines
6 KiB
YAML
216 lines
6 KiB
YAML
# 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"
|
|
# Weather widget
|
|
- name: HOMEPAGE_VAR_OPENWEATHERMAP_API_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: homepage-openweathermap
|
|
key: apikey
|
|
# Jellyfin widget
|
|
- name: HOMEPAGE_VAR_JELLYFIN_API_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: homepage-jellyfin
|
|
key: apikey
|
|
# Miniflux widget
|
|
- name: HOMEPAGE_VAR_MINIFLUX_API_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: homepage-miniflux
|
|
key: apikey
|
|
# Grafana widget
|
|
- name: HOMEPAGE_VAR_GRAFANA_USERNAME
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: homepage-grafana
|
|
key: username
|
|
- name: HOMEPAGE_VAR_GRAFANA_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: homepage-grafana
|
|
key: password
|
|
# Forgejo widget
|
|
- name: HOMEPAGE_VAR_FORGEJO_API_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: homepage-forgejo
|
|
key: apikey
|
|
# Navidrome widget
|
|
- name: HOMEPAGE_VAR_NAVIDROME_USER
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: homepage-navidrome
|
|
key: user
|
|
- name: HOMEPAGE_VAR_NAVIDROME_SALT
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: homepage-navidrome
|
|
key: salt
|
|
- name: HOMEPAGE_VAR_NAVIDROME_TOKEN
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: homepage-navidrome
|
|
key: token
|
|
|
|
config:
|
|
# Host services (non-k8s, on indri or LAN)
|
|
services:
|
|
- Host Services:
|
|
- Forgejo:
|
|
href: https://forge.ops.eblu.me
|
|
icon: forgejo
|
|
description: Git forge
|
|
widget:
|
|
type: gitea
|
|
url: https://forge.ops.eblu.me
|
|
key: "{{HOMEPAGE_VAR_FORGEJO_API_KEY}}"
|
|
- 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
|
|
widget:
|
|
type: prometheusmetric
|
|
url: https://prometheus.ops.eblu.me
|
|
metrics:
|
|
- label: Used
|
|
query: node_filesystem_size_bytes{mountpoint="/Volumes/backups"} - node_filesystem_avail_bytes{mountpoint="/Volumes/backups"}
|
|
format:
|
|
type: bytes
|
|
- label: Total
|
|
query: node_filesystem_size_bytes{mountpoint="/Volumes/backups"}
|
|
format:
|
|
type: bytes
|
|
- Borgmatic:
|
|
href: https://grafana.ops.eblu.me/d/borgmatic
|
|
icon: borgmatic
|
|
description: Backup system
|
|
widget:
|
|
type: prometheusmetric
|
|
url: https://prometheus.ops.eblu.me
|
|
metrics:
|
|
- label: Last backup
|
|
query: time() - borgmatic_last_archive_timestamp
|
|
format:
|
|
type: duration
|
|
- label: Archive size
|
|
query: borgmatic_repo_deduplicated_size_bytes
|
|
format:
|
|
type: bytes
|
|
- Jellyfin:
|
|
href: https://jellyfin.ops.eblu.me
|
|
icon: jellyfin
|
|
description: Media server
|
|
widget:
|
|
type: jellyfin
|
|
url: https://jellyfin.ops.eblu.me
|
|
key: "{{HOMEPAGE_VAR_JELLYFIN_API_KEY}}"
|
|
enableBlocks: true
|
|
enableNowPlaying: true
|
|
# TODO: Add Caddy widget when admin API is enabled (currently admin off)
|
|
# - Caddy:
|
|
# href: https://indri.tail8d86e.ts.net
|
|
# icon: caddy
|
|
# description: Reverse proxy
|
|
# widget:
|
|
# type: caddy
|
|
# url: http://indri.tail8d86e.ts.net:2019
|
|
|
|
# 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
|
|
- ArgoCD:
|
|
- href: https://argocd.ops.eblu.me
|
|
icon: argocd
|
|
|
|
# Widgets on the page (info bar at top)
|
|
widgets:
|
|
- greeting:
|
|
text_size: xl
|
|
text: Welcome to Blue Mops
|
|
- datetime:
|
|
text_size: lg
|
|
format:
|
|
dateStyle: long
|
|
timeStyle: short
|
|
hour12: true
|
|
- openweathermap:
|
|
label: Camano
|
|
latitude: 48.18235
|
|
longitude: -122.52590
|
|
units: imperial
|
|
provider: openweathermap
|
|
apiKey: "{{HOMEPAGE_VAR_OPENWEATHERMAP_API_KEY}}"
|
|
cache: 15
|
|
# TODO: Add UniFi widget when controller is set up
|
|
# - unifi_console:
|
|
# url: https://192.168.1.1
|
|
# username: homepage
|
|
# password: "{{HOMEPAGE_VAR_UNIFI_PASSWORD}}"
|
|
# TODO: Add Glances widget when Glances is deployed
|
|
# - glances:
|
|
# url: http://indri.tail8d86e.ts.net:61208
|
|
# metric: cpu
|
|
|
|
# Kubernetes autodiscovery
|
|
kubernetes:
|
|
mode: cluster
|
|
|
|
# Layout and styling
|
|
settingsString: |
|
|
title: BlumeOps
|
|
headerStyle: boxed
|
|
quicklaunch:
|
|
searchDescriptions: true
|
|
showSearchSuggestions: true
|
|
provider: custom
|
|
url: https://kagi.com/search?q=
|
|
suggestionUrl: https://kagisuggest.com/api/autosuggest?q=
|
|
layout:
|
|
Host Services:
|
|
style: column
|
|
Apps:
|
|
style: column
|
|
Observability:
|
|
style: column
|
|
Infrastructure:
|
|
style: column
|