Crea un Blog Minimalista Usando Ghost en 7 Pasos

Ghost, una plataforma de publicación de código abierto construida sobre Node.js, es más limpia y rápida que WordPress. Es una excelente opción para fundadores solitarios que desean un blog que se lance en días, no en semanas. Ghost ofrece un stack de contenido enfocado sin los excesivos plugins. Tú posees tus datos y controlas tu infraestructura, evitando ajustes interminables de temas.

mesa blanca de madera cerca de una silla marrón Foto: Bench Accounting en Unsplash

Para quién es esto: Hackers independientes y fundadores solitarios que necesitan un blog en vivo esta semana. Escribes código solo y quieres un sistema de publicación que no se interponga en tu camino. Si has pasado horas solucionando problemas en WordPress o lidiando con el modelo de Medium, Ghost es el stack que realmente cumple.


Paso 1: Elige tu Modelo de Alojamiento—Autoalojado o Gestionado

Ghost ofrece dos caminos: autoalojado o Ghost(Pro), su servicio gestionado. La elección es más operativa que ideológica.

Ghost autoalojado se ejecuta en tu servidor (DigitalOcean, AWS, Hetzner). Tienes control total sobre Node.js, base de datos, SSL, copias de seguridad, con costos a partir de aproximadamente $6/mes para un VPS básico. Ghost-CLI lo instala, automatizando la configuración de Nginx, la configuración de systemd y SSL a través de Let's Encrypt. Es sencillo, pero el tiempo de actividad es tu responsabilidad.

Ghost(Pro) maneja infraestructura, seguridad, CDN, copias de seguridad y monitoreo 24/7. Los precios comienzan en $9/mes para un plan Starter y escalan hasta $249/mes para planes Growth. Según la página de precios de Ghost, los planes gestionados incluyen SSL, staging con un clic y migraciones.

Si la infraestructura no es lo tuyo, o estás en pre-ingresos y cada hora cuenta, Ghost(Pro) simplifica tu carga de trabajo.

Esta guía cubre la configuración autoalojada porque es educativa y replicable.


Paso 2: Provisión de un VPS e Instalación de Ghost-CLI

una oficina con muchos escritorios y sillas Foto: Bernd 📷 Dittrich en Unsplash

Comienza con una instancia limpia de Ubuntu 20.04 o 22.04 con al menos 1GB de RAM. El Droplet de $6/mes de DigitalOcean o el CX21 de €4.51/mes de Hetzner son buenas opciones.

SSH en tu servidor:

ssh root@your-server-ip

Actualiza los paquetes e instala Node.js 18.x (requerido por Ghost a partir de 2026):

apt update && apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
apt install -y nodejs nginx mysql-server

Instala Ghost-CLI globalmente:

npm install ghost-cli@latest -g

Crea un directorio para tu instancia de Ghost (evita ejecutar Ghost como root):

adduser ghost-user --disabled-password
mkdir -p /var/www/ghost
chown ghost-user:ghost-user /var/www/ghost
chmod 775 /var/www/ghost
su - ghost-user
cd /var/www/ghost

Ejecuta el instalador:

ghost install

El Ghost-CLI te pedirá:

  • URL del blog (por ejemplo, https://yourdomain.com)
  • Nombre de host de MySQL (localhost)
  • Nombre de usuario/contraseña de MySQL (crea un nuevo usuario)
  • ¿Configurar Nginx?
  • ¿Configurar SSL? Sí (a través de Let's Encrypt)
  • ¿Configurar systemd? Sí (asegura que Ghost se reinicie al reiniciar)

El instalador configura Nginx como un proxy inverso, establece SSL y registra Ghost como un servicio de systemd. Tu blog se pone en línea rápidamente.

Según la documentación oficial de instalación de Ghost, este proceso toma alrededor de 10 minutos en un VPS limpio.


Paso 3: Configura los Ajustes Básicos de Ghost a través del Panel de Administración

Dirígete a https://yourdomain.com/ghost y crea tu cuenta de administrador. La interfaz de usuario de administración es tu centro para la identidad del sitio, navegación, diseño e integraciones.

Ajustes Generales:

  • Información de publicación: Título, descripción, zona horaria, idioma (predeterminado: inglés).
  • Ícono y logo del sitio: Sube un PNG de 60x60 para el favicon y SVG/PNG para el logo. Ghost maneja el renderizado responsivo.
  • Cuentas sociales: Enlaces para Twitter, Facebook (usados en meta etiquetas).
  • Hacer este sitio privado: Protege con contraseña el contenido—perfecto para lanzamientos beta o grupos solo por invitación.

Navegación:

Ghost requiere configuración manual de navegación. Define la navegación primaria (encabezado) y secundaria (pie de página). Mantener la navegación primaria mínima: Inicio, Archivo, Acerca es prudente. La navegación secundaria contiene RSS, Privacidad, Contacto.

Diseño:

Ghost viene con Casper, un tema predeterminado limpio. Personaliza:

  • Color de marca (afecta enlaces, botones)
  • Estilo de tarjeta en todo el sitio (elige imagen primero, texto primero o de ancho completo)
  • Inyección de código: Inserta scripts de análisis (como Plausible) en el encabezado/pie de página sin alterar archivos de tema.

Por ejemplo, Plausible se inyecta en el pie de página porque Google Analytics puede ser excesivo e invasivo:

<script defer data-domain="yourdomain.com" src="https://plausible.io/js/script.js"></script>

Ajustes Avanzados:

  • Enrutamiento: Estructuras de URL personalizadas a través de routes.yaml (subido en Labs). Puedes mapear /blog/ a una etiqueta o colección.
  • Redirecciones: Gestiona redirecciones de URL heredadas a través de redirects.yaml.
  • Webhooks: Activa servicios externos al publicar un post, al registrarse un miembro, etc.

La administración de Ghost es eficiente. Sin desorden de plugins. Sin obstáculos de constructores de páginas. Configura una vez y comienza a escribir.


Paso 4: Escribe y Publica tu Primer Post en el Editor de Ghost

El editor de Ghost, inherentemente amigable con Markdown, presenta una interfaz basada en bloques. Haz clic en Nuevo Post.

Bloques Comunes:

  • Tarjeta de Markdown: Soporta Markdown de forma nativa. Escribe ##, **negrita**, [enlace]() en línea.
  • Tarjeta de imagen: Arrastra y suelta o incrusta URL. Incluye conversión a WebP y carga diferida.
  • Tarjeta HTML: Para HTML personalizado (incrustaciones, iframes, código en bruto).
  • Tarjeta de código: Bloques de código con resaltado de sintaxis (detecta automáticamente el lenguaje).
  • Tarjeta de marcador: Previsualizaciones de URL usando Open Graph.
  • Tarjeta de galería: Diseños de múltiples imágenes.

Configuraciones del post (barra lateral derecha):

  • Slug: Fragmento de URL. Generado automáticamente a partir del título pero ajustable.
  • Fecha de publicación: Programa o retrocede publicaciones.
  • Etiquetas: Organiza contenido con etiquetas, que pueden ser públicas o internas (# prefijo).
  • Extracto: Descripción meta (primeras 50 palabras por defecto si está en blanco).
  • Destacar este post: Alterna la colocación de héroe en los temas.

Ejemplo de Extracto Personalizado:

Construye un blog minimalista en 7 pasos usando Ghost: autoalojado, rápido, de código abierto. Sin plugins, sin sobrecarga.

Pasos para Publicar:

  1. Escribe en Markdown o bloques.
  2. Agrega etiquetas (por ejemplo, Indie Hacking, Build & Launch).
  3. Establece el extracto y la imagen destacada.
  4. Haz clic en PublicarPublicar ahora o programa.

Ghost renderiza publicaciones al instante. Sin calentamiento de caché ni conflictos de plugins.


Paso 5: Personaliza tu Tema o Construye uno Minimalista

Los temas de Ghost utilizan plantillas Handlebars sin PHP. El tema predeterminado Casper es ordenado, pero puedes bifurcarlo o construir el tuyo propio.

Ubicación del Tema:

/var/www/ghost/content/themes/your-theme/

Estructura de Tema Minimalista:

your-theme/
├── assets/
│   ├── css/
│   └── js/
├── partials/
│   ├── header.hbs
│   └── footer.hbs
├── default.hbs       (diseño base)
├── index.hbs         (página de inicio)
├── post.hbs          (publicación única)
├── page.hbs          (página estática)
├── tag.hbs           (archivo de etiquetas)
└── package.json      (metadatos del tema)

Ejemplo de default.hbs:

<!DOCTYPE html>
<html lang="{{@site.locale}}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{meta_title}}</title>
    {{ghost_head}}
</head>
<body class="{{body_class}}">
    {{> header}}
    <main>
        {{{body}}}
    </main>
    {{> footer}}
    {{ghost_foot}}
</body>
</html>

Ejemplo de post.hbs:

{{!< default}}
<article class="post">
    <header>
        <h1>{{title}}</h1>
        <time datetime="{{date format='YYYY-MM-DD'}}">{{date format="MMMM DD, YYYY"}}</time>
    </header>
    <section class="content">
        {{content}}
    </section>
</article>

Los temas de Ghost aprovechan helpers como {{#get}} para consultar publicaciones, etiquetas, autores. Recorre publicaciones relacionadas, filtra por etiqueta o utiliza la API de Contenido de Ghost para datos personalizados.

Despliegue de un Tema Personalizado:

  1. Comprime tu directorio de tema.
  2. Sube a través de Configuración → Diseño → Cambiar tema.
  3. Activa.

El ejemplo del tema bifurcado Casper resultó en un archivo CSS de 12KB y cero JavaScript en las páginas de publicaciones.


Paso 6: Configura Miembros y Suscripciones (Opcional)

Ghost incluye un sistema de membresía. Controla el acceso al contenido, recopila correos electrónicos y acepta pagos de Stripe, todo sin plugins.

Habilitar Miembros:

  1. Ve a Configuración → Membresía.
  2. Activa Habilitar miembros.
  3. Conecta Stripe (modo de prueba para desarrollo).

Niveles de Suscripción:

Ofrece niveles gratuitos, mensuales y anuales con precios y accesos personalizables.

Control de Acceso al Contenido:

Mientras escribes, restringe la visibilidad de las publicaciones:

  • Público: Cualquiera puede leer.
  • Solo miembros: Requiere registro gratuito.
  • Solo miembros de pago: Requiere suscripción.

Boletines por Correo Electrónico:

Ghost puede enviar correos a tu audiencia cuando publicas. Desactiva por publicación o configura SMTP (Mailgun, Postmark, AWS SES) en Configuración → Boletín por correo electrónico.

Aunque las funciones de pago aún no están en uso, la estructura está completamente ahí. Sin dependencia de Memberful o Substack.


Paso 7: Optimiza el Rendimiento y Configura Copias de Seguridad

Ghost es inherentemente rápido—Node.js, caché y optimización de activos—pero las copias de seguridad y un CDN son necesarias.

Copias de Seguridad:

Ghost utiliza MySQL para contenido y almacena cargas en /var/www/ghost/content/images/. Ambos necesitan copias de seguridad.

Script de Copia de Seguridad Automatizada (cron job):

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/root/backups"
mkdir -p $BACKUP_DIR

# Volcado de MySQL
mysqldump -u ghost_user -p'your_password' ghost_production > $BACKUP_DIR/ghost_db_$DATE.sql

# Comprime imágenes y temas
tar -czf $BACKUP_DIR/ghost_content_$DATE.tar.gz /var/www/ghost/content

# Sube a S3 o rsync a un servidor remoto
aws s3 cp $BACKUP_DIR/ghost_db_$DATE.sql s3://your-bucket/backups/
aws s3 cp $BACKUP_DIR/ghost_content_$DATE.tar.gz s3://your-bucket/backups/

# Elimina copias de seguridad locales de más de 7 días
find $BACKUP_DIR -type f -mtime +7 -delete

Agrega a cron:

crontab -e
0 2 * * * /root/backup-ghost.sh

CDN:

Ghost sirve imágenes directamente. Mejora el rendimiento con Cloudflare (CDN gratuito, SSL, protección DDoS).

Pasos:

  1. Agrega tu dominio a Cloudflare.
  2. Apunta el registro DNS A a tu VPS.
  3. Habilita Auto Minify para HTML, CSS, JS.
  4. Habilita compresión Brotli.
  5. Establece el TTL de caché a 4 horas para activos estáticos.

Ghost no almacena en caché HTML (debido al contenido dinámico), pero los activos estáticos (CSS, JS, imágenes) se almacenan en caché a fondo. Cloudflare proporciona una capa adicional.

Resultado: Los blogs de Ghost se sirven en menos de 800ms a nivel global, incluyendo el apretón de manos SSL. No se necesitan plugins de caché de WordPress.


Lo Que Nadie Te Dice Sobre Ejecutar Ghost

Editar archivos de configuración mientras Ghost está en ejecución puede romper instalaciones. Siempre detén Ghost (ghost stop) antes de cambiar config.production.json, luego reinicia (ghost start). Un cambio de URL una vez causó un bucle de redirección debido a URLs antiguas en caché.

La búsqueda de Ghost es básica. Solo puede buscar títulos y extractos, no contenido completo. ¿Necesitas una búsqueda real? Integra Algolia o Typesense a través de la API de Ghost. Se creó una integración de Typesense utilizando webhooks para indexación y rutas de búsqueda personalizadas.

Los temas no son plug-and-play. Los temas gratuitos de ThemeForest o GitHub a menudo tienen helpers rotos o llamadas a API desactualizadas. Pruébalos en una instancia local de Ghost (ghost install local) antes de desplegarlos en vivo.

Ghost no se actualiza automáticamente. Ejecuta ghost update manualmente desde el directorio de instalación. La CLI maneja migraciones, pero es prudente programar actualizaciones cada 2-3 meses.

Las limitaciones de tasa de la API de contenido existen. El límite predeterminado es de 1,000 solicitudes/hora. Si estás construyendo un frontend personalizado (Next.js, Astro) utilizando la API de Ghost, almacena en caché las respuestas de manera agresiva para evitar alcanzar los límites durante picos de tráfico.


FAQ

¿Puedo migrar de WordPress a Ghost sin perder SEO?

Sí, pero requiere esfuerzo manual. Ghost ofrece un plugin importador de WordPress que exporta contenido de WP a JSON, subido a través de Configuración → Laboratorios → Importar contenido. Las redirecciones de URL necesitan un archivo redirects.yaml personalizado. Mapea las URLs de WordPress a los slugs de Ghost, súbelos y Ghost se encarga de las redirecciones 301. Migrar un blog de WordPress de 4 años tomó 3 horas, incluyendo el mapeo de redirecciones, sin caída en el tráfico orgánico.

¿Ghost soporta comentarios de forma nativa?

No, Ghost no incluye comentarios. Las opciones incluyen Disqus, Commento o soluciones personalizadas a través de la API de Miembros. Commento (autoalojado, enfocado en la privacidad) se integró a través de parciales de tema. Funciona, pero añade mantenimiento. Alternativamente, omite los comentarios y recopila comentarios a través de correo electrónico o Twitter.

¿Puede Ghost manejar alto tráfico sin escalar?

Un VPS de $12/mes (2 vCPU, 4GB RAM) maneja hasta 50,000 vistas de página/mes sin problemas, basado en datos de producción. El uso de caché en memoria de Ghost y la eficiente entrega de activos estáticos ayudan. Para más de 100k vistas de página, se recomienda un CDN (como Cloudflare) y potencialmente una réplica de lectura de MySQL. En general, un VPS básico es adecuado para la mayoría de los blogs individuales.

¿Es Ghost más difícil de usar que Medium?

Depende. Medium es publicación sin configuración: tú escribes, ellos gestionan todo, pero no posees tu contenido. Ghost requiere configuración (VPS, DNS, copias de seguridad), pero tú controlas todo. Para aquellos familiarizados con aplicaciones de Node.js o servidores Linux, Ghost es más fácil que WordPress. Si la terminal te resulta extraña, Ghost(Pro) reduce los dolores de cabeza de infraestructura, pero cuesta más que Medium.


Conclusión

Ghost ofrece una experiencia de publicación simplificada para hackers independientes que crean y lanzan. Evita el caos de WordPress, posee tus datos y configúralo rápidamente. La pila consiste en Node.js, MySQL, Nginx, Handlebars. Sin sobrecarga.

Próximo paso: configura un VPS, ejecuta ghost install y publica tu primer artículo hoy. Un blog en vivo es posible para la hora de la cena. Para aquellos que buscan mejorar su experiencia de blogging, considera explorar las Mejores Herramientas de Análisis para Hackers Independientes en 2026 para rastrear tu rendimiento o consulta las Mejores Herramientas de SEO para Hackers Independientes en 2026 para optimizar tu contenido.


Nota editorial: Este artículo fue elaborado con asistencia de IA y revisado por Javier Valencia. A lo largo del texto se distinguen los hechos verificados de la opinión editorial. Las fuentes externas enlazadas son independientes de NewsTide.

Nota editorial: Este artículo ha sido elaborado con asistencia de inteligencia artificial y revisado por Javier Valencia para garantizar su precisión y relevancia. Conoce nuestra política editorial.

Más sobre Indie Hacking

← Volver al inicioVer todos de Indie Hacking