[{"data":1,"prerenderedAt":163},["ShallowReactive",2],{"seo-verification":3,"blog-como-alojar-umami-en-un-vps-ma-es":6,"promo-bar-likely":162},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-como-alojar-umami-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":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":102,"ctaBody":103,"ctaButton":104,"ctaUrl":105,"relatedPosts":106},152,"como-alojar-umami-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"heberger-umami-vps","how-to-host-umami-on-a-vps","كيفية-استضافة-umami-على-خادم-vps","Cómo alojar Umami en un VPS","Despliegue Umami en su VPS: analítica web ligera y respetuosa con la privacidad, sin cookies, autoalojada con Docker y HTTPS. Guía completa con resolución de problemas.",7,1,false,"2026-07-15T00:00:00+00:00","2026-10-09T22:36:10+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-umami-vps-poster.svg",{"categorySlug":33,"appSlug":34},"analitica-y-audiencia","analytics-umami","Umami es una herramienta de analítica web open source, ligera y respetuosa con la privacidad: mide su audiencia sin cookies ni recogida de datos personales. Autoalojada en su VPS, le convierte en propietario de sus estadísticas de tráfico, sin confiarlas a una empresa publicitaria. Así se despliega con Docker, una base de datos PostgreSQL, un reverse proxy y un certificado TLS — y cómo resolver los tres problemas que bloquean la mayoría de despliegues en el arranque.",[37,41,50,53,72,75,93,97,99],{"type":38,"title":39,"body":40},"h2","Por qué autoalojar Umami en un VPS","Umami es una alternativa ligera a Google Analytics: open source, sin cookies de rastreo, sin transferencia de datos a terceros. En un VPS, mantienes el control total — sin cuenta SaaS, sin límite de sitios, sin datos compartidos. La stack Docker es mínima: un contenedor Node.js para la aplicación y un contenedor PostgreSQL para la base de datos. La instalación completa toma menos de diez minutos en una VM estándar con acceso root, y tus datos permanecen en tu servidor.\n\nComparado con Google Analytics 4, Umami no requiere consentimiento para estadísticas anonimizadas en la mayoría de jurisdicciones europeas. Comparado con Matomo, su huella de memoria es significativamente menor, y su configuración Docker se reduce a un solo `docker-compose.yml`. Para una agencia que gestiona diez clientes, una única instancia Umami con diez sitios reemplaza una suscripción SaaS facturada por usuario o por dominio. La versión 2.14 (julio de 2026) añadió soporte nativo para eventos personalizados y un panel exportable en CSV — dos funciones largamente esperadas por los equipos de marketing.",{"type":42,"title":43,"items":44},"ul","Los beneficios concretos de un Umami autoalojado",[45,46,47,48,49],"Conforme con la privacidad: sin cookies, sin datos personales y, a menudo, sin necesidad de banner de consentimiento.","Sus estadísticas de audiencia permanecen en su servidor, sin compartirlas con terceros.","Script de seguimiento de unos pocos kilobytes, sin cookies ni recogida de datos personales.","Panel de control claro y multisitio desde una sola instancia.","Coste fijo sea cual sea el volumen de páginas vistas.",{"type":38,"title":51,"body":52},"Requisitos de hardware y software","Umami funciona en cualquier VPS con Docker instalado. El mínimo recomendado es 1 vCPU y 512 MB de RAM para uso personal o PYME; por encima de 200 000 páginas vistas mensuales, 1 GB de RAM evita ralentizaciones en PostgreSQL. Necesitarás: Docker Engine (≥ 20.10) y Docker Compose V2 (`docker compose`, no `docker-compose`), un dominio o subdominio apuntando a tu VPS, y un reverse proxy (nginx o Caddy) para servir Umami en HTTPS. Debian 12 y Ubuntu 22 son las distribuciones de referencia; los comandos siguientes asumen acceso root o sudo.\n\nEn el servidor, abre los puertos 80 y 443 en tu firewall (`ufw allow 80\u002Ftcp && ufw allow 443\u002Ftcp`). Umami solo necesita HTTPS expuesto externamente; el puerto de la aplicación (3000 por defecto) permanece interno y nunca se abre directamente. Si usas un VPS de ServOrbit, el grupo de seguridad predeterminado ya permite 80 y 443.",{"type":54,"title":55,"steps":56},"steps","Desplegar Umami con Docker y HTTPS",[57,60,63,66,69],{"title":58,"body":59},"Preparar el VPS y Docker","Por SSH, actualice el sistema e instale Docker con `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. Cree `mkdir -p \u002Fopt\u002Fumami && cd \u002Fopt\u002Fumami`.",{"title":61,"body":62},"Escribir el docker-compose.yml","Defina dos servicios: `ghcr.io\u002Fumami-software\u002Fumami:postgresql-latest` y una base `postgres`. Indique `DATABASE_URL` y un `APP_SECRET` aleatorio.",{"title":64,"body":65},"Lanzar los contenedores","Ejecute `docker compose up -d`. Umami escucha en local en el puerto 3000; la base de datos se inicializa automáticamente en el primer arranque.",{"title":67,"body":68},"Configurar el reverse proxy","Con Caddy: `stats.su-dominio.com { reverse_proxy localhost:3000 }`. El certificado Let's Encrypt se obtiene y se renueva automáticamente.",{"title":70,"body":71},"Añadir su sitio y el script","Inicie sesión (admin\u002Fumami por defecto, cámbielo de inmediato), añada su sitio y pegue el snippet de seguimiento facilitado en el `\u003Chead>` de sus páginas.",{"type":38,"title":73,"body":74},"Problemas frecuentes en el arranque","Tres causas concentran la gran mayoría de los fallos reportados en las guías de la comunidad en 2026. Aquí están con su diagnóstico y solución.\n\n**1. Bucle de reinicio «Can't reach database server» — `DATABASE_URL` no coincide con `POSTGRES_PASSWORD`**\n\nEste es el error de copiar-pegar más frecuente: `DATABASE_URL` contiene la contraseña en texto claro dentro de la cadena de conexión, y esa contraseña debe ser **exactamente** la misma que el valor de `POSTGRES_PASSWORD` en el servicio `db`. Si cambia uno sin el otro, Umami arranca, falla al conectar con la base de datos y se reinicia en bucle — sin ningún mensaje de error claro en los logs de Docker.\n\nVerifique que ambas variables sean coherentes:\n\n```\n# en .env o en el compose\nPOSTGRES_PASSWORD=contraseña_fuerte\n\n# en DATABASE_URL, la misma contraseña en posición 3\nDATABASE_URL=postgresql:\u002F\u002Fumami:contraseña_fuerte@db:5432\u002Fumami\n```\n\nSi utiliza interpolación de variables (`${POSTGRES_PASSWORD}`), asegúrese de que Docker Compose esté cargando realmente su fichero `.env`.\n\n**2. Umami se detiene 5-10 segundos después del arranque — `depends_on` sin `healthcheck`**\n\nPor defecto, `depends_on: db` solo espera a que el contenedor PostgreSQL esté **iniciado**, no a que esté **listo para aceptar conexiones**. Umami intenta entonces conectarse mientras PostgreSQL todavía está inicializando sus ficheros de datos, falla y se detiene.\n\nAñada un `healthcheck` en el servicio `db` y un `condition: service_healthy` en el `depends_on` de Umami:\n\n```\nservices:\n  db:\n    image: postgres:15-alpine\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U umami\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n  umami:\n    image: ghcr.io\u002Fumami-software\u002Fumami:postgresql-latest\n    depends_on:\n      db:\n        condition: service_healthy\n```\n\nCon esta configuración, Umami solo arranca una vez que PostgreSQL responde en su socket.\n\n**3. Error 502 tras `docker compose pull` — el puerto publicado ha cambiado**\n\nTras una actualización (`docker compose pull` + `docker compose up -d`), nginx puede devolver un error 502 si la configuración cambió entre versiones de la imagen: el puerto interno puede haber sido reasignado o el binding del host modificado. Compruebe primero el estado real de los contenedores:\n\n```\ndocker compose ps\n```\n\nFíjese en la columna **PORTS** para confirmar que el contenedor Umami está publicando en el puerto esperado (3000 por defecto). Si el puerto ha cambiado, actualice la directiva `proxy_pass` (o `reverse_proxy`) en nginx o Caddy para reflejar el nuevo puerto, luego recargue el servicio (`nginx -s reload` o `systemctl reload caddy`).\n\n**4. `docker-compose` (v1) vs `docker compose` (v2) — fallo silencioso**\n\nLas guías publicadas antes de 2025 suelen usar `docker-compose` (guión), el cliente Python que ya no se mantiene. En una instalación nueva de Docker Engine, este comando no existe: el terminal simplemente devuelve `command not found`, sin indicar que v2 se llama `docker compose` (espacio). Comprueba con `docker compose version` — si responde, tienes v2. Todos los ejemplos de esta guía usan `docker compose` (v2).",{"type":54,"title":76,"steps":77},"Actualizar Umami",[78,81,84,87,90],{"title":79,"body":80},"Haz una copia de seguridad","Antes de actualizar: `docker compose exec db pg_dump -U umami umami > umami-backup-$(date +%F).sql`. Guarda este archivo fuera del volumen Docker — no sobrevivirá a su eliminación.",{"title":82,"body":83},"Descarga la última imagen","`docker compose pull`. Umami publica sus versiones en GitHub (github.com\u002Fumami-software\u002Fumami\u002Freleases) — revisa las notas de versión para migraciones de esquema y cambios en variables de entorno.",{"title":85,"body":86},"Reinicia la stack","`docker compose up -d`. Umami aplica las migraciones automáticamente. Revisa los logs con `docker compose logs -f app` y espera el mensaje `Listening on port 3000`.",{"title":88,"body":89},"Verifica la versión en la interfaz","Configuración → Acerca de. Si la versión no cambió, la imagen puede no haberse descargado: `docker compose images` muestra el digest de cada imagen en ejecución.",{"title":91,"body":92},"Comprueba que el seguimiento funciona","Abre un sitio rastreado en una pestaña privada y espera 30 segundos — la página Tiempo real debe registrar la visita. Un 0 persistente tras reiniciar suele indicar un problema con el script de seguimiento en el frontend.",{"type":94,"title":95,"body":96},"tip","Umami Cloud vs auto-alojado","Umami ofrece planes Cloud gestionados (umami.is\u002Fpricing) desde 9 $\u002Fmes para equipos que prefieren no gestionar la infraestructura. El auto-alojamiento en un VPS tiene sentido si ya tienes una VM, gestionas varios sitios, o si la política de datos de tu organización prohíbe enviar datos a un SaaS externo — incluso uno compatible con el RGPD. Ambas opciones comparten el mismo código, las mismas funcionalidades y el mismo formato de exportación.",{"type":94,"body":98},"Cambie la contraseña de administrador por defecto desde la primera conexión y haga copias de seguridad regulares de la base PostgreSQL: es ella la que contiene todo su historial de audiencia.",{"type":94,"title":100,"body":101},"La documentación oficial","Para la configuración avanzada y las opciones propias de la herramienta, consulte la \u003Ca href=\"https:\u002F\u002Fumami.is\u002Fdocs\" target=\"_blank\" rel=\"noopener noreferrer\">documentación oficial de Umami\u003C\u002Fa>. Esta guía cubre la puesta en línea en un VPS; la documentación del editor sigue siendo la referencia para los ajustes finos, las actualizaciones mayores y los casos de uso específicos.","Despliegue su instancia en un VPS Cloud ServOrbit","Un VPS Cloud ServOrbit con Docker preconfigurado y recursos escalables le permite instalar esta herramienta sin fricción, y ajustar la RAM y los vCPU a medida que crece el uso.","Lanzar mi VPS Cloud","\u002Fvps-cloud",[107,125,141],{"id":108,"slug":109,"slugs":110,"title":114,"excerpt":115,"readTime":116,"views":18,"isPinned":19,"noindex":19,"publishedAt":117,"updatedAt":118,"category":119,"categories":120,"featuredImage":29,"bgImage":30,"posterImage":122,"relatedSolution":123},153,"como-alojar-plausible-analytics-en-un-vps",{"fr":111,"en":112,"ar":113,"es":109},"heberger-plausible-vps","how-to-host-plausible-analytics-on-a-vps","كيفية-استضافة-plausible-analytics-على-خادم-vps","Cómo alojar Plausible Analytics en un VPS","Despliegue Plausible Analytics en su VPS: analítica ligera, sin cookies y conforme al RGPD, autoalojada con Docker, ClickHouse y HTTPS. Guía paso a paso.",2,"2026-01-24T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[121],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-plausible-vps-poster.svg",{"categorySlug":33,"appSlug":124},"analytics-plausible",{"id":126,"slug":127,"slugs":128,"title":132,"excerpt":133,"readTime":116,"views":18,"isPinned":19,"noindex":19,"publishedAt":134,"updatedAt":118,"category":135,"categories":136,"featuredImage":29,"bgImage":30,"posterImage":138,"relatedSolution":139},154,"como-alojar-matomo-en-un-vps",{"fr":129,"en":130,"ar":131,"es":127},"heberger-matomo-vps","how-to-host-matomo-on-a-vps","كيفية-استضافة-matomo-على-خادم-vps","Cómo alojar Matomo en un VPS","Despliegue Matomo en su VPS: alternativa completa a Google Analytics, con la propiedad al 100 % de sus datos, autoalojada con Docker y HTTPS. Guía paso a paso.","2026-01-23T00:00:00+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[137],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-matomo-vps-poster.svg",{"categorySlug":33,"appSlug":140},"analytics-matomo",{"id":142,"slug":143,"slugs":144,"title":148,"excerpt":149,"readTime":150,"views":18,"isPinned":19,"noindex":19,"publishedAt":151,"updatedAt":152,"category":153,"categories":158,"featuredImage":29,"bgImage":30,"posterImage":160,"relatedSolution":161},97,"plausible-vs-umami-que-analitica-self-hosted-elegir",{"fr":145,"en":146,"ar":147,"es":143},"plausible-vs-umami","plausible-vs-umami-which-self-hosted-analytics-to-choose","plausible-مقابل-umami-أي-أداة-تحليلات-مستضافة-ذاتيا-تختار","Plausible vs Umami: ¿qué analytics autoalojado elegir?","Comparativa Plausible vs Umami en 2026: instalación, RGPD, embudos, eventos personalizados, migración desde GA4 y árbol de decisión para elegir la herramienta adecuada.",9,"2026-03-15T00:00:00+00:00","2026-11-08T01:13:15+00:00",{"id":154,"name":155,"slug":156,"color":157,"icon":156},5,"Comparativas","comparatif","bg-info\u002F10 text-info",[159],{"id":154,"name":155,"slug":156,"color":157,"icon":156},"\u002Fblog\u002Fcovers\u002Fplausible-vs-umami-poster.svg",{"categorySlug":33,"appSlug":124},true,1794270572494]