CI4 Apex Deploy System
DocumentaciónIntroducción
CI4 Apex Deploy System
CI4 Apex Deploy System es el sistema base profesional para desarrollar y desplegar aplicaciones CodeIgniter 4 completamente contenerizadas, con motor de base de datos intercambiable y listas para producción. Descomprime, configura y ejecuta en menos de 10 minutos.
El kit resuelve de raíz los problemas más comunes al arrancar un proyecto serio:
- Infraestructura Docker lista desde el primer arranque
- Entorno CI4 funcional desde el primer boot
- Motor de base de datos intercambiable — MySQL o PostgreSQL, a un comando de distancia
- Panel de operaciones VIAVI en
/viavi/para health, colas, perfil y controles del kit - VIAVI Intelligence en el panel (Professional/Ultimate) — diagnóstico de entorno, resumen de logs y generación de código, con Claude (Anthropic) usando tu propia API key
- Base sólida para pipelines CI/CD reales
- Production-ready desde el día uno
| Componente | Versión | Rol |
|---|---|---|
| CodeIgniter 4 | ^4.7 | Framework MVC, Shield auth, Queue |
| PHP | 8.5 (FPM) | Runtime, FastCGI |
| Nginx | 1.28-alpine | Reverse proxy, archivos estáticos |
| Base de datos | MySQL 9.7 o PostgreSQL 16 | Intercambiable vía make db-switch-* |
| Redis | 8.8-alpine | Cache, sesiones, backend de colas |
| Supervisor | system | Gestiona php-fpm en el contenedor de producción |
| Sentry SDK | ^4.10 | Captura de errores en producción |
| PHPStan | ^2.2 | Análisis estático nivel 6, cero errores |
| Rector | ^2.5 | Refactorización automatizada para PHP 8.5 |
| PHPUnit | ^11.2 | Tests unitarios, bootstrap, sesión y BD |
| pcov | PECL | Driver de cobertura (solo desarrollo) |
Requisitos previos
PHP y Composer no son necesarios en tu máquina local — todo corre dentro de contenedores.
- Docker Desktop 4.x o Docker Engine 24.x con Compose v2
- GNU Make
- Git 2.x
Guía de implementación
1. Descomprime el kit
Descomprime el archivo .zip descargado en tu carpeta de proyecto vacía.
2. Inicia el entorno
No necesitas crear el .env manualmente — make setup lo genera automáticamente a partir de .env.example si no existe.
¿Vas a arrancar directo con PostgreSQL en vez de MySQL? En ese caso sí necesitas el .env creado antes de cambiar de motor (los comandos de switch lo editan in place): cp .env.example .env && make db-switch-postgres && make setup.
3. Verifica el estado
4. Quality gates
Configuración
Motor de base de datos
Cambia entre MySQL y PostgreSQL en cualquier momento. Cada comando detiene el stack activo, reescribe .env y apunta Docker Compose al archivo correspondiente:
Ningún otro comando cambia — make up, make migrate, make test, etc. funcionan igual sin importar el motor activo.
KIT_STAGE
Controla qué se sirve en /. Puedes cambiarlo desde el panel de operaciones o con Make:
| Valor | Comportamiento |
|---|---|
setup |
Pantalla de onboarding VIAVI (default) |
building |
Pantalla de onboarding mientras construyes |
launched |
Sirve tu aplicación en / |
En Railway/Render el archivo .env es efímero — configura KIT_STAGE en su panel de variables. En VPS el archivo persiste en disco y el switch desde el panel funciona correctamente.
Credenciales por defecto
admin@local.test |
|
| Password | Password123! |
Recuperación de cuenta
Si pierdes la contraseña de admin, tienes dos opciones:
Opción 1 — Flujo web con recovery key
Requiere que RECOVERY_KEY ya esté definida en tu .env (o en las variables de Railway) antes de perder el acceso — configúrala ahora, no cuando ya la necesites.
1. Genera la clave. El comando usa OpenSSL para crear 32 bytes aleatorios en formato hexadecimal:
En Windows, PowerShell no trae openssl integrado. Corre el comando desde Git Bash (se instala junto con Git para Windows, que ya tienes) o desde el shell del contenedor: docker compose exec php openssl rand -hex 32 — ambas rutas dan el mismo resultado.
2. Guarda la clave generada. Copia el valor que te devuelve el comando (una cadena de 64 caracteres) y agrégala a tu .env:
En Railway, agrégala como variable de entorno del servicio en vez de en .env (recuerda: .env es efímero ahí). Guárdala también en un gestor de contraseñas — es tu única llave de recuperación si pierdes el acceso al panel.
3. Cuando necesites recuperar el acceso: visita /viavi/profile/reset, confirma el email actual de la cuenta, e ingresa la recovery key que guardaste en el paso 2.
Opción 2 — CLI de emergencia
Requiere acceso al servidor o contenedor (SSH, o la terminal del panel de tu hosting). Regresa la cuenta a las credenciales de fábrica sin importar si configuraste RECOVERY_KEY o no — es el respaldo si nunca la generaste:
Uso
Panel de operaciones VIAVI
El kit incluye un panel de operaciones en /viavi/, siempre disponible independientemente del estado de tu aplicación.
| URL | Descripción |
|---|---|
/viavi/ |
Panel principal — health, colas, controles |
/viavi-dashboard |
Acceso directo al panel |
/viavi/ai |
VIAVI Intelligence — Professional: solo diagnóstico. Ultimate: completo |
/viavi/profile |
Cambiar email y contraseña |
/viavi/commands |
Referencia de comandos Make |
/health |
Healthcheck público en JSON |
VIAVI Intelligence
Disponible en el panel para los tiers Professional y Ultimate. Impulsado por Claude (Anthropic), usando tu propia API key — el kit nunca intermedia ni cobra por esas llamadas.
| Capacidad | Professional | Ultimate |
|---|---|---|
| Diagnóstico de entorno | ||
| Resumen de logs | — | |
| Generación de código | — |
El contenido de logs se escanea y redacta antes de enviarse a la API para evitar exponer contraseñas, tokens o API keys. El código generado siempre se devuelve como texto para revisión manual — nunca se escribe a disco automáticamente.
Arrancar tu aplicación
- Edita app/Views/home.php con tu pantalla principal.
- Define tus rutas en app/Config/Routes.php.
- Edita app/Controllers/Home.php con tu lógica.
- Activa tu app:
Rutas reservadas por el kit — no las sobreescribas: /viavi/*, /viavi-dashboard, /health, /login, /post-login, /set-organization/*
Comandos disponibles
Despliegue
El kit incluye guías de despliegue para tres plataformas. Selecciona la que mejor se adapte a tu proyecto.
Railway
Ultimate Tier requerido
Imagen de un solo contenedor. Las variables de entorno se inyectan directamente — el archivo .env no se usa en producción.
KIT_STAGE debe configurarse en el panel de variables de Railway, no en .env.
Render
Ultimate Tier requerido
Render no ofrece MySQL nativo — usa Railway MySQL como proveedor externo (recomendado: soporte nativo de llaves foráneas y copia/pega simple de credenciales) o Aiven/PlanetScale como alternativas.
VPS (Ubuntu 24.04)
Ultimate Tier requerido
Control total. El archivo .env persiste en disco, por lo que el switch de KIT_STAGE desde el panel VIAVI funciona correctamente en producción.