Guía de despliegue

Cómo alojar PostHog en un VPS

Desplegar en un VPS Cloud →

Tutorial

Cómo alojar PostHog en un VPS

Autoalojamiento9 min de lectura17 pasos

PostHog es la respuesta open source a Mixpanel y Amplitude: eventos, embudos, grabación de sesiones, feature flags y A/B testing en una sola instancia autoalojada. En la nube del editor, la factura sube en cuanto el volumen de eventos supera los niveles gratuitos — unos pocos millones de eventos al mes bastan para alcanzar varios cientos de dólares. En su VPS, el coste es únicamente el del servidor. Conserva los datos de comportamiento de sus usuarios en su propia infraestructura, cumple el RGPD sin contratos adicionales y activa todos los módulos — session replay, feature flags, experimentos A/B — sin ningún nivel de pago. Esta guía cubre la instalación paso a paso con Docker Compose, la configuración de un reverse proxy nginx con HTTPS, la configuración de object storage para las grabaciones de sesiones, la conexión del SDK JavaScript y la activación de los feature flags.

Contenido· Lo que PostHog permite y las alternativas SaaS no1/11
  1. 01Lo que PostHog permite y las alternativas SaaS no
  2. 02Comparativa rápida: PostHog autoalojado vs Mixpanel Cloud
  3. 03Requisitos del servidor
  4. 04Instalar PostHog con Docker Compose
  5. 05Configurar un reverse proxy nginx para HTTPS
  6. 06Object storage para grabaciones de sesiones (S3 o MinIO)
  7. 07Enviar sus primeros eventos desde su aplicación
  8. 08Activar los Feature Flags
  9. 09Consejo de rendimiento: desactive las grabaciones de sesiones al inicio
  10. 10Actualizar PostHog
  11. 11Documentación oficial

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

CriterioPostHog autoalojadoMixpanel Cloud
Coste mensual (1M eventos/mes)~$15–20 (coste VPS)~$25–100+
Datos alojados en sus servidoresSíNo
Cumplimiento RGPD simplificadoSí (sin DPA de terceros)Parcial (DPA requerido)
Muestreo automáticoNingunoActivado más allá de los niveles
Grabaciones de sesiones incluidasSíOpción de pago
Feature flags y A/B testingSí, incluidoDe pago (plan Growth+)
Acceso SQL bruto a los datosSí (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

  1. 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 con docker compose version que Compose v2 esté disponible.

  2. 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 .env en un editor para configurar las variables esenciales.

  3. Configurar las variables de entorno

    En .env, configure como mínimo: SECRET_KEY (genere una clave aleatoria de 50 caracteres con python3 -c "import secrets; print(secrets.token_hex(25))"), SITE_URL=https://posthog.su-dominio.com, DISABLE_SECURE_SSL=false (o true si prueba en HTTP local sin certificado). Deje los valores por defecto de POSTGRES_*, REDIS_* y CLICKHOUSE_* para un despliegue sencillo.

  4. 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 con docker compose logs -f web hasta ver PostHog server is now listening on port 8000.

  5. 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 la Project API Key que se muestra — la necesitará para conectar el SDK.

Configurar un reverse proxy nginx para HTTPS

  1. 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 dominio posthog.su-dominio.com ya apunte a la IP del VPS antes de este paso — Certbot necesita validar mediante HTTP.

  2. Crear el vhost de nginx

    Cree /etc/nginx/sites-available/posthog con: 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/.

  3. 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 con certbot renew --dry-run.

  4. Recargar nginx y verificar

    Aplique la configuración: nginx -t && systemctl reload nginx. Abra https://posthog.su-dominio.com en un navegador — debería ver la interfaz de PostHog con un certificado válido. Actualice SITE_URL en .env si aún no lo ha hecho y reinicie el servicio web: docker compose restart web.

Object storage para grabaciones de sesiones (S3 o MinIO)

  1. 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.

  2. 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 llamado posthog en la consola de MinIO (puerto 9001).

  3. 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.

  4. 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

  1. 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.

  2. 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 });. Sustituya phc_YOUR_PROJECT_API_KEY por la clave visible en los ajustes del proyecto PostHog. Con autocapture: true, PostHog registra automáticamente los clics, los envíos de formularios y los cambios de página.

  3. 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.

  4. 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_host en 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.

Despliegue su instancia en un VPS Cloud ServOrbit

Un VPS Cloud ServOrbit con Docker preconfigurado y recursos escalables le permite instalar esta herramienta sin fricciones, y ajustar la RAM y las vCPU a medida que crece el uso.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva