Desplegar en AWS

Guía paso a paso para desplegar OpenReplay en Amazon AWS.

Desplegar en AWS

Video Tutorial

Mira cómo desplegar OpenReplay en tu infraestructura de AWS

Si no te gusta leer, puedes seguir este tutorial en vídeo que te muestra cómo desplegar OpenReplay en AWS

El stack de OpenReplay se puede instalar en una sola máquina, y AWS EC2 es un candidato ideal.

  1. Ve al panel de AWS EC2
  2. ‘Launch a new instance’ (arquitectura basada en x86)
  3. Selecciona tu AMI. Para esta guía, usaremos Ubuntu Server 22.04 LTS
  4. Elige el tipo de instancia. Las especificaciones mínimas son 2 vCPUs, 8 GB of RAM, 50 GB of storage, de lo contrario los servicios backend de OpenReplay simplemente no se iniciarán. Por lo tanto, recomendamos al menos la t3.large (o una equivalente), que es suficiente para un volumen bajo/moderado. Si esperas mucho tráfico, deberías escalar a partir de aquí.
  5. Configura los detalles de la instancia: Ajusta los parámetros de red/subred si es necesario o simplemente mantén los valores por defecto
  6. Añade almacenamiento: Establece el tamaño en 50 GB (General Purpose SSD (gp2))
  7. Añade etiquetas: Ajusta los parámetros o mantén los valores por defecto
  8. Grupos de seguridad: Mantén la regla SSH existente y añade 2 más para HTTP (80) y HTTPS (443) (source: 0.0.0.0/0). Asegúrate de que los puertos DNS (TCP/UDP) estén abiertos en el grupo de seguridad de salida
  9. Haz clic en ‘Review and Launch’
  10. Crea/descarga la clave SSH y luego pulsa ‘Launch instances’
  1. Asegúrate de que tu instancia esté Running y luego conéctate a ella:
## From your terminal
SSH_KEY=~/Downloads/openreplay-key.pem #! wherever you've saved the SSH key
INSTANCE_IP=REPLACE_WITH_INSTANCE_PUBLIC_IP
chmod 400 $SSH_KEY
ssh -i $SSH_KEY ubuntu@$INSTANCE_IP
  1. Instala OpenReplay proporcionando el dominio en el que se ejecutará (p. ej. DOMAIN_NAME=openreplay.mycompany.com):
sudo wget https://raw.githubusercontent.com/openreplay/openreplay/main/scripts/helmcharts/openreplay-cli -O /bin/openreplay 
sudo chmod +x /bin/openreplay
openreplay -i DOMAIN_NAME

OpenReplay maneja datos sensibles de los usuarios y, por lo tanto, requiere HTTPS para funcionar. Esto es obligatorio, de lo contrario el tracker simplemente no comenzaría a grabar. Lo mismo ocurre con el panel: sin HTTPS no podrás reproducir las sesiones de los usuarios.

La forma más sencilla de gestionar SSL en AWS es configurar un balanceador de carga (ELB) y ejecutar OpenReplay detrás de él. Otra opción es generar o usar tu propio certificado SSL y apuntar tu subdominio (es decir, openreplay.mycompany.com) a la instancia de OpenReplay. A continuación se explican ambas opciones.

Configurar el balanceador de carga de AWS (opción 1)

Section titled Configurar el balanceador de carga de AWS (opción 1)
  1. Ve a ‘EC2’ > ‘Load Balancers’
  2. ‘Create Load Balancer’ y elige Application Load Balancer
  3. Añade un listener para HTTPS (mantén solo este) y asegúrate de seleccionar la(s) misma(s) subred(es) en la(s) que se ejecuta tu instancia de OpenReplay.
  4. Elige un certificado existente (es decir, *.mycompany.com) o genera uno nuevo desde AWS Certificate Manager (ACM). También puedes importar el tuyo.
  5. Configura los grupos de seguridad: Selecciona el grupo de seguridad creado previamente para la instancia de OpenReplay (puedes encontrarlo en el ‘EC2 Dashboard’, bajo la pestaña ‘Security’)
  6. Configura el listener y el enrutamiento: Mantén el protocolo y el puerto por defecto (HTTP:80). Ahora, crea un nuevo target group. Dale un nombre y selecciona IP addresses en Target Type. Asegúrate de que el Health check path esté establecido en /healthz manteniendo el resto de parámetros por defecto. Haz clic en ‘Next’ para registrar destinos, añade la IPv4 privada de la instancia de OpenReplay (puertos 80) y luego añade el destino a la lista (la IP privada se puede encontrar en el panel de EC2). Revisa y luego haz clic en ‘Create target group’.
  7. Ahora, vuelve a la página de creación del LB y reenvía este nuevo target group al listener del LB.
  8. Revisa y luego ‘Create load balancer’

Una vez creado, ve a Route 53 (o a tu proveedor de servicios DNS) y crea un A Record que apunte al balanceador de carga usando su nombre DNS (se puede encontrar en el panel de ELB).

Finalmente, habilita use-forwarded-headers descomentando la línea siguiente bajo la sección ingress-nginx, en /var/lib/openreplay/vars.yaml:

ingress-nginx: &ingress-nginx
  controller:
    config:
      use-forwarded-headers: true

Ya está todo listo, OpenReplay debería ser accesible de forma segura en el subdominio que acabas de configurar. Puedes crear una cuenta visitando la página /signup (es decir, openreplay.mycompany.com/signup).

Aporta/genera tu certificado SSL (opción 2)

Section titled Aporta/genera tu certificado SSL (opción 2)

Como alternativa a crear un balanceador de carga, puedes aportar (o generar) tu propio certificado SSL.

  1. Primero, ve a Route 53 (o a tu otro proveedor de servicios DNS) y crea un A Record. Usa el dominio que proporcionaste previamente durante el paso de instalación y apúntalo a la instancia usando su IP pública (se puede encontrar en el panel de EC2).

  2. Si vas a aportar tu propio certificado, crea un secreto SSL usando el siguiente comando: kubectl create secret tls openreplay-ssl -n app --key="private_key_file.pem" --cert="certificate.crt".

Nota: Si no tienes un certificado, genera uno, que se renueve automáticamente, para tu subdominio (el proporcionado durante la instalación) usando Let’s Encrypt. Simplemente conéctate a la instancia EC2 de OpenReplay, ejecuta cd /var/lib/openreplay/openreplay/scripts/helmcharts && bash certmanager.sh y sigue los pasos.

  1. Si deseas habilitar la redirección de http a https (recomendado), descomenta el siguiente bloque, bajo la sección ingress-nginx, en /var/lib/openreplay/vars.yaml:
ingress-nginx: &ingress-nginx
  controller:
    config:
      ssl-redirect: true
      force-ssl-redirect: true

Cabe mencionar que nuestro ingress-nginx se ejecuta por defecto en los puertos 80|443, pero esto se puede cambiar fácilmente, si es necesario, en vars.yaml:

ingress-nginx: &ingress-nginx
  controller:
    service:
      ports:
        http: 80
        https: 443
  1. Por último, reinstala el NGINX de OpenReplay:
openreplay -R

Ya está todo listo, OpenReplay debería ser accesible en tu subdominio. Puedes crear una cuenta visitando la página /signup (es decir, openreplay.mycompany.com/signup).

Si encuentras algún problema, conéctate a nuestro Slack o consulta nuestro Foro y obtén ayuda de nuestra comunidad.