Cómo Crear un Blog Astro Gratis con Cloudflare en 30 Minutos
Aprende a crear un blog Astro gratis y desplegarlo en Cloudflare Pages en 30 minutos: sin tarjeta, sin costes de hosting, paso a paso para principiantes totales.
Actualizado Publicado 30 min de lectura

¿Quieres un blog que no cueste nada alojar? Esta guía construye un blog Astro gratis y lo despliega en Cloudflare Pages en unos 30 minutos. Sin tarjeta y sin facturas de hosting.
No necesitas saber JavaScript ni ningún framework. Si puedes pegar comandos en una terminal, puedes seguir la guía.
Actualización: el tema acaba de recibir un boost de velocidad
El Bitdoze Astro Theme que harás fork en el Nivel 4 ahora corre sobre Astro 7. El nuevo compilador Rust de Astro redujo los tiempos de build aproximadamente a la mitad en este mismo blog (743 páginas, de 103s a 47s), y aproveché la actualización para añadir una suite de tests real con Vitest, un esquema de contenido más estricto y un arreglo de sitemap al tema. Nada de lo de abajo cambia para ti: npm install simplemente trae la versión más rápida. Cifras completas aquí: Astro 7 Benchmark: Tiempos de Build Reducidos a la Mitad.
Una nota de honestidad: el vídeo y las capturas de esta guía se grabaron antes de que aterrizara Astro 7 y antes de que Cloudflare renombrara el nav del dashboard a Workers & Pages. Los pasos escritos de abajo son la fuente de verdad para los archivos de config y el flujo de despliegue.
¿Qué demonios es Astro?
Astro es un generador moderno de sitios estáticos. Construyes páginas con tu framework de UI favorito (React, Vue, Svelte) o con Markdown a pelo, y Astro envía cero JavaScript por defecto.
Mientras otros frameworks mandan megabytes de JS al navegador, Astro entrega principalmente HTML. Las páginas cargan rápido por sí solas, sin un plugin de caché haciendo el trabajo pesado.
Cronología de versiones, para que sepas dónde estás (verificado oct 2026): Astro 5 salió en dic 2024, Astro 6 aterrizó en mar 2026, y Astro 7 llegó el 22 de junio de 2026 con un compilador basado en Rust. La versión actual es 7.3.8 (8 de octubre de 2026). El tema de esta guía corre Astro 7.
Por qué Astro es perfecto para tu blog
- HTML estático y cero JS por defecto: tus páginas son archivos simples en una CDN, que es lo que quieren los buscadores y los móviles lentos
- Arquitectura de islas: solo se hidratan las partes interactivas
- Usa cualquier framework de UI que te guste, o ninguno
- Soporte de Markdown para escribir posts
- Valores por defecto sin configuración, para que pases el tiempo escribiendo en vez de cableando
Piensa en Astro como el mullet de los frameworks web: negocios delante (HTML estático para velocidad) y fiesta detrás (JavaScript solo donde lo necesitas). Hoy lo usamos para construirte un blog que no necesita un niñero de devops. ¿Ya tienes un sitio WordPress? Mira cómo migré mi sitio WordPress a Astro — fue mucho menos doloroso de lo que esperaba.
Lo que tendrás al final
Todo el stack de $0: GitHub + Astro + Cloudflare Pages. Esto es lo que obtienes:
- Un blog moderno y responsive impulsado por Astro
- Contenido guardado en un repo de GitHub que controlas
- Sitio desplegado en Cloudflare Pages con SSL gratis
- Una URL
*.pages.devgratis, más un dominio propio opcional (porquemibloggenial.comsupera acadenaaleatoria.pages.dev) - Despliegues de preview gratis por cada rama, que hacen las veces de staging
- Coste total: $0.00
Lo que necesitas
- Una cuenta de GitHub (gratis, la crearás en el Nivel 1)
- Node.js v22.12.0 o más nuevo y npm 10.8.2+ (suelo duro: el tema y Astro 7 se niegan a correr por debajo de esto; el LTS actual 24.x es perfecto)
- git (incluido con VS Code, Xcode Command Line Tools, o el gestor de paquetes de tu distro)
- Conocimientos básicos de Markdown
- Unos 30 minutos
- Visual Studio Code o cualquier editor (opcional)
- Una bebida a tu elección
Comprobación rápida antes de cualquier otra cosa:
node --version # expect v22.12.0 or newer, e.g. v22.23.3 or v24.22.0
npm --version # expect 10.8.2 or newerSi node --version imprime algo por debajo de v22.12.0, para aquí y actualiza. Astro 7 no correrá en Node más viejo, y solo coleccionarás errores de engine en el Nivel 6. La solución completa está en la sección de Resolución de problemas al final.
Aviso: el vídeo es anterior a Astro 7, al renombrado del dashboard de Cloudflare (Workers & Pages) y a la división de config site.ts. Es genial para el flujo general, pero sigue los pasos escritos de abajo donde la UI o los archivos de config se hayan movido.
Nivel 1: hazte GitHubber (5 minutos)
¿Ya tienes cuenta de GitHub? Salta adelante. Si no:
- Ve a GitHub.com
- Haz clic en Sign up
- Elige un nombre de usuario
- Verifica tu email (revisa el spam, esos correos escurridizos adoran esconderse)
Logro desbloqueado: tienes una cuenta de GitHub.
Verifica: estás logueado y puedes ver tu dashboard en github.com.
¿Prefieres SSH?
El clonado por HTTPS funciona bien para esta guía. Si prefieres usar claves desde el principio: vincula GitHub con SSH en Mac/Linux.
Nivel 2: Node tu camino al éxito (5 minutos)
Antes de ponernos a programar, instala Node.js y npm:
- Visita nodejs.org
- Descarga la versión LTS (24.x a octubre de 2026; cualquier cosa v22.12.0+ funciona)
- Instálala como cualquier otra app
- Abre Terminal/Símbolo del sistema y escribe:
node --version # expect v22.12.0 or newer (Astro 7 requirement)
npm --version # expect 10.8.2 or newerSi ves números en el rango correcto, vas bien. Si ves números en el rango incorrecto (v18.x, v20.x), ahora posees un modo de fallo conocido: npm install lanzará errores de engine y el servidor de dev se negará a arrancar. Arréglalo antes de seguir.
Para los curiosos: Node 26 se convierte en LTS el 28-10-2026. No necesitas perseguir la versión más nueva, solo necesitas superar el suelo de v22.12.0.
Para más sobre Node.js
Varias versiones en una máquina, sin dramas de sudo: instala Node.js con nvm en macOS/Ubuntu.
Nivel 3: poténciate con VS Code (opcional, 3 minutos)
Porque programar en el Bloc de notas es muy de 1995.
- Ve a code.visualstudio.com
- Descarga e instala
- Ábrelo
Cualquier editor vale: Neovim, Windsurf, lo que ya tengas abierto. VS Code es simplemente el camino de menor resistencia aquí porque su panel git integrado hace los pasos del Nivel 5 y el Nivel 9 sin salir de la ventana. Si quieres un editor de código con IA como Windsurf, también funciona.
Nivel 4: haz fork de un tema de blog Astro gratis (2 minutos)
Hora de coger la plantilla del blog. Esta es toda la razón por la que la guía funciona: un tema de blog Astro gratis con búsqueda, RSS, modo oscuro y unos 20 posts de demo ya cableados.
- Visita Bitdoze Astro Theme
- Pulsa Fork (esquina superior derecha)
- Nómbralo como quieras (
my-awesome-blogfunciona) - Haz clic en Create fork
Ahora posees una copia.
¿Dónde está el botón 'Use this template'?
El README del tema menciona el atajo “Use this template” de GitHub, pero el repo no está marcado actualmente como plantilla de GitHub, así que ese botón puede no aparecer. No lo busques. Fork es el camino fiable (y mantiene funcionando el flujo de merge con upstream de “Mantén tu blog fresco”). Si odias los forks, usa el Método B de abajo.
Método A: Fork (recomendado)
Exactamente los 4 pasos de arriba. Tu fork vive en github.com/TU-USUARIO/my-awesome-blog, y Sync fork en GitHub lo mantiene al día con el tema.
Método B: Clonar + push a un repo nuevo
Para cuando quieres un repo limpio sin relación de fork:
git clone https://github.com/bitdoze/bitdoze-astro-theme.git my-awesome-blog
cd my-awesome-blog
rm -rf .git
git init
git add .
git commit -m "Import Bitdoze Astro Theme"Luego crea un repo vacío en GitHub y haz push:
git remote add origin https://github.com/YOUR-USER/my-awesome-blog.git
git push -u origin mainVerifica: git remote -v muestra tu repo como origin.
Verifica: el repo aparece bajo tu cuenta de GitHub con los archivos del tema dentro.
Nivel 5: clona como un pro (3 minutos)
Pon el código en tu máquina:
- En tu repo forkeado, haz clic en Code > copia la URL HTTPS
- Abre VS Code
- Pulsa
Ctrl+Shift+P(oCmd+Shift+Pen Mac) - Escribe Git: Clone, pulsa Enter
- Pega la URL, elige una carpeta
- Abre el repo cuando te lo pida
Verifica: la carpeta del repo se abre en VS Code con package.json visible en el árbol de archivos. ¿No hay package.json? Clonaste la cosa equivocada.
Nivel 6: instala y corre en local (5 minutos)
Conecta las tuberías y pon el blog corriendo en tu propia máquina.
- Abre la terminal en VS Code (
Ctrl + backtick) - Escribe:
npm install
npm run dev- Espera la instalación (la primera ejecución descarga el toolchain de Astro)
- Visita
http://localhost:4321
Dato curioso: el repo trae un archivo .node-version fijado a 22.12.0. Eso es lo que mantiene a todos en el mismo suelo de Node, aquí y luego en Cloudflare.
Logro desbloqueado: el blog corre en tu máquina.
Verifica: http://localhost:4321 muestra la página de inicio de demo: sección hero más una rejilla de posts de demo. Es el contenido de ejemplo del tema, lo desalojaremos en un minuto.
Roto se ve así: la terminal da errores al arrancar. Nueve de cada diez veces es Node más viejo que v22.12.0 o un node_modules rancio. Salta a Resolución de problemas al final de esta guía.
Nivel 7: hazlo tuyo (10 minutos)
Añade tu toque personal. Esta es la sección que más cambió en la actualización del tema de 2026, así que lee los nombres de archivo con cuidado. Antiguamente todo vivía en config.json. Ya no.
Actualiza src/config/site.ts (la identidad de tu blog)
Este es ahora el único archivo de identidad. Edita los strings obvios, deja la estructura quieta:
export const siteConfig = {
// Identity
title: "Your Amazing Blog Title",
brandName: "Your Blog Name",
logoText: "Your Blog Name",
author: "Your Name",
description: "Your captivating blog description",
heroDescription: "One or two sentences under your hero headline.",
footerDescription: "What your blog is about, in one line.",
postsPerPage: 11,
// Below this you'll find hero { title, titleAccent, primaryCta, ... }
// and homepage { showFeaturedPosts, showTaxonomyCards, ... }
// leave the rest alone for now
};Nota para quien siga tutoriales viejos: ya no hay clave name. Si un post te dice que pongas siteConfig.name, está describiendo una versión muerta del tema. title y brandName son tus nuevas amigas.
Actualiza src/config/config.json (solo cosas de contacto)
config.json ya no guarda el título ni la URL de tu sitio. Solo guarda el endpoint del formulario de contacto y los datos de contacto:
{
"params": {
"contact_form_action": "#"
},
"contactinfo": {
"address": "",
"email": "you@example.com",
"phone": ""
}
}Deja contact_form_action como "#" hasta que tengas un endpoint de formulario, luego añade un formulario de contacto a Astro gratis, sin backend y apunta el action a tu endpoint.
Menús y redes sociales (sin cambios)
La navegación vive en src/config/menu.json y los iconos sociales viven en src/config/social.json, igual que en la guía vieja. Las rutas y las formas están en “Personaliza aún más” más abajo si las necesitas.
El modelo mental de una línea
site.ts = identidad · config.json = contacto · menu.json = nav · social.json = redes. Ten esto claro y el tema nunca te peleará.
Verifica: con npm run dev aún corriendo, cambia title y brandName en site.ts, guarda, y haz hard-refresh de http://localhost:4321. El texto del hero/footer debería cambiar. Si el servidor de dev lanza un error de TypeScript, probablemente quitaste una coma o una comilla — la línea del error apunta justo ahí.
Nivel 7.5: desaloja el contenido de demo (2 minutos)
El tema trae unos 20 posts de demo y un par de autores de demo. Salta este paso y tu primer despliegue estará lleno de artículos de otra persona. El README es directo al respecto: borra lo que no necesites.
- Abre
src/content/posts/ - Borra los archivos
.md/.mdxde demo (guarda uno hasta la prueba de humo si quieres algo en lo que clicar) - Revisa
src/content/authors/ysrc/content/about/index.mdpor texto de demo que quieras reemplazar
Buenas noticias: las colecciones vacías se renderizan como listas vacías. Borrarlo todo no rompe el build.
Verifica: refresca http://localhost:4321, la página de inicio muestra solo tu contenido (o estados vacíos limpios).
Nivel 8: escribe tu primer post (5 minutos)
- Ve a
src/content/posts/ - Crea
my-first-post.md - Pega esto dentro:
---
title: "My First Blog Post"
meta_title: "My First Amazing Blog Post"
description: "This is the beginning of my blogging journey!"
date: 2023-07-15
image: "../../assets/images/web-development.svg"
authors: ["admin"]
categories: ["Personal"]
tags: ["beginnings", "blogging"]
featured: true
---
## Hello World!
Welcome to my shiny new blog! I'm excited to overshare my thoughts with the internet.
### Why I Started This Blog
- To rant
- To teach
- To learn
- To procrastinate productively
Stay tuned for more!
Dos notas de frontmatter. Primero, featured: true (opcional) saca el post en la rejilla “Featured Posts” de la página de inicio, así que úsalo para tu mejor material. Segundo, sobre las rutas de imágenes: el esquema de contenido se volvió más estricto en la actualización de 2026. En vez de fiarte de cualquier ruta que veas en un tutorial (incluida la de arriba), copia la línea image: de uno de los posts de demo que aún no hayas borrado, y apúntala a una imagen que hayas añadido de verdad. Con una ruta mala obtienes una imagen rota o un error de build, no una pista amigable.
- Guarda y refresca
http://localhost:4321
Logro desbloqueado: primer post publicado.
Verifica: el post aparece en la página de inicio y se abre en su propia página. ¿Quieres medios en tus posts más adelante? Aquí está cómo añadir vídeos de YouTube a tu blog Astro.
Roto se ve así: un error mencionando una etiqueta sin cerrar o HTML inválido. Astro 7 se volvió más estricto, el HTML pegado ahora hace fallar el build en vez de arreglarse silenciosamente. Mira la sección de Resolución de problemas al final.
Nivel 9: guarda y haz push (2 minutos)
- Haz clic en el icono de Source Control (el coso con ramas)
- Prepara todos los cambios (botón +)
- Escribe un mensaje de commit
- Haz clic en la marca de verificación para commitear
- Haz push vía el menú “…” > Push
Construye en local antes de hacer push
Las reglas HTML más estrictas de Astro 7 significan que las etiquetas sin cerrar y los atributos sin terminar ahora hacen fallar el build en vez de autocorregirse. El error imprime archivo + línea, mucho más amigable en tu máquina que en un log de build de Cloudflare. Ejecuta npm run build (o el doble seguro npm run verify) antes de cada push. Tarda segundos en un blog recién creado.
Verifica: npm run build termina limpio e imprime la carpeta dist/. Si no, el último error en la terminal te dice qué archivo abrir.
Nivel 10: entra en la nube (3 minutos)
- Regístrate en Cloudflare.com
- Verifica el email
- Salta “Add a website” (estamos haciendo Pages, aún no hace falta dominio)
No hace falta tarjeta para nada de esto. Pages Free es genuinamente gratis.
Jefe Final: despliega tu blog Astro en Cloudflare Pages (5 minutos)
Aquí está todo el pipeline en una imagen: un git push se convierte en un blog en vivo.
El nav del dashboard cambió en 2026, así que sigue esto exactamente:
- Dashboard de Cloudflare → Workers & Pages
- Create application → pestaña Pages → Connect to Git
- Autoriza GitHub, elige tu fork
- Pon el nombre del proyecto (
my-awesome-blogfunciona) y la rama de producción:main - Framework preset: Astro (o configura manualmente): Build command
npm run build, Output directorydist - Haz clic en Save and Deploy
Hora del café mientras Cloudflare construye.
Dos trampas que conviene conocer antes de clicar:
- Un proyecto integrado con Git no puede cambiarse a Direct Upload después. Elige Git (lo hicimos) y estás bien.
- Cada rama que no sea
mainse convierte en su propio despliegue de preview con una URL única. Es staging gratis, úsalo sin vergüenza.
¿Ves un empujón de 'Use Workers instead?'
Esperado. Cloudflare ahora dirige los proyectos nuevos hacia Workers y los docs de Pages llevan un banner diciéndolo. Para un blog estático, Pages sigue siendo gratis, sigue soportado, y es lo que corre este mismo sitio. Si algún día se te queda pequeño, Cloudflare publica un doc “Migrate to Workers”. No has tomado un desvío equivocado.
Plan gratis, cifras reales
Cloudflare Pages Free (página de límites actualizada el 05-09-2026): 500 builds/mes, 1 build concurrente, timeout de build de 20 minutos, 20.000 archivos, 25 MiB tamaño máximo de archivo, 100 dominios personalizados por proyecto, despliegues de preview ilimitados. Un blog personal ni se registra en esos medidores. La clásica redacción de “ancho de banda y peticiones ilimitadas” vive en la página de precios — compruébalo ahí antes de citarlo con seguridad.
Verifica: el log de build se pone verde y Cloudflare te da una URL tipo https://my-awesome-blog.pages.dev. Ábrela.
Roto se ve así: un build fallido por un comando de build mal tecleado o un directorio de salida equivocado (es npm run build y dist), o los errores de versión de Node cubiertos en Resolución de problemas. El timeout de 20 minutos no morderá a un blog de este tamaño.
Para la versión más larga y llena de capturas de este flujo de despliegue, mira nuestra guía completa de despliegue de un blog Astro en Cloudflare.
La prueba de humo de 5 minutos (tras tu primer despliegue)
No te limites a admirar la URL. Pínchala. Esta es la checklist de “¿funcionó de verdad?”:
- Abre la URL
*.pages.dev: página de inicio, una página de post y una página de categoría se renderizan - La búsqueda del sitio (el tema trae búsqueda de cliente con Fuse.js) devuelve tu post
/rss.xmlcarga y existe un sitemap- Una URL basura como
/this-does-not-existrenderiza tu página 404 personalizada - Haz push de una rama desechable y coge la URL de su despliegue de preview gratis en la pestaña Deployments
- Si algo se ve raro, ejecuta
npm run buildonpm run verifyen local primero — el error es más claro ahí
Esos despliegues de preview son tu entorno de staging gratuito. Úsalos para ediciones arriesgadas del tema antes de mergear a main.
Ronda Bonus: dominio personalizado (opcional, 5 minutos)
- Compra un dominio. ¿Necesitas primero una comprobación de naming? Aquí está cómo elegir un buen nombre de dominio.
- En Cloudflare Pages, abre tu proyecto > Custom domains
- Haz clic en Set up a custom domain
- Sigue las instrucciones de DNS
El SSL sigue siendo gratis en ambos casos, Cloudflare emite y renueva el certificado por ti.
Sobre el precio: salta la fantasía de “$1/año” salvo que disfrutes de las sorpresas de renovación. La opción aburrida y predecible es Cloudflare Registrar: dominios a precio de coste, aproximadamente el precio mayorista, sin juegos de renovación con recargo. Mira su página de registrar para la cifra actual, no fijaré una aquí.
Verifica: https://tudominio.com carga con el candado, y el código fuente de la página muestra tu dominio (no pages.dev) en la etiqueta canonical.
Apunta SITE_URL a tu dominio de producción
Una vez que el dominio personalizado funciona, el README del tema te dice que apuntes SITE_URL a tu origen de producción para que las URLs canonical, las etiquetas Open Graph y el sitemap dejen de anunciar tu dirección *.pages.dev.
Verifica antes de copiar
Comprueba el paso SITE_URL del README del tema para el mecanismo actual (variable de entorno en los ajustes de build de Pages vs un campo de config) antes de editar nada — se ha movido entre versiones del tema. La versión segura de esta instrucción: encuentra SITE_URL en el README, ponlo a https://tudominio.com, redespliega, y confirma la etiqueta canonical de nuevo.
Lo que cuesta todo esto
| Pieza | Coste |
|---|---|
| Cuenta de GitHub + repos | $0 |
| Astro (open source, MIT) | $0 |
| Cloudflare Pages, plan Free | $0 (500 builds/mes, previews ilimitados) |
| Certificado SSL | $0 (gestionado por Cloudflare) |
URL *.pages.dev |
$0 |
| Dominio personalizado (opcional) | ~$10/año a precio de coste vía Cloudflare Registrar (los TLDs en promo pueden ser más baratos) |
| Total tal como está escrito | $0.00 |
El dominio es vanidad, no necesidad. Muchos buenos blogs viven en una URL pages.dev para siempre.
Sigue blogueando como un campeón
Opción 1: editar en GitHub
- Añade archivos
.mdensrc/content/posts/ - Commitea los cambios
- Listo
Útil desde una tablet en el sofá. Solo recuerda que las reglas HTML más estrictas de Astro 7 aplican en cada push, así que escribe Markdown limpio.
Opción 2: editar en local (recomendado)
- Trae lo último:
git pull- Añade el post nuevo
- Previsualiza con:
npm run dev- Commitea y haz push:
git add .
git commit -m "Add awesome new post"
git pushCloudflare redesplegará automáticamente.
Verifica: la pestaña Deployments del proyecto en Cloudflare muestra el nuevo build, y el post está en vivo en tu URL.
¿Creciendo más allá de un puñado de archivos Markdown? Cuando el flujo de git pull empiece a sentirse como una tarea para editores no técnicos, mira las mejores opciones de headless CMS para Astro. Y si quieres lectores, haz crecer una audiencia con una herramienta de newsletter de nivel gratuito como EmailOctopus — encaja con el tema de $0 de toda esta operación.
Consejos pro
- Publica con regularidad
- Usa imágenes y GIFs para romper el texto
- Comparte tus posts donde están tus lectores, y responde a los comentarios
- Marca tus mejores posts con
featured: truepara que la rejilla de la página de inicio te haga justicia - Haz de
npm run verifytu reflejo pre-push: tipos comprobados, tests ejecutados, build en verde - Si quieres estadísticas sin la economía de la vigilancia, corre analítica Plausible respetuosa con la privacidad en Cloudflare Workers
Bloguear no debería sentirse como deberes. Si lo hace, publica menos a menudo en vez de abandonar.
Chuleta del flujo de dev local
npm run dev # Start local server (http://localhost:4321)
npm run build # Build production version into dist/
npm run preview # Preview the production build
npm run verify # astro check + tests + build (safe pre-push habit)
git add . # Stage changes
git commit -m "Your message" # Commit
git push # Deploy!Personaliza aún más
Tu proyecto es flexible. Esto es lo que puedes retocar dentro de la carpeta src/:
Estilos y colores
- Edita
src/styles/global.csspara cambiar los colores del tema, las fuentes o añadir CSS personalizado.
:root {
--color-primary-500: #3b82f6; /* Change this to your fav color */
}- Personaliza los colores del modo oscuro bajo
.dark { ... }en el mismo archivo.
Enlaces sociales
src/config/social.jsonguarda las URLs de tus perfiles sociales (mira el Nivel 7 para el mapa de archivos).
Menú de navegación
src/config/menu.jsonpersonaliza los enlaces de navegación de tu sitio.
Imágenes, logos y favicons
- Pon las imágenes en
src/assets/images/opublic/images/(la primera se optimiza en el build, la segunda se copia tal cual). - Reemplaza favicons/logos en
src/assets/favicons/opublic/. - Actualiza las referencias si hace falta en configs o archivos de layout.
Contenido: posts, páginas, autores
- Los posts del blog viven en
src/content/posts/ - Las páginas estáticas viven en
src/content/pages/(p. ej., Privacidad, Términos) - La página de “about” es
src/content/about/index.md - Los perfiles de autor viven en
src/content/authors/, genial para blogs multi-autor
Información del sitio y metadatos
src/config/site.tses el archivo de identidad: título, marca, texto del hero, toggles de la página de inicio (Nivel 7).src/config/config.jsones solo de contacto: endpoint del formulario más datos de contacto (Nivel 7).
Layouts y componentes
- Personaliza cómo se ve tu blog editando los componentes en
src/layouts/y sus subcarpetas. - Cambia headers, footers, layouts de post, widgets, etc.
Páginas y enrutado
- Añade o edita páginas en
src/pages/(p. ej.,/about,/contact,/blog). - Crea nuevos archivos
.astropara rutas personalizadas.
Así puedes personalizar completamente el aspecto, la sensación y el contenido de tu blog.
Mantén tu blog fresco
- Añade el repo original como upstream:
git remote add upstream https://github.com/bitdoze/bitdoze-astro-theme.git- Trae las actualizaciones:
git fetch upstream- Mergea:
git merge upstream/main- ¡Arregla conflictos, haz push, y listo!
Lee el CHANGELOG.md del tema antes de mergear una nueva versión de upstream. Es la diferencia entre “ah, esa clave se movió” y una tarde confusa de arqueología. La rama por defecto sigue siendo main.
¿Conflictos de merge en site.ts o config.json? Normalmente significa que upstream renombró o dividió una clave de config. El changelog te dice la nueva forma, luego reaplica tus valores encima.
“¿Pero por qué Astro?” (para los escépticos)
“¿No podría simplemente usar WordPress/Wix/Medium?” Claro, también podrías usar un cuchillo de untar para talar un árbol. Aquí está el caso honesto, con cifras incluidas:
- El compilador Rust de Astro 7 construyó las 743 páginas de este mismo blog en 47s, bajando de 103s en Astro 6. Ese es el benchmark de Astro 7: tiempos de build reducidos a la mitad en un sitio de 743 páginas. Para un blog de diez posts, los builds son instantáneos de todas formas — el punto es que el tooling crece contigo.
- La velocidad que sienten tus lectores viene del HTML estático y el cero JS por defecto. Tus páginas son archivos servidos desde una CDN. Nada que parchear, ningún PHP que seguir actualizando, ningún plugin de caché haciendo heroicidades.
- Coste y operaciones se quedan aburridos: $0 al mes y las únicas piezas móviles son git y un build. Compara eso con planes de builders gestionados o un host de WordPress con staging, backups y una suscripción a plugin de seguridad.
- Un sitio estático es una superficie de ataque diminuta, pero sigues siendo dueño de la seguridad de tu cuenta de GitHub (activa 2FA) y de las actualizaciones de dependencias vía merges de upstream. Nada es “configura y olvida”.
- WordPress ES la elección correcta para ecosistemas de plugins pesados, varios editores no técnicos, o una tienda con necesidades reales de e-commerce. Si ese eres tú, lee un desglose honesto de costes y operaciones de Astro vs WordPress antes de comprometerte a nada.
Construirlo tú mismo también significa que puedes decir “ah, ¿mi blog? Lo construí con Astro” en las fiestas, si te va eso.
Resolución de problemas
¿El sitio no construye?
- Revisa los errores de la terminal
- Valida la sintaxis Markdown
- Ejecuta
npm run builden local para pistas
El build falla con “unclosed tag” o HTML inválido
Astro 7 dejó de autocorregir markup roto. Las etiquetas sin cerrar y los atributos sin terminar ahora hacen fallar el build, y el error imprime el archivo y el número de línea.
- Solución: abre ese archivo, cierra la etiqueta (o termina el atributo), ejecuta
npm run builden local, haz push de nuevo. Pegar HTML de la web es el culpable habitual.
Funciona en local, falla en Cloudflare
Si el build se pone verde en tu máquina y rojo en el log de Cloudflare, comprueba la versión de Node en el host de build. El tema trae .node-version fijado a 22.12.0 y la imagen de build de Cloudflare lo lee automáticamente.
- Solución: si moviste el tema a tu propio repo, conserva el archivo
.node-version. Si no puedes, ponNODE_VERSION=22.16.0(o cualquier 22.12+) en las variables de entorno de build del proyecto Pages.
npm install falla o lanza errores de engine
¿Ves EBADENGINE o “unsupported engine”? Tu Node está por debajo del suelo de v22.12.0.
- Solución: comprueba
node --version, actualiza Node (guía de nvm aquí), luego:
npm cache clean --force- Borra
node_modulesypackage-lock.json, reinstala.
¿Faltan imágenes?
- Comprueba las rutas
- Usa rutas relativas o URLs completas
- Pon las imágenes en
public/images/
El botón “Use this template” no aparece en GitHub
El repo del tema no está marcado como plantilla de GitHub, así que el botón a menudo no se renderiza. Usa Fork (Nivel 4, Método A) o la ruta de clonar-y-push (Método B).
¿Todo explotó?
Respira hondo. Lee el último error del log de build, comprueba la versión de Node, y reconstruye en local. Esos tres atrapan casi todo. Si sigue roto, los issues de GitHub del tema son el lugar correcto para preguntar.
FAQ rápido
¿Es esto realmente 100% gratis?
Sí, tal como está escrito. GitHub $0, Astro $0, Cloudflare Pages $0 (500 builds/mes, despliegues de preview ilimitados), SSL $0. El único coste posible es un dominio personalizado, y hasta eso es opcional. Desglose completo en “Lo que cuesta todo esto” más arriba.
Cloudflare me sigue diciendo que use Workers. ¿Elegí mal?
No. Cloudflare ahora dirige los proyectos nuevos hacia Workers porque es su plataforma más amplia, pero Pages sigue siendo gratis, sigue documentado, y sigue siendo en lo que corre este sitio. Para un blog estático, Pages hace el trabajo. Si tus necesidades algún día lo superan, hay un camino de migración documentado a Workers — no es un callejón sin salida.
¿Necesito saber React, Vue o algún framework?
No. Este tema es Astro a pelo más Markdown. Escribes posts en Markdown, el tema los convierte en HTML. Los frameworks son opcionales en Astro y aquí no se usan.
¿Puedo usar mi propio dominio?
Sí, y el SSL es gratis en ambos casos. Mira la Ronda Bonus para los pasos del dominio personalizado y la nota sobre apuntar SITE_URL a tu dominio de producción. Para el registro, Cloudflare Registrar vende dominios a precio de coste sin recargos de renovación.
¿Cómo añado comentarios, analítica, un formulario de contacto o vídeos?
El tema cubre búsqueda, RSS y modo oscuro nada más sacarlo. Para los extras: el endpoint del formulario de contacto te espera en config.json (Nivel 7), los embeds de medios están cubiertos en los enlaces del Nivel 8, y la sugerencia de analítica está en Consejos pro. Los tres tienen guías paso a paso dedicadas en este sitio.
¡Lo conseguiste!
Ahora posees un blog funcionando en Cloudflare Pages que cuesta $0 mantener. Los siguientes movimientos habituales: escribe posts en un calendario, conecta un dominio personalizado cuando tengas uno, y automatiza cualquier cosa que te encuentres repitiendo.
¿Quieres ir más profundo una vez que el hábito de bloguear pegue? Trabaja los mejores cursos online de Astro.js, conecta dominios personalizados correctamente, o automatiza despliegues con GitHub Actions.
Consigue el Bitdoze Astro Theme¡Feliz blogging!
P.D. Si esta guía te ayudó, compártela y dale una estrella al Bitdoze Astro Theme en GitHub.


