Cómo crear tu Blog con Ghost + MySQL + Nginx Proxy Manager en tu NAS
Guía completa que permitirá crear tu Blog con dominio propio en tu NAS con la última versión de Ghost y servicio de Newsletter activado
Regístrate en HDS+
Tutoriales y soporte sobre sistemas NAS, Redes, Docker y SelfHosting.
Sin SPAM. Es gratuito. Ten acceso a todo el contenido.
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.
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.
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: