Saltar a contenido

Homepage

Dashboard de enlaces a todos los servicios del homelab, con SSO OIDC.

Resumen

Página de inicio con enlaces (~25) a los servicios internos y externos. Sustituye a Heimdall (retirado). La config vive íntegra en YAML en Git (settings.yaml, services.yaml, bookmarks.yaml, widgets.yaml), montada de solo lectura, por lo que no hay editor web: se edita por commit. El acceso es por SSO OIDC contra Authentik (grupos familia y admins).

Estado

Campo Valor
Estado Operativo
Argo CD Application homepage
Namespace homepage

Despliegue

Campo Valor
Método manifests planos (imagen gethomepage)
Chart / imagen ghcr.io/gethomepage/homepage:v2.4.0
Origen ghcr.io/gethomepage/homepage
Config en el repo clusters/luka/apps/homepage/ y clusters/luka/config/homepage/

Red

Campo Valor
Service homepage (ClusterIP)
IP —
URL interna https://homepage.local.gorkarevilla.com
URL externa https://homepage.gorkarevilla.com (túnel cloudflared homelab)
TLS cert-manager wildcard *.local.gorkarevilla.com (LAN) / Cloudflare edge (externo)

Acceso y usuarios

  • Usuarios/roles: SSO OIDC contra Authentik. Acceso a los grupos familia (usuarios) y admins (administradores). Homepage no distingue roles en la app (OIDC binario): la "administración" es editar el YAML en Git (solo quien tiene acceso al repo).
  • Credenciales: Secret VKS homepage-oidc (ns homepage) con HOMEPAGE_OIDC_CLIENT_SECRET y HOMEPAGE_AUTH_SECRET. Nunca en claro aquí.

Configuración

  • Auth OIDC por env: HOMEPAGE_AUTH_ENABLED, HOMEPAGE_ALLOWED_HOSTS (homepage.gorkarevilla.com,homepage.local.gorkarevilla.com — obligatorio, sin él Homepage responde Host validation failed), HOMEPAGE_EXTERNAL_URL, HOMEPAGE_OIDC_ISSUER, HOMEPAGE_OIDC_CLIENT_ID (homepage), HOMEPAGE_OIDC_NAME (Authentik); secret por secretKeyRef a homepage-oidc.
  • Config montada desde el ConfigMap homepage-config en solo lectura (readOnly: true) → el editor web queda desactivado en la práctica. Ojo: hay que incluir todos los skeleton files (kubernetes.yaml, docker.yaml, proxmox.yaml, custom.css, custom.js) en el ConfigMap, porque Homepage los copia a /app/config si no existen y, en solo lectura, falla con EROFS (crash-loop).
  • LOG_TARGETS=stdout (evita escribir en /app/config/logs, de solo lectura).
  • replicas: 1 + strategy: Recreate.

Almacenamiento

  • — (sin PVC). La config vive en el ConfigMap homepage-config (Git), no en un volumen escribible.

Dependencias

  • Depende de: Authentik (OIDC), Traefik, cert-manager, cloudflared (externo).
  • Usado por: — (agregador de enlaces).

Backup y recuperación

  • Re-desplegable desde Git (config en YAML versionada). Sin backup específico.

Monitorización

  • Homepage no expone métricas Prometheus nativas (sin ServiceMonitor).

Referencias

  • https://gethomepage.dev/
  • https://github.com/gethomepage/homepage
  • https://hub.docker.com/r/gethomepage/homepage

Notas / TODO

  • Deuda técnica (SSO .local): el OIDC es externo-canonical (HOMEPAGE_EXTERNAL_URL y HOMEPAGE_OIDC_ISSUER apuntan a *.gorkarevilla.com), así que el acceso .local redirige a auth.gorkarevilla.com (externo) para el login: el fallback .local no permite SSO sin internet. A futuro: dos instancias (OIDC externo + password interno) o auth por password en .local.
  • Añadir iconos a los enlaces (Dashboard Icons de Homepage).
  • Widgets de estado (Docker/Proxmox/disco) en widgets.yaml (fase posterior).
  • Revisar los enlaces marcados como legacy (Portainer, Nginx Proxy Manager, Netboot.xyz) al migrar esos servicios.