Proyecto de trabajo
Plataforma de despliegue de landing pages
Un push a una landing, y la página en vivo sin reiniciar nada
La infraestructura que publica, vigila y mantiene más de 100 landing pages de varios clientes en un solo VPS, sin reiniciar nada en cada despliegue.


De qué se trata
La agencia publica las landing pages de sus clientes bajo el dominio de cada uno, una ruta por programa o campaña. Esta plataforma es todo lo que hay entre un push a una landing y la página en vivo, del build y la publicación al servidor y la vigilancia.
Las landings se editan con un constructor visual o a mano, y los dos caminos terminan en el mismo workflow.
Qué hace
- Cada landing llama a un workflow reutilizable de GitHub Actions que instala, compila, verifica la ruta base, comprime los archivos con gzip, genera WebP de las imágenes y sube el resultado por rsync en dos fases.
- El despliegue entra con un usuario sin shell, encerrado con rrsync y con la huella del servidor fijada, y el Nginx de cada cliente monta sus landings en solo lectura.
- Un solo bloque de Nginx sirve cualquier landing registrada, con assets inmutables por un año, HTML sin caché, WebP por negociación y las etiquetas de Google Tag Manager inyectadas en el servidor.
- Scripts que aplican un mismo cambio a los 106 repositorios (workflow de despliegue, política de Dependabot, archivos de entorno) y generan la configuración de Nginx de cada cliente.
- Un monitor diario revisa el estado HTTP, el HTML, que haya una sola etiqueta de Google Tag Manager, la compresión, la caché, los despliegues pendientes y los certificados, y abre un issue si algo falla; Lighthouse mide las landings principales cada semana.
- Marcadores en el commit para subir sin desplegar y rutas de reversión documentadas para una landing, para el Nginx de un cliente y para la historia de los repositorios.
Cómo funciona
Del push a la página en vivo
Cada cambio va del repositorio a GitHub Actions y de ahí al VPS; la fila de abajo vigila todo.
Repositorios
- 106 landing pages en React y Vite
- Cambios desde un constructor visual o a mano
- Un workflow mínimo en cada landing
GitHub Actions
- Instalación, build y ruta base
- gzip y WebP
- rsync en dos fases con usuario restringido
VPS
- Un Nginx por cliente en Docker
- Landings montadas en solo lectura
- Google Tag Manager inyectado en el servidor
Vigilancia
- Monitor diario que abre issues
- Lighthouse semanal
- Rutas de reversión documentadas
Decisiones y sus costos
Publicar archivos en vez de imágenes
Si cada landing viajara dentro de una imagen, publicarla obligaría a reconstruirla y a reiniciar el contenedor.
Un usuario de despliegue encerrado
La credencial con la que CI despliega se podría filtrar.
El HTML nunca se precomprime
Google Tag Manager se inyecta en el servidor con sub_filter, que no funciona sobre archivos ya comprimidos.
Stack
Elige una tecnología para ver qué proyectos la usan.



