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.