Plataforma de Blogging Personal con Ghost y Panel de Administración MySQL

Cómo desplegar tu propio blog profesional con Ghost y MySQL usando Docker Compose

¿Quieres iniciar un blog profesional, rápido y elegante, autogestionado y sin depender de plataformas externas? En este artículo te guío paso a paso para montar Ghost, el popular motor de blogging, junto con su base de datos MySQL, todo orquestado con Docker Compose. ¡Ideal tanto para curiosos como para futuros escritores de contenidos!

¿Por qué Ghost?

Ghost es un CMS de código abierto especializado en blogging, reconocido por su velocidad y su editor limpio de tipo Markdown. Se centra en la experiencia de escritura, el SEO y la personalización, permitiendo que brille tu contenido.
Y con Docker Compose, su despliegue y mantenimiento no puede ser más simple: un comando y listo, blog en marcha.

¿Qué vamos a montar?

  • Un contenedor de Ghost (la aplicación de blogging)
  • Un contenedor de MySQL para la base de datos de contenidos
  • Red interna Docker privada entre Ghost y MySQL
  • Persistencia de datos en directorios locales (por si quieres actualizar o reiniciar sin perder nada)

El docker-compose.yml completo

Puedes copiar y pegar este fichero directamente en una carpeta de tu VPS o servidor, guárdalo como docker-compose.yml:

version: '3.8'

services:
  ghost:
    image: ghost:5-alpine
    container_name: ghost
    restart: unless-stopped
    ports:
      - "2368:2368"
    environment:
      database__client: mysql
      database__connection__host: db
      database__connection__user: ghost
      database__connection__password: ghostpassword
      database__connection__database: ghostdb
      # Puedes cambiar esta URL por la de tu dominio real
      url: http://localhost:2368
    volumes:
      - ./ghost-data:/var/lib/ghost/content
    depends_on:
      - db

  db:
    image: mysql:8.4
    container_name: ghost_mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: ghostdb
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghostpassword
    volumes:
      - ./mysql-data:/var/lib/mysql

networks:
  default:
    driver: bridge

Nota: Recuerda cambiar las contraseñas (ghostpassword y rootpassword) por valores más seguros antes de exponer el servicio a Internet.

Primeros pasos tras el despliegue

  1. Crea los directorios de persistencia:
    mkdir ghost-data mysql-data
  2. Levanta la pila con:
    docker compose up -d
  3. Accede en tu navegador a http://localhost:2368 (o sustituye localhost por la IP o dominio de tu servidor) para terminar la configuración inicial de tu blog.

Ventajas del setup propuesto

  • Despliegue rápido sobre cualquier VPS, servidor o incluso Raspberry Pi moderno.
  • Actualizaciones sencillas: docker compose pull && docker compose up -d.
  • Tus datos están en directorios persistentes del host: seguro y manejable.
  • Aislamiento y escalabilidad: puedes subir otros servicios sin conflictos de puertos.

Consejos de producción y troubleshooting 🔧

  • Para producción: Cambia la variable url por tu dominio real y añade un proxy inverso (como Nginx Proxy Manager) para HTTPS.
  • Respaldo: Haz backup periódicos de las carpetas ghost-data y mysql-data.
  • Problemas comunes:

    • ¿Ghost no arranca? Comprueba los LOGS (docker compose logs ghost) y que la base de datos esté accesible.
    • ¿Error de conexión MySQL? Asegura que las variables de entorno y contraseñas coinciden.
  • Pro tip: Si eres desarrollador, puedes montar los temas de Ghost como volumen extra para editarlos en directo.

¡Listo! Ahora tienes tu plataforma de blogging moderna lista para escribir y publicar, 100% bajo tu control, fácil de actualizar y mantener gracias a Docker Compose.

Avatar

Por Mid