Lo que PostHog permite y las alternativas SaaS no
Mixpanel, Amplitude y Heap son herramientas en la nube: sus datos van a sus servidores, su política de retención fija lo que puede conservar, y el muestreo se activa automáticamente cuando su volumen supera ciertos umbrales. PostHog autoalojado elimina estas tres restricciones. Los eventos permanecen en su base de datos ClickHouse, en su disco o en su object storage — ninguna copia sale de su infraestructura. La retención es ilimitada: usted decide cuándo purgar los datos antiguos. No existe muestreo: cada evento se registra incluso durante picos de tráfico. Añada a eso el cumplimiento del RGPD sin negociar un DPA con un tercero, la posibilidad de modificar el código fuente y el acceso directo a los datos brutos en ClickHouse para sus propios análisis SQL.
Comparativa rápida: PostHog autoalojado vs Mixpanel Cloud
Desplace la tabla
| Criterio | PostHog autoalojado | Mixpanel Cloud |
|---|---|---|
| Coste mensual (1M eventos/mes) | ~$15–20 (coste VPS) | ~$25–100+ |
| Datos alojados en sus servidores | Sí | No |
| Cumplimiento RGPD simplificado | Sí (sin DPA de terceros) | Parcial (DPA requerido) |
| Muestreo automático | Ninguno | Activado más allá de los niveles |
| Grabaciones de sesiones incluidas | Sí | Opción de pago |
| Feature flags y A/B testing | Sí, incluido | De pago (plan Growth+) |
| Acceso SQL bruto a los datos | Sí (ClickHouse directo) | No |
Requisitos del servidor
PostHog incluye ClickHouse, Kafka, Redis y PostgreSQL en la misma stack de Docker Compose. Es la solución de analytics más exigente en recursos de esta categoría, y un VPS infradimensionado provoca caídas de ClickHouse o timeouts de Kafka desde los primeros eventos. Prevea como mínimo 4 vCPU y 8 GB de RAM para un uso ligero (menos de un millón de eventos al mes). Para una carga más sostenida — de 1 a 5 millones de eventos al mes — apunte a 8 vCPU y 16 GB de RAM. En cuanto al almacenamiento, ClickHouse es muy eficiente en compresión, pero las grabaciones de sesiones se acumulan rápido: prevea al menos 50 GB de SSD y añada un object storage externo (S3 o MinIO) en cuanto active las grabaciones. En cuanto al software: Docker Engine 24+ y Docker Compose v2, un nombre de dominio con un registro A apuntando al VPS, y los puertos 80 y 443 abiertos en el cortafuegos.
Instalar PostHog con Docker Compose
Instalar Docker en el VPS
Conéctese por SSH y luego instale Docker con el script oficial:
curl -fsSL https://get.docker.com | sh. Añada su usuario al grupo docker para evitar sudo:usermod -aG docker $USER. Verifique condocker compose versionque Compose v2 esté disponible.Clonar el repositorio de PostHog y preparar el entorno
Clone el repositorio oficial:
git clone https://github.com/PostHog/posthog.git && cd posthog. Copie el archivo de entorno de ejemplo:cp .env.example .env. Abra.enven un editor para configurar las variables esenciales.Configurar las variables de entorno
En
.env, configure como mínimo:SECRET_KEY(genere una clave aleatoria de 50 caracteres conpython3 -c "import secrets; print(secrets.token_hex(25))"),SITE_URL=https://posthog.su-dominio.com,DISABLE_SECURE_SSL=false(otruesi prueba en HTTP local sin certificado). Deje los valores por defecto dePOSTGRES_*,REDIS_*yCLICKHOUSE_*para un despliegue sencillo.Arrancar la stack y esperar la migración
Lance todos los servicios en segundo plano:
docker compose -f docker-compose.yml up -d. La primera vez, PostHog ejecuta automáticamente las migraciones de base de datos — esto tarda entre 2 y 5 minutos según el rendimiento del servidor. Siga el progreso condocker compose logs -f webhasta verPostHog server is now listening on port 8000.Acceder a la interfaz y crear su cuenta
Vaya a
http://localhost:8000(o a través de su dominio si el DNS ya está configurado). El asistente de primer lanzamiento le guía para crear la cuenta de administrador, nombrar su organización y crear su primer proyecto. Anote laProject API Keyque se muestra — la necesitará para conectar el SDK.
Configurar un reverse proxy nginx para HTTPS
Instalar nginx y Certbot
En la máquina anfitrión (fuera de Docker):
apt install -y nginx certbot python3-certbot-nginx. Asegúrese de que su dominioposthog.su-dominio.comya apunte a la IP del VPS antes de este paso — Certbot necesita validar mediante HTTP.Crear el vhost de nginx
Cree
/etc/nginx/sites-available/posthogcon:server { listen 80; server_name posthog.su-dominio.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }. Actívelo:ln -s /etc/nginx/sites-available/posthog /etc/nginx/sites-enabled/.Emitir el certificado TLS
Ejecute
certbot --nginx -d posthog.su-dominio.com. Certbot modifica automáticamente el vhost para redirigir HTTP a HTTPS y configura la renovación automática. Pruebe la renovación concertbot renew --dry-run.Recargar nginx y verificar
Aplique la configuración:
nginx -t && systemctl reload nginx. Abrahttps://posthog.su-dominio.comen un navegador — debería ver la interfaz de PostHog con un certificado válido. ActualiceSITE_URLen.envsi aún no lo ha hecho y reinicie el servicio web:docker compose restart web.
Object storage para grabaciones de sesiones (S3 o MinIO)
Por qué es necesario un object storage
Las grabaciones de sesiones generan muchos archivos pequeños (uno por segmento de sesión). Almacenarlos en el disco local del VPS llena el SSD rápidamente y complica las copias de seguridad. Un object storage compatible con S3 — ya sea AWS S3, Cloudflare R2 o MinIO autoalojado — externaliza este almacenamiento de forma elástica.
Desplegar MinIO en el mismo VPS (opción autoalojada)
Si no quiere depender de un servicio externo, añada MinIO a su
docker-compose.yml:minio: image: minio/minio environment: MINIO_ROOT_USER: posthog MINIO_ROOT_PASSWORD: contraseña-segura command: server /data --console-address ':9001' volumes: - ./minio-data:/data. Luego cree un bucket llamadoposthogen la consola de MinIO (puerto 9001).Configurar las variables de entorno de PostHog
En
.env, añada:OBJECT_STORAGE_ENABLED=true,OBJECT_STORAGE_ENDPOINT=http://minio:9000(o la URL de su bucket S3),OBJECT_STORAGE_ACCESS_KEY_ID=posthog,OBJECT_STORAGE_SECRET_ACCESS_KEY=contraseña-segura,OBJECT_STORAGE_BUCKET=posthog. Reinicie la stack:docker compose up -d.Verificar con una primera grabación de sesión
En los ajustes del proyecto PostHog, active «Session recording». Navegue por su aplicación durante unos segundos y luego vuelva a PostHog en «Session Recordings». Una grabación debería aparecer en pocos minutos. Compruebe en MinIO (o S3) que se han creado archivos en el bucket.
Enviar sus primeros eventos desde su aplicación
Instalar el SDK de JavaScript
En su proyecto front-end:
npm install posthog-js. Si usa un framework como React, Vue o Next.js, importe e inicialice PostHog una sola vez en el nivel raíz de la aplicación.Inicializar con su clave de proyecto y la URL de su instancia
Añada la inicialización:
import posthog from 'posthog-js'; posthog.init('phc_YOUR_PROJECT_API_KEY', { api_host: 'https://posthog.su-dominio.com', autocapture: true });. Sustituyaphc_YOUR_PROJECT_API_KEYpor la clave visible en los ajustes del proyecto PostHog. Conautocapture: true, PostHog registra automáticamente los clics, los envíos de formularios y los cambios de página.Capturar eventos personalizados
Para un evento de negocio preciso, llame a:
posthog.capture('pedido_realizado', { importe: 49.90, divisa: 'EUR', producto: 'vps-cloud-4vcpu' });. Las propiedades asociadas al evento estarán disponibles en los embudos, las cohortes y las consultas SQL de ClickHouse.Verificar en el dashboard
Vaya a PostHog en «Activity» o «Events». Los eventos aparecen casi en tiempo real (unos pocos segundos de latencia). Si no llega nada pasados dos minutos, compruebe que
api_hosten el init coincide exactamente con la URL de su instancia y que el certificado TLS es válido.
Activar los Feature Flags
Los feature flags permiten lanzar una funcionalidad de forma progresiva — primero al 5% de los usuarios, luego al 20%, luego al 100% — sin recompilar ni redesplegar la aplicación. En PostHog, vaya a «Feature Flags» y cree un nuevo flag con una clave (mi-nuevo-modulo), una condición de despliegue (porcentaje o cohorte de usuarios) y, opcionalmente, variantes para un verdadero test A/B. En el lado JavaScript, evalúe el flag: if (posthog.isFeatureEnabled('mi-nuevo-modulo')) { /* mostrar la nueva funcionalidad */ }. Para la evaluación en el servidor (Python o Node.js), use el SDK de backend correspondiente con la misma PROJECT_API_KEY — la evaluación ocurre entonces sin un viaje de ida y vuelta del cliente, evitando el parpadeo de contenido. PostHog registra automáticamente un evento $feature_flag_called en cada evaluación, lo que permite correlacionar la activación de un flag con cualquier métrica de su dashboard.
Consejo de rendimiento: desactive las grabaciones de sesiones al inicio
Si su VPS está configurado con el mínimo de 4 vCPU / 8 GB de RAM, las grabaciones de sesiones consumen recursos importantes de ClickHouse desde las primeras horas de tráfico. Recomendación: deje las grabaciones desactivadas durante los primeros 30 días. Esto le da tiempo para validar la estabilidad de la stack, ajustar la configuración del object storage y ampliar la RAM si es necesario. Actívelas después en los ajustes del proyecto — todas las grabaciones futuras se capturarán, y puede definir una tasa de muestreo para registrar solo un porcentaje de sesiones y controlar el almacenamiento.
Actualizar PostHog
El equipo de PostHog publica actualizaciones periódicas. Para actualizar: git pull origin master en el directorio del repositorio, luego docker compose pull para obtener las nuevas imágenes y finalmente docker compose up -d. Las migraciones de base de datos se ejecutan automáticamente al reiniciar el servicio web — una breve interrupción de unas decenas de segundos es normal. Consulte las notas de la versión antes de cada actualización mayor: algunas versiones requieren una actualización intermedia (no se puede saltar versiones).
Documentación oficial
Esta guía cubre la instalación básica en VPS. Para temas avanzados — replicación de ClickHouse, SSO SAML, webhooks, integraciones de data warehouse y opciones de configuración de Kafka — consulte la documentación oficial de PostHog. Sigue siendo la referencia para las actualizaciones mayores y los casos de uso específicos.