- Agregar manifest.json a rutas públicas de Traefik (anteriormente solo estaba manifest.webmanifest)
- Cambiar estrategia de cache del Service Worker de cache-first a estrategia inteligente:
* Archivos de build (/assets/): Network-first con cache fallback
* HTML: Network-first siempre para obtener última versión
* Recursos estáticos (iconos, manifest): Cache-first (no cambian)
- Incrementar versión de cache de v2 a v3 para forzar limpieza
- Evitar redirecciones a Authentik para archivos manifest
Esto soluciona:
- Error CORS en manifest.json (ya no redirige a Authentik)
- Problemas de cache que requerían limpiar datos del navegador
- Archivos desactualizados servidos desde cache
- Convertir imágenes hardcodeadas a variables (REG, REPO_OWNER)
- Agregar variables APP_NAME y APP_DOMAIN al workflow
- Agregar flag --wait al despliegue para esperar contenedores listos
- Pasar variables de entorno (RADIUS_*) explícitamente en cada paso
- Agregar paso informativo sobre el deployment
- Simplificar comandos docker compose (sin -f innecesario)
- Corregir indentación del docker-compose.yml
- Eliminar paso redundante "Show service status"
Estos cambios hacen que el workflow sea más robusto y consistente
con el patrón usado en analiticaNucleo.
Problema: El callback /outpost.goauthentik.io/callback estaba en el router
público sin middleware de Authentik, causando que llegara directamente
a Node.js → 404 Error
Solución: Quitar /outpost.goauthentik.io del router público para que
el callback pase por el router principal con el middleware
authentik-forward-auth@file, que maneja correctamente el flujo OAuth
Problema:
- Los assets (CSS/JS) estaban siendo bloqueados por Authentik
- El servidor devolvía HTML (página de login) en lugar de CSS
- Error: MIME type 'text/html' is not a supported stylesheet
Solución:
- Crear dos routers en Traefik:
1. Router público (prioridad 100): /assets, /icons, manifest, favicon SIN autenticación
2. Router principal (prioridad 10): Todo lo demás CON autenticación
- Los assets estáticos ahora se sirven directamente sin pasar por Authentik
- Mantiene la seguridad para el resto de la aplicación
Rutas públicas: /assets/*, /.well-known/*, /icons/*, /manifest.webmanifest, /favicon.ico
- Agregar labels de Traefik al servicio radiusnucleo-node para exposición en wifi.nucleoriofrio.com
- Configurar autenticación con Authentik y soporte para SSE/WebSocket
- Renombrar servicio node a radiusnucleo-node con container_name explícito
- Actualizar redes a radiusnucleo_radius_net como externa
- Consolidar workflow de Gitea en un solo job build-and-deploy
- Agregar creación automática de red radiusnucleo_radius_net en workflow