cleat-deploy
Panel de control PaaS auto-alojado para desplegar Phoenix/Elixir, Go, Node.js, Rails y sitios estáticos en VPS Hetzner/AWS Lightsail vía SSH con integración GitHub push-to-deploy.
Ficha actualizada 24 sept 2026, 14:07 · upstream 24 sept 2026, 14:03 · release sin release detectada
Qué es cleat-deploy
Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.
Cleat-deploy es un panel de control PaaS auto-alojado diseñado para gestionar despliegues continuos en servidores propios como VPS de Hetzner Cloud o AWS Lightsail. Permite conectar repositorios de GitHub y desplegar aplicaciones escritas en Phoenix/Elixir, Go, Node.js (incluyendo Next.js y TanStack Start), Ruby on Rails y sitios estáticos sin necesidad de Docker. La herramienta utiliza SSH para clonar, construir y migrar las aplicaciones directamente en el servidor objetivo, gestionando los procesos mediante systemd y un proxy inverso Caddy.
La plataforma soporta despliegues automáticos mediante webhooks de GitHub verificados con HMAC, permitiendo tanto despliegues manuales como automáticos al empujar código. Incluye gestión de variables de entorno, bases de datos administradas (PostgreSQL con pgvector o Redis) y colas de trabajo Oban para tareas de fondo. El sistema permite definir fases de lanzamiento personalizadas, múltiples procesos web y workers, y optimización de imágenes para reducir el uso de disco en aplicaciones Node.js.
Para la autenticación y gestión multi-inquilino, cada usuario pertenece a un tenant que aísla los servidores y aplicaciones mediante `tenant_id`. Se incluye una CLI separada (`cleat`) para operaciones avanzadas como gestión de servidores, apps, variables de entorno y streaming de logs. El sistema soporta despliegues simulados en modo local (FakeRunner) o reales sobre SSH, con scripts de provisionamiento específicos para infraestructura Hetzner CX33.
- Despliegue automático de aplicaciones Next.js y TanStack Start en VPS Hetzner Cloud con integración GitHub push-to-deploy
- Gestión de despliegues continuos para aplicaciones Phoenix/Elixir sin necesidad de configurar Docker ni Kubernetes
- Provisión automática de bases de datos PostgreSQL con pgvector o Redis para aplicaciones Rails y Node.js
- Despliegue de sitios estáticos generados por constructores como Vite, Webpack o Astro en servidores Lightsail
- Gestión multi-tenant de aplicaciones compartidas en un mismo servidor VPS con aislamiento por tenant_id
- Soporte nativo para múltiples runtimes (Phoenix, Go, Node.js, Rails) sin contenedores Docker
- Integración directa con GitHub webhooks HMAC-verificados para despliegues automáticos seguros
- Gestión de bases de datos administradas (PostgreSQL/Redis) con inyección automática de variables DATABASE_URL y REDIS_URL
- Optimización de imágenes Node.js mediante `npm prune --omit=dev` para reducir el uso de disco en producción
- Sistema de colas Oban para tareas de fondo con comportamiento verificado mediante Mox tests
- Requiere acceso SSH directo al servidor objetivo (no soporta despliegues sin clave SSH o certificados específicos)
- No incluye soporte nativo para Docker ni Kubernetes, limitando su uso a entornos que ejecutan binarios directamente
- La base de datos local por defecto es SQLite; la migración a PostgreSQL requiere configuración manual de variables de entorno
- Depende de herramientas externas como `git`, `ssh`, `scp` y `tar` instaladas en el servidor objetivo
- No soporta despliegues en entornos sin conexión a internet para descargar dependencias (npm, mix, bundle)
Capturas del proyecto
Imágenes reales detectadas en la documentación del repositorio.
Perfil de infraestructura
Estimación inicial derivada del repositorio y de los servicios detectados.
Despliegue detectado
Qué señales reales de instalación hemos encontrado.
Requiere Elixir 1.15+ / OTP 26+ en el panel local. Para despliegues reales, configurar `DEPLOY_RUNNER=ssh` y proporcionar `GITHUB_TOKEN` para repos privados. En producción, establecer `SECRET_KEY_BASE`, `CLOAK_KEY` (32-byte base64) y preferiblemente usar Turso (`TURSO_DATABASE_URL`) en lugar de SQLite local. Para Hetzner CX33, usar scripts de provisionamiento específicos y configurar DNS A records apuntando a la nueva IP.
Stack y dependencias
Componentes inferidos a partir de manifests, configuración y documentación.
Puede sustituir a
Relaciones detectadas por el análisis del repositorio y su categoría.
Experiencia real de la comunidad
Ayuda a contrastar la estimación automática con instalaciones reales.
Todavía no hay datos comunitarios para este proyecto.
