Listmonk を使って独自のニュースレターを作成する方法

Listmonk を使って独自のニュースレターを作成する方法

Listmonk は、シンプルでオールインワンの Linux 用自己ホスト型ニュースレターおよびメーリング リスト ソリューションです。従来のメーリング リスト プログラムとは異なり、軽量で高速な無駄のないプラットフォームを提供することに優れています。ここでは、Ubuntu で Docker を使用して Listmonk をインストールする方法と、それを使用してニュースレターを送信し始める方法を説明します。

Listmonk を使用する利点

Listmonkの最大のセールス ポイントの 1 つは、インターネット上のほぼすべての外部メール配信サーバーと連携できることです。これは、Gmail などのホスト型メール プロバイダーまたは独自のセルフホスト型メール設定を使用してニュースレターを送信できることを意味します。

新しい Listmonk インスタンスの概要を示すスクリーンショット。

Listmonk には、プログラム可能な電子メール テンプレートを作成する機能も備わっています。これにより、ユーザーがメッセージを受信するコンテキストに応じて調整できるカスタム電子メールを作成できるようになります。

最後に、Listmonk には、プログラム内で実行されているすべてのニュースレターを追跡するための直感的な分析モジュールが付属しています。各メッセージが獲得したクリック数と、メーリング リスト全体が一定期間内に達成した全体的なビューの両方を追跡できます。

Listmonkのインストール

Docker と Docker Compose の取得

前提:この記事は、常時接続の VPS 上で Listmonk を実行していることを前提としています。さらに、VPS を指す A および PTR レコードを持つドメイン名がすでにあることも前提としています。

まず、Docker および Docker Compose パッケージのリポジトリ キーを取得します。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Docker および Docker Compose パッケージ用の新しいリポジトリ ファイルを作成します。

sudo nano /etc/apt/sources.list.d/docker.list

新しいリポジトリ ファイル内に次のコード行を記述します。

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable

次のコマンドを実行して、Ubuntu システム全体を更新およびアップグレードします。

sudo apt update && sudo apt upgrade

Docker Compose およびそのコンポーネントの依存関係とともに Docker エンジンをインストールします。

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx git curl

現在のユーザーが Docker バイナリにアクセスするための適切な権限を持っていることを確認してください。

sudo usermod -aG docker ramces

Listmonk のセットアップとデプロイ

現在のユーザーのホーム ディレクトリ内に Docker ファイル用の新しいフォルダーを作成します。

mkdir ~/listmonk && cd ~/listmonk

Listmonk インスタンスの新しい構成ファイルを作成します。

nano. /config.toml

新しい構成ファイル内に次のコードを貼り付けます。

[app]
address = "0.0.0.0:9000"
admin_username = "listmonk"
admin_password = "listmonk"

[db]
host = "listmonk_db"
port = 5432
user = "listmonk"
password = "INSERT_RANDOM_PASSWORD_HERE"

database = "listmonk"

ssl_mode = "disable"
max_open = 25
max_idle = 25
max_lifetime = "300s"

params = ""

新しい構成ファイルを保存し、Listmonk インスタンスの docker-compose.yml を作成します。

nano. /docker-compose.yml

次のコード ブロックを新しいファイル内に貼り付けます。yml ファイル。これは、タイムゾーンで動作するように変更した Listmonk のデフォルトの docker-compose.yml ファイルです。

---
version: "3.7"
x-app-defaults:
restart: unless-stopped
image: listmonk/listmonk:latest
ports:
- 9000:9000
networks:
- listmonk
environment:
- TZ=Asia/Manila
x-db-defaults:
image: postgres:13
ports:
- 9432:5432
networks:
- listmonk
environment:
- POSTGRES_PASSWORD=INSERT_RANDOM_PASSWORD_HERE
- POSTGRES_USER=listmonk
- POSTGRES_DB=listmonk
restart: unless-stopped
healthcheck:
test:
- CMD-SHELL
- pg_isready -U listmonk
interval: 10s
timeout: 5s
retries: 6
services:
db:
image: postgres:13
ports:
- 9432:5432
networks:
- listmonk
environment:
- POSTGRES_PASSWORD=INSERT_RANDOM_PASSWORD_HERE
- POSTGRES_USER=listmonk
- POSTGRES_DB=listmonk
restart: unless-stopped
healthcheck:
test:
- CMD-SHELL
- pg_isready -U listmonk
interval: 10s
timeout: 5s
retries: 6
container_name: listmonk_db
volumes:
- type: volume
source: listmonk-data
target: /var/lib/postgresql/data
app:
restart: unless-stopped
image: listmonk/listmonk:latest
ports:
- 9000:9000
networks:
- listmonk
environment:
- TZ=Asia/Manila
container_name: listmonk_app
depends_on:
- db
volumes:
-. /config.toml:/listmonk/config.toml
networks:
listmonk: null
volumes:
listmonk-data: null

Listmonk Docker コンテナのデプロイ

次の Docker コマンドを実行して、インスタンスのデータベース ファイルを生成します。

docker compose up db

新しい SSH 接続を開き、Docker コンテナ内で「listmonk」バイナリを実行して Listmonk のビルド プロセスを開始します。

docker compose run --rm app. /listmonk --install

Enterビルド スクリプトで実行中のデータベース上の既存のデータを消去するかどうかを尋ねられたら、「Y」と入力し、キーを押します。これにより、Listmonk コンテナーの起動時にクリーンな状態が保たれます。

Listmonk Docker コンテナのデータベース クリア プロンプトを表示するターミナル。

インスタンスのデータベースの SSH セッションに戻り、Ctrl+ を押してCセッションを正常に終了します。

一時データベースが正常に終了していることを示すターミナル。

最後に、Listmonk のすべての Docker コンテナを適切な設定で再起動します。

docker compose up -d app db

Nginx リバースプロキシの作成

Listmonk が Docker インスタンス上で実行を開始しても、それにリンクするリバース プロキシを構成するまでは、Listmonk にパブリックにアクセスすることはできません。Nginx リバース プロキシを構成するには、以下の手順に従ってください。

Listmonk インスタンスの新しいサイト構成ファイルを作成します。

sudo nano /etc/nginx/sites-available/listmonk

次のコード ブロックを新しいサイト構成ファイル内に貼り付けます。

server {

server_name listmonk.myvpsserver.top;


location / {
proxy_pass http://127.0.0.1:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}}

新しい設定ファイルを /etc/nginx/sites-available から /etc/nginx/sites-enabled にリンクします。

sudo ln -s /etc/nginx/sites-available/listmonk /etc/nginx/sites-enabled/

次のコマンドを実行して、Nginx サーバー デーモンを再起動します。

sudo systemctl reload nginx

SSL証明書のインストール

リバース プロキシを構成すると、サイトにパブリックにアクセスできるようになります。ただし、SSL証明書がないため安全ではありません。したがって、次のステップは SSL 証明書をインストールすることです。

コア スナップ デーモンがシステムで実行されていることを確認します。

sudo snap install core

電子フロンティア財団 (EFF) から certbot snap パッケージをインストールします。このユーティリティを使用すると、サーバーがホスト間の接続を暗号化するために使用できる SSL 証明書を要求できます。

sudo snap install certbot --classic

certbot パッケージを EFF に登録して、適切に実行されているかどうかをテストします。

sudo certbot register --agree-tos -m you@your-email.invalid

次のコマンドを実行して、Listmonk インストール用の新しい SSL 証明書を取得します。

sudo certbot --nginx -d listmonk.myvpsserver.top

Listmonk へのアクセスと構成

Web ブラウザを開き、Listmonk インスタンスのアドレスに移動します。これにより、ログイン ボタンのあるシンプルな Web ページが表示されます。

Listmonk のログイン画面を示すスクリーンショット。

「ログイン」ボタンをクリックし、ユーザー名とパスワードの両方のフィールドに「listmonk」と入力します。

認証情報のプロンプトを示すスクリーンショット。

これにより、Listmonk インスタンスのメイン ダッシュボードがロードされます。ページの左側のサイドバーにある「設定」オプションをクリックします。

を強調表示するスクリーンショット

「ルート URL」テキストボックスの値を、Listmonk インスタンスの完全なアドレスに置き換えます。

を強調表示するスクリーンショット

ページの右上隅にある「保存」をクリックして、新しい設定を保存します。

Gmail アカウントを Listmonk にリンクする

Gmail アカウントにログインし、ページの右上隅にあるユーザーのアイコンをクリックします。

Gmail のユーザー アイコンを強調表示したスクリーンショット。

「Google アカウントを管理」をクリックします。

を強調表示するスクリーンショット

ページの左側のサイドバーにある「セキュリティ」カテゴリをクリックします。「セキュリティ」サブページ内の「2 段階認証」オプションを選択します。

を強調表示するスクリーンショット

ページの一番下までスクロールし、「アプリ パスワード」ボタンをクリックします。

を示すスクリーンショット

これにより、リンクするアプリケーションの名前を尋ねるプロンプトが表示されます。「listmonk」と入力し、「作成」をクリックします。

次に、ページには、16 個のランダムな文字が 4 つにグループ化された小さなウィンドウがポップアップ表示されます。これをテキスト ファイルにコピーし、「完了」をクリックします。

アプリのパスワードの例を示すスクリーンショット。

Listmonk ダッシュボード ページに戻り、ページの左側のサイドバーにある [設定] オプションをクリックします。

ページ上部のバーにある「SMTP」タブを選択します。「認証プロトコル」ドロップダウンボックスの下にある「Gmail」リンクをクリックします。

Gmail テンプレートのリンクを強調表示したスクリーンショット。

「ユーザー名」フィールドに Gmail アカウントの完全なメール アドレスを入力します。

「パスワード」フィールドをクリックし、Gmail Web サイトからコピーした 16 文字の文字列をスペースを入れずに入力します。

完全な Gmail リンクを示すスクリーンショット。

「保存」をクリックして新しい SMTP 設定を適用します。

を強調表示するスクリーンショット

最後に、[全般] タブに移動し、[デフォルトの送信元アドレス] テキストボックスの値を Gmail アカウントのアドレスに置き換えます。

新しい Listmonk ニュースレターの作成

Listmonk ダッシュボード ページに移動し、「リスト」カテゴリをクリックして、「すべてのリスト」オプションをクリックします。

を強調表示するスクリーンショット

ページの右上隅にある「新規」ボタンを選択します。

を強調表示するスクリーンショット

新しいメーリング リストの詳細を入力し、[保存] をクリックします。

基本的な公開ニュースレターのリストを示すスクリーンショット。

それでおしまい。Listmonkのインストールが完了しました。

独自のニュースレターをホストすることは、独自のデジタル プラットフォーム作成の一部にすぎません。Ghost を使用して Linux でブログをホストすることでこれを拡張し、Kanboard を使用して独自の Web カンバン ボードを実行する方法を学びます。

画像クレジット:ニュースレター – 123RF が古いタイプライターで書いたもの。すべての変更とスクリーンショットは Ramces Red によるものです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です