Mailtrain est une application de newsletter gratuite, open-source et auto-hébergée construite à partir de Node.js qui prend en charge les backends de base de données MySQL/MariaDB. Mailtrain vous permet d'ajouter des abonnés manuellement, via l'API, ou d'importer à partir d'un fichier CSV. Mailtrain est livré avec un riche ensemble de fonctionnalités, notamment des éditeurs de modèles, l'automatisation, des champs personnalisés, une campagne RSS, un éditeur de code HTML et bien plus encore. Si vous avez une longue liste d'abonnés et que vous souhaitez la gérer facilement, alors Mailtrain est le meilleur choix pour vous.
Dans ce tutoriel, nous allons vous montrer comment installer l'application de newsletter Mailtrain avec Docker sur le serveur Ubuntu 18.04.
Exigences
- Un serveur exécutant Ubuntu 18.04.
- Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
- Un mot de passe root est configuré sur votre serveur.
Mise en route
Avant de commencer, vous devrez mettre à jour votre système avec la dernière version. Vous pouvez le faire en exécutant la commande suivante :
apt-get update -y
apt-get upgrade -y
Ensuite, redémarrez votre système pour appliquer les modifications.
Installer Docker et Docker Compose
Par défaut, la dernière version de Docker n'est pas disponible dans le référentiel par défaut d'Ubuntu 18.04. Vous devrez donc ajouter le référentiel Docker à votre système.
Tout d'abord, installez les packages requis avec la commande suivante :
apt-get install curl git apt-transport-https ca-certificates -y
Ensuite, téléchargez et ajoutez la clé PGP de Docker avec la commande suivante :
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
Ensuite, ajoutez le référentiel Docker CE en modifiant le fichier /etc/apt/sources.list :
nano /etc/apt/sources.list
Ajoutez la ligne suivante à la fin du fichier :
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, mettez à jour le référentiel et installez Docker CE avec les commandes suivantes :
apt-get update -y
apt-get install docker-ce -y
Une fois l'installation terminée avec succès, vous pouvez vérifier l'état du service Docker avec la commande suivante :
systemctl status docker
Vous devriez voir le résultat suivant :
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
Ensuite, installez la dernière version de docker compose avec la commande pip comme indiqué ci-dessous :
apt-get install python-pip
apt-get install docker-compose
Une fois l'installation terminée, vous pouvez passer à l'étape suivante.
Installer Mailtrain avec Docker
Tout d'abord, téléchargez la dernière version de Mailtrain depuis le dépôt Git avec la commande suivante :
git clone git://github.com/Mailtrain-org/mailtrain.git
Ensuite, changez le répertoire en mailtrain et renommez le fichier docker-compose par défaut :
cd mailtrain
mv docker-compose.override.yml.tmpl docker-compose.override.yml
Ensuite, démarrez les conteneurs Docker Mailtrain avec la commande suivante :
docker-compose up -d
Cette commande téléchargera et démarrera les conteneurs mailtrain, mysql et redis comme indiqué ci-dessous :
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
Vous pouvez maintenant vérifier tous les conteneurs en cours d'exécution avec la commande suivante :
docker ps
Vous devriez voir le résultat suivant :
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
Accéder à l'interface Web Mailtrain
Le conteneur Mailtrain est maintenant démarré et écoute sur le port 3000. Ensuite, ouvrez votre navigateur Web et tapez l'URL http://your-server-ip:3000 . Vous devriez voir le tableau de bord par défaut de Mailtrain sur la page suivante :
Maintenant, cliquez sur Connexion bouton. Vous devriez voir la page suivante :
Indiquez le nom d'utilisateur et le mot de passe par défaut en tant qu'administrateur/administrateur et cliquez sur Connexion bouton. Vous devriez voir le tableau de bord par défaut de Mailtrain sur la page suivante :
Configurer Nginx en tant que proxy inverse pour Mailtrain
Ensuite, vous devrez créer un Nginx en tant que proxy inverse pour Mailtrain sur le port 3000. Pour ce faire, installez d'abord le serveur Web Nginx en exécutant la commande suivante :
apt-get install nginx -y
Ensuite, créez un fichier de configuration d'hôte virtuel Nginx avec la commande suivante :
nano /etc/nginx/sites-available/mailtrain.conf
Ajoutez les lignes suivantes :
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/; } }
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vérifiez le Nginx pour toute erreur de syntaxe avec la commande suivante :
nginx -t
Vous devriez voir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Ensuite, activez le fichier d'hôte virtuel Nginx avec la commande suivante :
ln -s /etc/nginx/sites-available/mailtrain.conf /etc/nginx/sites-enabled/
Enfin, redémarrez le serveur Web Nginx pour appliquer la configuration :
systemctl restart nginx
Sécuriser Mailtrain avec Let's Encrypt
Ensuite, vous devrez installer le client Certbot pour sécuriser Mailtrain avec le SSL gratuit Let's Encrypt. Par défaut, la dernière version de Certbot n'est pas disponible dans le référentiel par défaut d'Ubuntu 18.04. Ajoutez donc le référentiel Certbot en exécutant la commande suivante :
add-apt-repository ppa:certbot/certbot
Ensuite, mettez à jour le référentiel et installez Certbot avec la commande suivante :
apt-get update -y
apt-get install certbot python-certbot-nginx -y
Une fois installé, exécutez la commande suivante pour télécharger le SSL gratuit Let's Encrypt pour votre domaine example.com et configurer Nginx pour utiliser ce certificat.
certbot --nginx -d example.com
Indiquez votre adresse e-mail et acceptez les conditions d'utilisation. Une fois le certificat installé avec succès, vous devriez voir la sortie suivante :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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
Vous pouvez désormais accéder à votre application Mailtrain en toute sécurité à l'aide de l'URL https://example.com .
Conclusion
Dans le didacticiel ci-dessus, nous avons appris à installer Mailtrain avec Docker sur le serveur Ubuntu 18.04. Nous avons également appris à configurer Nginx en tant que proxy inverse pour Mailtrain et à sécuriser Mailtrain avec Let's Encrypt SSL gratuit. N'hésitez pas à me demander si vous avez des questions.