# Guía de Despliegue - Analítica Núcleo Este proyecto se despliega automáticamente usando Gitea Actions en cada push a la rama `master`. ## Configuración en Gitea ### Secretos (Settings → Secrets) Los siguientes secretos deben configurarse en el repositorio de Gitea: | Secret | Descripción | Ejemplo | |--------|-------------|---------| | `SUPABASE_URL` | URL de tu instancia Supabase | `https://xxx.supabase.co` | | `SUPABASE_ANON_KEY` | Clave anónima de Supabase (cliente) | `eyJhbGc...` (JWT) | | `SUPABASE_SERVICE_ROLE_KEY` | Clave de servicio de Supabase (servidor) | `sb_secret_...` o `eyJhbGc...` | ### Cómo agregar secretos en Gitea: 1. Ve a tu repositorio en Gitea 2. Navega a **Settings → Secrets** 3. Haz clic en **Add Secret** 4. Agrega cada uno de los secretos listados arriba ## Infraestructura ### Stack Docker El proyecto se despliega como un stack de Docker Compose llamado `analiticanucleo` que contiene: - **nuxt-app**: Aplicación Nuxt.js con SSR deshabilitado ### Traefik La aplicación está configurada para usar Traefik como reverse proxy: - **Dominio**: `analitica.nucleoriofrio.com` - **Puerto interno**: `3000` (no expuesto públicamente) - **TLS**: Habilitado con Let's Encrypt - **Red**: `principal` (red externa compartida) ### Workflow de Despliegue El workflow `.gitea/workflows/deploy.yml` se ejecuta automáticamente en cada push a `master` y: 1. Crea el archivo `.env` con los secretos 2. Verifica/crea la red Docker `principal` 3. Detiene el stack existente (si existe) 4. Construye la nueva imagen Docker 5. Inicia el stack actualizado 6. Muestra logs y estado de los servicios ## Archivos del Proyecto ``` . ├── Dockerfile # Imagen Docker multi-stage con Node 22 ├── docker-compose.yml # Configuración del stack con labels de Traefik ├── .gitea/workflows/deploy.yml # Workflow de CI/CD └── nuxt4-app/ # Código de la aplicación Nuxt ├── nuxt.config.ts # Configuración de Nuxt (ssr: false) └── nuxt.config.workaround.ts # Workaround para @nuxt/ui v4 con ssr: false ``` ## Notas Técnicas ### Workaround para @nuxt/ui v4 Debido a un issue conocido con `@nuxt/ui` v4 y `ssr: false`, se implementó un plugin de Vite (`nuxt.config.workaround.ts`) que marca como externos los módulos de servidor (`@nuxt/kit`, `@tailwindcss/*`, etc.) para evitar que se incluyan en el bundle del cliente. ### Build El build utiliza: - Node.js 22 Alpine - Vite 7 - Nuxt 4 - Sharp para procesamiento de imágenes ## Troubleshooting ### El build falla con errores de importación Asegúrate de que el archivo `nuxt.config.workaround.ts` está presente y correctamente importado en `nuxt.config.ts`. ### La aplicación no es accesible 1. Verifica que Traefik esté corriendo 2. Verifica que la red `principal` existe: `docker network ls` 3. Verifica los logs del contenedor: `docker logs analiticanucleo-nuxt-app` 4. Verifica las labels de Traefik: `docker inspect analiticanucleo-nuxt-app` ### Variables de entorno no se aplican Verifica que los secretos estén configurados correctamente en Gitea y que el workflow los esté pasando al archivo `.env`.