← Blog

Umami self-hosted: analítica web sin cookies en tu propio VPS

Tutorial · · 6 min de lectura

Umami es una de las alternativas a Google Analytics más usadas por quien quiere saber cuántas visitas tiene su web sin rastrear a nadie. No usa cookies, no guarda datos personales y su script pesa unos pocos kilobytes, así que en la mayoría de casos no necesitas banner de consentimiento para medir.

Tiene versión en la nube, pero su gracia está en que es código abierto y puedes alojarlo tú: los datos de tus visitas se quedan en tu servidor y no pagas por volumen de eventos. Lo único que necesitas es un VPS, un dominio y media hora. Con SecuryBlack, bastante menos.


Qué necesitas

  1. Un VPS con Docker. Umami y su base de datos caben de sobra en un servidor de 1 GB de RAM. Cualquier VPS de Hetzner, OVH o DigitalOcean te vale.
  2. El servidor conectado a SecuryBlack con CromoForge, el agente que despliega las apps. Si aún no lo tienes, el panel te da el comando de instalación al añadir el servidor.
  3. Un subdominio para el panel de Umami, por ejemplo stats.tudominio.com.
  4. Los puertos 80 y 443 libres en el servidor: ahí escuchará el proxy que sirve la app con HTTPS.

Paso 1: apunta el subdominio al servidor

En el proveedor de tu dominio crea un registro A con el nombre stats y la IP pública del VPS. Si tu servidor tiene IPv6, añade también un registro AAAA.

Hazlo antes de crear la app: el certificado HTTPS se pide en cuanto la app arranca y el dominio tiene que resolver ya a tu servidor. Puedes comprobarlo con:

dig +short stats.tudominio.com

Paso 2: crea la app desde la plantilla

En el panel, ve a Apps → Nueva app y elige Plantilla. Selecciona Umami y rellena tres datos:

  • Nombre: el de la app en el panel, por ejemplo umami.
  • Servidor: el VPS donde se va a ejecutar.
  • Dominio: stats.tudominio.com.

Pulsa Crear y desplegar. Si ya tienes sesión, este enlace abre la plantilla de Umami elegida.


Paso 3: qué hace SecuryBlack por debajo

Mientras ves el registro del despliegue, CromoForge hace en tu servidor lo que harías a mano con Docker Compose:

  • Genera las contraseñas. La de la base de datos y las claves de la app se crean al vuelo y se guardan cifradas como variables de entorno de la app. No hay contraseñas por defecto que se te olviden cambiar en el .env.
  • Levanta Postgres aparte. La base de datos corre en su propio contenedor, en una red privada de Docker que solo comparte con Umami. No publica ningún puerto, así que no queda expuesta a internet ni se salta tu cortafuegos.
  • Guarda los datos en un volumen. Las visitas viven en un volumen de Docker que se conserva entre despliegues y actualizaciones.
  • Sirve la app con HTTPS. Umami solo escucha en 127.0.0.1. Delante se instala un proxy (Caddy) que pide y renueva el certificado de Let's Encrypt por ti.

Cuando el healthcheck de Umami responde, el despliegue queda en verde y la app está en https://stats.tudominio.com.


Paso 4: cambia la contraseña de admin ya

Umami crea siempre el mismo usuario inicial: admin con la contraseña umami. El panel de SecuryBlack te lo recuerda en la ficha de la app, pero no lo dejes para luego: entra, abre tu perfil desde el menú de usuario y cámbiala antes de hacer nada más. Mientras no lo hagas, cualquiera que encuentre tu subdominio puede entrar.


Paso 5: añade tu web y el script de seguimiento

En la sección Websites, pulsa Add website y añade tu dominio. Umami te dará un fragmento como este para pegar en el <head>:

<script defer src="https://stats.tudominio.com/script.js" data-website-id="TU-ID"></script>

Publica el cambio, abre tu web en otra pestaña y en unos segundos verás la visita en el panel en tiempo real.


Actualizar y mantener Umami

  • Actualizar: pulsa Desplegar en la app. CromoForge descarga la última versión de Umami 3 y reinicia el contenedor; los datos siguen en su volumen. Las migraciones de la base de datos las aplica Umami al arrancar.
  • Vigilarla: añade un monitor de uptime de SecuryBlack a https://stats.tudominio.com/api/heartbeat y te avisará si deja de responder. El agente de monitorización del servidor te avisa si el VPS se queda sin disco o sin memoria.
  • Borrarla: en Ajustes → Zona peligrosa. Ojo, al borrar la app se borran también sus volúmenes, con todas las visitas.

¿Y si prefiero hacerlo a mano?

Puedes: Umami publica un docker-compose.yml oficial con la app y Postgres. Tendrás que generar las contraseñas, no publicar el puerto de la base de datos (Docker se salta UFW si lo publicas), poner un proxy con HTTPS delante y acordarte de actualizar. La plantilla hace exactamente eso, y deja la app en el mismo panel que tus servidores, backups y monitores.


Conclusión

Con Umami en tu propio VPS tienes analítica sin cookies, sin límites de eventos y con los datos en casa. Con la plantilla de SecuryBlack, el trabajo se reduce a un registro DNS, un formulario de tres campos y cambiar una contraseña. Crea tu cuenta y prueba la plantilla en tu servidor.

Blog

Descubre qué tiene mal tu servidor

Conecta tu primer VPS y recibe la auditoría de seguridad. Gratis durante la beta.