Por qué autoalojar tu analytics web
Beneficios del analytics autoalojado
- Cumplimiento RGPD nativo: ninguna transferencia a terceros, sin banner de consentimiento si no se usa cookie
- Datos 100% bajo tu control: exportación CSV/SQL en cualquier momento, retención ilimitada
- Coste fijo: el precio del VPS no depende del número de páginas vistas
- Script ligero (< 2 KB): impacto mínimo en Core Web Vitals
- Sin muestreo: todas las páginas vistas se cuentan, incluso en volúmenes elevados
- Código abierto: auditoría posible, sin dependencia de un proveedor
Plausible vs Umami: comparativa de criterios clave
Desplace la tabla
| Criterio | Plausible 3.2 | Umami 3.4 |
|---|---|---|
| Lenguaje / stack | Elixir + ClickHouse | Node.js + PostgreSQL |
| Base de datos | ClickHouse (columnar) | PostgreSQL únicamente (MySQL eliminado en v3) |
| Interfaz | Muy minimalista, página única | Multi-sitio, paneles configurables |
| Embudos | No en Community Edition (solo en Plausible Cloud) | Sí, vía informes personalizados |
| Eventos personalizados | Sí, con API de props | Sí, con API de props + TypeScript SDK |
| Mapas de calor / Grabación de sesión | No | Sí (grabación desde v3.1, mapas de calor desde v3.2, 2026) |
| Segmentación avanzada | Filtros combinados | Segmentos de sesión, filtros de propiedades |
| RAM mínima recomendada | 2 GB (ClickHouse) | Sin mínimo publicado (PostgreSQL, más ligero) |
| Licencia | AGPL-3.0 | MIT |
Requisitos previos según la herramienta
Plausible requiere ClickHouse, una base de datos columnar diseñada para analítica. ClickHouse es potente pero consume mucha RAM: prevé al menos 2 GB, idealmente 4 GB. Umami funciona con PostgreSQL, mucho más ligero: un VPS pequeño basta para tráfico moderado. Si tu VPS ya aloja PostgreSQL para otra app, Umami se integra sin recursos extra. A partir de Umami v3, MySQL ya no está soportado; planifica la exportación y reimportación en PostgreSQL si migras.
Desplegar Plausible (o Umami) en un VPS
Clonar los ficheros Docker Compose
Clonar el repositorio oficial (
plausible/community-editionen versión v3.2.1 como mínimo, que corrige la vulnerabilidad crítica CVE-2026-8467, oumami-software/umami) y crear un fichero.env: ninguno de los dos repositorios incluye un.env.exampleInicializar la base de datos
Rellenar las variables obligatorias:
BASE_URLySECRET_KEY_BASE(Plausible) oDATABASE_URLyAPP_SECRET(Umami), generando cada secreto conopenssl rand -base64 48. Eldocker-compose.ymlde Umami trae unAPP_SECRETy una contraseña de PostgreSQL de ejemplo: sustitúyelos por variables del.env(${APP_SECRET}) y publica su puerto como127.0.0.1:3000:3000para que solo nginx lo alcanceLevantar el stack completo
Lanzar
docker compose up -d: se descargan las imágenes de ClickHouse/PostgreSQL y el esquema se migra automáticamente; verifica los logs condocker compose logs plausible(oumami)Configurar nginx como reverse proxy
Añade un vhost nginx que enrute
analytics.tudominio.comhacia el puerto local del servicio (127.0.0.1), obtén el certificado TLS con Let's Encrypt y verifica que se transmite la cabeceraX-Forwarded-ForIncrustar el script de seguimiento
Copia la etiqueta
<script>desde el panel de control e insértala en el<head>de tu sitio — sin cookies. En Umami, cambia primero la contraseña de la cuentaadmincreada por defecto
Bloquea bots solo en el vhost nginx del analytics, nunca en el de tu sitio, donde la regla bloquearía también a Googlebot, para mantener tus estadísticas limpias sin configuración adicional en el lado del analytics.
Árbol de decisión: ¿Plausible o Umami?
Elige Plausible si…
- Quieres una interfaz que cualquier compañero entienda en 5 minutos sin formación
- Tu equipo no necesita grabación de sesiones ni mapas de calor
- Dispones de al menos 4 GB de RAM en el VPS
- Gestionas varios sitios desde un único panel minimalista
- No necesitas embudos ni seguimiento de ingresos en autoalojado (ausentes de la Community Edition, reservados a Plausible Cloud)
Elige Umami si…
- Tienes un VPS con recursos limitados (menos de los 2 GB de RAM recomendados para Plausible) o PostgreSQL ya está instalado
- Necesitas mapas de calor y grabación de sesiones (desde Umami 3.2, 2026)
- Tu equipo construye integraciones personalizadas vía el SDK TypeScript oficial
- Gestionas muchos sitios para diferentes clientes (multi-tenant nativo)
- Quieres consultar tus datos en lenguaje natural vía asistente IA usando MCP (Umami 3.4, que se activa con
MCP_ENABLED=1en autoalojado)
Cumplimiento RGPD, CNIL y ePrivacy: qué cubre realmente cada herramienta
Ambas herramientas están diseñadas para funcionar sin cookies de rastreo y sin almacenar direcciones IP completas. Plausible hace hash de la IP con una sal diaria rotatoria; Umami adopta un enfoque similar. Sin identificador persistente almacenado en el servidor, puedes prescindir del banner de consentimiento para analytics — siempre que el script no se combine con otros rastreadores. La CNIL francesa exime de consentimiento a los rastreadores de medición de audiencia que sirven exclusivamente al editor del sitio, solo producen estadísticas anónimas y no permiten ni cruzar datos con otros tratamientos, ni transmitirlos a terceros, ni seguir a la persona de un sitio a otro. La exención desaparece si los datos se cruzan con soluciones publicitarias de terceros; y un VPS fuera de la UE plantea además la cuestión de las transferencias de datos reguladas por el RGPD. Documentar el alojamiento y la política de retención en el registro de tratamiento sigue siendo obligatorio.
Migrar desde Google Analytics 4
Pasos para pasar de GA4 a Plausible o Umami
Exportar el historial de GA4 en CSV vía Informes > Exportar, o vía la Data API para volúmenes grandes — Plausible puede importar el historial de GA4 (en Community Edition, tras configurar la integración con Google:
GOOGLE_CLIENT_IDyGOOGLE_CLIENT_SECRET); para Umami, conserva esta exportación como archivoEjecutar el script de Plausible/Umami en paralelo al tag de GA4 durante 2–4 semanas para comparar métricas (los números diferirán: GA4 puede muestrear por encima de sus cuotas, Plausible/Umami cuentan todo)
Verificar que los eventos personalizados críticos (formularios, clics, compras) se replican correctamente via
plausible('goal')oumami.track()Eliminar el tag de GA4 y su cookie
_gauna vez satisfecho — actualiza la política de privacidadDocumentar las nuevas métricas en el registro RGPD: base legal (interés legítimo), periodo de retención, ubicación del servidor
Las cifras de tráfico suelen ser más altas con Plausible o Umami que con GA4 en el mismo sitio: al no usar cookies, no esperan el consentimiento del visitante, mientras que GA4 solo mide plenamente a quienes aceptaron sus cookies. La diferencia varía de un sitio a otro según tu tasa de consentimiento — no es un error, es la medición sin banner.
Funciones avanzadas: embudos, segmentos, eventos y API
En Plausible, los embudos multi-paso (una secuencia de URLs o eventos con la tasa de conversión en cada etapa) y el seguimiento de ingresos están reservados a la oferta cloud: la Community Edition autoalojada no los incluye. Plausible 3.2 (enero 2026) permite en cambio limitar un enlace compartido a un segmento, y la versión 3.2.1 (mayo 2026) corrige la vulnerabilidad crítica CVE-2026-8467: es el mínimo que hay que instalar. La segmentación se apoya en filtros combinados (origen, país, dispositivo, propiedades de evento) que se pueden guardar como segmentos. La Stats API v2 (POST /api/v2/query) extrae cualquier dimensión; el antiguo /api/v1/stats/breakdown está marcado como legacy. Umami 3.4 (septiembre 2026) añade segmentos con propiedades de sesión; el session replay (Umami 3.1, abril 2026) y los mapas de calor (Umami 3.2, junio 2026) permiten el análisis visual del comportamiento. El SDK TypeScript @umami/api-client (OpenAPI) facilita la integración en pipelines. Umami también hace «stitching» de sesión: si un visitante vuelve desde otro dispositivo y se autentica, las sesiones se fusionan.
Resolución de problemas frecuentes
Problemas frecuentes y soluciones
- ClickHouse no arranca (Plausible): verifica la RAM disponible (
free -h) — el editor recomienda al menos 2 GB de RAM para ClickHouse y Plausible, y la CPU debe admitir SSE 4.2 (o NEON en ARM). Añade un archivo swap de 2 GB si el VPS es justo:fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile - Migraciones de Umami bloqueadas: si la app rechaza arrancar tras una actualización con
relation does not exist, reinicia el contenedor (docker compose restart umami): al arrancar, Umami aplica él mismo las migraciones Prisma pendientes (prisma migrate deploy); revisadocker compose logs umamipara localizar la que falla - Páginas vistas no registradas: verifica que el encabezado CSP permite el dominio de analytics (
script-src 'self' https://analytics.tudominio.com). Los bloqueadores de anuncios también pueden bloquear el script — es esperado. - ClickHouse en error tras reinicio brusco: si reporta tabla corrupta, identifica la tabla afectada en
docker compose logs plausible_events_dby consultasystem.detached_partsconclickhouse-client, que lista las partes desconectadas y el motivo; si faltan datos, restaura tu última copia - Umami v3 tras migración desde MySQL: exporta todos los datos primero (CSV o dump SQL), provisiona PostgreSQL, luego reimporta siguiendo la guía oficial de migración de MySQL a PostgreSQL de la documentación de Umami
Copia de seguridad y restauración de datos analytics
Estrategia de backup para Plausible y Umami
Plausible / ClickHouse: usa
clickhouse-backup(imagenaltinity/clickhouse-backup, en un contenedor vecino con acceso al volumen de datos de ClickHouse) o exporta tablas críticas a Parquet víadocker compose exec -T plausible_events_db clickhouse-client(tablaplausible_events_db.events_v2). Almacena la copia en object storage.Umami / PostgreSQL: un
pg_dumpestándar basta —docker compose exec db pg_dump -U umami umami > umami_$(date +%Y%m%d).sql. Prográmalo en cron y sube el fichero a almacenamiento externoPrueba la restauración trimestralmente en un VPS de staging:
docker compose exec -T db psql -U umami umami < umami_backup.sqlPara Plausible, haz también backup del volumen Docker de PostgreSQL de la app (separado de ClickHouse)
Documenta el procedimiento de restauración en tu runbook — una copia no probada no es una copia