[{"data":1,"prerenderedAt":148},["ShallowReactive",2],{"seo-verification":3,"blog-alojar-homepage-en-un-vps-ma-es":6,"promo-bar-likely":147},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-alojar-homepage-en-un-vps-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":87,"ctaBody":88,"ctaButton":89,"ctaUrl":90,"relatedPosts":91},92,"alojar-homepage-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"heberger-homepage","hosting-homepage-on-your-own-vps","استضافة-homepage-على-خادم-vps-الخاص-بك","Alojar Homepage en su propio VPS","Despliegue Homepage, el dashboard open source, en su VPS con Docker. Guía: YAML, widgets, reverse proxy Caddy\u002FTraefik, SSL, seguridad y backups.",8,3,false,"2026-03-20T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-homepage-poster.svg","Homepage es un panel de control autoalojado que centraliza todos sus servicios, widgets y enlaces favoritos en una sola página. Desplegarlo en su propio VPS le da una página de inicio totalmente personalizable, accesible desde cualquier navegador, sin depender de un servicio externo. Esta guía cubre la instalación completa con Docker, la configuración avanzada de widgets, la seguridad y la copia de seguridad.",[35,39,50,53,72,75,78,81,84],{"type":36,"title":37,"body":38},"h2","Por qué alojar Homepage en su VPS","Homepage (gethomepage.dev) es un dashboard escrito en Next.js, concebido para ser la página de inicio de su infraestructura. A diferencia de las soluciones SaaS de tipo start page, todo permanece bajo su control: la configuración vive en simples archivos YAML, los widgets consultan sus propios servicios (Proxmox, qBittorrent, Sonarr, Pi-hole…) y ningún dato pasa por una nube externa. Alojarlo en un VPS lo hace accesible desde cualquier parte y cualquier navegador.\n\nEs también el punto de entrada ideal para pilotar una stack Docker en crecimiento: un solo archivo `services.yaml` basta para cartografiar decenas de contenedores. Conforme su infraestructura gana en complejidad — múltiples aplicaciones, múltiples subdominios, servicios en varios VPS — Homepage se convierte en el único cockpit desde el que comprueba el estado de cada uno de un vistazo, sin abrir cinco pestañas.",{"type":40,"title":41,"items":42},"ul","Los beneficios concretos de un Homepage autoalojado",[43,44,45,46,47,48,49],"Configuración en YAML versionable en Git: reconstruya su dashboard idéntico en segundos tras una reinstalación.","Widgets nativos para más de 100 servicios (Docker, Proxmox, Plex, Grafana, AdGuard, Pi-hole, Portainer…) con estadísticas en tiempo real.","Detección automática de los contenedores Docker mediante etiquetas, sin escribir las URL a mano.","Huella de memoria ligera, adecuada para un VPS pequeño que ya ejecuta otros contenedores.","Sin telemetría ni dependencia de la nube: su página de inicio sigue siendo 100% privada, incluso ante una interrupción de red.","Personalización total del tema, fondos de pantalla, barra de búsqueda y grupos de servicios.","Configuración declarativa: un cambio en los YAML se comprueba recargando la página, y basta un `docker compose restart homepage` si no aparece.",{"type":36,"title":51,"body":52},"Requisitos técnicos","Homepage es muy ligero. Un VPS con 1 vCPU y 512 MB de RAM es suficiente en la práctica, incluso sumando otros contenedores. Cuente con unos 300 MB de espacio en disco para la imagen y la configuración. Necesitará:\n\n- **Docker** y **Docker Compose v2** instalados (verifique con `docker compose version`).\n- Un **nombre de dominio o subdominio** apuntando a la IP pública del VPS, por ejemplo `home.sudominio.com`.\n- Un **reverse proxy** — Caddy o Traefik — para gestionar el HTTPS y el certificado Let's Encrypt.\n- El socket Docker `\u002Fvar\u002Frun\u002Fdocker.sock` montado en solo lectura si quiere usar los widgets Docker y el descubrimiento automático — o, más seguro, un proxy de socket (vea la sección de seguridad).\n\nSi parte de un VPS limpio, instale Docker según la documentación oficial, luego active el arranque automático con `systemctl enable --now docker`.",{"type":54,"title":55,"steps":56},"steps","Desplegar Homepage con Docker en 5 pasos",[57,60,63,66,69],{"title":58,"body":59},"Preparar la estructura de carpetas","Conéctese por SSH a su VPS y cree las carpetas:\n\n```bash\nmkdir -p ~\u002Fhomepage\u002Fconfig\ncd ~\u002Fhomepage\n```\n\nLos archivos `services.yaml`, `widgets.yaml`, `settings.yaml` y `bookmarks.yaml` se generarán automáticamente en el primer arranque dentro de esta carpeta `config\u002F`. También puede crearlos vacíos de antemano para controlar su contenido desde el inicio.",{"title":61,"body":62},"Escribir el docker-compose.yml","Cree `~\u002Fhomepage\u002Fdocker-compose.yml` con el siguiente contenido:\n\n```bash\nservices:\n  homepage:\n    image: ghcr.io\u002Fgethomepage\u002Fhomepage:latest\n    container_name: homepage\n    restart: unless-stopped\n    ports:\n      - 127.0.0.1:3000:3000\n    volumes:\n      - .\u002Fconfig:\u002Fapp\u002Fconfig\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro\n    environment:\n      - HOMEPAGE_ALLOWED_HOSTS=home.sudominio.com\n```\n\nNote el binding `127.0.0.1:3000:3000`: el puerto solo es accesible desde el loopback local, nunca expuesto directamente en la IP pública. El reverse proxy es la única puerta de entrada.",{"title":64,"body":65},"Arrancar el contenedor","Inicie Homepage en segundo plano y compruebe los logs:\n\n```bash\ndocker compose up -d\ndocker compose logs -f\n```\n\nHomepage escucha por defecto en el puerto `3000`. Pruébelo localmente antes de abrir el reverse proxy:\n\n```bash\ncurl http:\u002F\u002Flocalhost:3000\n```\n\nSi la respuesta es un documento HTML, el contenedor funciona.",{"title":67,"body":68},"Conectar el reverse proxy y el SSL","**Con Caddy** — añada a su `Caddyfile`:\n\n```bash\nhome.sudominio.com {\n    reverse_proxy localhost:3000\n}\n```\n\nCaddy genera y renueva el certificado Let's Encrypt automáticamente. Recargue: `systemctl reload caddy`.\n\n**Con Traefik** — añada etiquetas al servicio en `docker-compose.yml`:\n\n```bash\nlabels:\n  - traefik.enable=true\n  - traefik.http.routers.homepage.rule=Host(`home.sudominio.com`)\n  - traefik.http.routers.homepage.entrypoints=websecure\n  - traefik.http.routers.homepage.tls.certresolver=letsencrypt\n```\n\nEn ambos casos, verifique que su DNS apunte a la IP del VPS antes de intentar el challenge ACME.",{"title":70,"body":71},"Personalizar servicios y widgets","Edite `config\u002Fservices.yaml` para agrupar sus aplicaciones:\n\n```bash\n- Herramientas:\n    - Portainer:\n        href: https:\u002F\u002Fportainer.sudominio.com\n        description: Gestión de contenedores\n        icon: portainer.png\n```\n\nAñada widgets de recursos del sistema en `config\u002Fwidgets.yaml`:\n\n```bash\n- resources:\n    cpu: true\n    memory: true\n    disk: \u002F\n```\n\nRecargue la página en el navegador tras cada cambio; si un cambio no aparece (sobre todo en `settings.yaml`), reinicie el contenedor con `docker compose restart homepage`.",{"type":36,"title":73,"body":74},"Configurar los widgets de servicios","Los widgets son el valor añadido de Homepage sobre una simple lista de enlaces. Cada widget consulta la API de su servicio objetivo y muestra métricas en tiempo real directamente en la tarjeta.\n\nPara activar un widget, añada un bloque `widget` bajo la declaración del servicio en `services.yaml`. Ejemplo con **Portainer**:\n\n```bash\n- Portainer:\n    href: https:\u002F\u002Fportainer.sudominio.com\n    widget:\n      type: portainer\n      url: https:\u002F\u002Fportainer.sudominio.com\n      env: 1\n      key: {{HOMEPAGE_VAR_PORTAINER_KEY}}\n```\n\nLas claves de API nunca deben escribirse en texto plano en `services.yaml` si ese archivo está versionado en un repositorio público. Páselas al contenedor como variables de entorno con el prefijo `HOMEPAGE_VAR_`, por ejemplo desde un archivo `.env` cargado con `env_file: .env` en el `docker-compose.yml`, y referéncielas con la notación `{{HOMEPAGE_VAR_PORTAINER_KEY}}` en el YAML: Homepage sustituye cada `{{HOMEPAGE_VAR_…}}` por el valor de la variable.\n\nOtros widgets muy utilizados: **Proxmox** (CPU, RAM, almacenamiento del clúster), **Pi-hole** (peticiones bloqueadas, clientes activos), **Sonarr \u002F Radarr** (descargas en curso), **Grafana** (paneles embebidos), **Uptime Kuma** (estado de cada monitor). La lista completa está en la documentación oficial de gethomepage.dev.",{"type":76,"body":77},"tip","Active el descubrimiento automático añadiendo las etiquetas `homepage.group`, `homepage.name`, `homepage.href` y `homepage.icon` directamente en sus otros contenedores Docker. Homepage los detecta a través de la instancia Docker declarada en `config\u002Fdocker.yaml` y los añade al dashboard sin tocar `services.yaml`. Combinado con un archivo `.env` para guardar las claves de API de los widgets (nunca en claro en el YAML versionado), obtiene un dashboard que se actualiza solo con cada nuevo despliegue: ponga las etiquetas una vez, Homepage las lee continuamente.",{"type":36,"title":79,"body":80},"Proteger el acceso a su dashboard","Un dashboard que lista todos sus servicios es un objetivo atractivo. Dos medidas básicas son necesarias antes de exponer Homepage en Internet.\n\n**Restringir el acceso por IP o autenticación.** Si Homepage es solo para usted, la solución más sencilla es permitir solo su dirección IP en la configuración del reverse proxy. Con Caddy:\n\n```bash\nhome.sudominio.com {\n    @allowed remote_ip 203.0.113.42\n    handle @allowed {\n        reverse_proxy localhost:3000\n    }\n    respond 403\n}\n```\n\nSi accede al dashboard desde varias redes, prefiera la autenticación HTTP básica o un middleware de autenticación como **Authelia** o **Authentik** delante de Homepage. Desde la v2.0, Homepage ofrece también su propia puerta de autenticación, por contraseña u OIDC (`HOMEPAGE_AUTH_ENABLED=true`).\n\n**No entregue el socket Docker en bruto.** El `:ro` del montaje `\u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro` solo protege el archivo: la API de Docker sigue plenamente accesible a través de él, y un contenedor comprometido puede crear nuevos contenedores con volúmenes arbitrarios en el host. La documentación de Homepage recomienda un proxy de socket (`docker-socket-proxy`) que solo permita lecturas: `CONTAINERS=1` y `POST=0`, puerto enlazado a `127.0.0.1`, y luego `host: dockerproxy` y `port: 2375` en `config\u002Fdocker.yaml`.\n\n**Actualice la imagen con regularidad.** Use `docker compose pull && docker compose up -d` para actualizar Homepage en cuanto haya una nueva imagen disponible. Puede automatizar esto con una tarea cron. **Watchtower**, recomendado durante mucho tiempo para ello, ya no se mantiene: su repositorio de GitHub está archivado.",{"type":36,"title":82,"body":83},"Copias de seguridad y restauración de la configuración","Toda la configuración de Homepage vive en la carpeta `config\u002F`: es el único directorio que hay que respaldar. Sin base de datos, sin estado persistente fuera de estos archivos YAML.\n\n**Versionar en Git.** El método más fiable es inicializar un repositorio Git en `~\u002Fhomepage\u002Fconfig\u002F` y hacer commit tras cada cambio. Si su configuración contiene claves de API (incluso mediante variables), añada un `.gitignore` para excluir el archivo `.env` y versionar solo los YAML.\n\n**Copia de seguridad incremental en almacenamiento de objetos.** Con `restic` y un bucket compatible con S3 (Garage, MinIO, Backblaze B2), programe una copia de seguridad diaria desde un cron:\n\n```bash\nrestic -r s3:s3.example.com\u002Fmi-bucket\u002Fhomepage backup ~\u002Fhomepage\u002Fconfig\n```\n\n**Restauración.** En caso de pérdida del VPS, recree el contenedor, restaure la carpeta `config\u002F` desde la copia de seguridad y ejecute `docker compose up -d`. Homepage estará operativo en menos de un minuto — una de las ventajas concretas de una configuración 100% declarativa en YAML.",{"type":36,"title":85,"body":86},"Instalar Homepage desde el Marketplace de ServOrbit","Si prefiere no configurar Docker manualmente, el Marketplace de ServOrbit ofrece Homepage como instalación guiada. Unos pocos clics desde su panel de cliente aprovisionan un VPS con Homepage listo para usar: imagen oficial, puerto enlazado en loopback y volumen de configuración persistente.\n\nEl template no instala reverse proxy: declare su subdominio, conecte Caddy o Traefik como se describe más arriba para el HTTPS y restrinja `HOMEPAGE_ALLOWED_HOSTS` a ese subdominio, ya que la receta lo entrega abierto a todos los hosts (`*`). Después, personalice los archivos YAML en `config\u002F`.\n\nEncuentre la ficha completa, los requisitos mínimos y el botón de instalación en la página dedicada del Marketplace.","Instalar Homepage en un clic","Despliegue Homepage en un VPS Cloud de ServOrbit con una plantilla Docker preconfigurada. SSD, Docker listo para usar y ancho de banda generoso para servir su página de inicio.","Desplegar en un VPS Cloud","\u002Fapplications\u002Fmonitorizacion-observabilidad\u002Fhomepage",[92,111,129],{"id":93,"slug":94,"slugs":95,"title":99,"excerpt":100,"readTime":101,"views":102,"isPinned":19,"noindex":19,"publishedAt":103,"updatedAt":104,"category":105,"categories":106,"featuredImage":30,"bgImage":31,"posterImage":108,"relatedSolution":109},71,"alojar-nextcloud-en-su-propio-vps",{"fr":96,"en":97,"ar":98,"es":94},"heberger-nextcloud","hosting-nextcloud-on-your-own-vps","استضافة-nextcloud-على-خادمك-الـvps-الخاص","Alojar Nextcloud en VPS: guía NC 35, PHP 8.3 y MariaDB 11","Aloje Nextcloud en un VPS: Docker Compose, Redis, copia MariaDB, subidas de más de 40 GB tras Cloudflare y una alternativa a Office 2021.",20,1,"2026-04-10T00:00:00+00:00","2026-11-08T16:32:50+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[107],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":25,"appSlug":110},"nextcloud",{"id":112,"slug":113,"slugs":114,"title":118,"excerpt":119,"readTime":120,"views":102,"isPinned":19,"noindex":19,"publishedAt":121,"updatedAt":122,"category":123,"categories":124,"featuredImage":30,"bgImage":31,"posterImage":126,"relatedSolution":127},72,"alojar-ghost-en-un-vps",{"fr":115,"en":116,"ar":117,"es":113},"heberger-ghost","hosting-ghost-on-your-own-vps","استضافة-ghost-على-خادمك-الـvps-الخاص","Alojar Ghost en un VPS: guía completa 2026","Despliegue Ghost v6 en su VPS con Caddy, MySQL, Ghost CLI y Stripe Tax: instalación, reverse proxy TLS, actualización y errores de arranque frecuentes.",10,"2026-04-09T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[125],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-ghost-poster.svg",{"categorySlug":25,"appSlug":128},"ghost",{"id":130,"slug":131,"slugs":132,"title":136,"excerpt":137,"readTime":23,"views":138,"isPinned":19,"noindex":19,"publishedAt":139,"updatedAt":140,"category":141,"categories":142,"featuredImage":30,"bgImage":31,"posterImage":144,"relatedSolution":145},73,"alojar-wordpress-en-un-vps",{"fr":133,"en":134,"ar":135,"es":131},"heberger-wordpress","host-wordpress-on-your-own-vps","استضافة-wordpress-على-خادم-vps-الخاص-بك","Alojar WordPress en su propio VPS","Aloje WordPress en su VPS para un rendimiento y un control máximos: Docker, MariaDB, caché, reverse proxy y SSL.",0,"2026-04-08T00:00:00+00:00","2026-11-09T20:55:18+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[143],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-wordpress-poster.svg",{"categorySlug":25,"appSlug":146},"wordpress",true,1794270532043]