Mailtrain ist eine kostenlose Open-Source- und selbst gehostete Newsletter-Anwendung, die auf Node.js basiert und MySQL/MariaDB-Datenbank-Backends unterstützt. Mit Mailtrain können Sie Abonnenten manuell über die API hinzufügen oder aus einer CSV-Datei importieren. Mailtrain verfügt über eine Vielzahl von Funktionen, darunter Vorlagen-Editoren, Automatisierung, benutzerdefinierte Felder, RSS-Kampagnen, HTML-Code-Editor und vieles mehr. Wenn Sie eine lange Abonnentenliste haben und diese einfach verwalten möchten, ist Mailtrain die beste Wahl für Sie.
In diesem Tutorial zeigen wir Ihnen, wie Sie die Mailtrain-Newsletter-Anwendung mit Docker auf einem Ubuntu 18.04-Server installieren.
Anforderungen
- Ein Server mit Ubuntu 18.04.
- Ein gültiger Domainname, auf den Ihre Server-IP verweist.
- Auf Ihrem Server ist ein Root-Passwort konfiguriert.
Erste Schritte
Bevor Sie beginnen, müssen Sie Ihr System mit der neuesten Version aktualisieren. Sie können dies tun, indem Sie den folgenden Befehl ausführen:
apt-get update -y
apt-get upgrade -y
Starten Sie als Nächstes Ihr System neu, um die Änderungen zu übernehmen.
Installieren Sie Docker und Docker Compose
Standardmäßig ist die neueste Version von Docker nicht im Standard-Repository von Ubuntu 18.04 verfügbar. Daher müssen Sie Ihrem System ein Docker-Repository hinzufügen.
Installieren Sie zuerst die erforderlichen Pakete mit dem folgenden Befehl:
apt-get install curl git apt-transport-https ca-certificates -y
Laden Sie als Nächstes den PGP-Schlüssel von Docker herunter und fügen Sie ihn mit dem folgenden Befehl hinzu:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
Fügen Sie als Nächstes das Docker CE-Repository hinzu, indem Sie die Datei /etc/apt/sources.list bearbeiten:
nano /etc/apt/sources.list
Fügen Sie am Ende der Datei die folgende Zeile hinzu:
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Aktualisieren Sie dann das Repository und installieren Sie Docker CE mit den folgenden Befehlen:
apt-get update -y
apt-get install docker-ce -y
Sobald die Installation erfolgreich abgeschlossen wurde, können Sie den Status des Docker-Dienstes mit dem folgenden Befehl überprüfen:
systemctl status docker
Sie sollten die folgende Ausgabe sehen:
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
Installieren Sie als Nächstes die neueste Version von docker compose mit dem pip-Befehl wie unten gezeigt:
apt-get install python-pip
apt-get install docker-compose
Sobald die Installation abgeschlossen ist, können Sie mit dem nächsten Schritt fortfahren.
Mailtrain mit Docker installieren
Laden Sie zunächst die neueste Version des Mailtrain aus dem Git-Repository mit dem folgenden Befehl herunter:
git clone git://github.com/Mailtrain-org/mailtrain.git
Ändern Sie als Nächstes das Verzeichnis in mailtrain und benennen Sie die standardmäßige docker-compose-Datei um:
cd mailtrain
mv docker-compose.override.yml.tmpl docker-compose.override.yml
Als nächstes starten Sie die Docker-Container von Mailtrain mit dem folgenden Befehl:
docker-compose up -d
Dieser Befehl lädt Mailtrain-, MySQL- und Redis-Container wie unten gezeigt herunter und startet sie:
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
Sie können jetzt alle laufenden Container mit dem folgenden Befehl überprüfen:
docker ps
Sie sollten die folgende Ausgabe sehen:
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
Zugriff auf die Mailtrain-Webschnittstelle
Der Mailtrain-Container ist jetzt gestartet und überwacht Port 3000. Öffnen Sie als Nächstes Ihren Webbrowser und geben Sie die URL http://your-server-ip:3000 ein . Sie sollten das Standard-Dashboard von Mailtrain auf der folgenden Seite sehen:
Klicken Sie nun auf Anmelden Taste. Sie sollten die folgende Seite sehen:
Geben Sie den Standardnutzernamen und das Passwort als admin/admin ein und klicken Sie auf Anmelden Taste. Sie sollten das Standard-Dashboard von Mailtrain auf der folgenden Seite sehen:
Konfigurieren Sie Nginx als Reverse-Proxy für Mailtrain
Als Nächstes müssen Sie einen Nginx als Reverse-Proxy für Mailtrain auf Port 3000 erstellen. Installieren Sie dazu zunächst den Nginx-Webserver, indem Sie den folgenden Befehl ausführen:
apt-get install nginx -y
Erstellen Sie als Nächstes mit dem folgenden Befehl eine Konfigurationsdatei für den virtuellen Nginx-Host:
nano /etc/nginx/sites-available/mailtrain.conf
Fügen Sie die folgenden Zeilen hinzu:
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/; } }
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Überprüfen Sie dann Nginx mit dem folgenden Befehl auf Syntaxfehler:
nginx -t
Sie sollten die folgende Ausgabe sehen:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Aktivieren Sie als Nächstes die virtuelle Nginx-Hostdatei mit dem folgenden Befehl:
ln -s /etc/nginx/sites-available/mailtrain.conf /etc/nginx/sites-enabled/
Starten Sie schließlich den Nginx-Webserver neu, um die Konfiguration zu übernehmen:
systemctl restart nginx
Sicherer Mailtrain mit Let's Encrypt
Als Nächstes müssen Sie den Certbot-Client installieren, um Mailtrain mit Let’s Encrypt free SSL zu sichern. Standardmäßig ist die neueste Version von Certbot nicht im Standard-Repository von Ubuntu 18.04 verfügbar. Fügen Sie also das Certbot-Repository hinzu, indem Sie den folgenden Befehl ausführen:
add-apt-repository ppa:certbot/certbot
Aktualisieren Sie als Nächstes das Repository und installieren Sie Certbot mit dem folgenden Befehl:
apt-get update -y
apt-get install certbot python-certbot-nginx -y
Führen Sie nach der Installation den folgenden Befehl aus, um das kostenlose Let's Encrypt-SSL für Ihre Domain example.com herunterzuladen und Nginx für die Verwendung dieses Zertifikats zu konfigurieren.
certbot --nginx -d example.com
Geben Sie Ihre E-Mail-Adresse an und stimmen Sie den Nutzungsbedingungen zu. Sobald das Zertifikat erfolgreich installiert wurde, sollten Sie die folgende Ausgabe sehen:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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
Sie können jetzt sicher über die URL https://example.com auf Ihre Mailtrain-Anwendung zugreifen .
Schlussfolgerung
Im obigen Tutorial haben wir gelernt, wie man Mailtrain mit Docker auf einem Ubuntu 18.04-Server installiert. Wir haben auch gelernt, wie man Nginx als Reverse-Proxy für Mailtrain konfiguriert und Mailtrain mit Let’s Encrypt Free SSL sichert. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.