Cómo instalar el software Mailtrain Newsletter en Ubuntu 18.04

tren correo

Mailtrain es una aplicaci√≥n de bolet√≠n de noticias gratuita, de c√≥digo abierto y autohospedada creada a partir de Node.js que admite backends de bases de datos MySQL/MariaDB. Mailtrain le permite agregar suscriptores manualmente, a trav√©s de la API o importar desde un archivo CSV. Mailtrain viene con un amplio conjunto de caracter√≠sticas que incluyen editores de plantillas, automatizaci√≥n, campos personalizados, campa√Īa RSS, editor de c√≥digo HTML y mucho m√°s. Si tiene una larga lista de suscriptores y desea administrarla f√°cilmente, Mailtrain es la mejor opci√≥n para usted.

En este tutorial, le mostraremos cómo instalar la aplicación de boletín Mailtrain con Docker en el servidor Ubuntu 18.04.

Requisitos

  • Un servidor con Ubuntu 18.04.
  • Un nombre de dominio v√°lido apuntado con la IP de su servidor.
  • Una contrase√Īa de root est√° configurada en su servidor.

Empezando

Antes de comenzar, deber√° actualizar su sistema con la √ļltima versi√≥n. Puede hacer esto ejecutando el siguiente comando:

apt-get update -y
apt-get upgrade -y

A continuación, reinicie su sistema para aplicar los cambios.

Instalar Docker y Docker Compose

De forma predeterminada, la √ļltima versi√≥n de Docker no est√° disponible en el repositorio predeterminado de Ubuntu 18.04. Por lo tanto, deber√° agregar el repositorio Docker a su sistema.

Primero, instale los paquetes necesarios con el siguiente comando:

apt-get install curl git apt-transport-https ca-certificates -y

A continuación, descargue y agregue la clave PGP de Docker con el siguiente comando:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

A continuación, agregue el repositorio Docker CE editando el archivo /etc/apt/sources.list:

nano /etc/apt/sources.list

Agregue la siguiente línea al final del archivo:

deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable

Guarde y cierre el archivo cuando haya terminado. Luego, actualice el repositorio e instale Docker CE con los siguientes comandos:

apt-get update -y
apt-get install docker-ce -y

Una vez que la instalación se haya completado con éxito, puede verificar el estado del servicio Docker con el siguiente comando:

systemctl status docker

Debería ver el siguiente resultado:

Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-10-24 16:15:25 UTC; 21min ago
     Docs: https://docs.docker.com
 Main PID: 1402 (dockerd)
    Tasks: 45
   CGroup: /system.slice/docker.service
           ?? 1402 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
           ??10312 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 3000 -container-ip 172.18.0.4 -container-port 3000

Oct 24 16:23:04 ubuntu1804 dockerd[1402]: time="2019-10-24T16:23:04.817021656Z" level=info msg="Layer sha256:b875b006eb8ffb0434ce3a26cb04c9017c
Oct 24 16:24:09 ubuntu1804 dockerd[1402]: time="2019-10-24T16:24:09.879265134Z" level=info msg="ignoring event" module=libcontainerd namespace=
Oct 24 16:24:10 ubuntu1804 dockerd[1402]: time="2019-10-24T16:24:10.065610315Z" level=warning msg="20676b10252b4a484e32a7d7534b3b386cc2a1e5efd1
Oct 24 16:25:52 ubuntu1804 dockerd[1402]: time="2019-10-24T16:25:52.649551513Z" level=info msg="Layer sha256:903ab9000f0a93e49537d5d00c5c8a8cab
Oct 24 16:26:47 ubuntu1804 dockerd[1402]: time="2019-10-24T16:26:47.428865652Z" level=info msg="Layer sha256:903ab9000f0a93e49537d5d00c5c8a8cab
Oct 24 16:27:41 ubuntu1804 dockerd[1402]: time="2019-10-24T16:27:41.603287585Z" level=info msg="Layer sha256:903ab9000f0a93e49537d5d00c5c8a8cab

A continuaci√≥n, instale la √ļltima versi√≥n de docker compose con el comando pip como se muestra a continuaci√≥n:

apt-get install python-pip
apt-get install docker-compose

Una vez completada la instalación, puede continuar con el siguiente paso.

Instalar Mailtrain con Docker

Primero, descargue la √ļltima versi√≥n de Mailtrain desde el repositorio de Git con el siguiente comando:

git clone git://github.com/Mailtrain-org/mailtrain.git

A continuación, cambie el directorio a mailtrain y cambie el nombre del archivo docker-compose predeterminado:

cd mailtrain
mv docker-compose.override.yml.tmpl docker-compose.override.yml

A continuación, inicie los contenedores de la ventana acoplable Mailtrain con el siguiente comando:

docker-compose up -d

Este comando descargará e iniciará los contenedores mailtrain, mysql y redis como se muestra a continuación:

Creating network "mailtrain_default" with the default driver
Creating volume "mailtrain_mailtrain-node-config" with default driver
Creating volume "mailtrain_mailtrain-node-data" with default driver
Creating volume "mailtrain_mailtrain-redis-data" with default driver
Creating volume "mailtrain_mailtrain-node-reports" with default driver
Creating volume "mailtrain_mailtrain-mysq-data" with default driver
Pulling redis (redis:3.0)...
3.0: Pulling from library/redis
f5cc0ee7a6f6: Pull complete
5fc25ed18e87: Pull complete
e025bc8872f6: Pull complete
77c68b51b836: Pull complete
7c403ece3755: Pull complete
0a653bd338f4: Pull complete
31531fd948c6: Pull complete
Digest: sha256:730b765df9fe96af414da64a2b67f3a5f70b8fd13a31e5096fee4807ed802e20
Status: Downloaded newer image for redis:3.0
Pulling mysql (mysql:5.7)...
5.7: Pulling from library/mysql
80369df48736: Pull complete
e8f52315cb10: Pull complete
cf2189b391fc: Pull complete
cc98f645c682: Pull complete
27a27ac83f74: Pull complete
fa1f04453414: Pull complete
d45bf7d22d33: Pull complete
c7d49ffebc56: Pull complete
511a8052b204: Pull complete
5d5df4c12444: Pull complete
d482603a2922: Pull complete
Digest: sha256:44b33224e3c406bf50b5a2ee4286ed0d7f2c5aec1f7fdb70291f7f7c570284dd
Status: Downloaded newer image for mysql:5.7
Building mailtrain
:
:
Removing intermediate container 20676b10252b
 ---> 0abdb4121f54
Step 6/9 : COPY . /app
 ---> c8af7560e844
Step 7/9 : EXPOSE 3000
 ---> Running in 3ff55179a229
Removing intermediate container 3ff55179a229
 ---> d83b49d4b24b
Step 8/9 : ENTRYPOINT ["bash", "/app/docker-entrypoint.sh"]
 ---> Running in e5baf6a1ea2e
Removing intermediate container e5baf6a1ea2e
 ---> c4f899a0f8f9
Step 9/9 : CMD ["node", "index.js"]
 ---> Running in fe94519d2bd3
Removing intermediate container fe94519d2bd3
 ---> 2808c2972f20
Successfully built 2808c2972f20
Successfully tagged mailtrain:latest
WARNING: Image for service mailtrain was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating mailtrain_redis_1 ... done
Creating mailtrain_mysql_1 ... done
Creating mailtrain_mailtrain_1 ... done

Ahora puede verificar todos los contenedores en ejecución con el siguiente comando:

docker ps

Debería ver el siguiente resultado:

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
0e837c586c39        mailtrain:latest    "bash /app/docker-en…"   About a minute ago   Up 55 seconds       0.0.0.0:3000->3000/tcp   mailtrain_mailtrain_1
49a4e69a09c6        mysql:5.7           "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp, 33060/tcp      mailtrain_mysql_1
a1449b64a196        redis:3.0           "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp                 mailtrain_redis_1

Acceder a la interfaz web de Mailtrain

El contenedor de Mailtrain ahora está iniciado y escuchando en el puerto 3000. A continuación, abra su navegador web y escriba la URL http://su-servidor-ip:3000. Debería ver el panel predeterminado de Mailtrain en la siguiente página:

tren correo

Ahora, haga clic en el Iniciar sesión botón. Deberías ver la siguiente página:

Iniciar sesión - mailtrain

Proporcione el nombre de usuario y la contrase√Īa predeterminados como admin/admin y haga clic en el Iniciar sesi√≥n bot√≥n. Deber√≠a ver el panel de control predeterminado de Mailtrain en la siguiente p√°gina: Publicidad

Tablero de Mailtrain

Configurar Nginx como proxy inverso para Mailtrain

A continuación, deberá crear un Nginx como proxy inverso para Mailtrain en el puerto 3000. Para hacerlo, primero instale el servidor web Nginx ejecutando el siguiente comando:

apt-get install nginx -y

A continuación, cree un archivo de configuración de host virtual Nginx con el siguiente comando:

nano /etc/nginx/sites-available/mailtrain.conf

Agregue las siguientes líneas:

upstream mailtrain {
  server 127.0.0.1:3000 weight=100 max_fails=5 fail_timeout=5;
}

server {
  listen          80;
  server_name     example.com;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://mailtrain/;
  }
}

Guarde y cierre el archivo cuando haya terminado. Luego, verifique el Nginx para ver si hay alg√ļn error de sintaxis con el siguiente comando:

nginx -t

Debería ver el siguiente resultado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, habilite el archivo de host virtual de Nginx con el siguiente comando:

ln -s /etc/nginx/sites-available/mailtrain.conf /etc/nginx/sites-enabled/

Finalmente, reinicie el servidor web Nginx para aplicar la configuración:

systemctl restart nginx

Asegure Mailtrain con Let’s Encrypt

A continuaci√≥n, deber√° instalar el cliente Certbot para proteger Mailtrain con SSL gratuito de Let’s Encrypt. De forma predeterminada, la √ļltima versi√≥n de Certbot no est√° disponible en el repositorio predeterminado de Ubuntu 18.04. As√≠ que agregue el repositorio de Certbot ejecutando el siguiente comando:

add-apt-repository ppa:certbot/certbot

A continuación, actualice el repositorio e instale Certbot con el siguiente comando:

apt-get update -y
apt-get install certbot python-certbot-nginx -y

Una vez instalado, ejecute el siguiente comando para descargar el SSL gratuito de Let’s Encrypt para su dominio ejemplo.com y configure Nginx para usar este certificado.

certbot --nginx -d example.com

Proporcione su dirección de correo electrónico y acepte los Términos de servicio. Una vez que el certificado se haya instalado correctamente, debería ver el siguiente resultado:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-01-22. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Ahora puede acceder a su aplicación Mailtrain de forma segura utilizando la URL https://ejemplo.com.

Conclusión

En el tutorial anterior, aprendimos c√≥mo instalar Mailtrain con docker en el servidor Ubuntu 18.04. Tambi√©n aprendimos c√≥mo configurar Nginx como un proxy inverso para Mailtrain y asegurar Mailtrain con SSL gratuito de Let’s Encrypt. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *