Checklist para montar un sitio con Cloudflare Pages, VSCode y Git.
Última actualización: mayo 2026
1 · Crear el repositorio
El repositorio es la carpeta en la nube donde vivirá tu sitio. Tienes dos opciones según preferencias éticas y prácticas:
GitHub — integración directa con Cloudflare, OAuth en VSCode sin configurar nada. Es Microsoft, entrena IA con código público a menos que estés en Enterprise.
Codeberg — asociación sin ánimo de lucro europea (Forgejo, FOSS), no entrena IA. Cloudflare no integra nativo con Codeberg: requiere mirror automático Codeberg → GitHub o deploy por wrangler desde local (ver paso 8).
Opción A · GitHub
Opción B · Codeberg
2 · Instalar Visual Studio Code
VSCode es el editor de código que usaremos para editar los archivos del sitio.
Orientarse en la barra lateral
La barra lateral izquierda tiene varios iconos. Los importantes por ahora:
usarExplorer— primer icono. Aquí ves y abres los archivos del proyecto.
usarSource Control— icono con ramitas. Desde aquí haces commit y subes cambios.
usarExtensions— cuadraditos. Para instalar extensiones como Live Server.
ignorarRun and Debug, Testing, Accounts, Settings— no los necesitas por ahora.
3 · Instalar y configurar Git
Git es la herramienta que permite subir los cambios al repositorio de GitHub.
Configurar identidad
Abrir la terminal en VSCode (Ctrl+Ñ o Cmd+Ñ en Mac) y ejecutar:
Clonar = descargar una copia del repositorio a tu ordenador. Desde VSCode es lo más cómodo.
Con GitHub: VSCode abre el navegador para hacer OAuth, sin pasos extra.
Con Codeberg: VSCode pide usuario y contraseña la primera vez. Mejor opción: ir a Codeberg → Settings → Applications → generar un access token con permiso de repository y usarlo como contraseña. Solo hay que hacerlo una vez por máquina.
5 · Cargar los archivos del sitio
Ahora que la carpeta está abierta en VSCode, toca meter los archivos de la web.
Puedes arrastrar los archivos directamente al panel Explorer de VSCode, o copiarlos desde el Finder / Explorador de archivos.
6 · Probar en local con Live Server
Antes de subir nada, comprobamos que la web funciona bien en tu ordenador.
Instalar la extensión
Previsualizar el sitio
Live Server abre el navegador y recarga automáticamente cada vez que guardas un archivo.
7 · Primer commit y push
Todo funciona en local — toca subir los archivos a GitHub.
8 · Conectar el repo a Cloudflare (Workers & Pages)
Cloudflare ha unificado Pages y Workers bajo una sola plataforma: cualquier sitio (estático o no) se despliega como Worker con assets estáticos, y eso requiere dos archivos de configuración en el repo. El flujo es el mismo para GitHub que para Codeberg.
Si tu repo está en Codeberg, lee el paso previo (sirve igual) y luego salta a la sección "Repo en Codeberg" más abajo.
Paso previo: preparar el repo
Antes de tocar el dashboard de Cloudflare hay que añadir dos archivos a la raíz del repo. Si no, el deploy falla con ? Proceed with setup? (Wrangler intenta inicializar interactivamente y se cuelga) o con [ERROR] Asset too large (intenta subir .git/, que excede los 25 MiB del límite de Workers).
Mantienes el desarrollo en Codeberg, GitHub recibe una copia espejo, Cloudflare se conecta al espejo de GitHub. Para el flow diario es transparente: empujas a Codeberg, en segundos llega a GitHub y Cloudflare despliega.
Opción 2 · Deploy directo con wrangler desde local (sin mirror, más control)
El repo vive solo en Codeberg. Despliegas a Cloudflare desde tu terminal con la CLI wrangler. No hay auto-deploy: cada cambio requiere un comando manual o un pipeline en Woodpecker CI (Codeberg).
Tras cada cambio en Codeberg, repite npx wrangler deploy para publicar. Para automatizarlo: pipeline Woodpecker en .woodpecker.yml con el token de Cloudflare como secret.
9 · Añadir dominio personalizado al proyecto
Si tienes un dominio propio, lo conectamos al Worker que acabamos de desplegar.
Si la zona DNS del dominio ya está en la misma cuenta de Cloudflare, Cloudflare crea el registro CNAME automáticamente y no hay que tocar nada más. Salta al paso 11.
Si el dominio aún no está en Cloudflare, hay que añadirlo primero como zona DNS. Lo vemos en el paso 10.
HTTPS es automático: Cloudflare emite un certificado en cuanto el DNS responde. No hay que activar nada.
10 · Añadir el dominio a Cloudflare (si aún no lo está)
Solo necesario si tu dominio aún no está como zona DNS en tu cuenta de Cloudflare. Si ya lo está, Cloudflare creó solo los registros en el paso 9 y puedes saltar a la sección 11.
Añadir la zona
Apuntar los nameservers
Conectar el dominio al proyecto
Una vez la zona está activa, vuelve al paso 9 y añade el dominio desde Settings → Domains & Routes del proyecto. Cloudflare creará automáticamente el CNAME a nombre.<cuenta>.workers.dev.
Tipo
Nombre
Contenido
Proxy
CNAME
@
nombre.<cuenta>.workers.dev
Proxied
CNAME
www
nombre.<cuenta>.workers.dev
Proxied
Estos registros los crea Cloudflare automáticamente cuando añades el Custom Domain desde el panel del proyecto. Solo tendrías que tocarlos a mano si por algún motivo no aparecen.
HTTPS
El certificado lo emite Cloudflare automáticamente al detectar que el DNS responde. No hay checkbox de "Enforce HTTPS" — está activo por defecto. Cuando entres con http:// redirige solo a https://.
11 · Flujo de trabajo para futuros cambios
A partir de ahora, cada vez que quieras modificar algo en la web:
Cloudflare despliega en ~1 minuto tras detectar el push (si tu repo está conectado vía Git). Si usas el flow con wrangler desde local, tienes que ejecutar npx wrangler deploy después del push.
12 · Checklist final y problemas comunes
Problemas comunes
"No me aparece la página"
Verifica que el último deploy en Cloudflare está en estado Success (pestaña Deployments del proyecto)
Si falló, revisa el log del build — los más comunes están en las dos entradas siguientes (Asset too large y Proceed with setup?)
Confirma que la rama de producción es main en Settings → Build
"Build falla con [ERROR] Asset too large por culpa de .git/"
Wrangler está intentando subir todo el repo como assets, incluida la carpeta .git/ (que pesa mucho por el historial). Workers tiene límite de 25 MiB por archivo.
Solución: añadir un archivo .assetsignore en la raíz del repo con .git, .gitignore, node_modules, wrangler.jsonc, *.md, etc. (ver paso 8, "Paso previo: preparar el repo")
Commit + push y el siguiente build pasa
"Build falla con ? Proceed with setup? en el log"
El repo no tiene wrangler.jsonc: Wrangler no sabe qué desplegar y abre un setup interactivo que en el contexto del build no se puede completar
Solución: crear wrangler.jsonc en la raíz del repo con la config de assets (ver paso 8, "Paso previo: preparar el repo")
El name del wrangler.jsonc debe coincidir con el Project name en Cloudflare
"El dominio personalizado no funciona"
Confirma que el dominio aparece en Settings → Domains & Routes del proyecto, en estado Active
Si está pendiente, suele ser DNS sin propagar — espera unos minutos
Verifica en la zona DNS del dominio → DNS → Records que existen los registros tipo Worker apuntando al proyecto (raíz y www)
Si tenías records DNS antiguos del hosting anterior (A, AAAA o CNAME en el apex o www), Cloudflare no los pisa: hay que borrarlos a mano antes de añadir el Custom Domain. Ojo: no toques los MX, TXT de SPF/DKIM/DMARC ni records de otros subdominios.
Si añadiste el dominio como zona DNS hace poco, comprueba que los nameservers en el registrador apuntan a Cloudflare
Espera propagación DNS (suele ser minutos, máximo 24h)
"El push no dispara deploy"
(GitHub) Confirma que Cloudflare sigue autorizado en GitHub → Settings → Applications → Authorized OAuth Apps
(GitHub) Verifica que el repo está incluido si tu instalación tiene "Only select repositories"
(GitHub) Si en el dashboard del proyecto aparece el aviso amarillo "This project is disconnected from your Git account", ver la entrada siguiente
(Codeberg con mirror) Comprueba que el push mirror se ejecutó → Settings → Mirror Settings → última sincronización
(Codeberg con wrangler) No hay deploy automático: tienes que ejecutar npx wrangler deploy tras cada cambio
"Aviso amarillo: This project is disconnected from your Git account"
Aparece tras crear el proyecto si la vinculación con la GitHub App de Cloudflare no quedó completa
Arreglar en Settings → Build del proyecto → al lado del repo, click en Manage → reconectar dando permisos al repo desde GitHub (se abre una pestaña a github.com para confirmar)
Refrescar la página tras reconectar; el aviso debería desaparecer en segundos
Sin esto, los push a main no disparan redeploy automático
"Git me pide usuario y contraseña"
GitHub ya no acepta contraseñas. Necesitas un Personal Access Token (Settings → Developer settings → Tokens classic, scope repo)
Codeberg sí acepta contraseña, pero mejor crear un access token (Settings → Applications → Generate Token, scope repository) y usarlo como contraseña
Más fácil: con GitHub usa Sign in with GitHub en VSCode, que abre el navegador y lo gestiona solo
"VSCode me dice que Git no está instalado"
Cierra y vuelve a abrir VSCode después de instalar Git
En Mac, abre la Terminal y escribe git --version — si no está, instala Xcode Command Line Tools con xcode-select --install
"Las rutas con extensión .html no funcionan / falla 404"
Cloudflare sirve index.html en cada carpeta. Si tienes /sobre.html, accede con /sobre.html o crea /sobre/index.html y accede a /sobre/
Si quieres que las rutas inexistentes muestren tu 404.html, añade "not_found_handling": "404-page" dentro de "assets" en wrangler.jsonc
Para SPA (rutas que renderiza JS): añade un archivo _redirects en la raíz con /* /index.html 200
"Veo el sitio viejo aunque haya hecho push"
Cache del navegador: prueba en incógnito o limpia con Cmd+Shift+R (recarga forzada)
Cache de Cloudflare: el panel del proyecto tiene una opción de purga, pero rara vez hace falta — CF respeta el ETag del nuevo deploy