CMS Ghost en Docker con Nginx Proxy Manager (2)
Continuando con el artículo de instalación de Ghost, en esta segunda parte vamos a abordar la configuración del envío de las newsletters en Ghost.
Configuración de la Newsletter
Por desgracia, Ghost no permite utilizar un servidor de email propio para el envío de estos correos mencionando un riesgo de seguridad para las cuentas de los usuarios ya que existe la posibilidad de que las cuentas de email utilizadas de esta forma pasen a formar parte de una lista negra de correos electrónicos y acaben siendo inservibles.
La única opción que nos queda es utilizar el servicio de Mailgun.
Lo primero que debemos hacer es registrarnos en la página de Mailgun. Aunque parezca que nos toca pagar para poder utilizar el servicio, si desmarcamos la casilla de indicar un método de pago podemos comprobar como nos permiten registrar una cuenta gratuita (con un límite de envío de 100 correos al día).

Terminado el registro, iniciada la sesión y seleccionando Europa como región (de esta forma cumplimos con la RGPD), vamos a ir a la sección Send > SENDING > Domains para registrar un dominio o subdominio desde el que se enviarán los correos:

Continuando dentro de la sección SENDING vamos ahora a Domain Settings:

Dentro de esta sección vemos en la barra superior que tenemos las opciones de Settings, DNS records, SMTP credentials, Sending keys y Setup.
En la primera opción de Settings yo no he activado nada. No me interesa añadir ningún seguimiento de apertura de correos. Este tipo de estadísticas ya me las incluirá el propio Ghost.
En DNS records sí que tendremos que seguir las indicaciones que nos indica Mailgun para añadir los registros necesarios en nuestro servicio DNS para la recepción y envío de los correos:




En SMTP credentials crearemos las cuentas desde las que se van a enviar los correos. Para el envío de las newsletter es REQUISITO IMPRESCINDIBLE a día de escribir este artículo que se denomine noreply. A mayores, podemos registrar otro en caso de que queramos utilizar también este servicio para el envío de los correos de alta de usuarios (que vimos en el anterior artículo). Recordad conservar la contraseña que se genera con cada cuenta.

Ya solo necesitamos crear una clave API para añadir a nuestra instalación de Ghost. La encontraremos dentro del menú de nuestro usuario, en API Security:

Y generamos una clave:

Por último, accedemos a nuestra instalación de Ghost y, en la sección de Newsletters, añadimos los datos de nuestro Mailgun:

Configuración de Tinybird para habilitar estadísticas
Lo primero que debemos hacer es editar el archivo .env de la primera instalación de Ghost, que si habéis seguido estas guías, deberíais tenerlo en /opt/ghost/
Crearemos una línea para solo habilitar los contenedores necesarios para conectar con Tinybird:
# Use the below flags to enable the Analytics or ActivityPub containers as well
#COMPOSE_PROFILES=analytics,activitypub
COMPOSE_PROFILES=analytics
Lanzamos el compose de nuevo:
sudo docker compose pull
sudo docker compose up -d

Ghost incluye una serie de comandos para configurar el servicio de Tinybird, empezamos lanzando el de login:
sudo docker compose run --rm tinybird-login
Al lanzarlo, lo primero que nos pedirá será elegir una región. Para cumplir con la RGPD elegimos el primero ya que está ubicado en Europa.
Nos mostrará un código de un solo uso que debemos apuntar para enlazar después de crear el usuario.
Y como resultado final de este comando, nos arroja un enlace para acceder a Tinybird y crear un usuario:



Etapas por las que pasamos al lanzar el comando tinybird-login
Al abrir el enlace que nos indica, pasamos a crear nuestro usuario del servicio:



Pantallas por las que debemos pasar para crear nuestro usuario y el Area de trabajo de Tinybird
Y se nos abrirá la página para ingresar el código de un solo uso que anotamos anteriormente.
Si no os lleva a esa página, utilizad de nuevo el enlace que os arrojó el comando tras mostraros el código de un solo uso. En mi caso tuve que hacerlo así porque no me llevó a la página para introducirlo...

Una vez introducido, en la terminal muestra el mensaje de que todo ha ido bien con los datos de vuestro Workspace en Tinybird:

Continuamos con el siguiente comando que debemos utilizar. Con este sincronizamos los datos generados en el anterior punto con nuestra instalación de Ghost
sudo docker compose run --rm tinybird-sync

El siguiente de los comandos será para lanzar el contenedor que usará para enlazarlo todo y permitirnos ver las estadísticas:
sudo docker compose run --rm tinybird-deploy

Hasta que ya nos marque que está todo listo:

Por último, necesitamos conocer los tokens para configurar nuestro Ghost. Los podemos conseguir mediante el comando:
sudo docker compose run --rm tinybird-login get-tokens

O accediendo a nuestra cuenta en la web de Tinybird. Por ejemplo, a mí no me mostró el ADMIN TOKEN, pero lo puedo obtener desde la web:

Y ya, para terminar, debemos añadir estos tokens a la configuración de nuestro contenedor de Ghost en Docker:

Ya solo resta activar la opción en nuestro blog:

ActivityPub de Ghost
Ya solo nos queda configurar correctamente Nginx Proxy Manager para que nos podamos comunicar con el servicio ActivityPub que nos ofrece gratuitamente Ghost.
Debemos hacer que las peticiones a direccion_de_nuestro_blog.com/.ghost/activitypub/*, direccion_de_nuestro_blog.com/.well-known/webfinger y direccion_de_nuestro_blog.com/.well-known/nodeinfo sean redirigidas a https://ap.ghost.org.
Para ello nos vamos a la configuración de nuestro Nginx Proxy Manager y en la pestaña Advance del Proxy Host de nuestro blog añadimos la siguiente configuración:
location ~ ^/\.ghost/activitypub/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
add_header X-Content-Type-Options nosniff;
proxy_ssl_server_name on;
proxy_pass https://ap.ghost.org;
}
location ~ ^/\.well-known/(webfinger|nodeinfo)$ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
add_header X-Content-Type-Options nosniff;
proxy_ssl_server_name on;
proxy_pass https://ap.ghost.org;
}
Ahora activamos el apartado Network dentro de los ajustes de nuestro Ghost:

Y si todo ha ido bien, en la sección Network del panel de administración ya comenzaremos a ver cuentas a las que podemos seguir dentro del fediverso y a publicar en nuestro propio perfil:

Este artículo es una continuación de este otro: