Homepage: la página de inicio de tu servidor casero (y el error de «Host validation failed»)
Cómo tengo configurado Homepage con Docker para ver todos mis servicios, su estado y los recursos de la Pi en una sola página, más dos errores típicos y su arreglo.
Cuando tienes más de cuatro o cinco servicios en casa, empiezas a olvidar en qué puerto está cada uno. Homepage resuelve eso: una página de inicio con todos tus enlaces agrupados, el estado de cada servicio y los recursos de la máquina (CPU, RAM, disco, temperatura).
Lo tengo en el puerto 80 de la Raspberry Pi, así que escribo la IP en el navegador y aparece todo.
Instalación con Docker
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
restart: unless-stopped
environment:
HOMEPAGE_ALLOWED_HOSTS: "192.168.1.50,mi-pi,mi-pi.local,localhost"
PUID: "1000"
PGID: "991" # grupo docker, para poder leer docker.sock
ports: ["80:3000"]
volumes:
- ./homepage:/app/config
- /var/run/docker.sock:/var/run/docker.sock:ro
- /:/host:ro
Tres montajes, tres funciones:
./homepage→ la configuración, en archivos YAML que editas y se recargan solos.docker.socken solo lectura → para ver si cada contenedor está en marcha./como/hosten solo lectura → para mostrar el espacio libre del disco de la Pi.
Los enlaces: services.yaml
Cada grupo es una lista, y cada servicio lleva su icono, enlace y descripción:
- Servicios:
- Gitea:
icon: gitea.png
href: http://192.168.1.50:3000
description: Repositorios git
server: pi
container: gitea
- Uptime Kuma:
icon: uptime-kuma.png
href: http://192.168.1.50:3001
description: Monitorización y avisos
server: pi
container: uptime-kuma
- Infraestructura:
- NAS:
icon: synology.png
href: http://192.168.1.60:5000
description: Panel del NAS
ping: 192.168.1.60
container:enlaza con Docker y muestra si está en marcha y cuánta CPU y RAM gasta.ping:sirve para máquinas que no son contenedores, como el NAS o el router.siteMonitor: http://...comprueba una URL y enseña cuánto tarda en responder. Lo uso en los servicios que no están en Docker.- Los iconos como
gitea.pngsalen de una colección enorme que Homepage ya conoce. También valemdi-nombrepara iconos de Material Design.
Diseño: settings.yaml
title: Casa
theme: dark
color: slate
language: es
target: _blank
layout:
Servicios:
style: row
columns: 4
style: row con columns coloca cada grupo en filas. target: _blank abre los enlaces en pestaña nueva.
Error 1: «Host validation failed»
Las versiones recientes de Homepage solo responden a las direcciones que autorizas. Si entras por una que no está en la lista, ves una página de error y en los registros aparece:
error: Host validation failed for: 127.0.0.1
Solución: añade a HOMEPAGE_ALLOWED_HOSTS cada nombre o IP por el que entres (la IP local, el nombre de la máquina, el de Tailscale…), separados por comas, y recrea el contenedor.
Error 2: no aparece el estado de los contenedores
Si los servicios salen sin el indicador de Docker, casi siempre es un problema de permisos del socket. El usuario del contenedor (PUID/PGID) tiene que pertenecer al grupo docker. Mira qué número tiene ese grupo en tu máquina:
getent group docker
y ponlo en PGID. Además, crea docker.yaml en la configuración:
pi:
socket: /var/run/docker.sock
El nombre pi es el que después usas en server: pi de cada servicio.
Una advertencia sobre docker.sock
Aunque lo montes en solo lectura, el socket de Docker da acceso a mucha información de tu sistema. Úsalo solo con contenedores de confianza, y nunca expongas Homepage a Internet. El mío solo es accesible desde casa o por VPN.
¿Y para qué hice otro panel?
Homepage es genial como lanzador: enlaces y estado básico. Para lo que es solo mío (tareas, copias, entregas) me hice un segundo panel en Python. Los dos se complementan, y Homepage enlaza al otro.
¿Te has quedado con la idea?
Tres preguntas rápidas. Cada acierto suma 10 XP.