# OpenCCB - Resumen de ConfiguraciΓ³n y Despliegue ## Fecha: 26 de Marzo de 2026 --- ## πŸ“‹ Resumen del Proyecto **OpenCCB** es una plataforma LMS/CMS de cΓ³digo abierto desplegada en **AWS EC2** con nginx-proxy para SSL automΓ‘tico. **Servidor AWS:** - **Host**: `ec2-18-224-137-67.us-east-2.compute.amazonaws.com` - **Usuario**: `ubuntu` - **SSH Key**: `ubuntu.pem` - **RegiΓ³n**: us-east-2 (Ohio) --- ## πŸ”§ ConfiguraciΓ³n Actual ### Dominios - `studio.norteamericano.com` - CMS/Admin - `learning.norteamericano.com` - LMS/Estudiantes ### Arquitectura ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ AWS EC2 β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ nginx │───▢│ Studio + CMS β”‚ β”‚ β”‚ β”‚ proxy β”‚ β”‚ (Next.js + Rust) β”‚ β”‚ β”‚ β”‚ :80, :443 β”‚ β”‚ :3000, :3001 β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β–Ό β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ acme β”‚ β”‚ Experience + LMS β”‚ β”‚ β”‚ β”‚ companion β”‚ β”‚ (Next.js + Rust) β”‚ β”‚ β”‚ β”‚ (Let's β”‚ β”‚ :3003, :3002 β”‚ β”‚ β”‚ β”‚ Encrypt) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ PostgreSQL + PGVector β”‚ β”‚ β”‚ β”‚ :5432 β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## πŸš€ Comandos de Despliegue ### Desde tu mΓ‘quina local: ```bash # Ejecutar deploy ./deploy.sh ``` El script preguntarΓ‘: 1. Nombre del administrador 2. Email del administrador 3. ContraseΓ±a (oculta) 4. Nombre de la organizaciΓ³n 5. ΒΏUsar SSL? [y/N] 6. ΒΏUsar STAGING? [y/N] (solo si elegiste SSL) ### ConexiΓ³n al servidor: ```bash ssh -i "ubuntu.pem" ubuntu@ec2-18-224-137-67.us-east-2.compute.amazonaws.com cd /var/www/openccb ``` --- ## ⚠️ Problemas Conocidos (Para Resolver) ### 1. Variables NEXT_PUBLIC en Studio **Problema**: El contenedor `openccb-studio` no estΓ‘ recibiendo ambas variables `NEXT_PUBLIC`: - βœ… `NEXT_PUBLIC_LMS_API_URL=http://learning.norteamericano.com` - ❌ `NEXT_PUBLIC_CMS_API_URL` - **FALTA** **SoluciΓ³n Aplicada**: 1. Actualizado `web/studio/Dockerfile` para aceptar ambos ARG 2. Actualizado `docker-compose.yml` para pasar ambos argumentos 3. Actualizado `deploy.sh` para verificar y reconstruir con `--no-cache` **Comandos para Verificar**: ```bash # En el servidor sudo docker exec openccb-studio env | grep NEXT_PUBLIC # DeberΓ­a mostrar: # NEXT_PUBLIC_CMS_API_URL=http://studio.norteamericano.com # NEXT_PUBLIC_LMS_API_URL=http://learning.norteamericano.com ``` **Si persiste el problema**: ```bash # Reconstruir manualmente cd /var/www/openccb sudo docker compose down sudo docker rmi openccb-studio 2>/dev/null || true sudo docker builder prune -f sudo docker compose build --no-cache studio sudo docker compose up -d studio sudo docker exec openccb-studio env | grep NEXT_PUBLIC ``` ### 2. Rate Limit de Let's Encrypt **Problema**: Se alcanzΓ³ el lΓ­mite de 5 certificados por semana. **SoluciΓ³n Temporal**: - Usar HTTP en lugar de HTTPS - O usar Let's Encrypt Staging (certificados de prueba) **Fecha de Reinicio**: 2026-03-27 04:21:42 UTC --- ## πŸ“ Archivos Modificados ### 1. `deploy.sh` - βœ… Pregunta datos del administrador - βœ… Pregunta sobre SSL y Staging - βœ… Actualiza docker-compose.yml segΓΊn elecciΓ³n - βœ… Reconstruye contenedores con `--no-cache` - βœ… Verifica variables de entorno ### 2. `docker-compose.yml` - βœ… URLs en HTTP por defecto - βœ… Ambos argumentos de build para studio - βœ… Variables de entorno correctas ### 3. `web/studio/Dockerfile` - βœ… Agrega `ARG NEXT_PUBLIC_LMS_API_URL` - βœ… Agrega `ENV NEXT_PUBLIC_LMS_API_URL` ### 4. `web/studio/src/lib/api.ts` - βœ… Corrige funciΓ³n `getApiBaseUrl` para priorizar variable de entorno --- ## πŸ” Credenciales (Ejemplo) **Usuario Administrador**: - Email: `admin@norteamericano.com` - ContraseΓ±a: `Admin123!` (o la que se haya configurado) **Base de Datos** (en `/var/www/openccb/.env`): ``` DB_PASSWORD= JWT_SECRET= ``` --- ## πŸ“Š Comandos Útiles ### Ver estado de servicios ```bash sudo docker compose ps ``` ### Ver logs ```bash # Todos los servicios sudo docker compose logs -f # Servicio especΓ­fico docker logs openccb-studio --tail 50 docker logs openccb-experience --tail 50 docker logs acme-companion --tail 50 ``` ### Verificar variables de entorno ```bash # Studio sudo docker exec openccb-studio env | grep NEXT_PUBLIC # Experience sudo docker exec openccb-experience env | grep NEXT_PUBLIC ``` ### Reconstruir contenedores ```bash # Todo sudo docker compose build --no-cache sudo docker compose up -d # Solo studio sudo docker compose build --no-cache studio sudo docker compose up -d studio ``` ### Verificar certificados SSL ```bash docker logs acme-companion --tail 50 ``` --- ## 🎯 PrΓ³ximos Pasos (Para Continuar MaΓ±ana) ### 1. Verificar Variables NEXT_PUBLIC ```bash ssh -i "ubuntu.pem" ubuntu@ec2-18-224-137-67.us-east-2.compute.amazonaws.com cd /var/www/openccb # Verificar sudo docker exec openccb-studio env | grep NEXT_PUBLIC # Si falta CMS_API_URL, reconstruir: sudo docker compose down sudo docker rmi openccb-studio 2>/dev/null || true sudo docker builder prune -f sudo docker compose build --no-cache studio sudo docker compose up -d studio ``` ### 2. Probar Login - Acceder a `http://studio.norteamericano.com` - Intentar loguearse con las credenciales del admin - Verificar que no haya errores de conexiΓ³n ### 3. Cambiar a HTTPS (DespuΓ©s del Rate Limit) ```bash # DespuΓ©s del 2026-03-27 ./deploy.sh # Responder "y" a "ΒΏUsar SSL?" # Responder "n" a "ΒΏUsar STAGING?" ``` ### 4. Verificar Funcionalidades - [ ] Login de administrador - [ ] CreaciΓ³n de cursos - [ ] Subida de archivos - [ ] IntegraciΓ³n con LMS - [ ] Certificados SSL generados --- ## πŸ“ Notas Importantes 1. **HTTP vs HTTPS**: Actualmente se usa HTTP porque los certificados de staging no son vΓ‘lidos para las llamadas API entre dominios. 2. **Rate Limit**: Let's Encrypt permite 5 certificados por semana por dominio. El lΓ­mite se reinicia el 2026-03-27. 3. **Variables de Entorno**: Es crΓ­tico que ambos `NEXT_PUBLIC_*` estΓ©n presentes en el contenedor de Studio para que las llamadas API funcionen correctamente. 4. **ReconstrucciΓ³n**: Siempre usar `--no-cache` al reconstruir para asegurar que los cambios en las variables de entorno se apliquen. --- ## πŸ”§ SoluciΓ³n de Problemas Comunes ### Error 502 Bad Gateway ```bash # Verificar que los servicios estΓ‘n corriendo sudo docker compose ps # Ver logs docker logs openccb-studio --tail 50 docker logs nginx-proxy --tail 50 # Reiniciar sudo docker compose restart ``` ### Variables NEXT_PUBLIC faltantes ```bash # Ver docker-compose.yml cat docker-compose.yml | grep -A 10 "studio:" # Verificar argumentos sudo docker compose config | grep NEXT_PUBLIC # Reconstruir sudo docker compose build --no-cache studio ``` ### Certificados SSL no se generan ```bash # Ver logs docker logs acme-companion --tail 100 # Verificar DNS dig studio.norteamericano.com dig learning.norteamericano.com # Verificar puertos sudo netstat -tlnp | grep :80 ``` --- ## πŸ“ž Contacto y Soporte **DocumentaciΓ³n**: - `DESPLIEGUE.md` - Instrucciones de despliegue - `README.md` - DocumentaciΓ³n general - `docker-compose.yml` - ConfiguraciΓ³n de servicios **Archivos de ConfiguraciΓ³n**: - `/var/www/openccb/.env` - Variables de entorno - `/var/www/openccb/docker-compose.yml` - Servicios Docker - `web/studio/Dockerfile` - Build de Studio - `deploy.sh` - Script de despliegue --- **Última ActualizaciΓ³n**: 26 de Marzo de 2026 **Estado**: Pendiente verificar variables NEXT_PUBLIC en Studio