Homepage (gethomepage) — dashboard de servicios, en vm-playground
Instancia self-hosted de gethomepage
(ghcr.io/gethomepage/homepage), un dashboard de enlaces a todos los servicios de la
flota (personal-hub, Trivasa, Conkafecito), publicado en el apex de ehas.uk (sin
subdominio) detrás de Cloudflare Access. Stack
en ~/stacks/homepage/docker-compose.yml, config YAML en ~/stacks/homepage/config/
(services.yaml, settings.yaml, widgets.yaml, bookmarks.yaml).
Excepción al rol de workstation de vm-playground
Tercera excepción documentada al rol de vm-playground como workstation pura sin servicios
de producción (ver hosts.md), junto a DBHub y
conkafecito-observability —
mismo motivo de fondo en los tres casos: el host ya tenía el túnel Cloudflare de la cuenta
estebanalcocer.cloud/ehas.uk corriendo (ver
Túneles de Cloudflare), así que sumar un
hostname nuevo no costó infraestructura adicional.
Publicación en el apex de ehas.uk, no en un subdominio
Corre en 127.0.0.1:8083, con un hostname: ehas.uk más en el ingress del mismo túnel
vm-playground (config-estebanalcocer.yml) que ya sirve dbhub.estebanalcocer.cloud,
nextcloud.ehas.uk, office.ehas.uk y uptime.ehas.uk.
Se probó explícitamente que un túnel de Cloudflare sí puede servir el apex de una zona
(ehas.uk sin ningún subdominio) — no es una limitación real de la plataforma. Un primer
intento de verificación pareció mostrar lo contrario: curl --resolve ehas.uk:443:1.1.1.1
devolvía el error de Cloudflare 1034 (“CNAME Cross-User Banned”), que sugería un bloqueo
al CNAME de *.cfargotunnel.com en la raíz de la zona. Ese resultado era inválido: el
--resolve apuntaba a 1.1.1.1 (el resolver DNS de Cloudflare, no una IP del edge que
sirve el sitio) en vez de a la IP real devuelta por dig @1.1.1.1 ehas.uk A. Repitiendo la
prueba contra la IP correcta, el apex respondió con normalidad (petición llegó hasta el
origen). Queda como referencia para no repetir el mismo diagnóstico erróneo: al probar un
hostname proxied por Cloudflare con curl --resolve, la IP tiene que salir de una consulta
A/AAAA real, nunca ser la IP del resolver usado para la consulta.
Se pasó primero por un subdominio de respaldo (asd.ehas.uk) mientras se investigaba el
error, y se desmanteló (CNAME, ingress, Access Application) una vez confirmado que el apex
funcionaba — sin rastro actual en DNS ni en el ingress.
Cloudflare Access delante, con la policy reusable existente
A diferencia de DBHub e Infisical (sin Access, por tener su
propia auth), Homepage no trae ningún login propio — es un dashboard de enlaces, así que
Access es la única barrera. Usa la misma policy reusable que hub/sr250 ssh/wiki
(070a3c92-5aa8-4bb3-8b1f-f250ffe1526e, “google project-vm-personal”: solo
ehalsou@gmail.com vía Google) — ver
Cloudflare Access. Verificado sin sesión:
https://ehas.uk redirige a estebanalcocer.cloudflareaccess.com/cdn-cgi/access/login/....
Gotcha: HOMEPAGE_ALLOWED_HOSTS
gethomepage valida el header Host de la petición contra una lista blanca (Host validation failed si no coincide) — mismo tipo de protección anti DNS-rebinding que
--allowed-hosts en DBHub. Configurado vía .env del stack:
HOMEPAGE_ALLOWED_HOSTS=ehas.uk,127.0.0.1:8083,localhost:8083
Contenido del dashboard
services.yaml agrupa por proyecto (Personal Hub, Trivasa, Conkafecito), con un enlace por
cada hostname público documentado en el resto de la wiki. Los dos servicios de
conkafecito-observability
(backend/TUI) no tienen túnel — se enlazan por la IP de NetBird de vm-playground
(100.71.230.199:8090/:8091), consistente con que ese stack está pensado para la LAN de
Conkafecito, no para internet público.
Auditoría 2026-08-26: se armó la primera versión con superset.frento.com.mx y
explore.frento.com.mx (Hub Streamlit) incluidos, sin verificar si seguían vivos —
ambos resultaron decomisionados (superset. desde 2026-08-09, explore. confirmado por
Esteban el mismo día de esta auditoría, ver
ctunlinux) y se quitaron de
services.yaml. Lección para el próximo enlace que se agregue acá: un hostname
documentado como status: active en la wiki no garantiza que siga vivo — conviene un
curl -I rápido antes de sumarlo, sobre todo en páginas que no se tocan seguido.
Véase también
- Túneles de Cloudflare — ingress
ehas.ukagregado al túnelvm-playground - Cloudflare Access — policy reusable que protege este hostname
- DBHub — primera excepción al rol de workstation de vm-playground, mismo túnel
- conkafecito-observability — segunda excepción, enlazado desde este dashboard por NetBird
- hosts.md — rol de vm-playground y sus excepciones