Switch from OAuth to Authentik Proxy Outpost
- Remove all OAuth configuration (no longer needed) - Add Authentik Proxy Outpost middleware to Traefik - Simplify environment variables (only 4 required now) - Update documentation with proxy outpost setup - Document available Authentik headers - Cleaner and simpler deployment
This commit is contained in:
45
.env.example
45
.env.example
@@ -18,42 +18,35 @@ APP_NAME=mi-app
|
||||
# Dominio donde se desplegará la aplicación
|
||||
APP_DOMAIN=miapp.ejemplo.com
|
||||
|
||||
# ===========================================
|
||||
# AUTHENTIK OAUTH
|
||||
# ===========================================
|
||||
# URL pública del servidor Authentik (con https://)
|
||||
NUXT_OAUTH_AUTHENTIK_SERVER_URL=https://auth.ejemplo.com
|
||||
|
||||
# URL interna del servidor Authentik para comunicación server-side
|
||||
# (puede ser la misma que la pública si no hay red interna)
|
||||
NUXT_OAUTH_AUTHENTIK_SERVER_URL_INTERNAL=https://auth.ejemplo.com
|
||||
|
||||
# Client ID de la aplicación en Authentik
|
||||
NUXT_OAUTH_AUTHENTIK_CLIENT_ID=abc123xyz
|
||||
|
||||
# Client Secret de la aplicación en Authentik (SECRETO)
|
||||
NUXT_OAUTH_AUTHENTIK_CLIENT_SECRET=super-secreto-aqui
|
||||
|
||||
# URL de redirect después de autenticación
|
||||
# Debe coincidir con la configurada en Authentik
|
||||
NUXT_OAUTH_AUTHENTIK_REDIRECT_URL=https://miapp.ejemplo.com/auth/callback
|
||||
|
||||
# ===========================================
|
||||
# APPLICATION
|
||||
# ===========================================
|
||||
# URL pública de la aplicación
|
||||
NUXT_PUBLIC_APP_URL=https://miapp.ejemplo.com
|
||||
|
||||
# Password para encriptar sesiones (SECRETO)
|
||||
# Debe ser una cadena aleatoria de al menos 32 caracteres
|
||||
# Genera uno con: openssl rand -base64 32
|
||||
NUXT_SESSION_PASSWORD=generar-con-openssl-rand-base64-32
|
||||
|
||||
# ===========================================
|
||||
# REGISTRY AUTHENTICATION (solo para CI/CD)
|
||||
# ===========================================
|
||||
# Usuario del registro Docker
|
||||
# Usuario del registro Docker (SECRETO)
|
||||
REGISTRY_USERNAME=mi-usuario
|
||||
|
||||
# Contraseña del registro Docker (SECRETO)
|
||||
REGISTRY_PASSWORD=mi-password-secreto
|
||||
|
||||
# ===========================================
|
||||
# AUTHENTIK PROXY OUTPOST
|
||||
# ===========================================
|
||||
# Esta plantilla usa Authentik Proxy Outpost para autenticación.
|
||||
# NO se requiere configuración OAuth en la aplicación.
|
||||
#
|
||||
# Asegúrate de:
|
||||
# 1. Tener un Proxy Outpost de Authentik configurado en Traefik
|
||||
# 2. Actualizar el middleware en docker-compose.yml con el nombre correcto de tu outpost
|
||||
# 3. Configurar la aplicación en Authentik para este dominio
|
||||
#
|
||||
# La aplicación Nuxt recibirá estos headers automáticamente:
|
||||
# - X-authentik-username: nombre de usuario
|
||||
# - X-authentik-email: email del usuario
|
||||
# - X-authentik-name: nombre completo
|
||||
# - X-authentik-groups: grupos del usuario (separados por |)
|
||||
# - X-authentik-uid: ID único del usuario
|
||||
|
||||
@@ -36,13 +36,7 @@ jobs:
|
||||
APP_NAME: ${{ vars.APP_NAME }}
|
||||
# Variables de entorno para docker-compose
|
||||
APP_DOMAIN: ${{ vars.APP_DOMAIN }}
|
||||
NUXT_OAUTH_AUTHENTIK_CLIENT_ID: ${{ secrets.NUXT_OAUTH_AUTHENTIK_CLIENT_ID }}
|
||||
NUXT_OAUTH_AUTHENTIK_CLIENT_SECRET: ${{ secrets.NUXT_OAUTH_AUTHENTIK_CLIENT_SECRET }}
|
||||
NUXT_OAUTH_AUTHENTIK_SERVER_URL: ${{ vars.NUXT_OAUTH_AUTHENTIK_SERVER_URL }}
|
||||
NUXT_OAUTH_AUTHENTIK_SERVER_URL_INTERNAL: ${{ vars.NUXT_OAUTH_AUTHENTIK_SERVER_URL_INTERNAL }}
|
||||
NUXT_OAUTH_AUTHENTIK_REDIRECT_URL: ${{ vars.NUXT_OAUTH_AUTHENTIK_REDIRECT_URL }}
|
||||
NUXT_PUBLIC_APP_URL: ${{ vars.NUXT_PUBLIC_APP_URL }}
|
||||
NUXT_SESSION_PASSWORD: ${{ secrets.NUXT_SESSION_PASSWORD }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Login to registry
|
||||
|
||||
34
README.md
34
README.md
@@ -1,6 +1,6 @@
|
||||
# Plantilla Nuxt + Authentik Proxy
|
||||
|
||||
Plantilla base para aplicaciones Nuxt 4 con autenticación mediante Authentik OAuth.
|
||||
Plantilla base para aplicaciones Nuxt 4 con autenticación mediante Authentik Proxy Outpost.
|
||||
|
||||
## Estructura del Proyecto
|
||||
|
||||
@@ -14,11 +14,12 @@ Plantilla base para aplicaciones Nuxt 4 con autenticación mediante Authentik OA
|
||||
## Características
|
||||
|
||||
- ✅ Nuxt 4
|
||||
- ✅ Autenticación OAuth con Authentik
|
||||
- ✅ Autenticación con Authentik Proxy Outpost
|
||||
- ✅ Docker y Docker Compose
|
||||
- ✅ CI/CD con Gitea Actions
|
||||
- ✅ Traefik para proxy reverso y SSL
|
||||
- ✅ Claude Code hooks para monitoreo de Actions
|
||||
- ✅ Sin configuración OAuth necesaria (todo manejado por el proxy)
|
||||
|
||||
## Desarrollo Local
|
||||
|
||||
@@ -67,21 +68,36 @@ Para configurar el despliegue automático, ve a tu repositorio en Gitea:
|
||||
**Secrets (valores sensibles):**
|
||||
- `REGISTRY_USERNAME` - Usuario del registro Docker
|
||||
- `REGISTRY_PASSWORD` - Contraseña del registro Docker
|
||||
- `NUXT_OAUTH_AUTHENTIK_CLIENT_ID` - Client ID de Authentik
|
||||
- `NUXT_OAUTH_AUTHENTIK_CLIENT_SECRET` - Client Secret de Authentik
|
||||
- `NUXT_SESSION_PASSWORD` - Password para sesiones (generar con `openssl rand -base64 32`)
|
||||
|
||||
**Variables (valores públicos):**
|
||||
- `REGISTRY_URL` - URL del registro Docker (ej: `registry.ejemplo.com`)
|
||||
- `APP_NAME` - Nombre de la aplicación (ej: `mi-app`) - usado para container, imagen y Traefik
|
||||
- `APP_DOMAIN` - Dominio de la aplicación (ej: `miapp.ejemplo.com`)
|
||||
- `NUXT_OAUTH_AUTHENTIK_SERVER_URL` - URL pública de Authentik
|
||||
- `NUXT_OAUTH_AUTHENTIK_SERVER_URL_INTERNAL` - URL interna de Authentik (para comunicación server-side)
|
||||
- `NUXT_OAUTH_AUTHENTIK_REDIRECT_URL` - URL de callback OAuth (ej: `https://miapp.ejemplo.com/auth/callback`)
|
||||
- `NUXT_PUBLIC_APP_URL` - URL pública de la app
|
||||
- `NUXT_PUBLIC_APP_URL` - URL pública de la app (ej: `https://miapp.ejemplo.com`)
|
||||
|
||||
📄 Ver ejemplo completo en [`.env.example`](.env.example)
|
||||
|
||||
### Configuración de Authentik Proxy Outpost
|
||||
|
||||
Esta plantilla requiere un **Authentik Proxy Outpost** ya configurado en Traefik.
|
||||
|
||||
1. **En Authentik:**
|
||||
- Crea una aplicación para tu dominio
|
||||
- Crea/usa un Proxy Provider (Forward auth)
|
||||
- Asocia la aplicación al Outpost
|
||||
|
||||
2. **En `docker-compose.yml`:**
|
||||
- Actualiza el middleware `authentik-outpost@docker` con el nombre correcto de tu outpost
|
||||
|
||||
3. **Headers disponibles en la app:**
|
||||
- `X-authentik-username`: nombre de usuario
|
||||
- `X-authentik-email`: email del usuario
|
||||
- `X-authentik-name`: nombre completo
|
||||
- `X-authentik-groups`: grupos (separados por `|`)
|
||||
- `X-authentik-uid`: ID único
|
||||
|
||||
Tu aplicación Nuxt puede leer estos headers para obtener información del usuario autenticado.
|
||||
|
||||
## Licencia
|
||||
|
||||
MIT
|
||||
|
||||
@@ -10,16 +10,8 @@ services:
|
||||
- NODE_ENV=production
|
||||
- NUXT_HOST=0.0.0.0
|
||||
- NUXT_PORT=3000
|
||||
# OAuth Authentik
|
||||
- NUXT_OAUTH_AUTHENTIK_CLIENT_ID=${NUXT_OAUTH_AUTHENTIK_CLIENT_ID}
|
||||
- NUXT_OAUTH_AUTHENTIK_CLIENT_SECRET=${NUXT_OAUTH_AUTHENTIK_CLIENT_SECRET}
|
||||
- NUXT_OAUTH_AUTHENTIK_SERVER_URL=${NUXT_OAUTH_AUTHENTIK_SERVER_URL}
|
||||
- NUXT_OAUTH_AUTHENTIK_SERVER_URL_INTERNAL=${NUXT_OAUTH_AUTHENTIK_SERVER_URL_INTERNAL}
|
||||
- NUXT_OAUTH_AUTHENTIK_REDIRECT_URL=${NUXT_OAUTH_AUTHENTIK_REDIRECT_URL}
|
||||
# Public URL
|
||||
- NUXT_PUBLIC_APP_URL=${NUXT_PUBLIC_APP_URL}
|
||||
# Session Secret
|
||||
- NUXT_SESSION_PASSWORD=${NUXT_SESSION_PASSWORD}
|
||||
networks:
|
||||
- principal
|
||||
labels:
|
||||
@@ -35,8 +27,11 @@ services:
|
||||
# Service
|
||||
- "traefik.http.services.${APP_NAME}.loadbalancer.server.port=3000"
|
||||
|
||||
# Middleware (headers para proxy)
|
||||
- "traefik.http.routers.${APP_NAME}.middlewares=${APP_NAME}-headers"
|
||||
# Middleware chain: Authentik Proxy Outpost + Headers
|
||||
# IMPORTANTE: Reemplaza 'authentik-outpost@docker' con el nombre de tu proxy outpost
|
||||
- "traefik.http.routers.${APP_NAME}.middlewares=authentik-outpost@docker,${APP_NAME}-headers"
|
||||
|
||||
# Custom headers middleware
|
||||
- "traefik.http.middlewares.${APP_NAME}-headers.headers.customrequestheaders.X-Forwarded-Proto=https"
|
||||
|
||||
networks:
|
||||
|
||||
Reference in New Issue
Block a user