Saltar a contenido

Guía: Cloudflare Pages + Access (Google OAuth)

Guía paso a paso para proteger la documentación del proyecto con autenticación Google.


Paso 1 — Obtener Account ID y API Token

Account ID

  1. Ir a dash.cloudflare.com
  2. En la página principal, tu Account ID aparece en la barra lateral derecha
  3. Copiar el valor (32 caracteres hexadecimales)

API Token

  1. Ir a dash.cloudflare.com/profile/api-tokens
  2. Click en "Create Token"
  3. Seleccionar la plantilla "Edit Cloudflare Workers" (incluye Pages)
  4. O crear uno custom con permisos: Cloudflare Pages: Edit + Account: Read
  5. Copiar el token generado (solo se muestra una vez)

Guardar credenciales

Copiar .env.example.env y rellenar los valores:

cp .env.example .env
# Editar .env con los valores obtenidos

Paso 2 — Crear proyecto en Cloudflare Pages

Nota: El primer deploy desde GitHub Actions creará el proyecto automáticamente. Si prefieres crearlo manualmente:

  1. Dashboard → Workers & PagesCreate
  2. Seleccionar PagesDirect Upload (no conectar a Git)
  3. Nombre del proyecto: ieo-docs
  4. Subir cualquier archivo como placeholder
  5. El proyecto queda listo para recibir deploys del workflow

Paso 3 — Configurar GitHub Secrets

  1. Ir a github.com/jrx-amf/ieo-docs/settings/secrets/actions
  2. Click "New repository secret"
  3. Crear los siguientes secrets:
Nombre Valor
CLOUDFLARE_ACCOUNT_ID Tu Account ID (paso 1)
CLOUDFLARE_API_TOKEN Tu API Token (paso 1)

Paso 4 — Primer deploy

Opción A: Hacer un push a main (el workflow se ejecuta automáticamente):

git commit --allow-empty -m "trigger: primer deploy"
git push

Opción B: Ejecutar el workflow manualmente desde GitHub → Actions → "Deploy Documentation" → "Run workflow"


Paso 5 — Configurar Cloudflare Access (Google OAuth)

5.1 — Habilitar Zero Trust

  1. En el dashboard de Cloudflare, ir a Zero Trust (menú lateral)
  2. Si es la primera vez, elegir el plan gratuito (Free, hasta 50 usuarios)
  3. Crear un nombre de equipo (ej: ieo-malaga)

5.2 — Añadir Google como Identity Provider

  1. Zero Trust → SettingsAuthenticationLogin methods
  2. Click "Add new" → seleccionar Google
  3. Necesitas crear credenciales OAuth2 en Google Cloud Console:
  4. Ir a console.cloud.google.com/apis/credentials
  5. Crear un proyecto (o usar uno existente)
  6. Click "Create Credentials""OAuth client ID"
  7. Tipo: Web application
  8. Authorized redirect URI: https://<tu-equipo>.cloudflareaccess.com/cdn-cgi/access/callback
  9. Copiar Client ID y Client Secret
  10. Volver a Cloudflare y pegar Client ID y Client Secret
  11. Test para verificar que funciona

Alternativa sin Google Cloud Console: Si no quieres configurar OAuth de Google manualmente, puedes usar "One-time PIN" como método de login. Los usuarios recibirán un código por email — funciona con cualquier @gmail.com sin configuración extra.

5.3 — Crear política de acceso

  1. Zero Trust → AccessApplications
  2. Click "Add an application"Self-hosted
  3. Configurar:
  4. Application name: Documentación IEO
  5. Session Duration: 24 hours (o lo que prefieras)
  6. Application domain: seleccionar el dominio de tu proyecto Pages (ieo-docs.pages.dev)
  7. En Policies, crear una regla:
  8. Policy name: Equipo invitado
  9. Action: Allow
  10. Include: Emails — añadir los correos de las personas invitadas
  11. Ejemplo: persona1@gmail.com, persona2@gmail.com
  12. Guardar

5.4 — Verificar

  1. Abrir en modo incógnito: https://ieo-docs.pages.dev
  2. Debería aparecer la pantalla de login de Cloudflare Access
  3. Seleccionar "Sign in with Google" (o recibir código por email)
  4. Solo los emails de la lista pueden acceder

Invitar nuevos usuarios

Para dar acceso a más personas:

  1. Zero Trust → AccessApplicationsDocumentación IEO
  2. En la política "Equipo invitado", añadir más emails
  3. El usuario entra con su cuenta Google (o recibe PIN por email)

Resumen de URLs

Recurso URL
Repo GitHub https://github.com/jrx-amf/ieo-docs
GitHub Actions https://github.com/jrx-amf/ieo-docs/actions
Documentación publicada https://ieo-docs.pages.dev
Dashboard Cloudflare https://dash.cloudflare.com
Zero Trust https://one.dash.cloudflare.com