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.

Iván· Publicado el · 3 minRead in English →

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.sock en solo lectura → para ver si cada contenedor está en marcha.
  • / como /host en 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.png salen de una colección enorme que Homepage ya conoce. También vale mdi-nombre para 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.

Mini-quiz

¿Te has quedado con la idea?

Tres preguntas rápidas. Cada acierto suma 10 XP.

  1. ¿Qué significa el error «Host validation failed» en Homepage?
  2. ¿Por qué se monta docker.sock en modo :ro?
  3. ¿Qué hace siteMonitor en un servicio?
  • #homepage
  • #docker
  • #dashboard
  • #yaml
  • #raspberry-pi
Esc