{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreifvqp33twjjnztjykg67hf364ohoncn7oe52ik3yxe5khjyz2r5wq",
    "uri": "at://did:plc:qnlvqxxf6yadvrhl226p2aiz/app.bsky.feed.post/3mel4hxmy5pv2"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreiabq7nsj5nkp5jsio7izf6tn3y77p4fcz7xbohdddiag47f7bsg5q"
    },
    "mimeType": "image/png",
    "size": 881723
  },
  "description": "Homepage es un dashboard que nos permitirá tener organizados los servicios de nuestro homelab.",
  "path": "/instalando-homepage-dashboard/",
  "publishedAt": "2026-02-11T09:00:44.000Z",
  "site": "https://blog.runesoft.net",
  "tags": [
    "Pi Hole",
    "esta guía",
    "Portainer",
    "http://127.0.0.1:3000/",
    "documentación oficial de servicios",
    "documentación oficial",
    "documentación oficial de configuraciones",
    "documentación oficial de widgets",
    "Home - Homepage",
    "https://www.youtube.com/watch?v=j9kbQucNwlc&pp=ygUSaG9tZXBhaGUgZGFzaGJvYXJk"
  ],
  "textContent": "Teniendo ya varios servicios en nuestro _Homelab_ , empieza a ser complicado memorizarlos todos, incluso aunque les demos nombre de dominio con herramientas como Pi Hole.\n\nHa llegado el momento de que configuremos un servicio que nos permita tener una interfaz en la que gestionar y agrupar todas nuestras aplicaciones, esto se conoce como Dashboard, y para este cometido vamos a usar Homepage.\n\n# Requisitos\n\nPara proceder con esta guía necesitarás:\n\n  * Un servidor donde instalar Homepage.\n  * Docker funcionando en dicho servidor. Si no lo tienes, puedes seguir esta guía.\n  * Acceso por terminal o SFTP al servidor de Docker.\n\n\n\n# Instalación\n\nSe trata de una aplicación de software abierto y gratuita, que podemos instalar de manera sencilla usando Docker. Os voy a dejar tanto la opción de desplegarlo mediante comandos; como haciendo uso de Docker compose para los que lo tengamos habilitado o usemos Portainer.\n\n⚠️\n\nSi estás buscando la vía rápida, ve directamente a la instalación mediante Docker compose.\n\n## Usando comandos\n\nLo primero que suelo hacer, es configurar los volúmenes. En el caso de esta aplicación es algo esencial, ya que será muy conveniente que posteriormente podamos acceder a él. Para estos comandos vamos a dar por hecho que nuestro usuario es **`user`**.\n\nℹ️\n\nRecuerda modificar los comandos para que se adapten a tu entorno y necesidades, ya que son comandos de ejemplo.\n\n### Volumen de configuración\n\nComo va a ser un `bind volume`, es decir, un volumen vinculado, deberemos asegurarnos de que la ruta que queremos vincular existe. En mi caso quiero usar la carpeta home de mi usuario `/home/user/homepage/config`, así que la creamos ejecutando:\n\n\n    mkdir -p ~/homepage/config\n\nUna vez creada la ruta, deberemos crear el volumen en si. Lanzamos el comando:\n\n\n    docker volume create --driver local \\\n      --opt type=none \\\n      --opt device=/home/user/homepage/config \\\n      --opt o=bind \\\n      homepage-config\n\n\nEsto nos debería generar un nuevo volumen vinculado a la ruta que hemos creado anteriormente. Podemos comprobar que el volumen existe ejecutando:\n\n\n    docker volume inspect homepage-config\n\n\n### Volumen de multimedia\n\nAhora deberemos repetir esto mismo para otro volumen, en el que podremos subir nuestros iconos y multimedia si fuese necesario, por lo que creamos primero su carpeta:\n\n\n    mkdir -p ~/homepage/media\n\nAhora su volumen:\n\n\n    docker volume create --driver local \\\n      --opt type=none \\\n      --opt device=/home/user/homepage/media \\\n      --opt o=bind \\\n      homepage-media\n\n\nY por último comprobamos su correcta creación:\n\n\n    docker volume inspect homepage-media\n\n\n### Lanzado del contenedor\n\nYa sólo queda la parte final, lanzar nuestro contenedor, para esto haremos uso de `docker run`, agregando las especificaciones necesarias. Como siempre, recuerda adaptarlo a tus necesidades:\n\n\n    docker run -d \\\n      --name homepage \\\n      --restart unless-stopped \\\n      -p 3000:3000 \\\n      -v homepage-config:/app/config \\\n      -v homepage-media:/app/public/images \\\n      -v /var/run/docker.sock:/var/run/docker.sock:ro \\\n      -e HOMEPAGE_ALLOWED_HOSTS=\"*\" \\\n      ghcr.io/gethomepage/homepage:latest\n\n\n## Mediante Docker Compose\n\nEste proceso es más rápido, ideal para entornos con Portainer o similares. Lo primero será crear las rutas necesarias. Se está utilizando el home del usuario, recuerda modificarlo a tus necesidades:\n\n\n    mkdir -p ~/homepage/{config,media}\n\n\nA continuación os dejo el fichero `docker-compose.yaml` para este servicio. ¡Adaptadlo a vuestros requerimientos y entorno!\n\n\n    services:\n      homepage:\n        image: ghcr.io/gethomepage/homepage:latest\n        restart: unless-stopped\n        container_name: homepage\n        ports:\n          - 3000:3000\n        volumes:\n          - type: bind\n            source: ./config\n            target: /app/config\n            bind:\n              create_host_path: true\n          - type: bind\n            source: ./media\n            target: /app/public/images\n            bind:\n              create_host_path: true\n          - /var/run/docker.sock:/var/run/docker.sock:ro\n        environment:\n          HOMEPAGE_ALLOWED_HOSTS: \"*\"\n\n\n# Configuración de Homepage\n\nTras haber instalado Homepage eligiendo el camino que nos haya interesado, podremos acceder a su interfaz, en un navegador accedemos a la IP de nuestro servidor, junto con el puerto por defecto de Homepage, el `3000`, algo como http://127.0.0.1:3000/.\n\nNos aparecerá esto:\n\nAhora viene lo interesante, configurar a nuestro gusto la interfaz de Homepage. Para esto, deberemos acceder mediante SFTP o SSH a nuestro servidor Docker, e ir a la unidad de `homepage-config`que hemos bindeado, ya que ahí encontraremos, entre otros, los siguientes ficheros de configuración:\n\nFichero | Cometido\n---|---\n`services.yaml` | Fichero principal, donde se definirán los servicios que queremos mostrar, y cómo organizarlos y agruparlos.\n`bookmarks.yaml` | Fichero donde podremos configurar qué otras webs queremos tener. Aparecerán como pie de página en el dashboard.\n`settings.yaml` | Configuraciones adicionales necesarias.\n`widgets.yaml` | Aquí podremos configurar algunos widgets del propio Homepage, como el que nos muestra el espacio en disco y el uso de recursos de donde se está alojando Homepage.\n\nCada uno de estos tiene su propia estructura, así que iremos yendo uno a uno:\n\n## Configuración de services.yaml\n\nComo se ha mencionado anteriormente, se trata del fichero que más vamos a manipular, ya que, cada vez que tengamos un nuevo servicio en nuestro homelab, será aquí donde lo demos luego de alta para visualizarlo en nuestro dashboard.\n\nℹ️\n\nPara una información más detallada, accede a la documentación oficial de servicios de Homepage.\n\nTiene la siguiente estructura, dejando como ejemplo una entrada para Proxmox y otra para Portainer:\n\n\n    - Grupo 1:\n    \t- Proxmox:\n    \t\thref: https://proxmox.homelab.local:8006\n    \t\ticon: proxmox.png\n    \t\tdescription: Servidor de virtualización Proxmox\n    \t\tsiteMonitor: https://proxmox.homelab.local\n    \t\twidget: #Es opcional, hay servicios que no lo tienen.\n    \t\t\ttype: proxmox #Cambiará dependiendo de tu servicio.\n    \t\t\turl: https://proxmox.homelab.local:8006\n    \t\t\tusername: #Usuario de api, algo como: userapi@pam!homepage\n    \t\t\tpassword: #Contraseña de la API, es un UUID8.\n    \t\t\tnode: #Nombre de tu nodo.\n    - Grupo 2:\n        - Portainer:\n            href: https://portainer.homelab.local:9443/\n            icon: portainer.png\n            description: Servidor de contenedores Docker con Portainer\n            siteMonitor: https://portainer.homelab.local:9443\n            widget:\n                type: portainer\n                url: https://portainer.homelab.local:9443\n                env: #El ID del entorno a monitorizar.\n                key: #Key generada para la AIP.\n\n\n\n⚠️\n\nEl cómo configurar los widgets lo tienes en su documentación oficial, tan solo tendrás que buscar el que te interesa, y te indican los pasos para ello.\n\nPodríamos tener varios servicios en cada grupo, y por supuesto los grupos que deseemos.\n\n## Configuración de settings.yaml\n\nAquí definiremos configuraciones más generales, como el nombre que aparece en la pestaña, el icono o el fondo de nuestro dashboard. También podremos especificar el layout.\n\nℹ️\n\nPara una información más detallada, accede a la documentación oficial de configuraciones de Homepage.\n\nAdjunto un ejemplo:\n\n\n    title: Homelab Dashboard\n    headerStyle: boxedWidgets\n    theme: dark\n    color: blue\n    cardBlur: sm\n\n    layout:\n      Servers:\n        style: row\n        columns: 3\n        icon: mdi-server-#FFFFFF\n      Unifi:\n        icon: unifi.png\n      Networking:\n        icon: mdi-network-#FFFFFF\n      Security:\n        icon: mdi-shield-lock-#FFFFFF\n      Management:\n        icon: mdi-auto-fix-#FFFFFF\n      Monitoring:\n        icon: mdi-list-status-#FFFFFF\n      Automation:\n        icon: mdi-cog-play-#FFFFFF\n      Services:\n        style: row\n        columns: 3\n        icon: mdi-home-#FFFFFF\n      Other:\n        header: false\n        style: row\n        columns: 1\n\n\n## Configuración de bookmarks.yaml\n\nPensado para tener un acceso rápido a diferentes webs o páginas que queramos tener siempre accesibles.\n\nℹ️\n\nPara una información más detallada, accede a la documentación oficial de configuraciones de Homepage.\n\nEn mi caso, lo he utilizado para guardarme las URLs de mi blog y mi GitHub, aunque planeo ampliarlo poco a poco a medida que vaya necesitando. Aquí tenéis el ejemplo:\n\n\n    ---\n    - Webpages:\n      - Runesoft Blog:\n        - icon: si-ghost-#FFFFFF\n          href: https://blog.runesoft.net\n      - GitHub:\n        - icon: si-github-#FFFFFF\n          href: https://github.com/RubenMorPov\n\n\nAl igual que el fichero de `services.yaml`, se pueden agrupar los vínculos como prefiramos.\n\n## Configuración de widgets.yaml\n\nEn este último fichero, podremos configurar el comportamiento de los widgets que vienen de forma general por defecto con Homepage, como puede ser el calendario, el tiempo, o la información de los dispositivos del host en el que lo alojamos.\n\nℹ️\n\nPara una información más detallada, accede a la documentación oficial de widgets de Homepage.\n\nEn mi caso, lo he dejado como está:\n\n\n    # For configuration options and examples, please see:\n    # https://gethomepage.dev/configs/info-widgets/\n\n    - resources:\n        cpu: true\n        memory: true\n        disk: /\n\n    - search:\n        provider: duckduckgo\n        target: _blank\n\n\n## Resultado Final\n\nTras ciertas configuraciones y customizaciones, podremos terminar teniendo un dashboard bastante cómodo, con todo lo que necesitemos a nuestro alcance y bien organizado, como este ejemplo que os dejo aquí:\n\n# Conclusión\n\nCon esta guía hemos aprendido en qué consiste un dashboard para nuestro Homelab, y configurado uno con Homepage, para tener todo más organizado.\nTambién se han cubierto los diferentes archivos de configuración para dejarlo lo más a nuestro gusto posible.\n\n# Referencias\n\n  * Documentación oficial: Home - Homepage\n  * Vídeo del que obtuve la idea, de **Christian Lempa** : https://www.youtube.com/watch?v=j9kbQucNwlc&pp=ygUSaG9tZXBhaGUgZGFzaGJvYXJk\n\n",
  "title": "Instalando Homepage Dashboard",
  "updatedAt": "2026-05-28T17:15:42.399Z"
}