Mailtrain je bezplatná aplikace pro newsletter s otevřeným zdrojovým kódem a vlastním hostováním vytvořená z Node.js, která podporuje databázové backendy MySQL/MariaDB. Mailtrain vám umožňuje přidávat předplatitele ručně, prostřednictvím API nebo importovat ze souboru CSV. Mailtrain přichází s bohatou sadou funkcí včetně editorů šablon, automatizace, vlastních polí, RSS kampaně, editoru HTML kódu a mnoha dalších. Pokud máte dlouhý seznam odběratelů a chcete jej snadno spravovat, pak je pro vás Mailtrain tou nejlepší volbou.
V tomto tutoriálu vám ukážeme, jak nainstalovat aplikaci Mailtrain newsletter s Dockerem na serveru Ubuntu 18.04.
Požadavky
- Server se systémem Ubuntu 18.04.
- Platný název domény s adresou IP vašeho serveru.
- Na vašem serveru je nakonfigurováno heslo uživatele root.
Začínáme
Než začnete, budete muset aktualizovat svůj systém na nejnovější verzi. Můžete to provést spuštěním následujícího příkazu:
apt-get update -y
apt-get upgrade -y
Poté restartujte systém, aby se změny projevily.
Instalovat Docker a Docker Compose
Ve výchozím nastavení není nejnovější verze Dockeru k dispozici ve výchozím úložišti Ubuntu 18.04. Budete tedy muset do svého systému přidat úložiště Docker.
Nejprve nainstalujte požadované balíčky pomocí následujícího příkazu:
apt-get install curl git apt-transport-https ca-certificates -y
Dále si stáhněte a přidejte klíč PGP Dockeru pomocí následujícího příkazu:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
Dále přidejte úložiště Docker CE úpravou souboru /etc/apt/sources.list:
nano /etc/apt/sources.list
Na konec souboru přidejte následující řádek:
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
Po dokončení uložte a zavřete soubor. Poté aktualizujte úložiště a nainstalujte Docker CE pomocí následujících příkazů:
apt-get update -y
apt-get install docker-ce -y
Po úspěšném dokončení instalace můžete zkontrolovat stav služby Docker pomocí následujícího příkazu:
systemctl status docker
Měli byste vidět následující výstup:
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
Dále nainstalujte nejnovější verzi docker compose pomocí příkazu pip, jak je znázorněno níže:
apt-get install python-pip
apt-get install docker-compose
Po dokončení instalace můžete přejít k dalšímu kroku.
Instalovat Mailtrain pomocí Docker
Nejprve si stáhněte nejnovější verzi Mailtrain z úložiště Git pomocí následujícího příkazu:
git clone git://github.com/Mailtrain-org/mailtrain.git
Dále změňte adresář na mailtrain a přejmenujte výchozí soubor docker-compose:
cd mailtrain
mv docker-compose.override.yml.tmpl docker-compose.override.yml
Dále spusťte ukotvitelné kontejnery Mailtrain pomocí následujícího příkazu:
docker-compose up -d
Tento příkaz stáhne a spustí kontejnery mailtrain, mysql a redis, jak je znázorněno níže:
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
Nyní můžete zkontrolovat všechny spuštěné kontejnery pomocí následujícího příkazu:
docker ps
Měli byste vidět následující výstup:
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
Přístup k webovému rozhraní Mailtrain
Kontejner poštovního vlaku je nyní spuštěn a naslouchá na portu 3000. Dále otevřete webový prohlížeč a zadejte adresu URL http://ip-ip-vašeho-serveru:3000 . Výchozí řídicí panel Mailtrain byste měli vidět na následující stránce:
Nyní klikněte na Přihlásit se knoflík. Měli byste vidět následující stránku:
Zadejte výchozí uživatelské jméno a heslo jako admin/admin a klikněte na Přihlásit se knoflík. Výchozí řídicí panel Mailtrain byste měli vidět na následující stránce:
Nakonfigurujte Nginx jako reverzní proxy pro Mailtrain
Dále budete muset vytvořit Nginx jako reverzní proxy pro Mailtrain na portu 3000. Chcete-li tak učinit, nejprve nainstalujte webový server Nginx spuštěním následujícího příkazu:
apt-get install nginx -y
Dále vytvořte konfigurační soubor virtuálního hostitele Nginx pomocí následujícího příkazu:
nano /etc/nginx/sites-available/mailtrain.conf
Přidejte následující řádky:
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/; } }
Po dokončení uložte a zavřete soubor. Poté pomocí následujícího příkazu zkontrolujte Nginx, zda neobsahuje nějakou chybu syntaxe:
nginx -t
Měli byste vidět následující výstup:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Dále povolte soubor virtuálního hostitele Nginx pomocí následujícího příkazu:
ln -s /etc/nginx/sites-available/mailtrain.conf /etc/nginx/sites-enabled/
Nakonec restartujte webový server Nginx a použijte konfiguraci:
systemctl restart nginx
Bezpečný poštovní vlak pomocí Let's Encrypt
Dále budete muset nainstalovat klienta Certbot pro zabezpečení Mailtrain pomocí Let's Encrypt free SSL. Ve výchozím nastavení není nejnovější verze Certbotu k dispozici ve výchozím úložišti Ubuntu 18.04. Přidejte tedy úložiště Certbot spuštěním následujícího příkazu:
add-apt-repository ppa:certbot/certbot
Dále aktualizujte úložiště a nainstalujte Certbot pomocí následujícího příkazu:
apt-get update -y
apt-get install certbot python-certbot-nginx -y
Po instalaci spusťte následující příkaz ke stažení bezplatného protokolu SSL Let's Encrypt pro vaši doménu example.com a nakonfigurujte Nginx tak, aby používal tento certifikát.
certbot --nginx -d example.com
Zadejte svou e-mailovou adresu a odsouhlaste podmínky služby. Po úspěšné instalaci certifikátu byste měli vidět následující výstup:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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
Nyní můžete přistupovat ke své aplikaci Mailtrain bezpečně pomocí adresy URL https://example.com .
Závěr
Ve výše uvedeném tutoriálu jsme se naučili, jak nainstalovat Mailtrain s dockerem na serveru Ubuntu 18.04. Také jsme se naučili, jak nakonfigurovat Nginx jako reverzní proxy pro Mailtrain a zabezpečit Mailtrain pomocí bezplatného SSL Let's Encrypt. Neváhejte se mě zeptat, pokud máte nějaké otázky.