Cómo crear tu Blog con Ghost + MySQL + Nginx Proxy Manager en tu NAS

🔓
Dificultad del tutorial: Fácil

En la siguiente guía os voy a explicar el proceso para levantar un Blog con Ghost 5 apoyado por una base de datos MySQL 8 y Nginx Proxy manager para poder usar tu propio dominio. No solamente eso, además te enseñaré a configurarlo para que funcione el registro de usuarios y el envío de las Newsletter.

Algunos compañeros me han pedido la realización de este tutorial ya que la mayoría que están disponibles por la red o están desactualizados o directamente no funcionan. Uno de los motivos reside en que Ghost 5, la última versión del CMS nos exige contar con una BBDD que sea MySQL 8, y da problemas con SQLite o MariaDB.

HDS+ está levantado sobre la última versión de Ghost. Aunque todavía está en activo Bitnarios, la transición a HDS+ está siendo más que satisfactoria. Hace mucho que Wordpress dejó de gustarme como CMS.

Instalando Ghost 5 + MySQL 8

El Docker-Compose que os expongo a continuación es totalmente funcional, pero tendremos que cambiar los valores volumes por los nuestros, así como también los parámetros de database__connection__ y MYSQL_ para una mayor seguridad. Eso sí, podéis tomar como referencia el Compose inferior.

Lo primero que tendréis que hacer, y siempre antes de ejecutar el Stack en Portainer, es crear dos carpetas dentro de volume1/docker : ghost y mysql, las cuales van mapeadas en el Compose y albergarán los archivos del CMS y de la base de datos.

Portainer: Guía de instalación y configuración
Herramienta estrella para la creación y gestión de Docker.
🚨
IMPORTANTE: También es vital la variable url, la cual deberemos de indicar o bien la del dominio que vayamos a usar (Ej. https://hdsplus.co), o por el contrario la IP local del NAS seguida del puerto como muestra el Compose inferior.
version: '3.8'

services:
  ghost:
    image: ghost:latest
    container_name: ghost
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - 2368:2368
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: db
      database__connection__user: demouser
      database__connection__password: demopassword
      database__connection__database: ghostdemo
      url: http://192.168.1.30:2368
      #NODE_ENV: development
    volumes:
      - /volume1/docker/ghost:/var/lib/ghost/content

  db:
    image: mysql:latest
    container_name: ghost-db
    command: mysqld --default-authentication-plugin=mysql_native_password
    restart: unless-stopped
    ports:
      - 3310:3306
    environment:
      # see https://hub.docker.com/_/mysql
      MYSQL_ROOT_PASSWORD: PruebaGhost
      MYSQL_DATABASE: ghostdemo
      MYSQL_USER: demouser
      MYSQL_PASSWORD: demopassword
    volumes:
      - /volume1/docker/mysql:/var/lib/mysql

Una vez modificado el Compose con vuestros valores, creamos un nuevo Stack, le asignamos un nombre y lo pegamos en Portainer. Para finalizar hacemos clic en Deploy the stack y si hemos hecho todo correctamente, nos generará los dos dockers correctamente.

Una vez ha finalizado la creación de los dos contenedores, para acceder a Ghost:

· Panel de administración: http://IPdelNAS:2368/ghost o https://tudominio.com/ghost

· Web: http://IPdelNAS:2368 o https://tudominio.com

Una vez finalizado el setup inicial, ya tendremos acceso completo al Blog. Solamente nos faltará usarlo mediante nuestro propio dominio. Para ello continuamos con el tutorial.

Usando tu propio dominio

Para usar tu propio dominio será tan sencillo como crear un proxy inverso mediante Nginx Proxy Manager. Si todavía no lo tienes instalado o no sabes como proceder, te recomiendo que leas el tutorial dedicado.

Cómo instalar y configurar Nginx Proxy Manager en tu NAS
Guía detallada sobre cómo instalar tu Proxy Inverso en un NAS con certificado Let’s Encrypt.

Es tan sencillo como agregar el dominio o subdominio que vayamos a usar con Ghost, y apuntarlo a la instalación local en el NAS. Deberéis de marcar las mismas opciones que muestro en las imágenes inferiores. El Certificado SSL será obligatorio.

Ya tendremos el blog completamente funcional, aunque como sabréis uno de los puntos fuertes de Ghost, es la posibilidad de enviar diferentes Newsletter a tus usuarios, o del mero hecho de avisarles vía email cada vez que publicamos un nuevo Post

Añadiendo Mailgun como servidor de correo y Newsletter

Para hacer esto posible, y permitir que se registren usuarios en nuestro Blog, o enviar Newsletters, únicamente tenemos la opción de usar Mailgun. Para ello: